mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-02-20 09:40:36 +08:00
103 lines
2.9 KiB
Python
103 lines
2.9 KiB
Python
"""
|
|
OpenAI compatibility layer for different versions.
|
|
|
|
This module provides a compatibility layer between OpenAI library versions:
|
|
- OpenAI < 1.0 (old API with openai.error module)
|
|
- OpenAI >= 1.0 (new API with direct exception imports)
|
|
"""
|
|
|
|
try:
|
|
# Try new OpenAI >= 1.0 API
|
|
from openai import (
|
|
OpenAIError,
|
|
RateLimitError,
|
|
APIError,
|
|
APIConnectionError,
|
|
AuthenticationError,
|
|
APITimeoutError,
|
|
BadRequestError,
|
|
)
|
|
|
|
# Create a mock error module for backward compatibility
|
|
class ErrorModule:
|
|
OpenAIError = OpenAIError
|
|
RateLimitError = RateLimitError
|
|
APIError = APIError
|
|
APIConnectionError = APIConnectionError
|
|
AuthenticationError = AuthenticationError
|
|
Timeout = APITimeoutError # Renamed in new version
|
|
InvalidRequestError = BadRequestError # Renamed in new version
|
|
|
|
error = ErrorModule()
|
|
|
|
# Also export with new names
|
|
Timeout = APITimeoutError
|
|
InvalidRequestError = BadRequestError
|
|
|
|
except ImportError:
|
|
# Fall back to old OpenAI < 1.0 API
|
|
try:
|
|
import openai.error as error
|
|
|
|
# Export individual exceptions for direct import
|
|
OpenAIError = error.OpenAIError
|
|
RateLimitError = error.RateLimitError
|
|
APIError = error.APIError
|
|
APIConnectionError = error.APIConnectionError
|
|
AuthenticationError = error.AuthenticationError
|
|
InvalidRequestError = error.InvalidRequestError
|
|
Timeout = error.Timeout
|
|
BadRequestError = error.InvalidRequestError # Alias
|
|
APITimeoutError = error.Timeout # Alias
|
|
except (ImportError, AttributeError):
|
|
# Neither version works, create dummy classes
|
|
class OpenAIError(Exception):
|
|
pass
|
|
|
|
class RateLimitError(OpenAIError):
|
|
pass
|
|
|
|
class APIError(OpenAIError):
|
|
pass
|
|
|
|
class APIConnectionError(OpenAIError):
|
|
pass
|
|
|
|
class AuthenticationError(OpenAIError):
|
|
pass
|
|
|
|
class InvalidRequestError(OpenAIError):
|
|
pass
|
|
|
|
class Timeout(OpenAIError):
|
|
pass
|
|
|
|
BadRequestError = InvalidRequestError
|
|
APITimeoutError = Timeout
|
|
|
|
# Create error module
|
|
class ErrorModule:
|
|
OpenAIError = OpenAIError
|
|
RateLimitError = RateLimitError
|
|
APIError = APIError
|
|
APIConnectionError = APIConnectionError
|
|
AuthenticationError = AuthenticationError
|
|
InvalidRequestError = InvalidRequestError
|
|
Timeout = Timeout
|
|
|
|
error = ErrorModule()
|
|
|
|
# Export all for easy import
|
|
__all__ = [
|
|
'error',
|
|
'OpenAIError',
|
|
'RateLimitError',
|
|
'APIError',
|
|
'APIConnectionError',
|
|
'AuthenticationError',
|
|
'InvalidRequestError',
|
|
'Timeout',
|
|
'BadRequestError',
|
|
'APITimeoutError',
|
|
]
|