Skip to main content
vLLM sirve modelos de código abierto (y algunos personalizados) mediante una API HTTP compatible con OpenAI. OpenClaw se conecta mediante la API openai-completions y puede detectar automáticamente los modelos cuando se habilita esta opción con VLLM_API_KEY.

Primeros pasos

1

Iniciar vLLM con un servidor compatible con OpenAI

La URL base debe exponer los endpoints de /v1 (/v1/models, /v1/chat/completions). vLLM suele ejecutarse en:
2

Definir la variable de entorno de la clave de API

Cualquier valor no vacío funciona si el servidor no exige autenticación:
3

Seleccionar un modelo

Sustitúyalo por uno de los ID de modelo de vLLM:
4

Verificar que el modelo esté disponible

Para una configuración no interactiva (CI, scripts), indique directamente la URL base, la clave y el modelo:

Detección de modelos (proveedor implícito)

Cuando se define VLLM_API_KEY (o existe un perfil de autenticación) y models.providers.vllm no está definido, OpenClaw consulta GET http://127.0.0.1:8000/v1/models y convierte los ID devueltos en entradas de modelos.
Si se define explícitamente models.providers.vllm, OpenClaw utiliza únicamente los modelos declarados. Añada "vllm/*": {} a agents.defaults.models para que OpenClaw también consulte el endpoint /models de ese proveedor configurado e incluya todos los modelos vLLM anunciados.

Configuración explícita

Realice una configuración explícita cuando vLLM se ejecute en otro host o puerto, se desee fijar contextWindow/maxTokens, el servidor requiera una clave de API real o se establezca conexión con un endpoint de bucle invertido, LAN o Tailscale de confianza:
Para mantener dinámico el proveedor sin enumerar todos los modelos, añada un comodín al catálogo de modelos visible:

Configuración avanzada

vLLM se trata como un backend /v1 de tipo proxy compatible con OpenAI, no como un endpoint nativo de OpenAI:
Para los modelos Qwen, defina compat.thinkingFormat: "qwen-chat-template" en la fila del modelo cuando el servidor espere argumentos de palabra clave de la plantilla de chat de Qwen. Estos modelos exponen un perfil binario /think (off, on), ya que el pensamiento de la plantilla de chat de Qwen es un indicador de activación o desactivación, no una escala de esfuerzo al estilo de OpenAI.
OpenClaw asigna /think off a:
Los niveles de pensamiento distintos de off envían enable_thinking: true. Si el endpoint espera en su lugar indicadores de nivel superior al estilo de DashScope, utilice compat.thinkingFormat: "qwen" para enviar enable_thinking en la raíz de la solicitud.
Para los modelos vllm/nemotron-3-* con el pensamiento desactivado, el plugin incluido envía:
Para personalizar estos valores, defina chat_template_kwargs en los parámetros del modelo. Si también se define params.extra_body.chat_template_kwargs, ese valor prevalece porque extra_body es la última sustitución del cuerpo de la solicitud.
Primero, confirme que vLLM se haya iniciado con el analizador de llamadas a herramientas y la plantilla de chat correctos para el modelo. La documentación de vLLM indica hermes para los modelos Qwen2.5 y qwen3_xml para los modelos Qwen3-Coder.Síntomas: las Skills o herramientas nunca se ejecutan, el asistente imprime JSON/XML sin procesar como {"name":"read","arguments":...}, o vLLM devuelve una matriz tool_calls vacía cuando OpenClaw envía tool_choice: "auto".Algunas combinaciones de Qwen/vLLM solo devuelven llamadas a herramientas estructuradas cuando la solicitud utiliza tool_choice: "required". Fuércelo para cada modelo mediante params.extra_body:
Sustituya el ID del modelo por el ID exacto de openclaw models list --provider vllm, o aplique la misma sustitución desde la CLI:
Esta es una solución alternativa opcional: obliga a que cada turno con herramientas realice una llamada a una herramienta, por lo que solo debe utilizarse para una entrada de modelo dedicada donde sea aceptable. No la defina como valor predeterminado global para todos los modelos vLLM ni la combine con un proxy que convierta texto arbitrario del asistente en llamadas ejecutables a herramientas.
Si el servidor vLLM se ejecuta en un host o puerto no predeterminado, defina baseUrl en la configuración explícita del proveedor:

Solución de problemas

Para modelos locales grandes, hosts de LAN remotos o enlaces de tailnet, defina un tiempo de espera de solicitud limitado al proveedor:
timeoutSeconds se aplica únicamente a las solicitudes HTTP de modelos vLLM: establecimiento de la conexión, encabezados de respuesta, streaming del cuerpo y cancelación total de la obtención protegida. También eleva el límite del mecanismo de vigilancia de inactividad o streaming del LLM por encima del valor predeterminado implícito de ~120s para este proveedor. Se recomienda esta opción en lugar de aumentar agents.defaults.timeoutSeconds, que controla toda la ejecución del agente.
Compruebe que el servidor vLLM esté en ejecución y sea accesible:
Si aparece un error de conexión, verifique el host, el puerto y que vLLM se haya iniciado en modo de servidor compatible con OpenAI. OpenClaw confía en el origen models.providers.vllm.baseUrl configurado exacto para las solicitudes de modelos protegidas en endpoints de bucle invertido, LAN y Tailscale. Los orígenes de metadatos o locales de enlace permanecen bloqueados sin una habilitación explícita. Defina models.providers.vllm.request.allowPrivateNetwork: true solo cuando las solicitudes de vLLM deban alcanzar otro origen privado, o false para deshabilitar la confianza en el origen exacto.
Si las solicitudes fallan con errores de autenticación, defina un valor real para VLLM_API_KEY que coincida con la configuración del servidor, o configure el proveedor explícitamente en models.providers.vllm.
Si el servidor vLLM no exige autenticación, cualquier valor no vacío de VLLM_API_KEY funciona como señal de habilitación para OpenClaw.
La detección automática requiere que se defina VLLM_API_KEY. Si se ha definido models.providers.vllm, OpenClaw utiliza únicamente los modelos declarados, salvo que agents.defaults.models incluya "vllm/*": {}.
Si un modelo Qwen imprime sintaxis de herramientas JSON/XML en lugar de ejecutar una Skill:
  • Inicie vLLM con el analizador o la plantilla correctos para ese modelo.
  • Confirme el ID exacto del modelo con openclaw models list --provider vllm.
  • Añada una sustitución params.extra_body.tool_choice: "required" dedicada para cada modelo solo si tool_choice: "auto" sigue devolviendo llamadas a herramientas vacías o solo de texto.

Contenido relacionado

Selección de modelos

Selección de proveedores, referencias de modelos y comportamiento de conmutación por error.

OpenAI

Proveedor nativo de OpenAI y comportamiento de las rutas compatibles con OpenAI.

OAuth y autenticación

Detalles de autenticación y reglas de reutilización de credenciales.

Solución de problemas

Problemas habituales y cómo resolverlos.