llama-server z llama.cpp obsługuje bezpośrednio API OpenAI, a GoModel ma dla
niego dedykowany typ providera llamacpp: klucz API jest opcjonalny
(llama-server zwykle działa bez klucza), a natywne endpointy providera, takie jak
/health i /rerank, są dostępne przez passthrough. Nie rejestruj llama.cpp
jako providera ollama: ten typ używa natywnego API Ollamy, którego llama.cpp nie
implementuje.
Ten sam typ providera pasuje do LM Studio i każdego innego zwykłego lokalnego
serwera kompatybilnego z OpenAI.
Najpierw uruchom llama-server. Bez --alias ID modelu w /v1/models to ścieżka
do pliku modelu – ustaw alias, aby requesty mogły używać czytelnej nazwy:
Konfiguracja
Base URL jest wymagany i rejestruje providera – domyślny port llama-server (8080) koliduje z portem samego GoModel, więc nie ma wartości domyślnej:Te przykłady zakładają, że GoModel działa w Dockerze, a llama-server na hoście
pod
localhost:8081 – stąd host.docker.internal. Jeśli GoModel działa
bezpośrednio na hoście, użyj http://localhost:8081/v1. Uruchamiasz kilka
instancji llama-server? Zarejestruj każdą pod nazwą z sufiksem:
LLAMACPP_STUDIO_BASE_URL=... tworzy providera llamacpp-studio.Weryfikacja
GET /v1/models zwraca ID modeli llama-server poprzedzone nazwą providera.
Embeddingi
/v1/embeddings działa przez GoModel, o ile llama-server potrafi go obsłużyć:
załadowany model musi używać typu poolingu innego niż none. Dedykowane pliki
GGUF do embeddingów zwykle deklarują pooling w metadanych; w przeciwnym razie
przekaż --pooling mean (lub cls/last). Flaga --embeddings jest opcjonalna –
ogranicza serwer wyłącznie do embeddingów:
Metadane modeli
Lokalnych plików GGUF nie ma w katalogu modeli upstream, więc GoModel odczytuje, co się da, z samego llama-server i zwraca to wGET /v1/models:
- Okno kontekstu –
n_ctxna slot raportowane przez llama-server dla modelu, czyli kontekst, z którym model działa (--ctx-sizepodzielone między sloty--parallel), a nie ten, na którym trenowano GGUF. Nowsze buildy raportują je jakometa.n_ctxbezpośrednio na liście; starsze są o nie odpytywane przez/props. Jeśli żadne z nich nie odpowiada – LM Studio albo proxy, które ukrywa/props– używane jest treningowen_ctx_trainmodelu, które jest tylko górnym limitem i może przekraczać to, co serwer zaakceptuje. - Modalności – serwer multimodalny (uruchomiony z
--mmproj) raportujevision,videoiaudiow/props; obsługiwane modalności stają się możliwościami modelu.
/props opisuje jeden model załadowany przez serwer, więc jest odpytywane tylko
przy liście zawierającej jeden wpis. W trybie
routera, w którym
jeden proces obsługuje kilka modeli, każdy model ma własne meta.n_ctx i w ogóle
nie potrzebuje /props.
Obie wartości to ustawienia domyślne, a nie ostateczne decyzje: wszystko, co
zadeklarujesz w metadanych modeli providera, ma pierwszeństwo – zobacz
Metadane modeli.
Klasyfikacja modeli
llama-server nie raportuje niczego, co odróżniałoby model chat od modelu do embeddingów, więc GoModel klasyfikuje jego modele po ID: nazwy zawierająceembed lub pasujące do znanych rodzin modeli embeddingowych (bge, e5, gte,
minilm) są kategoryzowane jako modele do embeddingów, a nazwy zawierające
rerank – jako modele do rerankingu; w przypadku ID z przestrzenią nazw
sprawdzany jest ostatni segment ścieżki. Dla modeli, które pozostają
niesklasyfikowane, zadeklaruj modes w metadanych modeli providera. Kategorie
wpływają tylko na grupowanie w dashboardzie; /v1/embeddings kieruje requesty do
dowolnego modelu obsługiwanego przez providera niezależnie od kategorii.
Poza chatem i embeddingami
- Wejście multimodalne – wejście w postaci obrazów i audio w wiadomościach
chatu działa z modelami multimodalnymi, gdy llama-server jest uruchomiony z
projektorem (
--mmproj, ładowany automatycznie z-hf, gdy jest dostępny). Takie requesty przechodzą normalnie przez/v1/chat/completions. - Natywne endpointy – natywne trasy llama-server są dostępne przez
passthrough pod
/p/llamacpp/...: ścieżki w stylu OpenAI (chat/completions,embeddings, …) są obsługiwane z bazy/v1, a wszystko inne (/health,/props,/tokenize,/infill, …) z katalogu głównego serwera. W konfiguracji z sufiksem użyj nazwy instancji, np./p/llamacpp-studio/health. - Reranking – llama-server obsługuje reranking (uruchom go z modelem
rerankera i
--rerank --embedding --pooling rank), ale GoModel nie ma endpointu rerank; skorzystaj z niego przez passthrough:POST /p/llamacpp/rerank(lub/p/llamacpp/v1/rerank).