
    .h                        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	m
Z
 ddlmZ ddlmZ d	Zd
ed<   daded<   ddZ G d de
          ZdS )    )annotationsN)AsyncOpenAIDefaultAsyncHttpxClient   )_openai_shared)ModelModelProvider)OpenAIChatCompletionsModel)OpenAIResponsesModelzgpt-4ostrDEFAULT_MODELzhttpx.AsyncClient | None_http_clientreturnhttpx.AsyncClientc                 :    t           t                      a t           S )N)r   r        Z/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/agents/models/openai_provider.pyshared_http_clientr      s    .00r   c                  6    e Zd ZdddddddddZddZ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                   |||
J d            || _         n#d| _         || _        || _        || _        || _        |	|| _        dS t          j                    | _        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   s          r   __init__zOpenAIProvider.__init__   s    . $?x'7'7P (8'7'7 0=DLLDL#*D $,D!(4D%#*D $"/D"0"M"O"ODr   r   c                    | j         _t          j                    pFt          | j        pt          j                    | j        | j        | j        t                                | _         | j         S )N)r   r   r   r   http_client)
r#   r   get_default_openai_clientr   r$   get_default_openai_keyr%   r&   r'   r   )r*   s    r   _get_clientzOpenAIProvider._get_clientE   sl    <)CEE ,W0U0W0W.!6,.00J J JDL |r   
model_namer   c                    |t           }|                                 }| j        rt          ||          nt	          ||          S )N)modelr   )r   r0   r(   r   r
   )r*   r1   clients      r   	get_modelzOpenAIProvider.get_modelQ   sT    &J!!## "T zHHHH+*FSSS	
r   )r   r   r   r   r   r   r   r   r   r   r   r    r   r!   )r   r   )r1   r   r   r   )__name__
__module____qualname__r+   r0   r5   r   r   r   r   r      su         ##,0#'"%)&P &P &P &P &P &PT
 
 
 


 

 

 

 

 

r   r   )r   r   )
__future__r   httpxopenair   r    r   	interfacer   r	   openai_chatcompletionsr
   openai_responsesr   r   __annotations__r   r   r   r   r   r   <module>rA      s    " " " " " " "  7 7 7 7 7 7 7 7       + + + + + + + + > > > > > > 2 2 2 2 2 2     *. - - - -
   A
 A
 A
 A
 A
] A
 A
 A
 A
 A
r   