From 8898778a2c4ba57b406ccde395b44170d2c745b2 Mon Sep 17 00:00:00 2001 From: AinL Date: Mon, 18 Aug 2025 08:51:03 +0000 Subject: [PATCH 1/2] fix --- python/sglang/srt/reasoning_parser.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/python/sglang/srt/reasoning_parser.py b/python/sglang/srt/reasoning_parser.py index 1c11970d4a1d..f13ab232d57d 100644 --- a/python/sglang/srt/reasoning_parser.py +++ b/python/sglang/srt/reasoning_parser.py @@ -339,9 +339,13 @@ def detect_and_parse(self, text: str) -> StreamingParseResult: # Process full_normal_text for final output normal_text = "" - if self.final_channel_start in full_normal_text: - final_start = full_normal_text.find(self.final_channel_start) - final_content_start = final_start + len(self.final_channel_start) + if (self.final_channel_start in full_normal_text) or ("<|channel|>final<|message|>" in full_normal_text): + if self.final_channel_start in full_normal_text: + keyword = self.final_channel_start + elif "<|channel|>final<|message|>" in full_normal_text: + keyword = "<|channel|>final<|message|>" + final_start = full_normal_text.find(keyword) + final_content_start = final_start + len(keyword) final_end = full_normal_text.find( self.final_channel_end, final_content_start ) @@ -368,11 +372,11 @@ def detect_and_parse(self, text: str) -> StreamingParseResult: else: # Final channel not complete - extract what we have # Look for just <|channel|>final<|message|> without <|return|> - alt_final_start = full_normal_text.find(self.final_channel_start) + alt_final_start = full_normal_text.find(keyword) if alt_final_start != -1: before_alt_final = full_normal_text[:alt_final_start].strip() alt_final_content = full_normal_text[ - alt_final_start + len(self.final_channel_start) : + alt_final_start + len(keyword) : ].strip() parts = [] From 8bf26c0903fb26ed53c43ffd9b70a53060880c08 Mon Sep 17 00:00:00 2001 From: AinL Date: Mon, 18 Aug 2025 08:54:38 +0000 Subject: [PATCH 2/2] fmt --- python/sglang/srt/reasoning_parser.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/sglang/srt/reasoning_parser.py b/python/sglang/srt/reasoning_parser.py index f13ab232d57d..447cd5e3a345 100644 --- a/python/sglang/srt/reasoning_parser.py +++ b/python/sglang/srt/reasoning_parser.py @@ -339,7 +339,9 @@ def detect_and_parse(self, text: str) -> StreamingParseResult: # Process full_normal_text for final output normal_text = "" - if (self.final_channel_start in full_normal_text) or ("<|channel|>final<|message|>" in full_normal_text): + if (self.final_channel_start in full_normal_text) or ( + "<|channel|>final<|message|>" in full_normal_text + ): if self.final_channel_start in full_normal_text: keyword = self.final_channel_start elif "<|channel|>final<|message|>" in full_normal_text: