diff --git a/vllm/tool_parsers/deepseekv32_tool_parser.py b/vllm/tool_parsers/deepseekv32_tool_parser.py index 49c9540d6..30e23ed9f 100644 --- a/vllm/tool_parsers/deepseekv32_tool_parser.py +++ b/vllm/tool_parsers/deepseekv32_tool_parser.py @@ -110,6 +110,18 @@ class DeepSeekV32ToolParser(ToolParser): """Generate a unique tool call ID.""" return f"call_{uuid.uuid4().hex[:24]}" + def adjust_request(self, request): + request = super().adjust_request(request) + if request.tools and request.tool_choice != "none": + # Ensure tool call tokens + # (<|DSML|function_calls>, ) + # are not skippedduring decoding. + # Even though they are not marked as special tokens, + # setting skip_special_tokens=False ensures proper handling in + # transformers 5.x where decoding behavior may have changed. + request.skip_special_tokens = False + return request + def _reset_streaming_state(self): """Reset all streaming state.""" self.current_tool_index = 0