From 82a64b3d8f93521d39569078d4ac56992a50a640 Mon Sep 17 00:00:00 2001 From: Chauncey Date: Thu, 4 Dec 2025 15:12:12 +0800 Subject: [PATCH] [Bugfix] fixed deepseekv32 tool calling error (#30025) Signed-off-by: chaunceyjiang Co-authored-by: Cyrus Leung --- vllm/tokenizers/deepseek_v32_encoding.py | 6 ++++-- vllm/tokenizers/deepseekv32.py | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/vllm/tokenizers/deepseek_v32_encoding.py b/vllm/tokenizers/deepseek_v32_encoding.py index fb8989e651e3a..521bd92959312 100644 --- a/vllm/tokenizers/deepseek_v32_encoding.py +++ b/vllm/tokenizers/deepseek_v32_encoding.py @@ -95,8 +95,10 @@ def tool_calls_to_openai_format(tool_calls): def encode_arguments_to_dsml(tool_call: dict[str, str]) -> str: p_dsml_template = """<{dsml_token}parameter name="{key}" string="{is_str}">{value}""" P_dsml_strs = [] - - arguments = json.loads(tool_call["arguments"]) + if isinstance(tool_call["arguments"], str): + arguments = json.loads(tool_call["arguments"]) + else: + arguments = tool_call["arguments"] for k, v in arguments.items(): p_dsml_str = p_dsml_template.format( diff --git a/vllm/tokenizers/deepseekv32.py b/vllm/tokenizers/deepseekv32.py index 7466ad4076bd8..1140357cf861d 100644 --- a/vllm/tokenizers/deepseekv32.py +++ b/vllm/tokenizers/deepseekv32.py @@ -43,7 +43,8 @@ class DeepseekV32Tokenizer(HfTokenizer): thinking_mode = "thinking" if not thinking: thinking_mode = "chat" - messages = messages.copy() + conversation = kwargs.get("conversation", messages) + messages = conversation.copy() drop_thinking = True if tools is not None and len(tools) > 0: messages.insert(0, {"role": "system"})