openai_wrapper.py 1.3 KB

12345678910111213141516171819202122232425262728293031
  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_openai_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(e.__class__.__name__ + ":" + str(e))
  17. except (openai.error.APIError, openai.error.ServiceUnavailableError, openai.error.Timeout) as e:
  18. logging.exception("OpenAI service unavailable.")
  19. raise LLMAPIUnavailableError(e.__class__.__name__ + ":" + 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. except openai.error.OpenAIError as e:
  25. raise LLMBadRequestError(e.__class__.__name__ + ":" + str(e))
  26. return wrapper