适用场景:OpenClaw + 本地 vLLM + Qwen3-8B + clawdbot-dingtalk 快速开始 在OpenClaw中安装并配置vLLM的简要步骤: 执行命令:openclaw configure。 选择 Local (this machine) - Model - vLL
适用场景:OpenClaw + 本地 vLLM + Qwen3-8B + clawdbot-dingtalk
在OpenClaw中安装并配置vLLM的简要步骤:
长期稳定更新的攒劲资源: >>>点此立即查看<<<
- 执行命令:
openclaw configure。- 选择 Local (this machine) -> Model -> vLLM。
- 配置 vLLM 服务地址:
http://IP:port/v1。- 配置 vLLM API key(可填写任意值)。
- 配置 vLLM 模型名称:
Qwen3-8B。- 选择 Continue 完成配置。
- 重启网关使配置生效:
openclaw gateway restart。下文将详细展开并解答可能遇到的问题。
本文旨在指导您完成 OpenClaw 调用本地 vLLM 模型服务的完整配置流程,确保 OpenClaw 能顺利与您自行部署的模型进行交互。核心将解决以下问题:
若您已将 OpenClaw 中的上下文长度修改为真实值,但 vLLM 接口仍返回 400 错误,且日志中存在“strict/store ignored”等提示,这些警告通常只是干扰信息。问题的根本原因往往是 vLLM 服务未启用自动工具调用功能。对于 Qwen3-8B 模型,解决方法是在启动 vLLM 时加入 --enable-auto-tool-choice 和 --tool-call-parser hermes 这两个关键参数。
总结最小可用配置原则如下:
contextWindow 值必须与本地模型的实际上下文长度保持一致,避免设置过高。openai-completions。message 字段,仅查看访问日志容易误导。为确保流程顺利,请先确认您的基础环境满足以下要求:
| 项目 | 建议值 / 说明 |
|---|---|
| 模型服务 | vLLM,提供 OpenAI 兼容 API |
| 本地模型 | Qwen3-8B 或其 LoRA 变体 |
| OpenClaw Provider | openai-completions |
| 服务端口 | 示例为 18000 |
| 模型别名 | 建议统一使用 sinollm |
| 上下文长度 | 与模型真实能力一致,例如 32k |
以下是为 Qwen3-8B 部署场景优化的启动命令,包含了确保工具调用正常工作的关键参数:
python3 start_server.py \
--model /application/Qwen3-8B \
--served-model-name Qwen3-8B\
--uvicorn-log-level info \
--chat-template /application/qwen3_nonthinking.jinja \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--disable-async-output-proc \
--gpu-memory-utilization 0.6 \
--max-num-batched-tokens 4096 \
--dtype float16
关键参数说明:--enable-auto-tool-choice 和 --tool-call-parser hermes 是解决工具调用 400 错误的核心。当 OpenClaw 请求中包含工具(tools)字段和 tool_choice=auto 指令时,若 vLLM 服务未启用此功能,则会在处理请求时失败,并仅返回一个较难定位的 400 错误。
以下为可直接使用的 OpenClaw 配置片段,其策略是优先使用本地 vLLM 模型,失败时自动回退到其他模型:
{
"models": {
"mode": "merge",
"providers": {
"vllm": {
"baseUrl": "http://127.0.0.1:8000/v1",
"apiKey": "VLLM_API_KEY",
"api": "openai-completions",
"models": [
{
"id": "Qwen3-8B",
"name": "Qwen3-8B",
"reasoning": false,
"input": ["text"],
"contextWindow": 32768,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "vllm/Qwen3-8B"
}
}
}
}
配置完成后,请按此清单核对:
baseUrl 末尾必须包含 /v1,完整格式如 http://:18000/v1 。api 字段值必须为 openai-completions,而非 anthropic-messages。model id 必须与 vLLM 启动参数 --served-model-name 指定的名称之一完全匹配。contextWindow 应填写真实数值(如 32768),避免使用虚高的数值(如 128000)。使用以下命令测试基础聊天功能是否正常:
curl http://127.0.0.1:18000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer VLLM_API_KEY" \
-d '{
"model": "Qwen3-8B",
"messages": [
{"role": "user", "content": "你好,只回复OK"}
],
"max_tokens": 16
}'
使用以下命令验证工具调用功能是否已正确启用:
curl http://127.0.0.1:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer VLLM_API_KEY" \
-d '{
"model": "Qwen3-8B",
"messages": [
{"role": "user", "content": "北京现在多少度?请调用工具"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto",
"max_tokens": 128
}'
遇到问题时,可参考下表快速定位:
| 现象 | 原因判断 | 处理动作 |
|---|---|---|
| strict/store ignored + 400 | 日志中的 ignored 提示为干扰信息,本质是请求格式与 vLLM 服务能力不匹配。 | 为 vLLM 添加 --enable-auto-tool-choice 与 --tool-call-parser hermes 启动参数;重点检查接口响应体中的 message 字段。 |
| 普通聊天成功,工具请求失败 | vLLM 服务未启用自动工具调用,或聊天模板不支持工具调用格式。 | 检查 vLLM 启动命令中的工具调用参数及所用聊天模板。 |
| context length exceeded 或 max_tokens 非法 | OpenClaw 中声明的上下文长度超出模型实际能力。 | 调整 OpenClaw 配置中的 contextWindow 为真实值,并缩短历史对话长度。 |
| model not found | 请求的模型名称与 vLLM 实际注册的名称不一致。 | 统一配置文件中、启动参数及请求中所使用的模型名称。 |
openai-completions 类型的 provider 接入本地 OpenAI 兼容服务。--enable-auto-tool-choice 参数,并配置相应的 --tool-call-parser。--tool-call-parser hermes 配置相符。— 完 —
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述