[Bugfix] Suppress HarmonyError Unexpected token while expecting start token 200006 (#59254)

Signed-off-by: Yifan Zong <yzong@redhat.com>
This commit is contained in:
yzong-rh
2026-09-29 16:40:15 -04:00
committed by GitHub
parent faacc13565
commit 1d331f8341
2 changed files with 17 additions and 2 deletions
+9
View File
@@ -872,6 +872,15 @@ class TestProcessChunk:
("final", "Two"),
]
def test_malformed_token_does_not_raise(self, harmony_parser):
malformed = encode_output(
"<|channel|>analysis<|message|>think<|end|><|return|>"
"<|start|>assistant<|channel|>final<|message|>answer<|return|>"
)
result = harmony_parser.process_chunk(malformed)
assert "".join(s.delta for s in result.segments if s.delta) == "thinkanswer"
class TestCountReasoningTokens:
def test_matches_process_chunk(self, harmony_parser, gpt_oss_tokenizer):
+8 -2
View File
@@ -335,7 +335,10 @@ class HarmonyParser(DelegatingParser):
segments: list[Segment] = []
reasoning_token_count = 0
for token_id in token_ids:
self._harmony_parser.process(token_id)
try:
self._harmony_parser.process(token_id)
except HarmonyError:
continue
channel = self._harmony_parser.current_channel
recipient = self._normalize_recipient(
self._harmony_parser.current_recipient
@@ -376,7 +379,10 @@ class HarmonyParser(DelegatingParser):
parser = get_streamable_parser_for_assistant()
count = 0
for token_id in token_ids:
parser.process(token_id)
try:
parser.process(token_id)
except HarmonyError:
continue
recipient = self._normalize_recipient(parser.current_recipient)
if self._is_reasoning_token(token_id, parser.current_channel, recipient):
count += 1