123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import logging
- from functools import wraps
- import openai
- from core.llm.error import LLMAPIConnectionError, LLMAPIUnavailableError, LLMRateLimitError, LLMAuthorizationError, \
- LLMBadRequestError
- def handle_llm_exceptions(func):
- @wraps(func)
- def wrapper(*args, **kwargs):
- try:
- return func(*args, **kwargs)
- except openai.error.InvalidRequestError as e:
- logging.exception("Invalid request to OpenAI API.")
- raise LLMBadRequestError(str(e))
- except openai.error.APIConnectionError as e:
- logging.exception("Failed to connect to OpenAI API.")
- raise LLMAPIConnectionError(str(e))
- except (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout) as e:
- logging.exception("OpenAI service unavailable.")
- raise LLMAPIUnavailableError(str(e))
- except openai.error.RateLimitError as e:
- raise LLMRateLimitError(str(e))
- except openai.error.AuthenticationError as e:
- raise LLMAuthorizationError(str(e))
- return wrapper
- def handle_llm_exceptions_async(func):
- @wraps(func)
- async def wrapper(*args, **kwargs):
- try:
- return await func(*args, **kwargs)
- except openai.error.InvalidRequestError as e:
- logging.exception("Invalid request to OpenAI API.")
- raise LLMBadRequestError(str(e))
- except openai.error.APIConnectionError as e:
- logging.exception("Failed to connect to OpenAI API.")
- raise LLMAPIConnectionError(str(e))
- except (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout) as e:
- logging.exception("OpenAI service unavailable.")
- raise LLMAPIUnavailableError(str(e))
- except openai.error.RateLimitError as e:
- raise LLMRateLimitError(str(e))
- except openai.error.AuthenticationError as e:
- raise LLMAuthorizationError(str(e))
- return wrapper
|