mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-11-03 09:22:01 +00:00 
			
		
		
		
	Co-authored-by: eugenio.segala <esegala@deloitte.co.uk>
This commit is contained in:
		@@ -146,6 +146,7 @@ The project is under active development, and we are [looking for feedback and co
 | 
			
		||||
| `--host HOST` | ip address to listen (default: 127.0.0.1)<br/>(env: LLAMA_ARG_HOST) |
 | 
			
		||||
| `--port PORT` | port to listen (default: 8080)<br/>(env: LLAMA_ARG_PORT) |
 | 
			
		||||
| `--path PATH` | path to serve static files from (default: )<br/>(env: LLAMA_ARG_STATIC_PATH) |
 | 
			
		||||
| `--no-webui` | disable the Web UI<br/>(env: LLAMA_ARG_NO_WEBUI) |
 | 
			
		||||
| `--embedding, --embeddings` | restrict to only support embedding use case; use only with dedicated embedding models (default: disabled)<br/>(env: LLAMA_ARG_EMBEDDINGS) |
 | 
			
		||||
| `--reranking, --rerank` | enable reranking endpoint on server (default: disabled)<br/>(env: LLAMA_ARG_RERANKING) |
 | 
			
		||||
| `--api-key KEY` | API key to use for authentication (default: none)<br/>(env: LLAMA_API_KEY) |
 | 
			
		||||
 
 | 
			
		||||
@@ -3815,20 +3815,24 @@ int main(int argc, char ** argv) {
 | 
			
		||||
    // Router
 | 
			
		||||
    //
 | 
			
		||||
 | 
			
		||||
    // register static assets routes
 | 
			
		||||
    if (!params.public_path.empty()) {
 | 
			
		||||
        // Set the base directory for serving static files
 | 
			
		||||
        bool is_found = svr->set_mount_point("/", params.public_path);
 | 
			
		||||
        if (!is_found) {
 | 
			
		||||
            LOG_ERR("%s: static assets path not found: %s\n", __func__, params.public_path.c_str());
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
    if (!params.webui) {
 | 
			
		||||
        LOG_INF("Web UI is disabled\n");
 | 
			
		||||
    } else {
 | 
			
		||||
        // using embedded static index.html
 | 
			
		||||
        svr->Get("/", [](const httplib::Request &, httplib::Response & res) {
 | 
			
		||||
            res.set_content(reinterpret_cast<const char*>(index_html), index_html_len, "text/html; charset=utf-8");
 | 
			
		||||
            return false;
 | 
			
		||||
        });
 | 
			
		||||
        // register static assets routes
 | 
			
		||||
        if (!params.public_path.empty()) {
 | 
			
		||||
            // Set the base directory for serving static files
 | 
			
		||||
            bool is_found = svr->set_mount_point("/", params.public_path);
 | 
			
		||||
            if (!is_found) {
 | 
			
		||||
                LOG_ERR("%s: static assets path not found: %s\n", __func__, params.public_path.c_str());
 | 
			
		||||
                return 1;
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            // using embedded static index.html
 | 
			
		||||
            svr->Get("/", [](const httplib::Request &, httplib::Response & res) {
 | 
			
		||||
                res.set_content(reinterpret_cast<const char*>(index_html), index_html_len, "text/html; charset=utf-8");
 | 
			
		||||
                return false;
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // register API routes
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import pytest
 | 
			
		||||
import requests
 | 
			
		||||
from utils import *
 | 
			
		||||
 | 
			
		||||
server = ServerPreset.tinyllama2()
 | 
			
		||||
@@ -76,3 +77,20 @@ def test_load_split_model():
 | 
			
		||||
    })
 | 
			
		||||
    assert res.status_code == 200
 | 
			
		||||
    assert match_regex("(little|girl)+", res.body["content"])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_no_webui():
 | 
			
		||||
    global server
 | 
			
		||||
    # default: webui enabled
 | 
			
		||||
    server.start()
 | 
			
		||||
    url = f"http://{server.server_host}:{server.server_port}"
 | 
			
		||||
    res = requests.get(url)
 | 
			
		||||
    assert res.status_code == 200
 | 
			
		||||
    assert "<html>" in res.text
 | 
			
		||||
    server.stop()
 | 
			
		||||
 | 
			
		||||
    # with --no-webui
 | 
			
		||||
    server.no_webui = True
 | 
			
		||||
    server.start()
 | 
			
		||||
    res = requests.get(url)
 | 
			
		||||
    assert res.status_code == 404
 | 
			
		||||
 
 | 
			
		||||
@@ -72,6 +72,7 @@ class ServerProcess:
 | 
			
		||||
    disable_ctx_shift: int | None = False
 | 
			
		||||
    draft_min: int | None = None
 | 
			
		||||
    draft_max: int | None = None
 | 
			
		||||
    no_webui: bool | None = None
 | 
			
		||||
 | 
			
		||||
    # session variables
 | 
			
		||||
    process: subprocess.Popen | None = None
 | 
			
		||||
@@ -158,6 +159,8 @@ class ServerProcess:
 | 
			
		||||
            server_args.extend(["--draft-max", self.draft_max])
 | 
			
		||||
        if self.draft_min:
 | 
			
		||||
            server_args.extend(["--draft-min", self.draft_min])
 | 
			
		||||
        if self.no_webui:
 | 
			
		||||
            server_args.append("--no-webui")
 | 
			
		||||
 | 
			
		||||
        args = [str(arg) for arg in [server_path, *server_args]]
 | 
			
		||||
        print(f"bench: starting server with: {' '.join(args)}")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user