
    
@ghT                       d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZmZ d dlZddlmZmZmZmZ ddlmZm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&m'Z'  e(g d          Z)e	g e*f         Z+e	g df         Z, edeej-        ej.        f                   Z/ edee!e         e"e         f                   Z0d1                    g d          Z2 G d de$          Z3 G d de'e/e0f                   Z4 G d de4ej-        e!e         f         e          Z5 G d de4ej.        e"e         f         e          Z6dS )    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitablecastoverload)Selfoverride   )	NOT_GIVENOmitTimeoutNotGiven)is_given
is_mapping)OpenAIAsyncOpenAI)
model_copy)FinalRequestOptions)StreamAsyncStream)OpenAIError)DEFAULT_MAX_RETRIES
BaseClient)z/completionsz/chat/completionsz/embeddingsz/audio/transcriptionsz/audio/translationsz/audio/speechz/images/generationszstr | Awaitable[str]_HttpxClientT)bound_DefaultStreamT )<zmissing API key>c                        e Zd Zd fdZ xZS )MutuallyExclusiveAuthErrorreturnNonec                J    t                                          d           d S )NzThe `api_key`, `azure_ad_token` and `azure_ad_token_provider` arguments are mutually exclusive; Only one can be passed at a time)super__init__)self	__class__s    D/var/www/piapp/venv/lib/python3.11/site-packages/openai/lib/azure.pyr*   z#MutuallyExclusiveAuthError.__init__-   s/     O	
 	
 	
 	
 	
    )r&   r'   )__name__
__module____qualname__r*   __classcell__r,   s   @r-   r%   r%   ,   s=        
 
 
 
 
 
 
 
 
 
r.   r%   c                  6     e Zd Zeddd
 fd	            Z xZS )BaseAzureClientr   retries_takenoptionsr   r7   intr&   httpx.Requestc                  |j         t          v rWt          |j                  rC|j                            d          }|'dt          | j                  vrd| |j          |_         t                                          ||          S )Nmodelz/deploymentsz/deployments/r6   )	url_deployments_endpointsr   	json_datagetstrbase_urlr)   _build_request)r+   r8   r7   r<   r,   s       r-   rC   zBaseAzureClient._build_request4   s     ;000Z@Q5R5R0%))'22E 3t};M;M)M)MBeBW[BBww%%g]%KKKr.   )r8   r   r7   r9   r&   r:   )r/   r0   r1   r   rC   r2   r3   s   @r-   r5   r5   3   sb        
 	L L L L L L L XL L L L Lr.   r5   c                  >    e Zd Zeddddddeedddddd1d            Zeddddddeedddddd2d            Zedddddeedddddd3d             Zdddddddddeeddddd!d4 fd#Zedddddddededdddi d$d5 fd,            ZeZ	d6d-Z
ed7d0            Z xZS )8AzureOpenAINF)azure_deploymentapi_versionapi_keyazure_ad_tokenazure_ad_token_providerorganizationtimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validationazure_endpointrA   rF   
str | NonerG   rH   rI   rJ   AzureADTokenProvider | NonerK   rL   !float | Timeout | None | NotGivenrM   r9   rN   Mapping[str, str] | NonerO   Mapping[str, object] | NonerP   httpx.Client | NonerQ   boolr&   r'   c                   d S N )r+   rR   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   s                 r-   r*   zAzureOpenAI.__init__D   	    " sr.   c                   d S r[   r\   )r+   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   s                r-   r*   zAzureOpenAI.__init__W   	      sr.   )rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rB   c                   d S r[   r\   )r+   rB   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   s                r-   r*   zAzureOpenAI.__init__i   r_   r.   )rG   rR   rF   rH   rI   rJ   rK   projectrB   rL   rM   rN   rO   rP   rQ   ra   c               t   |t           j                            d          }|t           j                            d          }|||t          d          |t           j                            d          }|t	          d          |d|i}ni |d|i}|	B|t           j                            d          }|t	          d	          || d
| }	n| d}	n|t	          d          |t
          }t                                          ||||	|
|||||
  
         || _        || _	        || _
        dS )a  Construct a new synchronous azure openai client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `AZURE_OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `project` from `OPENAI_PROJECT_ID`
        - `azure_ad_token` from `AZURE_OPENAI_AD_TOKEN`
        - `api_version` from `OPENAI_API_VERSION`
        - `azure_endpoint` from `AZURE_OPENAI_ENDPOINT`

        Args:
            azure_endpoint: Your Azure endpoint, including the resource, e.g. `https://example-resource.azure.openai.com/`

            azure_ad_token: Your Azure Active Directory token, https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id

            azure_ad_token_provider: A function that returns an Azure Active Directory token, will be invoked on every request.

            azure_deployment: A model deployment, if given sets the base client URL to include `/deployments/{azure_deployment}`.
                Note: this means you won't be able to use non-deployment endpoints. Not supported with Assistants APIs.
        NAZURE_OPENAI_API_KEYAZURE_OPENAI_AD_TOKENMissing credentials. Please pass one of `api_key`, `azure_ad_token`, `azure_ad_token_provider`, or the `AZURE_OPENAI_API_KEY` or `AZURE_OPENAI_AD_TOKEN` environment variables.OPENAI_API_VERSION_Must provide either the `api_version` argument or the `OPENAI_API_VERSION` environment variableapi-versionAZURE_OPENAI_ENDPOINTuMust provide one of the `base_url` or `azure_endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable/openai/deployments//openai2base_url and azure_endpoint are mutually exclusive
rH   rK   ra   rB   rL   rM   rN   rO   rP   rQ   osenvironr@   r   
ValueErrorAPI_KEY_SENTINELr)   r*   _api_version_azure_ad_token_azure_ad_token_provider)r+   rG   rR   rF   rH   rI   rJ   rK   ra   rB   rL   rM   rN   rO   rP   rQ   r,   s                   r-   r*   zAzureOpenAI.__init__{      N ?jnn%;<<G!Z^^,CDDN?~5:Q:Y B   *..)=>>Kq    *K8MMI}Im[IIM%!#0G!H!H%  L    +,TTBRTT,555) !UVVV?&G%#+'#(C 	 	
 	
 	
 (-(?%%%r.   rH   rK   ra   rG   rI   rJ   rB   rL   rP   rM   rN   set_default_headersrO   set_default_query_extra_kwargsstr | httpx.URL | Noneint | NotGivenry   rz   r{   Mapping[str, Any]r   c                   t                                          ||||||	|
|||||p| j        |p| j        |p| j        d|          S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        )rG   rI   rJ   )rH   rK   ra   rB   rL   rP   rM   rN   ry   rO   rz   r{   r)   copyrt   ru   rv   r+   rH   rK   ra   rG   rI   rJ   rB   rL   rP   rM   rN   ry   rO   rz   r{   r,   s                   r-   r   zAzureOpenAI.copy   z    . ww||%##+ 3'/*?d.?"0"HD4H+B+cdFc   	  
 
 	
r.   c                    | j         | j         S | j        }|5 |            }|rt          |t                    st	          d|           |S d S NzOExpected `azure_ad_token_provider` argument to return a string but it returned )ru   rv   
isinstancerA   rr   r+   providertokens      r-   _get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token  sp    +''0HJJE 
5# 6 6  mfkmm   Ltr.   r8   r   c                R   t          |j                  r	i |j        ni }t          |          }||_        |                                 }||                    d          d| |d<   n=| j        t          ur |                    d          
| j        |d<   nt          d          |S NAuthorizationzBearer zapi-keyzUnable to handle authr   headersr   r   r@   rH   rs   rr   r+   r8   r   rI   s       r-   _prepare_optionszAzureOpenAI._prepare_options  s    @H@Y@Y)a)<GO)<)<_aW%%!1133%{{?++3+E^+E+E(\!111{{9%%-%)\	" 4555r.   )rR   rA   rF   rS   rG   rS   rH   rS   rI   rS   rJ   rT   rK   rS   rL   rU   rM   r9   rN   rV   rO   rW   rP   rX   rQ   rY   r&   r'   )rF   rS   rG   rS   rH   rS   rI   rS   rJ   rT   rK   rS   rL   rU   rM   r9   rN   rV   rO   rW   rP   rX   rQ   rY   r&   r'   )rB   rA   rG   rS   rH   rS   rI   rS   rJ   rT   rK   rS   rL   rU   rM   r9   rN   rV   rO   rW   rP   rX   rQ   rY   r&   r'   ) rG   rS   rR   rS   rF   rS   rH   rS   rI   rS   rJ   rT   rK   rS   ra   rS   rB   rS   rL   rU   rM   r9   rN   rV   rO   rW   rP   rX   rQ   rY   r&   r'   ) rH   rS   rK   rS   ra   rS   rG   rS   rI   rS   rJ   rT   rB   r|   rL   rU   rP   rX   rM   r}   rN   rV   ry   rV   rO   rW   rz   rW   r{   r~   r&   r   r&   rS   r8   r   r&   r   r/   r0   r1   r   r   r   r*   r   r   with_optionsr   r   r2   r3   s   @r-   rE   rE   C   s       
 (,"&"%)?C#'5>.4859+/,1     X$  (,"&"%)?C#'5>.4859+/,1     X" 
 #'"%)?C#'5>.4859+/,1     X( #'%)'+"%)?C#'"#5>.4859+/,1#b@ b@ b@ b@ b@ b@ b@ b@H  ##'""&%)?C+/5>+/&/488<599=+-#(
 (
 (
 (
 (
 (
 (
 X(
T L       X    r.   rE   c                  D    e Zd Zedddddddeedddddd1d            Zedddddddeedddddd2d            Zeddddddeedddddd3d!            Zdddddddddeeddddd"d4 fd#Zedddddddededdddi d$d5 fd,            ZeZ	d6d-Z
ed7d0            Z xZS )8AsyncAzureOpenAINF)rF   rG   rH   rI   rJ   rK   ra   rL   rM   rN   rO   rP   rQ   rR   rA   rF   rS   rG   rH   rI   rJ    AsyncAzureADTokenProvider | NonerK   ra   rL   rU   rM   r9   rN   rV   rO   rW   rP   httpx.AsyncClient | NonerQ   rY   r&   r'   c                   d S r[   r\   )r+   rR   rF   rG   rH   rI   rJ   rK   ra   rL   rM   rN   rO   rP   rQ   s                  r-   r*   zAsyncAzureOpenAI.__init__1  s	    $ sr.   c                   d S r[   r\   )r+   rF   rG   rH   rI   rJ   rK   ra   rL   rM   rN   rO   rP   rQ   s                 r-   r*   zAsyncAzureOpenAI.__init__E  r]   r.   )rG   rH   rI   rJ   rK   ra   rL   rM   rN   rO   rP   rQ   rB   c                   d S r[   r\   )r+   rB   rG   rH   rI   rJ   rK   ra   rL   rM   rN   rO   rP   rQ   s                 r-   r*   zAsyncAzureOpenAI.__init__X  r]   r.   )rR   rF   rG   rH   rI   rJ   rK   ra   rB   rL   rM   rN   rO   rP   rQ   c               t   |t           j                            d          }|t           j                            d          }|||t          d          |t           j                            d          }|t	          d          |d|i}ni |d|i}|	B|t           j                            d          }|t	          d	          || d
| }	n| d}	n|t	          d          |t
          }t                                          ||||	|
|||||
  
         || _        || _	        || _
        dS )a  Construct a new asynchronous azure openai client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `AZURE_OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `project` from `OPENAI_PROJECT_ID`
        - `azure_ad_token` from `AZURE_OPENAI_AD_TOKEN`
        - `api_version` from `OPENAI_API_VERSION`
        - `azure_endpoint` from `AZURE_OPENAI_ENDPOINT`

        Args:
            azure_endpoint: Your Azure endpoint, including the resource, e.g. `https://example-resource.azure.openai.com/`

            azure_ad_token: Your Azure Active Directory token, https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id

            azure_ad_token_provider: A function that returns an Azure Active Directory token, will be invoked on every request.

            azure_deployment: A model deployment, if given sets the base client URL to include `/deployments/{azure_deployment}`.
                Note: this means you won't be able to use non-deployment endpoints. Not supported with Assistants APIs.
        Nrc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   )r+   rR   rF   rG   rH   rI   rJ   rK   ra   rB   rL   rM   rN   rO   rP   rQ   r,   s                   r-   r*   zAsyncAzureOpenAI.__init__k  rw   r.   rx   r|   r}   ry   rz   r{   r~   r   c                   t                                          ||||||	|
|||||p| j        |p| j        |p| j        d|          S r   r   r   s                   r-   r   zAsyncAzureOpenAI.copy  r   r.   c                  K   | j         | j         S | j        }|q |            }t          j        |          r| d {V }|r(t	          t          t          |          t                    st          d|           t          |          S d S r   )	ru   rv   inspectisawaitabler   r
   r   rA   rr   r   s      r-   r   z$AsyncAzureOpenAI._get_azure_ad_token  s      +''0HJJE"5)) $# 
4U+;+;S A A  mfkmm   u::tr.   r8   r   c                b  K   t          |j                  r	i |j        ni }t          |          }||_        |                                  d {V }||                    d          d| |d<   n=| j        t          ur |                    d          
| j        |d<   nt          d          |S r   r   r   s       r-   r   z!AsyncAzureOpenAI._prepare_options  s      @H@Y@Y)a)<GO)<)<_aW%%!#7799999999%{{?++3+E^+E+E(\!111{{9%%-%)\	" 4555r.   )rR   rA   rF   rS   rG   rS   rH   rS   rI   rS   rJ   r   rK   rS   ra   rS   rL   rU   rM   r9   rN   rV   rO   rW   rP   r   rQ   rY   r&   r'   )rF   rS   rG   rS   rH   rS   rI   rS   rJ   r   rK   rS   ra   rS   rL   rU   rM   r9   rN   rV   rO   rW   rP   r   rQ   rY   r&   r'   )rB   rA   rG   rS   rH   rS   rI   rS   rJ   r   rK   rS   ra   rS   rL   rU   rM   r9   rN   rV   rO   rW   rP   r   rQ   rY   r&   r'   ) rR   rS   rF   rS   rG   rS   rH   rS   rI   rS   rJ   r   rK   rS   ra   rS   rB   rS   rL   rU   rM   r9   rN   rV   rO   rW   rP   r   rQ   rY   r&   r'   ) rH   rS   rK   rS   ra   rS   rG   rS   rI   rS   rJ   r   rB   r|   rL   rU   rP   r   rM   r}   rN   rV   ry   rV   rO   rW   rz   rW   r{   r~   r&   r   r   r   r   r3   s   @r-   r   r   0  s       
 (,"&"%)DH#'"5>.485904,1!     X&  (,"&"%)DH#'"5>.485904,1     X$ 
 #'"%)DH#'"5>.485904,1     X* &*'+"&"%)DH#'"#5>.485904,1#b@ b@ b@ b@ b@ b@ b@ b@H  ##'""&%)DH+/5>04&/488<599=+-#(
 (
 (
 (
 (
 (
 (
 X(
T L   "    X    r.   r   )7
__future__r   rp   r   typingr   r   r   r   r   r	   r
   r   typing_extensionsr   r   httpx_typesr   r   r   r   _utilsr   r   _clientr   r   _compatr   _modelsr   
_streamingr   r   _exceptionsr   _base_clientr   r   setr>   rA   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr   r    joinrs   r%   r5   rE   r   r\   r.   r-   <module>r      s   " " " " " " 				  T T T T T T T T T T T T T T T T T T T T , , , , , , , ,  7 7 7 7 7 7 7 7 7 7 7 7 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )             ) ) ) ) ) ) , , , , , , , , % % % % % % : : : : : : : :  
 
   C( $R)?%?@ uU\5CT5T/UVVV'+5kRUFV9V3WXXX 7788899 
 
 
 
 
 
 
 
L L L L Lj!?@ L L L j j j j j/%,s";<f j j jZo o o o ou'8+c:J'JK[ o o o o or.   