openai-completions.
OpenClaw może też automatycznie wykrywać modele dostępne w vLLM, gdy włączysz tę opcję przez VLLM_API_KEY (dowolna wartość działa, jeśli serwer nie wymusza uwierzytelniania). Użyj vllm/* w agents.defaults.models, aby zachować dynamiczne wykrywanie, gdy konfigurujesz także niestandardowy bazowy URL vLLM.
OpenClaw traktuje vllm jako lokalnego dostawcę zgodnego z OpenAI, który obsługuje
strumieniowe rozliczanie użycia, dzięki czemu liczby tokenów statusu/kontekstu mogą aktualizować się na podstawie
odpowiedzi stream_options.include_usage.
| Właściwość | Wartość |
|---|---|
| ID dostawcy | vllm |
| API | openai-completions (zgodne z OpenAI) |
| Uwierzytelnianie | zmienna środowiskowa VLLM_API_KEY |
| Domyślny bazowy URL | http://127.0.0.1:8000/v1 |
Pierwsze kroki
Uruchom vLLM z serwerem zgodnym z OpenAI
Bazowy URL powinien udostępniać punkty końcowe
/v1 (np. /v1/models, /v1/chat/completions). vLLM zwykle działa pod adresem:Ustaw zmienną środowiskową klucza API
Dowolna wartość działa, jeśli serwer nie wymusza uwierzytelniania:
Wykrywanie modeli (dostawca niejawny)
GdyVLLM_API_KEY jest ustawiony (lub istnieje profil uwierzytelniania) i nie definiujesz models.providers.vllm, OpenClaw wysyła zapytanie do:
Jeśli ustawisz
models.providers.vllm jawnie, OpenClaw domyślnie używa zadeklarowanych przez Ciebie modeli. Dodaj "vllm/*": {} do agents.defaults.models, gdy chcesz, aby OpenClaw odpytywał punkt końcowy /models tego skonfigurowanego dostawcy i uwzględniał wszystkie ogłaszane modele vLLM.Konfiguracja jawna (modele ręczne)
Użyj jawnej konfiguracji, gdy:- vLLM działa na innym hoście lub porcie
- Chcesz przypiąć wartości
contextWindowlubmaxTokens - Serwer wymaga prawdziwego klucza API (lub chcesz kontrolować nagłówki)
- Łączysz się z zaufanym punktem końcowym vLLM w loopback, LAN lub Tailscale
Konfiguracja zaawansowana
Zachowanie w stylu proxy
Zachowanie w stylu proxy
vLLM jest traktowany jako backend
/v1 w stylu proxy zgodny z OpenAI, a nie jako natywny
punkt końcowy OpenAI. Oznacza to:| Zachowanie | Zastosowane? |
|---|---|
| Natywne kształtowanie żądań OpenAI | Nie |
service_tier | Nie wysyłane |
store w Responses | Nie wysyłane |
| Wskazówki pamięci podręcznej promptów | Nie wysyłane |
| Kształtowanie ładunku zgodności reasoning OpenAI | Nie stosowane |
| Ukryte nagłówki atrybucji OpenClaw | Nie wstrzykiwane przy niestandardowych bazowych URL-ach |
Kontrolki myślenia Qwen
Kontrolki myślenia Qwen
W przypadku modeli Qwen udostępnianych przez vLLM ustaw
OpenClaw mapuje Poziomy myślenia inne niż
compat.thinkingFormat: "qwen-chat-template" w wierszu modelu skonfigurowanego dostawcy,
gdy serwer oczekuje argumentów kwargs szablonu czatu Qwen. Modele
skonfigurowane w ten sposób udostępniają binarny profil /think (off, on), ponieważ
myślenie szablonu Qwen jest flagą żądania włącz/wyłącz, a nie drabiną wysiłku
w stylu OpenAI./think off na:off wysyłają enable_thinking: true. Jeśli punkt końcowy
oczekuje zamiast tego flag najwyższego poziomu w stylu DashScope, użyj
compat.thinkingFormat: "qwen", aby wysłać enable_thinking w katalogu głównym
żądania.Kontrolki myślenia Nemotron 3
Kontrolki myślenia Nemotron 3
vLLM/Nemotron 3 może używać kwargs szablonu czatu do kontrolowania, czy reasoning jest
zwracany jako ukryty reasoning, czy widoczny tekst odpowiedzi. Gdy sesja OpenClaw
używa Aby dostosować te wartości, ustaw
vllm/nemotron-3-* z wyłączonym myśleniem, dołączony Plugin vLLM wysyła:chat_template_kwargs w parametrach modelu.
Jeśli ustawisz także params.extra_body.chat_template_kwargs, ta wartość ma
ostateczny priorytet, ponieważ extra_body jest ostatnim nadpisaniem treści żądania.Wywołania narzędzi Qwen pojawiają się jako tekst
Wywołania narzędzi Qwen pojawiają się jako tekst
Najpierw upewnij się, że vLLM został uruchomiony z właściwym parserem wywołań narzędzi i szablonem czatu
dla modelu. Na przykład vLLM dokumentuje Zastąp Możesz zastosować to samo nadpisanie z CLI:To obejście zgodności wymagające świadomego włączenia. Sprawia, że każda tura modelu z
narzędziami wymaga wywołania narzędzia, więc używaj go tylko dla dedykowanego lokalnego wpisu modelu,
w którym takie zachowanie jest akceptowalne. Nie używaj go jako globalnej wartości domyślnej dla wszystkich
modeli vLLM i nie używaj proxy, które ślepo konwertuje dowolny
tekst asystenta na wykonywalne wywołania narzędzi.
hermes dla modeli Qwen2.5
oraz qwen3_xml dla modeli Qwen3-Coder.Objawy:- Skills lub narzędzia nigdy się nie uruchamiają
- asystent wypisuje surowy JSON/XML, taki jak
{"name":"read","arguments":...} - vLLM zwraca pustą tablicę
tool_calls, gdy OpenClaw wysyłatool_choice: "auto"
tool_choice: "required". Dla takich wpisów modeli wymuś
pole żądania zgodne z OpenAI za pomocą params.extra_body:Qwen-Qwen2.5-Coder-32B-Instruct dokładnym identyfikatorem zwróconym przez:Niestandardowy bazowy URL
Niestandardowy bazowy URL
Jeśli serwer vLLM działa na hoście lub porcie innym niż domyślny, ustaw
baseUrl w jawnej konfiguracji dostawcy:Rozwiązywanie problemów
Wolna pierwsza odpowiedź lub limit czasu serwera zdalnego
Wolna pierwsza odpowiedź lub limit czasu serwera zdalnego
W przypadku dużych modeli lokalnych, zdalnych hostów LAN lub połączeń tailnet ustaw
limit czasu żądania w zakresie dostawcy:
timeoutSeconds dotyczy tylko żądań HTTP modeli vLLM, w tym
zestawiania połączenia, nagłówków odpowiedzi, strumieniowania treści oraz łącznego
przerwania chronionego pobierania. Preferuj to przed zwiększaniem
agents.defaults.timeoutSeconds, które kontroluje cały przebieg agenta.Serwer nieosiągalny
Serwer nieosiągalny
Sprawdź, czy serwer vLLM działa i jest dostępny:Jeśli widzisz błąd połączenia, sprawdź host, port oraz czy vLLM został uruchomiony w trybie serwera zgodnego z OpenAI.
W przypadku jawnych punktów końcowych loopback, LAN lub Tailscale OpenClaw ufa
dokładnemu skonfigurowanemu źródłu
models.providers.vllm.baseUrl dla chronionych żądań modelu.
Źródła metadanych/link-local pozostają blokowane bez jawnego
włączenia. Ustaw models.providers.vllm.request.allowPrivateNetwork: true tylko
wtedy, gdy żądania vLLM muszą docierać do innego prywatnego źródła, i ustaw false,
aby zrezygnować z zaufania dokładnemu źródłu.Błędy uwierzytelniania w żądaniach
Błędy uwierzytelniania w żądaniach
Jeśli żądania kończą się błędami uwierzytelniania, ustaw prawdziwy
VLLM_API_KEY zgodny z konfiguracją serwera albo skonfiguruj dostawcę jawnie w models.providers.vllm.Nie wykryto żadnych modeli
Nie wykryto żadnych modeli
Automatyczne wykrywanie wymaga ustawienia
VLLM_API_KEY. Jeśli zdefiniowano models.providers.vllm, OpenClaw używa tylko zadeklarowanych modeli, chyba że agents.defaults.models zawiera "vllm/*": {}.Narzędzia renderują się jako surowy tekst
Narzędzia renderują się jako surowy tekst
Jeśli model Qwen wypisuje składnię narzędzi JSON/XML zamiast wykonać skill,
sprawdź wskazówki dotyczące Qwen w sekcji Konfiguracja zaawansowana powyżej. Typowa poprawka to:
- uruchomienie vLLM z poprawnym parserem/szablonem dla tego modelu
- potwierdzenie dokładnego identyfikatora modelu za pomocą
openclaw models list --provider vllm - dodanie dedykowanego nadpisania
params.extra_body.tool_choice: "required"dla konkretnego modelu tylko wtedy, gdytool_choice: "auto"nadal zwraca puste lub wyłącznie tekstowe wywołania narzędzi
Powiązane
Wybór modelu
Wybieranie dostawców, odwołań do modeli i zachowania przełączania awaryjnego.
OpenAI
Natywny dostawca OpenAI i zachowanie tras zgodnych z OpenAI.
OAuth i uwierzytelnianie
Szczegóły uwierzytelniania i zasady ponownego użycia poświadczeń.
Rozwiązywanie problemów
Typowe problemy i sposoby ich rozwiązywania.