[BugFix][gpt-oss] Fix Chat Completion with Multiple Output Message (#23318)

Signed-off-by: Chen Zhang <zhangch99@outlook.com>
This commit is contained in:
Chen Zhang 2025-08-21 10:31:11 -07:00 committed by GitHub
parent 603fbbbce0
commit 8a19303173
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -329,23 +329,19 @@ def parse_chat_output(
token_ids: Sequence[int]) -> tuple[Optional[str], Optional[str], bool]: token_ids: Sequence[int]) -> tuple[Optional[str], Optional[str], bool]:
parser = parse_output_into_messages(token_ids) parser = parse_output_into_messages(token_ids)
output_msgs = parser.messages output_msgs = parser.messages
is_tool_call = False # TODO: update this when tool call is supported
if len(output_msgs) == 0: if len(output_msgs) == 0:
# The generation has stopped during reasoning. # The generation has stopped during reasoning.
is_tool_call = False
reasoning_content = parser.current_content reasoning_content = parser.current_content
final_content = None final_content = None
elif len(output_msgs) == 1: elif len(output_msgs) == 1:
# The generation has stopped during final message. # The generation has stopped during final message.
is_tool_call = False
reasoning_content = output_msgs[0].content[0].text reasoning_content = output_msgs[0].content[0].text
final_content = parser.current_content final_content = parser.current_content
else: else:
if len(output_msgs) != 2: reasoning_msg = output_msgs[:-1]
raise ValueError( final_msg = output_msgs[-1]
"Expected 2 output messages (reasoning and final), " reasoning_content = "\n".join(
f"but got {len(output_msgs)}.") [msg.content[0].text for msg in reasoning_msg])
reasoning_msg, final_msg = output_msgs
reasoning_content = reasoning_msg.content[0].text
final_content = final_msg.content[0].text final_content = final_msg.content[0].text
is_tool_call = final_msg.recipient is not None
return reasoning_content, final_content, is_tool_call return reasoning_content, final_content, is_tool_call