From 7cdba98edf15f695d74f50a0fbe6882eb393f5cf Mon Sep 17 00:00:00 2001 From: ShiJie Zhong <62382570+ZhongsJie@users.noreply.github.com> Date: Wed, 4 Mar 2026 13:24:46 +0800 Subject: [PATCH] [BugFix] Support tool_choice=none in the Anthropic API (#35835) Signed-off-by: ZhongsJie Co-authored-by: Chauncey --- vllm/entrypoints/anthropic/protocol.py | 2 +- vllm/entrypoints/anthropic/serving.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/vllm/entrypoints/anthropic/protocol.py b/vllm/entrypoints/anthropic/protocol.py index 19ca28f1d..c541db513 100644 --- a/vllm/entrypoints/anthropic/protocol.py +++ b/vllm/entrypoints/anthropic/protocol.py @@ -77,7 +77,7 @@ class AnthropicTool(BaseModel): class AnthropicToolChoice(BaseModel): """Tool Choice definition""" - type: Literal["auto", "any", "tool"] + type: Literal["auto", "any", "tool", "none"] name: str | None = None @model_validator(mode="after") diff --git a/vllm/entrypoints/anthropic/serving.py b/vllm/entrypoints/anthropic/serving.py index f0110de38..85232e918 100644 --- a/vllm/entrypoints/anthropic/serving.py +++ b/vllm/entrypoints/anthropic/serving.py @@ -349,6 +349,8 @@ class AnthropicServingMessages(OpenAIServingChat): req.tool_choice = "auto" elif tool_choice_type == "any": req.tool_choice = "required" + elif tool_choice_type == "none": + req.tool_choice = "none" elif tool_choice_type == "tool": req.tool_choice = ChatCompletionNamedToolChoiceParam.model_validate( {