From 3dd8255816898467246c81cba3c9bc48bc18d86d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 17 Apr 2026 12:37:44 +0900 Subject: [PATCH] refac --- backend/open_webui/utils/misc.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index 345165db28..441f26a918 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -148,19 +148,22 @@ def convert_output_to_messages(output: list, raw: bool = False) -> list[dict]: messages = [] pending_tool_calls = [] pending_content = [] + pending_reasoning = '' def flush_pending(): - nonlocal pending_content, pending_tool_calls - if pending_content or pending_tool_calls: + nonlocal pending_content, pending_tool_calls, pending_reasoning + if pending_content or pending_tool_calls or pending_reasoning: messages.append( { 'role': 'assistant', 'content': '\n'.join(pending_content) if pending_content else '', **({'tool_calls': pending_tool_calls} if pending_tool_calls else {}), + **({'reasoning_content': pending_reasoning} if pending_reasoning else {}), } ) pending_content = [] pending_tool_calls = [] + pending_reasoning = '' for item in output: item_type = item.get('type', '') @@ -245,6 +248,10 @@ def convert_output_to_messages(output: list, raw: bool = False) -> list[dict]: start_tag = item.get('start_tag', '') end_tag = item.get('end_tag', '') pending_content.append(f'{start_tag}{reasoning_text}{end_tag}') + # Preserve raw reasoning text as reasoning_content for + # providers that require it on assistant tool-call messages + # (e.g. Moonshot/Kimi K2.5). + pending_reasoning += reasoning_text # else: skip reasoning blocks for normal LLM messages elif item_type == 'open_webui:code_interpreter':