Spaces:
Sleeping
Sleeping
File size: 3,279 Bytes
53ae001 | 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | """
Custom Exceptions for RAG Agent API
Exception classes for different error types in the RAG pipeline.
Exceptions:
RAGException: Base exception for all RAG Agent errors
ValidationError: Request validation failures
RetrievalError: Document retrieval failures
GenerationError: Answer generation failures
RateLimitError: API rate limit exceeded
"""
class RAGException(Exception):
"""
Base exception for all RAG Agent errors.
Attributes:
message: Error message
status_code: HTTP status code
error_type: Error classification
"""
def __init__(self, message: str, status_code: int = 500, error_type: str = "UnknownError"):
"""
Initialize RAG exception.
Args:
message: Error message
status_code: HTTP status code (default 500)
error_type: Error classification (default "UnknownError")
"""
self.message = message
self.status_code = status_code
self.error_type = error_type
super().__init__(self.message)
class ValidationError(RAGException):
"""
Exception for request validation failures.
Raised when:
- Query is empty or invalid
- top_k is out of range
- Model name is invalid
Status Code: 422 Unprocessable Entity
"""
def __init__(self, message: str):
"""
Initialize validation error.
Args:
message: Validation error message
"""
super().__init__(message, status_code=422, error_type="ValidationError")
class RetrievalError(RAGException):
"""
Exception for document retrieval failures.
Raised when:
- Qdrant database is unavailable
- Cohere API fails to embed query
- Network errors during retrieval
Status Code: 503 Service Unavailable
"""
def __init__(self, message: str):
"""
Initialize retrieval error.
Args:
message: Retrieval error message
"""
super().__init__(message, status_code=503, error_type="RetrievalError")
class GenerationError(RAGException):
"""
Exception for answer generation failures.
Raised when:
- OpenAI API is unavailable
- OpenAI returns error response
- Network errors during generation
- Authentication failures
Status Code: 502 Bad Gateway
"""
def __init__(self, message: str):
"""
Initialize generation error.
Args:
message: Generation error message
"""
super().__init__(message, status_code=502, error_type="GenerationError")
class RateLimitError(RAGException):
"""
Exception for API rate limit exceeded.
Raised when:
- OpenAI rate limit exceeded
- Cohere rate limit exceeded
- Qdrant rate limit exceeded
Status Code: 429 Too Many Requests
"""
def __init__(self, message: str):
"""
Initialize rate limit error.
Args:
message: Rate limit error message
"""
super().__init__(message, status_code=429, error_type="RateLimitError")
|