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")