Skip to main content
vLLM disponibiliza modelos de código aberto (e alguns personalizados) por meio de uma API HTTP compatível com a OpenAI. O OpenClaw se conecta usando a API openai-completions e pode descobrir automaticamente modelos quando você habilita essa opção com VLLM_API_KEY.

Primeiros passos

1

Start vLLM with an OpenAI-compatible server

Sua URL base deve expor endpoints /v1 (/v1/models, /v1/chat/completions). O vLLM geralmente é executado em:
2

Set the API key environment variable

Qualquer valor não vazio funciona se o servidor não exigir autenticação:
3

Select a model

Substitua por um dos IDs de modelo do seu vLLM:
4

Verify the model is available

Para uma configuração não interativa (CI, scripts), informe diretamente a URL base, a chave e o modelo:

Descoberta de modelos (provedor implícito)

Quando VLLM_API_KEY está definida (ou existe um perfil de autenticação) e models.providers.vllm não está definido, o OpenClaw consulta GET http://127.0.0.1:8000/v1/models e converte os IDs retornados em entradas de modelo.
Se você definir models.providers.vllm explicitamente, o OpenClaw usará somente os modelos declarados. Adicione "vllm/*": {} a agents.defaults.models para que o OpenClaw também consulte o endpoint /models desse provedor configurado e inclua todos os modelos vLLM anunciados.

Configuração explícita

Configure explicitamente quando o vLLM for executado em outro host ou porta, quando você quiser fixar contextWindow/maxTokens, quando o servidor exigir uma chave de API real ou quando você se conectar a um endpoint confiável de local loopback, LAN ou Tailscale:
Para manter o provedor dinâmico sem listar todos os modelos, adicione um curinga ao catálogo de modelos visíveis:

Configuração avançada

O vLLM é tratado como um backend /v1 compatível com a OpenAI no estilo proxy, não como um endpoint nativo da OpenAI:
Para modelos Qwen, defina compat.thinkingFormat: "qwen-chat-template" na entrada do modelo quando o servidor esperar argumentos nomeados do modelo de chat do Qwen. Esses modelos expõem um perfil /think binário (off, on), pois o raciocínio do modelo de chat do Qwen é uma opção de ativação/desativação, não uma escala de esforço no estilo da OpenAI.
O OpenClaw mapeia /think off para:
Níveis de raciocínio diferentes de off enviam enable_thinking: true. Se o endpoint esperar sinalizadores de nível superior no estilo DashScope, use compat.thinkingFormat: "qwen" para enviar enable_thinking na raiz da solicitação.
Para modelos vllm/nemotron-3-* com o raciocínio desativado, o plugin incluído envia:
Para personalizar esses valores, defina chat_template_kwargs nos parâmetros do modelo. Se você também definir params.extra_body.chat_template_kwargs, esse valor terá precedência porque extra_body é a última substituição aplicada ao corpo da solicitação.
Primeiro, confirme que o vLLM foi iniciado com o analisador de chamadas de ferramentas e o modelo de chat corretos para o modelo. A documentação do vLLM indica hermes para modelos Qwen2.5 e qwen3_xml para modelos Qwen3-Coder.Sintomas: Skills/ferramentas nunca são executadas, o assistente exibe JSON/XML bruto, como {"name":"read","arguments":...}, ou o vLLM retorna um array tool_calls vazio quando o OpenClaw envia tool_choice: "auto".Algumas combinações de Qwen/vLLM retornam chamadas de ferramentas estruturadas somente quando a solicitação usa tool_choice: "required". Force essa opção por modelo com params.extra_body:
Substitua o ID do modelo pelo ID exato obtido com openclaw models list --provider vllm ou aplique a mesma substituição pela CLI:
Esta é uma solução alternativa opcional: ela força cada interação com ferramentas a realizar uma chamada de ferramenta, portanto, use-a somente em uma entrada de modelo dedicada em que isso seja aceitável. Não a defina como padrão global para todos os modelos vLLM e não a combine com um proxy que converta texto arbitrário do assistente em chamadas de ferramentas executáveis.
Se o servidor vLLM for executado em um host ou porta diferente do padrão, defina baseUrl na configuração explícita do provedor:

Solução de problemas

Para modelos locais grandes, hosts remotos na LAN ou conexões de tailnet, defina um tempo limite de solicitação no escopo do provedor:
timeoutSeconds se aplica somente às solicitações HTTP de modelos vLLM: estabelecimento da conexão, cabeçalhos da resposta, streaming do corpo e cancelamento total da busca protegida. Ele também aumenta o limite do monitor de inatividade/streaming do LLM acima do padrão implícito de aproximadamente 120 segundos para esse provedor. Prefira essa opção a aumentar agents.defaults.timeoutSeconds, que controla toda a execução do agente.
Verifique se o servidor vLLM está em execução e acessível:
Se ocorrer um erro de conexão, verifique o host, a porta e se o vLLM foi iniciado no modo de servidor compatível com a OpenAI. O OpenClaw confia na origem exata configurada em models.providers.vllm.baseUrl para solicitações protegidas de modelos em endpoints de local loopback, LAN e Tailscale. Origens de metadados/link-local continuam bloqueadas sem habilitação explícita. Defina models.providers.vllm.request.allowPrivateNetwork: true somente quando as solicitações do vLLM precisarem alcançar outra origem privada, ou false para desabilitar a confiança na origem exata.
Se as solicitações falharem com erros de autenticação, defina uma VLLM_API_KEY real que corresponda à configuração do servidor ou configure o provedor explicitamente em models.providers.vllm.
Se o servidor vLLM não exigir autenticação, qualquer valor não vazio de VLLM_API_KEY funcionará como sinal de habilitação para o OpenClaw.
A descoberta automática exige que VLLM_API_KEY esteja definida. Se você definiu models.providers.vllm, o OpenClaw usará somente os modelos declarados, a menos que agents.defaults.models inclua "vllm/*": {}.
Se um modelo Qwen exibir a sintaxe JSON/XML de ferramentas em vez de executar uma Skill:
  • Inicie o vLLM com o analisador/modelo correto para esse modelo.
  • Confirme o ID exato do modelo com openclaw models list --provider vllm.
  • Adicione uma substituição dedicada por modelo params.extra_body.tool_choice: "required" somente se tool_choice: "auto" ainda retornar chamadas de ferramentas vazias ou apenas como texto.

Relacionados

Model selection

Escolha de provedores, referências de modelos e comportamento de failover.

OpenAI

Provedor nativo da OpenAI e comportamento de rotas compatíveis com a OpenAI.

OAuth and auth

Detalhes de autenticação e regras de reutilização de credenciais.

Troubleshooting

Problemas comuns e como resolvê-los.