This commit is contained in:
Timothy Jaeryang Baek
2026-04-20 08:53:06 +09:00
parent e29d145a1c
commit d5e69f182c
3 changed files with 38 additions and 8 deletions
+4 -3
View File
@@ -1877,7 +1877,8 @@ async def chat_completion(
finally:
raise # re-raise to ensure proper task cancellation handling
except Exception as e:
log.error('Error processing chat payload: %s', e)
error_detail = e.detail if isinstance(e, HTTPException) else str(e)
log.error('Error processing chat payload: %s', error_detail)
if metadata.get('chat_id') and metadata.get('message_id'):
# Update the chat message with the error
try:
@@ -1887,7 +1888,7 @@ async def chat_completion(
metadata['message_id'],
{
'parentId': metadata.get('user_message_id', None),
'error': {'content': str(e)},
'error': {'content': error_detail},
},
)
@@ -1896,7 +1897,7 @@ async def chat_completion(
await event_emitter(
{
'type': 'chat:message:error',
'data': {'error': {'content': str(e)}},
'data': {'error': {'content': error_detail}},
}
)
await event_emitter(
+31 -4
View File
@@ -94,9 +94,24 @@ async def process_pipeline_inlet_filter(request, payload, user, models):
response.raise_for_status()
payload = await response.json()
except aiohttp.ClientResponseError as e:
res = await response.json() if response.content_type == 'application/json' else {}
if 'detail' in res:
raise Exception(response.status, res['detail'])
try:
res = await response.json() if 'application/json' in response.content_type else {}
if 'detail' in res:
raise HTTPException(
status_code=response.status,
detail=res['detail'],
)
except HTTPException:
raise
except Exception:
pass
raise HTTPException(
status_code=response.status,
detail=e.message,
)
except HTTPException:
raise
except Exception as e:
log.exception(f'Connection error: {e}')
@@ -146,9 +161,21 @@ async def process_pipeline_outlet_filter(request, payload, user, models):
try:
res = await response.json() if 'application/json' in response.content_type else {}
if 'detail' in res:
raise Exception(response.status, res)
raise HTTPException(
status_code=response.status,
detail=res['detail'],
)
except HTTPException:
raise
except Exception:
pass
raise HTTPException(
status_code=response.status,
detail=e.message,
)
except HTTPException:
raise
except Exception as e:
log.exception(f'Connection error: {e}')
+3 -1
View File
@@ -10,7 +10,7 @@ import json
import uuid
import asyncio
from fastapi import Request, status
from fastapi import HTTPException, Request, status
from starlette.responses import Response, StreamingResponse, JSONResponse
@@ -328,6 +328,8 @@ async def chat_completed(request: Request, form_data: dict, user: Any):
try:
data = await process_pipeline_outlet_filter(request, data, user, models)
except HTTPException:
raise
except Exception as e:
raise Exception(f'Error: {e}')