- OS:macOS
- Continue version: continue dev
- IDE version: pycharm/ VScode
- Model: qwen3-32b with vLLM v0.8.5
### Description
Hi Continue team,
We're running qwen3-32b with vLLM v0.8.5 using the OpenAI-compatible API, and testing Agent Mode with tool_calls enabled.
The model returns a valid tool_calls response via streamed SSE, but Continue does not display any output or perform any action. There are no errors- the output is silently ignored.
Sample streamed response from vLLM:
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"name":"builtin_create_new_file"}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":"{"filepath": ""}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":"file"}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":".txt"}}]}}]}
...
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":" , \"contents\": \"test\""}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":"\"}"}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"content":""},"finish_reason":"tool_calls"}]}
This follows OpenAI's (vLLM) streaming format for tool calling, but it seems Continue doesn’t currently reconstruct or act on these chunks.
Launch flags used for vLLM:
It looks like the model is emitting a valid tool_calls stream, but Continue may not fully support:
streamed function/tool calling
or the hermes parser format
or partial assembly of arguments across chunks
Could you confirm whether this format is currently supported, or if there are specific constraints on the tool call structure for Continue to handle it?
Happy to share full logs or config if needed
### To reproduce
_No response_
### Log output
```Shell
date: Sun, 04 May 2025 13:03:12 GMT
server: uvicorn
content-type: text/event-stream; charset=utf-8
connection: close
transfer-encoding: chunked
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"content":"<think>"},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"content":"\n\n"},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"content":"</think>"},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"content":"\n\n"},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"id":"chatcmpl-tool-3c3d359d32b34573a6ff324ca0951c42","type":"function","index":0,"function":{"name":"builtin_create_new_file"}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"filepath\": \""}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"file"}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt"}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\","}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \""}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"contents"}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":"}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \"\""}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-c6581b7a2d4b4a108e90c20c3e5c2282","object":"chat.completion.chunk","created":1746363793,"model":"agent","choices":[{"index":0,"delta":{"content":""},"logprobs":null,"finish_reason":"tool_calls","stop_reason":null}]}
Before submitting your bug report
Relevant environment info
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"name":"builtin_create_new_file"}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":"{"filepath": ""}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":"file"}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":".txt"}}]}}]}
...
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":" , \"contents\": \"test\""}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"tool_calls":[{"function":{"arguments":"\"}"}}]}}]}
data: {"id":"...","object":"chat.completion.chunk","choices":[{"delta":{"content":""},"finish_reason":"tool_calls"}]}
python3 -m vllm.entrypoints.openai.api_server \
--served-model-name qwen3-32b \
--quantization bitsandbytes \
--dtype float16 \
--gpu-memory-utilization 0.9 \
--trust-remote-code \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--chat-template examples/tool_chat_template_hermes.jinja \
--max-model-len 32768