From bd5333b6ab16489b8a0419fdb9a80c0dfb8ab2f6 Mon Sep 17 00:00:00 2001 From: eric8810 Date: Tue, 26 Aug 2025 12:50:03 +0800 Subject: [PATCH] Fix regex patterns in DeepSeekV31ToolParser to use non-greedy matching Change greedy .* to non-greedy .*? in tool call regex patterns to prevent over-matching when parsing function names and arguments in tool calls. --- .../openai/tool_parsers/deepseekv31_tool_parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vllm/entrypoints/openai/tool_parsers/deepseekv31_tool_parser.py b/vllm/entrypoints/openai/tool_parsers/deepseekv31_tool_parser.py index ff9188190f3f..bd7c6c8ecee8 100644 --- a/vllm/entrypoints/openai/tool_parsers/deepseekv31_tool_parser.py +++ b/vllm/entrypoints/openai/tool_parsers/deepseekv31_tool_parser.py @@ -39,11 +39,11 @@ def __init__(self, tokenizer: AnyTokenizer): self.tool_call_end_token: str = "<|tool▁call▁end|>" self.tool_call_regex = re.compile( - r"<|tool▁call▁begin|>(?P.*)<|tool▁sep|>(?P.*)<|tool▁call▁end|>" + r"<|tool▁call▁begin|>(?P.*?)<|tool▁sep|>(?P.*?)<|tool▁call▁end|>" ) self.stream_tool_call_portion_regex = re.compile( - r"(?P.*)<|tool▁sep|>(?P.*)") + r"(?P.*?)<|tool▁sep|>(?P.*)") self.stream_tool_call_name_regex = re.compile( r"(?P.*)<|tool▁sep|>")