Spaces:
Paused
Paused
| from typing import Any, Dict | |
| from pydantic import BaseModel, Field | |
| from litellm.exceptions import LITELLM_EXCEPTION_TYPES | |
| class ErrorResponse(BaseModel): | |
| detail: Dict[str, Any] = Field( | |
| ..., | |
| example={ # type: ignore | |
| "error": { | |
| "message": "Error message", | |
| "type": "error_type", | |
| "param": "error_param", | |
| "code": "error_code", | |
| } | |
| }, | |
| ) | |
| # Define a function to get the status code | |
| def get_status_code(exception): | |
| if hasattr(exception, "status_code"): | |
| return exception.status_code | |
| # Default status codes for exceptions without a status_code attribute | |
| if exception.__name__ == "Timeout": | |
| return 408 # Request Timeout | |
| if exception.__name__ == "APIConnectionError": | |
| return 503 # Service Unavailable | |
| return 500 # Internal Server Error as default | |
| # Create error responses | |
| ERROR_RESPONSES = { | |
| get_status_code(exception): { | |
| "model": ErrorResponse, | |
| "description": exception.__doc__ or exception.__name__, | |
| } | |
| for exception in LITELLM_EXCEPTION_TYPES | |
| } | |
| # Ensure we have a 500 error response | |
| if 500 not in ERROR_RESPONSES: | |
| ERROR_RESPONSES[500] = { | |
| "model": ErrorResponse, | |
| "description": "Internal Server Error", | |
| } | |