ray-llm
28 строк · 971.0 Байт
1from typing import Union2
3from fastapi import HTTPException, Request4from httpx import HTTPStatusError as HTTPXHTTPStatusError5from opentelemetry import trace6from starlette.responses import JSONResponse7
8from rayllm.backend.server.openai_compat.openai_exception import OpenAIHTTPException9from rayllm.backend.server.utils import get_response_for_error10
11
12def openai_exception_handler(13request: Request,14exc: Union[OpenAIHTTPException, HTTPException],15):16assert isinstance(17exc, (OpenAIHTTPException, HTTPException, HTTPXHTTPStatusError)18), f"Unable to handle invalid exception {type(exc)}"19
20err_response = get_response_for_error(21exc, request.state.request_id, prefix="Returning error to user"22)23
24span = trace.get_current_span()25span.record_exception(exc)26span.set_status(trace.StatusCode.ERROR, description=err_response.error.message)27
28return JSONResponse(content=err_response.dict(), status_code=exc.status_code)29