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: finally:
raise # re-raise to ensure proper task cancellation handling raise # re-raise to ensure proper task cancellation handling
except Exception as e: 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'): if metadata.get('chat_id') and metadata.get('message_id'):
# Update the chat message with the error # Update the chat message with the error
try: try:
@@ -1887,7 +1888,7 @@ async def chat_completion(
metadata['message_id'], metadata['message_id'],
{ {
'parentId': metadata.get('user_message_id', None), '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( await event_emitter(
{ {
'type': 'chat:message:error', 'type': 'chat:message:error',
'data': {'error': {'content': str(e)}}, 'data': {'error': {'content': error_detail}},
} }
) )
await event_emitter( 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() response.raise_for_status()
payload = await response.json() payload = await response.json()
except aiohttp.ClientResponseError as e: except aiohttp.ClientResponseError as e:
res = await response.json() if response.content_type == 'application/json' else {} try:
if 'detail' in res: res = await response.json() if 'application/json' in response.content_type else {}
raise Exception(response.status, res['detail']) 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: except Exception as e:
log.exception(f'Connection error: {e}') log.exception(f'Connection error: {e}')
@@ -146,9 +161,21 @@ async def process_pipeline_outlet_filter(request, payload, user, models):
try: try:
res = await response.json() if 'application/json' in response.content_type else {} res = await response.json() if 'application/json' in response.content_type else {}
if 'detail' in res: if 'detail' in res:
raise Exception(response.status, res) raise HTTPException(
status_code=response.status,
detail=res['detail'],
)
except HTTPException:
raise
except Exception: except Exception:
pass pass
raise HTTPException(
status_code=response.status,
detail=e.message,
)
except HTTPException:
raise
except Exception as e: except Exception as e:
log.exception(f'Connection error: {e}') log.exception(f'Connection error: {e}')
+3 -1
View File
@@ -10,7 +10,7 @@ import json
import uuid import uuid
import asyncio import asyncio
from fastapi import Request, status from fastapi import HTTPException, Request, status
from starlette.responses import Response, StreamingResponse, JSONResponse from starlette.responses import Response, StreamingResponse, JSONResponse
@@ -328,6 +328,8 @@ async def chat_completed(request: Request, form_data: dict, user: Any):
try: try:
data = await process_pipeline_outlet_filter(request, data, user, models) data = await process_pipeline_outlet_filter(request, data, user, models)
except HTTPException:
raise
except Exception as e: except Exception as e:
raise Exception(f'Error: {e}') raise Exception(f'Error: {e}')