o
    h(                     @  s   U d dl mZ d dlZd dlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ dd	lmZ d
Zded< daded< dddZG dd deZdS )    )annotationsN)AsyncOpenAIDefaultAsyncHttpxClient   )_openai_shared)get_default_model)ModelModelProvider)OpenAIChatCompletionsModel)OpenAIResponsesModelzgpt-4ostrDEFAULT_MODELzhttpx.AsyncClient | None_http_clientreturnhttpx.AsyncClientc                   C  s   t d u rt a t S )N)r   r    r   r   ^/var/www/html/openai_agents/venv/lib/python3.10/site-packages/agents/models/openai_provider.pyshared_http_client   s   r   c                   @  s:   e Zd ZddddddddddZdddZdddZdS )OpenAIProviderN)api_keybase_urlopenai_clientorganizationprojectuse_responsesr   
str | Noner   r   AsyncOpenAI | Noner   r   r   bool | Noner   Nonec                C  sf   |dur|du r|du sJ d|| _ nd| _ || _|| _|| _|| _|dur,|| _dS t | _dS )a  Create a new OpenAI provider.

        Args:
            api_key: The API key to use for the OpenAI client. If not provided, we will use the
                default API key.
            base_url: The base URL to use for the OpenAI client. If not provided, we will use the
                default base URL.
            openai_client: An optional OpenAI client to use. If not provided, we will create a new
                OpenAI client using the api_key and base_url.
            organization: The organization to use for the OpenAI client.
            project: The project to use for the OpenAI client.
            use_responses: Whether to use the OpenAI responses API.
        Nz>Don't provide api_key or base_url if you provide openai_client)_client_stored_api_key_stored_base_url_stored_organization_stored_project_use_responsesr   get_use_responses_by_default)selfr   r   r   r   r   r   r   r   r   __init__   s   
zOpenAIProvider.__init__r   c                 C  s>   | j d u rt pt| jpt | j| j| jt	 d| _ | j S )N)r   r   r   r   http_client)
r   r   get_default_openai_clientr   r    get_default_openai_keyr!   r"   r#   r   )r&   r   r   r   _get_clientG   s   

zOpenAIProvider._get_client
model_namer   c                 C  s4   |d u rt  }|  }| jrt||dS t||dS )N)modelr   )r   r+   r$   r   r
   )r&   r,   clientr   r   r   	get_modelS   s   
zOpenAIProvider.get_model)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )r,   r   r   r   )__name__
__module____qualname__r'   r+   r/   r   r   r   r   r      s    
*r   )r   r   )
__future__r   httpxopenair   r    r   default_modelsr   	interfacer   r	   openai_chatcompletionsr
   openai_responsesr   r   __annotations__r   r   r   r   r   r   r   <module>   s    
