From 91aea7fe8c66411076d67feee73b7f87c4214e02 Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Tue, 30 Jun 2026 01:31:41 +0800 Subject: [PATCH] fix: Fixed the error message display for non-standard SSE (#23228) --- backend/open_webui/utils/middleware.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 3dde15af21..829f1e5d6a 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -4143,6 +4143,26 @@ async def streaming_chat_response_handler(response, ctx): # "data:" is the prefix for each event if not data.startswith('data:'): + # Some upstreams return plain JSON error lines in a streaming response + # (without SSE `data:` prefix). Try to normalize these into standard + # error events so frontend and DB paths still receive them. + try: + raw_obj = json.loads(data) + raw_error = raw_obj.get("error") if isinstance(raw_obj, dict) else None + if raw_error: + try: + Chats.upsert_message_to_chat_by_id_and_message_id( + metadata["chat_id"], + metadata["message_id"], + { + "error": {"content": raw_error}, + }, + ) + except Exception: + pass + await event_emitter({ "type": "chat:completion", "data": { "error": raw_error } }) + except Exception: + pass continue # Remove the prefix