Download litellm/exceptions.py from nonhuman/nnnn: direct link, hf CLI and curl.
- Browser
- Download file 6.32 kB
-
https://huggingface.co/spaces/nonhuman/nnnn/resolve/main/litellm/exceptions.py
- Command line
-
hf download hf://spaces/nonhuman/nnnn/litellm/exceptions.py
-
curl -L -o exceptions.py https://huggingface.co/spaces/nonhuman/nnnn/resolve/main/litellm/exceptions.py
6.32 kB
| # +-----------------------------------------------+ | |
| # | | | |
| # | Give Feedback / Get Help | | |
| # | https://github.com/BerriAI/litellm/issues/new | | |
| # | | | |
| # +-----------------------------------------------+ | |
| # | |
| # Thank you users! We ❤️ you! - Krrish & Ishaan | |
| ## LiteLLM versions of the OpenAI Exception Types | |
| from openai import ( | |
| AuthenticationError, | |
| BadRequestError, | |
| RateLimitError, | |
| APIStatusError, | |
| OpenAIError, | |
| APIError, | |
| APITimeoutError, | |
| APIConnectionError, | |
| APIResponseValidationError | |
| ) | |
| import httpx | |
| class AuthenticationError(AuthenticationError): # type: ignore | |
| def __init__(self, message, llm_provider, model, response: httpx.Response): | |
| self.status_code = 401 | |
| self.message = message | |
| self.llm_provider = llm_provider | |
| self.model = model | |
| super().__init__( | |
| self.message, | |
| response=response, | |
| body=None | |
| ) # Call the base class constructor with the parameters it needs | |
| class BadRequestError(BadRequestError): # type: ignore | |
| def __init__(self, message, model, llm_provider, response: httpx.Response): | |
| self.status_code = 400 | |
| self.message = message | |
| self.model = model | |
| self.llm_provider = llm_provider | |
| super().__init__( | |
| self.message, | |
| response=response, | |
| body=None | |
| ) # Call the base class constructor with the parameters it needs | |
| class Timeout(APITimeoutError): # type: ignore | |
| def __init__(self, message, model, llm_provider): | |
| self.status_code = 408 | |
| self.message = message | |
| self.model = model | |
| self.llm_provider = llm_provider | |
| request = httpx.Request(method="POST", url="https://api.openai.com/v1") | |
| super().__init__( | |
| request=request | |
| ) # Call the base class constructor with the parameters it needs | |
| class RateLimitError(RateLimitError): # type: ignore | |
| def __init__(self, message, llm_provider, model, response: httpx.Response): | |
| self.status_code = 429 | |
| self.message = message | |
| self.llm_provider = llm_provider | |
| self.modle = model | |
| super().__init__( | |
| self.message, | |
| response=response, | |
| body=None | |
| ) # Call the base class constructor with the parameters it needs | |
| # sub class of rate limit error - meant to give more granularity for error handling context window exceeded errors | |
| class ContextWindowExceededError(BadRequestError): # type: ignore | |
| def __init__(self, message, model, llm_provider, response: httpx.Response): | |
| self.status_code = 400 | |
| self.message = message | |
| self.model = model | |
| self.llm_provider = llm_provider | |
| super().__init__( | |
| message=self.message, | |
| model=self.model, # type: ignore | |
| llm_provider=self.llm_provider, # type: ignore | |
| response=response | |
| ) # Call the base class constructor with the parameters it needs | |
| class ServiceUnavailableError(APIStatusError): # type: ignore | |
| def __init__(self, message, llm_provider, model, response: httpx.Response): | |
| self.status_code = 503 | |
| self.message = message | |
| self.llm_provider = llm_provider | |
| self.model = model | |
| super().__init__( | |
| self.message, | |
| response=response, | |
| body=None | |
| ) # Call the base class constructor with the parameters it needs | |
| # raise this when the API returns an invalid response object - https://github.com/openai/openai-python/blob/1be14ee34a0f8e42d3f9aa5451aa4cb161f1781f/openai/api_requestor.py#L401 | |
| class APIError(APIError): # type: ignore | |
| def __init__(self, status_code, message, llm_provider, model, request: httpx.Request): | |
| self.status_code = status_code | |
| self.message = message | |
| self.llm_provider = llm_provider | |
| self.model = model | |
| super().__init__( | |
| self.message, | |
| request=request, # type: ignore | |
| body=None | |
| ) | |
| # raised if an invalid request (not get, delete, put, post) is made | |
| class APIConnectionError(APIConnectionError): # type: ignore | |
| def __init__(self, message, llm_provider, model, request: httpx.Request): | |
| self.message = message | |
| self.llm_provider = llm_provider | |
| self.model = model | |
| self.status_code = 500 | |
| super().__init__( | |
| message=self.message, | |
| request=request | |
| ) | |
| # raised if an invalid request (not get, delete, put, post) is made | |
| class APIResponseValidationError(APIResponseValidationError): # type: ignore | |
| def __init__(self, message, llm_provider, model): | |
| self.message = message | |
| self.llm_provider = llm_provider | |
| self.model = model | |
| request = httpx.Request(method="POST", url="https://api.openai.com/v1") | |
| response = httpx.Response(status_code=500, request=request) | |
| super().__init__( | |
| response=response, | |
| body=None, | |
| message=message | |
| ) | |
| class OpenAIError(OpenAIError): # type: ignore | |
| def __init__(self, original_exception): | |
| self.status_code = original_exception.http_status | |
| super().__init__( | |
| http_body=original_exception.http_body, | |
| http_status=original_exception.http_status, | |
| json_body=original_exception.json_body, | |
| headers=original_exception.headers, | |
| code=original_exception.code, | |
| ) | |
| self.llm_provider = "openai" | |
| class BudgetExceededError(Exception): | |
| def __init__(self, current_cost, max_budget): | |
| self.current_cost = current_cost | |
| self.max_budget = max_budget | |
| message = f"Budget has been exceeded! Current cost: {current_cost}, Max budget: {max_budget}" | |
| super().__init__(message) | |
| ## DEPRECATED ## | |
| class InvalidRequestError(BadRequestError): # type: ignore | |
| def __init__(self, message, model, llm_provider): | |
| self.status_code = 400 | |
| self.message = message | |
| self.model = model | |
| self.llm_provider = llm_provider | |
| super().__init__( | |
| self.message, f"{self.model}" | |
| ) # Call the base class constructor with the parameters it needs | |