From eb42686a30cddf325ffeff7b3bd5e3a7298c2c00 Mon Sep 17 00:00:00 2001 From: CedricHuang <38417461+CedricHwong@users.noreply.github.com> Date: Mon, 14 Sep 2026 10:43:09 +0800 Subject: [PATCH] [Bugfix][Frontend] Support Responses text types in DeepSeek V4.1 (#56299) Signed-off-by: CedricHuang <38417461+CedricHwong@users.noreply.github.com> Co-authored-by: OpenAI Codex --- tests/tokenizers_/test_deepseek_v41.py | 18 ++++++++++++++++++ vllm/tokenizers/deepseek_v41.py | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/tokenizers_/test_deepseek_v41.py b/tests/tokenizers_/test_deepseek_v41.py index 493fdd88ba..13c0375fbb 100644 --- a/tests/tokenizers_/test_deepseek_v41.py +++ b/tests/tokenizers_/test_deepseek_v41.py @@ -99,6 +99,24 @@ def test_raw_text_parts_preserve_reference_separator(): assert messages == original +@pytest.mark.parametrize( + ("role", "responses_type"), + [("user", "input_text"), ("assistant", "output_text")], +) +def test_responses_text_parts_match_chat_text_parts(role, responses_type): + responses_message = { + "role": role, + "content": [{"type": responses_type, "text": "hello"}], + } + chat_message = { + "role": role, + "content": [{"type": "text", "text": "hello"}], + } + assert render([responses_message], thinking=False) == render( + [chat_message], thinking=False + ) + + def test_mid_system_gets_its_own_marker_and_generation_header(): assert render( [ diff --git a/vllm/tokenizers/deepseek_v41.py b/vllm/tokenizers/deepseek_v41.py index 3a57717270..a1449e59e2 100644 --- a/vllm/tokenizers/deepseek_v41.py +++ b/vllm/tokenizers/deepseek_v41.py @@ -32,7 +32,7 @@ def _normalize_messages( parts = [] for block in content: part_type = block.get("type") - if part_type == "text": + if part_type in ("text", "input_text", "output_text"): parts.append(block.get("text", "")) elif part_type in ("image_url", "input_image", "image_pil"): parts.append(IMAGE_PLACEHOLDER)