Co-Authored-By: Fares <26122914+faqeel@users.noreply.github.com>
This commit is contained in:
Timothy Jaeryang Baek
2026-08-25 15:05:02 -04:00
co-authored by Fares
parent 35fbde0a3f
commit a610d77137
3 changed files with 34 additions and 9 deletions
+7
View File
@@ -111,6 +111,7 @@ from open_webui.utils.misc import (
get_last_user_message_item,
get_message_list,
get_output_text,
get_response_error_detail,
get_reasoning_details,
get_system_message,
is_string_allowed,
@@ -5958,6 +5959,9 @@ async def streaming_chat_response_handler(response, ctx):
await stream_body_handler(res, new_form_data)
output[:0] = prior_output
prior_output = []
elif getattr(res, 'status_code', 200) >= 400:
await emit_message_error(get_message_error_content(get_response_error_detail(res)))
break
else:
break
except Exception as e:
@@ -6142,6 +6146,9 @@ async def streaming_chat_response_handler(response, ctx):
if isinstance(res, StreamingResponse):
await stream_body_handler(res, new_form_data)
elif getattr(res, 'status_code', 200) >= 400:
await emit_message_error(get_message_error_content(get_response_error_detail(res)))
break
else:
break
except Exception as e:
+25
View File
@@ -40,6 +40,31 @@ def merge_model_params(base: dict, override: dict) -> dict:
return params
def get_response_error_detail(response: object) -> str:
status_code = getattr(response, 'status_code', None)
fallback = f'Provider returned HTTP {status_code}' if status_code else 'Provider returned an error'
try:
body = response.body
if not isinstance(body, str):
body = body.decode('utf-8', 'replace')
detail = JSONCodec.loads(body)
except Exception:
return fallback
while isinstance(detail, dict):
next_detail = None
for key in ('error', 'message', 'detail'):
if key in detail:
next_detail = detail[key]
break
if next_detail is None:
return str(detail)
detail = next_detail
return detail if isinstance(detail, str) else str(detail)
def _strip_filter_entry(entry):
# Compose list-form env syntax passes surrounding quotes through verbatim
return (entry or '').strip().strip('"\'').strip()