o
    iI                  
   @  s   d dl mZ d dlZd dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ zd dlmZ W n eyE Z zed	edZ[ww G d
d dee ZdS )    )annotationsN)overload)ModelProfile)cached_async_http_clientopenai_model_profile)Provider)AsyncOpenAIu   Please install the `openai` package to use the OpenAI provider, you can use the `openai` optional group — `pip install "pydantic-ai-slim[openai]"`c                   @  s~   e Zd ZdZedddZedddZedd	d
ZdddZe	dddZ
e					d d!ddZ
				d d"ddZ
dS )#OpenAIProviderzProvider for OpenAI API.returnstrc                 C  s   dS )Nopenai selfr   r   b/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/pydantic_ai/providers/openai.pyname   s   zOpenAIProvider.namec                 C  s   t | jjS N)r   clientbase_urlr   r   r   r   r      s   zOpenAIProvider.base_urlr	   c                 C  s   | j S r   )_clientr   r   r   r   r   !   s   zOpenAIProvider.client
model_nameModelProfile | Nonec                 C  s   t |S r   r   )r   r   r   r   r   model_profile%   s   zOpenAIProvider.model_profileopenai_clientNonec                C     d S r   r   )r   r   r   r   r   __init__(   s   zOpenAIProvider.__init__Nr   
str | Noneapi_keyhttp_clienthttpx.AsyncClient | Nonec                 C  r   r   r   r   r   r   r   r    r   r   r   r   +   s   AsyncOpenAI | Nonec                 C  s   |du rdt jvr|dur|du rd}|dur4|du sJ d|du s'J d|du s/J d|| _dS |durBt|||d| _dS tdd	}t|||d| _dS )
a  Create a new OpenAI provider.

        Args:
            base_url: The base url for the OpenAI requests. If not provided, the `OPENAI_BASE_URL` environment variable
                will be used if available. Otherwise, defaults to OpenAI's base url.
            api_key: The API key to use for authentication, if not provided, the `OPENAI_API_KEY` environment variable
                will be used if available.
            openai_client: An existing
                [`AsyncOpenAI`](https://github.com/openai/openai-python?tab=readme-ov-file#async-usage)
                client to use. If provided, `base_url`, `api_key`, and `http_client` must be `None`.
            http_client: An existing `httpx.AsyncClient` to use for making HTTP requests.
        NOPENAI_API_KEYzapi-key-not-setz2Cannot provide both `openai_client` and `base_url`z5Cannot provide both `openai_client` and `http_client`z1Cannot provide both `openai_client` and `api_key`)r   r   r    r   )provider)osenvironr   r	   r   r"   r   r   r   r   4   s   "

)r   r   )r   r	   )r   r   r   r   )r   r	   r   r   )NNNN)
r   r   r   r   r   r   r    r!   r   r   )
r   r   r   r   r   r#   r    r!   r   r   )__name__
__module____qualname____doc__propertyr   r   r   r   r   r   r   r   r   r   r
      s,    

r
   )
__future__r   _annotationsr&   typingr   httpxpydantic_air   pydantic_ai.modelsr   pydantic_ai.profiles.openair   pydantic_ai.providersr   r   r	   ImportError_import_errorr
   r   r   r   r   <module>   s&    