In questa pagina
In questa pagina
Providers
vLLM
vLLM espone modelli open source (e alcuni modelli personalizzati) tramite un'API HTTP compatibile con OpenAI. OpenClaw si connette usando l'API openai-completions e può rilevare automaticamente i modelli quando si abilita questa funzionalità con VLLM_API_KEY.
| Proprietà | Valore |
|---|---|
| ID provider | vllm |
| API | openai-completions (compatibile con OpenAI) |
| Autenticazione | Variabile di ambiente VLLM_API_KEY |
| URL di base predefinito | http://127.0.0.1:8000/v1 |
| Utilizzo in streaming | Supportato (stream_options.include_usage) |
Per iniziare
Avviare vLLM con un server compatibile con OpenAI
L'URL di base deve esporre endpoint /v1 (/v1/models, /v1/chat/completions). In genere vLLM viene eseguito su:
Impostare la variabile di ambiente della chiave API
Se il server non impone l'autenticazione, è sufficiente qualsiasi valore non vuoto:
Selezionare un modello
Sostituire il valore con uno degli ID modello di vLLM:
Verificare che il modello sia disponibile
Rilevamento dei modelli (provider implicito)
Quando VLLM_API_KEY è impostata (o esiste un profilo di autenticazione) e models.providers.vllm non è definito, OpenClaw interroga GET http://127.0.0.1:8000/v1/models e converte gli ID restituiti in voci di modello.
Configurazione esplicita
Eseguire una configurazione esplicita quando vLLM è in esecuzione su un host o una porta diversi, si desidera fissare contextWindow/maxTokens, il server richiede una vera chiave API oppure ci si connette a un endpoint loopback, LAN o Tailscale attendibile:
Per mantenere dinamico il provider senza elencare ogni modello, aggiungere un carattere jolly al catalogo dei modelli visibili:
Configurazione avanzata
Comportamento in stile proxy
vLLM viene trattato come un backend /v1 in stile proxy compatibile con OpenAI, non come un endpoint OpenAI nativo:
| Comportamento | Applicato? |
|---|---|
| Formattazione nativa delle richieste OpenAI | No |
service_tier |
Non inviato |
store delle Responses |
Non inviato |
| Indicazioni per la cache dei prompt | Non inviate |
| Formattazione del payload per compatibilità con il ragionamento OpenAI | Non applicata |
| Intestazioni nascoste di attribuzione OpenClaw | Non inserite negli URL di base personalizzati |
Controlli del ragionamento di Qwen
Per i modelli Qwen, impostare compat.thinkingFormat: "qwen-chat-template" nella riga del modello quando il server si aspetta gli argomenti del modello di chat Qwen. Questi modelli espongono un profilo binario /think (off, on) perché il ragionamento del modello di chat Qwen è un'opzione attivata/disattivata, non una scala di intensità in stile OpenAI.
OpenClaw associa /think off a:
I livelli di ragionamento diversi da off inviano enable_thinking: true. Se l'endpoint si aspetta invece opzioni di primo livello in stile DashScope, usare compat.thinkingFormat: "qwen" per inviare enable_thinking nella radice della richiesta.
Controlli del ragionamento di Nemotron 3
Per i modelli vllm/nemotron-3-* con il ragionamento disattivato, il Plugin incluso invia:
Per personalizzare questi valori, impostare chat_template_kwargs nei parametri del modello. Se si imposta anche params.extra_body.chat_template_kwargs, tale valore ha la precedenza perché extra_body è l'ultima sostituzione applicata al corpo della richiesta.
Le chiamate agli strumenti di Qwen vengono visualizzate come testo
Verificare innanzitutto che vLLM sia stato avviato con il parser delle chiamate agli strumenti e il modello di chat corretti per il modello. La documentazione di vLLM indica hermes per i modelli Qwen2.5 e qwen3_xml per i modelli Qwen3-Coder.
Sintomi: le Skills/gli strumenti non vengono mai eseguiti, l'assistente stampa JSON/XML non elaborato come {"name":"read","arguments":...} oppure vLLM restituisce un array tool_calls vuoto quando OpenClaw invia tool_choice: "auto".
Alcune combinazioni di Qwen/vLLM restituiscono chiamate agli strumenti strutturate solo quando la richiesta usa tool_choice: "required". Forzarne l'uso per singolo modello tramite params.extra_body:
Sostituire l'ID del modello con l'ID esatto restituito da openclaw models list --provider vllm, oppure applicare la stessa sostituzione dalla CLI:
Questa è una soluzione alternativa facoltativa: forza ogni turno che include strumenti a effettuare una chiamata a uno strumento, quindi va usata solo per una voce di modello dedicata in cui tale comportamento sia accettabile. Non impostarla come valore predefinito globale per tutti i modelli vLLM e non abbinarla a un proxy che converte testo arbitrario dell'assistente in chiamate eseguibili agli strumenti.
URL di base personalizzato
Se il server vLLM è in esecuzione su un host o una porta non predefiniti, impostare baseUrl nella configurazione esplicita del provider:
Risoluzione dei problemi
Prima risposta lenta o timeout del server remoto
Per modelli locali di grandi dimensioni, host LAN remoti o collegamenti tailnet, impostare un timeout delle richieste specifico del provider:
timeoutSeconds si applica soltanto alle richieste HTTP dei modelli vLLM: configurazione della connessione, intestazioni della risposta, streaming del corpo e interruzione complessiva del recupero protetto. Aumenta inoltre il limite del watchdog di inattività/streaming dell'LLM oltre il valore predefinito implicito di circa 120 secondi per questo provider. È preferibile usare questa opzione anziché aumentare agents.defaults.timeoutSeconds, che controlla l'intera esecuzione dell'agente.
Server non raggiungibile
Verificare che il server vLLM sia in esecuzione e accessibile:
Se viene visualizzato un errore di connessione, verificare l'host, la porta e che vLLM sia stato avviato in modalità server compatibile con OpenAI. OpenClaw considera attendibile l'origine esatta configurata in models.providers.vllm.baseUrl per le richieste protette ai modelli su endpoint loopback, LAN e Tailscale. Le origini di metadati/link-local rimangono bloccate senza un'abilitazione esplicita. Impostare models.providers.vllm.request.allowPrivateNetwork: true solo quando le richieste vLLM devono raggiungere un'altra origine privata, oppure false per disattivare l'attendibilità dell'origine esatta.
Errori di autenticazione nelle richieste
Se le richieste non riescono a causa di errori di autenticazione, impostare una vera VLLM_API_KEY che corrisponda alla configurazione del server oppure configurare esplicitamente il provider in models.providers.vllm.
Nessun modello rilevato
Il rilevamento automatico richiede che VLLM_API_KEY sia impostata. Se è stato definito models.providers.vllm, OpenClaw usa soltanto i modelli dichiarati, a meno che agents.defaults.models non includa "vllm/*": {}.
Gli strumenti vengono visualizzati come testo non elaborato
Se un modello Qwen stampa la sintassi JSON/XML degli strumenti invece di eseguire una Skill:
- Avviare vLLM con il parser/modello corretto per quel modello.
- Verificare l'ID esatto del modello con
openclaw models list --provider vllm. - Aggiungere una sostituzione dedicata per modello
params.extra_body.tool_choice: "required"solo setool_choice: "auto"continua a restituire chiamate agli strumenti vuote o composte esclusivamente da testo.
Contenuti correlati
Scelta dei provider, dei riferimenti ai modelli e del comportamento di failover.
Provider OpenAI nativo e comportamento delle route compatibili con OpenAI.
Dettagli sull'autenticazione e regole per il riutilizzo delle credenziali.
Problemi comuni e relative soluzioni.