error_handle_wraps.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import logging
  2. from functools import wraps
  3. import openai
  4. from core.llm.error import LLMAPIConnectionError, LLMAPIUnavailableError, LLMRateLimitError, LLMAuthorizationError, \
  5. LLMBadRequestError
  6. def handle_llm_exceptions(func):
  7. @wraps(func)
  8. def wrapper(*args, **kwargs):
  9. try:
  10. return func(*args, **kwargs)
  11. except openai.error.InvalidRequestError as e:
  12. logging.exception("Invalid request to OpenAI API.")
  13. raise LLMBadRequestError(str(e))
  14. except openai.error.APIConnectionError as e:
  15. logging.exception("Failed to connect to OpenAI API.")
  16. raise LLMAPIConnectionError(str(e))
  17. except (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout) as e:
  18. logging.exception("OpenAI service unavailable.")
  19. raise LLMAPIUnavailableError(str(e))
  20. except openai.error.RateLimitError as e:
  21. raise LLMRateLimitError(str(e))
  22. except openai.error.AuthenticationError as e:
  23. raise LLMAuthorizationError(str(e))
  24. return wrapper
  25. def handle_llm_exceptions_async(func):
  26. @wraps(func)
  27. async def wrapper(*args, **kwargs):
  28. try:
  29. return await func(*args, **kwargs)
  30. except openai.error.InvalidRequestError as e:
  31. logging.exception("Invalid request to OpenAI API.")
  32. raise LLMBadRequestError(str(e))
  33. except openai.error.APIConnectionError as e:
  34. logging.exception("Failed to connect to OpenAI API.")
  35. raise LLMAPIConnectionError(str(e))
  36. except (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout) as e:
  37. logging.exception("OpenAI service unavailable.")
  38. raise LLMAPIUnavailableError(str(e))
  39. except openai.error.RateLimitError as e:
  40. raise LLMRateLimitError(str(e))
  41. except openai.error.AuthenticationError as e:
  42. raise LLMAuthorizationError(str(e))
  43. return wrapper