[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 <codex@openai.com>
CedricHuang committed
Sep 14, 2026 at 10:43 UTC
eb42686a30cddf325ffeff7b3bd5e3a7298c2c00
2 files changed
+19
-1
tests/tokenizers_/test_deepseek_v41.py
+18
@@ -99,6 +99,24 @@ def test_raw_text_parts_preserve_reference_separator():
99
assert messages == original
100
101
102
+@pytest.mark.parametrize(
103
+ ("role", "responses_type"),
104
+ [("user", "input_text"), ("assistant", "output_text")],
105
+)
106
+def test_responses_text_parts_match_chat_text_parts(role, responses_type):
107
+ responses_message = {
108
+ "role": role,
109
+ "content": [{"type": responses_type, "text": "hello"}],
110
+ }
111
+ chat_message = {
112
+ "role": role,
113
+ "content": [{"type": "text", "text": "hello"}],
114
+ }
115
+ assert render([responses_message], thinking=False) == render(
116
+ [chat_message], thinking=False
117
+ )
118
+
119
+
120
def test_mid_system_gets_its_own_marker_and_generation_header():
121
assert render(
122
[
vllm/tokenizers/deepseek_v41.py
+1
-1
@@ -32,7 +32,7 @@ def _normalize_messages(
32
parts = []
33
for block in content:
34
part_type = block.get("type")
35
- if part_type == "text":
35
+ if part_type in ("text", "input_text", "output_text"):
36
parts.append(block.get("text", ""))
37
elif part_type in ("image_url", "input_image", "image_pil"):
38
parts.append(IMAGE_PLACEHOLDER)