From 597b00a5479ac0466b2f4d23a5e902ee0950091d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 16 Oct 2026 03:17:14 +0400 Subject: [PATCH] refac --- backend/open_webui/utils/middleware.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index ea4b4e7681..0d19a9e89f 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -6337,9 +6337,26 @@ async def streaming_chat_response_handler(response, ctx): ) try: - messages, context_summary, compacted = await compact_messages_for_request( - request, user, messages, metadata, model_id, request.app.state.MODELS - ) + user_messages = [ + (message, message.get('content')) + for message in messages + if user_prompt + and message.get('role') == 'user' + and message.get('content') == user_prompt.get('content') + ] + try: + # Summarize the user's text, then restore source context for the model. + for message, _ in user_messages: + message['content'] = copy.deepcopy(message.get('content')) + set_last_user_message_content( + metadata.get('base_user_prompt') or user_message, [message] + ) + messages, context_summary, compacted = await compact_messages_for_request( + request, user, messages, metadata, model_id, request.app.state.MODELS + ) + finally: + for message, content in user_messages: + message['content'] = content if compacted: if user_prompt is not None: messages = [message for message in messages if message != user_prompt]