From cfb49c4c181a96d5df07fbfacd819639baef0bab Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 29 Jun 2026 00:19:47 -0500 Subject: [PATCH] refac --- backend/open_webui/utils/middleware.py | 27 +++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 50cd42d131..13bf4ef956 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -2985,7 +2985,15 @@ async def process_chat_payload(request, form_data, user, metadata, model): # restore to the true original (before file-source injection) rather # than a snapshot that already has the RAG template baked in. system_message = get_system_message(form_data['messages']) - metadata['system_prompt'] = get_content_from_message(system_message) if system_message else None + system_content = get_content_from_message(system_message) if system_message else '' + model_system_prompt = await resolve_system_prompt( + (form_data.get('params') or {}).get('system'), + metadata, + user, + ) + if model_system_prompt: + system_content = f'{model_system_prompt}\n{system_content}' if system_content else model_system_prompt + metadata['system_prompt'] = system_content or None metadata['user_prompt'] = get_last_user_message(form_data['messages']) metadata['sources'] = sources[:] if sources else [] @@ -4864,10 +4872,19 @@ async def streaming_chat_response_handler(response, ctx): original_user_message, form_data['messages'], ) - replace_system_message_content( - original_system_content or '', - form_data['messages'], - ) + if original_system_content is not None: + if get_system_message(form_data['messages']): + replace_system_message_content( + original_system_content, + form_data['messages'], + ) + else: + form_data['messages'] = add_or_update_system_message( + original_system_content, + form_data['messages'], + ) + else: + replace_system_message_content('', form_data['messages']) # Build context: file sources with content, # tool sources as citation markers only.