From ef9a0c6594bbf9eedc76b2cb8b8f548910a95d28 Mon Sep 17 00:00:00 2001 From: reidliu41 Date: Sun, 20 Apr 2025 08:52:56 +0800 Subject: [PATCH 1/3] [frontend] enhance tool_calls type check Signed-off-by: reidliu41 --- vllm/entrypoints/chat_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vllm/entrypoints/chat_utils.py b/vllm/entrypoints/chat_utils.py index 0b662f1a7ec3..6df1d83a24c7 100644 --- a/vllm/entrypoints/chat_utils.py +++ b/vllm/entrypoints/chat_utils.py @@ -1095,7 +1095,7 @@ def _parse_chat_message_content( if role == 'assistant': parsed_msg = _AssistantParser(message) - if "tool_calls" in parsed_msg: + if "tool_calls" in parsed_msg and parsed_msg["tool_calls"] is not None: # noqa: E501 result_msg["tool_calls"] = list(parsed_msg["tool_calls"]) elif role == "tool": parsed_msg = _ToolParser(message) From 64d84934e7e3bfd174b2c8a5736f774f0b0b9adb Mon Sep 17 00:00:00 2001 From: reidliu41 Date: Tue, 22 Apr 2025 19:03:31 +0800 Subject: [PATCH 2/3] update the condition Signed-off-by: reidliu41 --- vllm/entrypoints/chat_utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vllm/entrypoints/chat_utils.py b/vllm/entrypoints/chat_utils.py index 6df1d83a24c7..2fd626d53416 100644 --- a/vllm/entrypoints/chat_utils.py +++ b/vllm/entrypoints/chat_utils.py @@ -1095,7 +1095,8 @@ def _parse_chat_message_content( if role == 'assistant': parsed_msg = _AssistantParser(message) - if "tool_calls" in parsed_msg and parsed_msg["tool_calls"] is not None: # noqa: E501 + if ("tool_calls" in parsed_msg + and parsed_msg["tool_calls"] is not None): result_msg["tool_calls"] = list(parsed_msg["tool_calls"]) elif role == "tool": parsed_msg = _ToolParser(message) From 558df35a3ffa904513ff368ef72cdfedca85d075 Mon Sep 17 00:00:00 2001 From: reidliu41 Date: Tue, 22 Apr 2025 21:08:21 +0800 Subject: [PATCH 3/3] update a comment Signed-off-by: reidliu41 --- vllm/entrypoints/chat_utils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vllm/entrypoints/chat_utils.py b/vllm/entrypoints/chat_utils.py index 2fd626d53416..2e19ebcdd61f 100644 --- a/vllm/entrypoints/chat_utils.py +++ b/vllm/entrypoints/chat_utils.py @@ -1095,6 +1095,9 @@ def _parse_chat_message_content( if role == 'assistant': parsed_msg = _AssistantParser(message) + # The 'tool_calls' is not None check ensures compatibility. + # It's needed only if downstream code doesn't strictly + # follow the OpenAI spec. if ("tool_calls" in parsed_msg and parsed_msg["tool_calls"] is not None): result_msg["tool_calls"] = list(parsed_msg["tool_calls"])