chatbot-deploy / exceptions.py
umar-30's picture
Deploy RAG chatbot backend API
53ae001
Raw History Blame Contribute Delete
3.28 kB
"""
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")