File size: 1,071 Bytes
6ff1f88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class APIError(Exception):
    """Base exception for API related errors."""
    pass

class APIKeyError(APIError):
    """Exception raised for API key related errors."""
    pass

class ModelError(APIError):
    """Exception raised for model related errors."""
    pass

class ProviderError(APIError):
    """Exception raised for provider related errors."""
    pass

class ValidationError(APIError):
    """Exception raised for input validation errors."""
    pass

def handle_api_error(error: APIError) -> dict:
    """Convert API errors to response dictionaries."""
    error_types = {
        APIKeyError: (400, "API Key Error"),
        ModelError: (400, "Model Error"),
        ProviderError: (500, "Provider Error"),
        ValidationError: (400, "Validation Error"),
        APIError: (500, "Internal Server Error")
    }
    
    error_class = type(error)
    status_code, error_type = error_types.get(error_class, (500, "Unknown Error"))
    
    return {
        "status_code": status_code,
        "error_type": error_type,
        "detail": str(error)
    }