| 8 | |
| 9 | |
| 10 | class ChatOpenAI(ChatOpenAIBase): |
| 11 | openpipe_kwargs: Dict[str, str] = Field( |
| 12 | default_factory=lambda: {"verify_ssl": False} |
| 13 | ) |
| 14 | |
| 15 | @root_validator() |
| 16 | def validate_environment(cls, values: Dict) -> Dict: |
| 17 | """Validate that api key and python package exists in environment.""" |
| 18 | if values["n"] < 1: |
| 19 | raise ValueError("n must be at least 1.") |
| 20 | if values["n"] > 1 and values["streaming"]: |
| 21 | raise ValueError("n must be 1 when streaming.") |
| 22 | |
| 23 | values["openai_api_key"] = get_from_dict_or_env( |
| 24 | values, "openai_api_key", "OPENAI_API_KEY" |
| 25 | ) |
| 26 | # Check OPENAI_ORGANIZATION for backwards compatibility. |
| 27 | values["openai_organization"] = ( |
| 28 | values["openai_organization"] |
| 29 | or os.getenv("OPENAI_ORG_ID") |
| 30 | or os.getenv("OPENAI_ORGANIZATION") |
| 31 | ) |
| 32 | values["openai_api_base"] = values["openai_api_base"] or os.getenv( |
| 33 | "OPENAI_API_BASE" |
| 34 | ) |
| 35 | values["openai_proxy"] = get_from_dict_or_env( |
| 36 | values, |
| 37 | "openai_proxy", |
| 38 | "OPENAI_PROXY", |
| 39 | default="", |
| 40 | ) |
| 41 | try: |
| 42 | import openai |
| 43 | from . import OpenAI |
| 44 | from .openai_sync_wrapper import OpenAIWrapper as OpenAI |
| 45 | from .openai_async_wrapper import AsyncOpenAIWrapper as AsyncOpenAI |
| 46 | |
| 47 | except ImportError: |
| 48 | raise ImportError( |
| 49 | "Could not import openai python package. " |
| 50 | "Please install it with `pip install openai`." |
| 51 | ) |
| 52 | |
| 53 | if is_openai_v1(): |
| 54 | client_params = { |
| 55 | "api_key": values["openai_api_key"], |
| 56 | "organization": values["openai_organization"], |
| 57 | "base_url": values["openai_api_base"], |
| 58 | "timeout": values["request_timeout"], |
| 59 | "max_retries": values["max_retries"], |
| 60 | "default_headers": values["default_headers"], |
| 61 | "default_query": values["default_query"], |
| 62 | "http_client": values["http_client"], |
| 63 | "openpipe": values["openpipe_kwargs"], |
| 64 | } |
| 65 | values["client"] = OpenAI(**client_params).chat.completions |
| 66 | values["async_client"] = AsyncOpenAI(**client_params).chat.completions |
| 67 | else: |
nothing calls this directly
no outgoing calls
no test coverage detected