Title:
vLLM returns 400 error for tool_choice="auto" when called from OpenClaw (Qwen3.5-35B on NVIDIA Spark GB10) [vLLM][Tool Calling]
Hello everyone,
I hope you are doing well. I am currently experimenting with running a local LLM inference server on an NVIDIA Spark GB10 using vLLM and Qwen3.5-35B. I encountered an issue related to tool calling when the model is accessed from OpenClaw, and I would really appreciate any guidance from the community.
System Environment
Hardware
-
System: NVIDIA Spark GB10
-
GPU Memory: 128GB
-
Storage: 4TB SSD
Model Server
-
Framework: vLLM
-
Docker Image:
vllm/vllm-openai:latest -
Model:
Qwen/Qwen3.5-35B-A3B -
API Mode: OpenAI-compatible API
Client
- OpenClaw (running on a separate machine)
Network Topology
OpenClaw Client ---> vLLM Server (Spark GB10)
Port 8000
vLLM Deployment Command
docker run -d \
--name vllm-qwen35b \
--gpus all \
--ipc=host \
-p 8000:8000 \
-e OMP_NUM_THREADS=16 \
-e VLLM_WORKER_MULTIPROC_METHOD=spawn \
-v ~/.cache/huggingface:/root/.cache/huggingface \
vllm/vllm-openai:latest \
Qwen/Qwen3.5-35B-A3B \
--served-model-name qwen35b \
--host 0.0.0.0 \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.85 \
--max-model-len 8192 \
--max-num-seqs 256 \
--max-num-batched-tokens 32768 \
--block-size 16 \
--enable-chunked-prefill \
--disable-log-stats \
--enable-auto-tool-choice \
--tool-call-parser hermes
Verification
The vLLM server starts normally. Example log excerpt:
version 0.17.0
model Qwen/Qwen3.5-35B-A3B
enable_auto_tool_choice: True
tool_call_parser: hermes
max_model_len: 8192
Basic API test works:
GET /v1/models
returns:
{
"data":[
{"id":"qwen35b"}
]
}
Problem
When OpenClaw sends a request with tool_choice="auto" to the vLLM server, the following error occurs:
run error: 400 "auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set
connected | error
agent main | session main (openclaw-tui) | vllm/qwen35b | tokens ?/16k
However, both parameters are already set in the startup command:
--enable-auto-tool-choice
--tool-call-parser hermes
Expected Behavior
The server should accept requests with:
tool_choice = "auto"
and allow tool calling through the OpenAI-compatible API.
Actual Behavior
The server returns HTTP 400 with the message:
"auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set
even though both parameters are enabled.
Questions
-
Is
hermesthe correct--tool-call-parserfor Qwen3.5 models in vLLM? -
Should another parser (for example
qwen3_xmloropenai) be used instead? -
Could the issue be caused by request formatting differences from OpenClaw?
Additional Information
If needed, I can also provide:
-
The exact HTTP request payload sent by OpenClaw
-
Full vLLM logs
-
Docker environment details
-
GPU utilization information
Thank you very much for your time and assistance.