
    +hQ                    @   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 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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jT                  ejV                  f         Z, edeee   ee   f         Z-dj]                  g d      Z/ G d de!      Z0 G d de$e,e-f         Z1 G d de1ejT                  ee   f   e      Z2 G d de1ejV                  ee   f   e      Z3y)    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitableoverload)Selfoverride   )	NOT_GIVENOmitTimeoutNotGiven)is_given
is_mapping)OpenAIAsyncOpenAI)FinalRequestOptions)StreamAsyncStream)OpenAIError)DEFAULT_MAX_RETRIES
BaseClient)z/completionsz/chat/completionsz/embeddingsz/audio/transcriptionsz/audio/translationsz/images/generationszstr | Awaitable[str]_HttpxClientT)bound_DefaultStreamT )<zmissing API key>c                        e Zd Zd fdZ xZS )MutuallyExclusiveAuthErrorc                $    t         |   d       y )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    C/var/www/html/venv/lib/python3.12/site-packages/openai/lib/azure.pyr&   z#MutuallyExclusiveAuthError.__init__+   s     O	
    )returnNone)__name__
__module____qualname__r&   __classcell__r(   s   @r)   r#   r#   *   s    
 
r*   r#   c                  2     e Zd Ze	 	 	 	 d fd       Z xZS )BaseAzureClientc                   |j                   t        v r_t        |j                        rJ|j                  j	                  d      }|-dt        | j                        vrd| |j                    |_         t        | !  |      S )Nmodelz/deploymentsz/deployments/)	url_deployments_endpointsr   	json_datagetstrbase_urlr%   _build_request)r'   optionsr5   r(   s      r)   r<   zBaseAzureClient._build_request2   sq    
 ;;00Z@Q@Q5R%%))'2E 3t}};M)M -eWW[[MBw%g..r*   )r=   r   r+   zhttpx.Request)r-   r.   r/   r   r<   r0   r1   s   @r)   r3   r3   1   s'    	/$	/ 
	/ 	/r*   r3   c                  .    e Zd Zeddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zedddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zddddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Zeddddddededdddi d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZ	ddZ
ed fd       Z xZS )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_validationc                    y N r'   azure_endpointrA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   s                 r)   r&   zAzureOpenAI.__init__@       $ 	r*   c                    y rN   rO   r'   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   s                r)   r&   zAzureOpenAI.__init__T       " 	r*   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   c                    y rN   rO   r'   r;   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   s                r)   r&   zAzureOpenAI.__init__g   rU   r*   )rB   rQ   rA   rC   rD   rE   rF   r;   rG   rH   rI   rJ   rK   rL   c               *   |t         j                  j                  d      }|t         j                  j                  d      }|||t        d      |t         j                  j                  d      }|t	        d      |d|i}ni |d|i}|>|t         j                  j                  d      }|t	        d	      || d
| }n| d}n|t	        d      |t
        }t        |   ||||	|
||||	       || _        || _	        || _
        y)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`
        - `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.
        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	rC   rF   r;   rG   rH   rI   rJ   rK   rL   osenvironr9   r   
ValueErrorAPI_KEY_SENTINELr%   r&   _api_version_azure_ad_token_azure_ad_token_provider)r'   rB   rQ   rA   rC   rD   rE   rF   r;   rG   rH   rI   rJ   rK   rL   r(   s                  r)   r&   zAzureOpenAI.__init__z   r   J ?jjnn%;<G!ZZ^^,CDN?~5:Q:Y B  **..)=>Kq   *K8MI}Im[IM%!#0G!H%  L   +,--ABRAST,-W5) !UVV?&G%#+'#(C 	 
	
 (-(?%r*   rC   rF   rB   rD   rE   r;   rG   rK   rH   rI   set_default_headersrJ   set_default_query_extra_kwargsc                   t         |   ||||||	|
||||xs | j                  |xs | j                  |xs | j                  d|      S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        )rB   rD   rE   )rC   rF   r;   rG   rK   rH   rI   rp   rJ   rq   rr   r%   copyrk   rl   rm   r'   rC   rF   rB   rD   rE   r;   rG   rK   rH   rI   rp   rJ   rq   rr   r(   s                  r)   rv   zAzureOpenAI.copy   r    , w|%##+ 3'/*?d.?.?"0"HD4H4H+B+cdFcFc  	  
 	
r*   c                    | j                   | j                   S | j                  }|) |       }|rt        |t              st	        d|       |S y NzOExpected `azure_ad_token_provider` argument to return a string but it returned )rl   rm   
isinstancer:   ri   r'   providertokens      r)   _get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token  sa    +'''00JE
5# 6 efkelm  Lr*   c                N   t        |j                        ri |j                  ni }||_        | j                         }||j                  d      Gd| |d<   n>| j                  t
        ur!|j                  d      | j                  |d<   nt        d      t        | !  |      S NAuthorizationzBearer zapi-keyzUnable to handle auth	r   headersr   r9   rC   rj   ri   r%   _prepare_optionsr'   r=   r   rD   r(   s       r)   r   zAzureOpenAI._prepare_options  s    @H@Y)<GOO)<_a!113%{{?+3-4^4D+E(\\!11{{9%-%)\\	" 455w'00r*   )rQ   r:   rA   
str | NonerB   r   rC   r   rD   r   rE   AzureADTokenProvider | NonerF   r   rG   !float | Timeout | None | NotGivenrH   intrI   Mapping[str, str] | NonerJ   Mapping[str, object] | NonerK   httpx.Client | NonerL   boolr+   r,   )rA   r   rB   r   rC   r   rD   r   rE   r   rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r+   r,   )r;   r:   rB   r   rC   r   rD   r   rE   r   rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r+   r,   )rB   r   rQ   r   rA   r   rC   r   rD   r   rE   r   rF   r   r;   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r+   r,   )rC   r   rF   r   rB   r   rD   r   rE   r   r;   str | httpx.URL | NonerG   r   rK   r   rH   int | NotGivenrI   r   rp   r   rJ   r   rq   r   rr   Mapping[str, Any]r+   r   r+   r   r=   r   r+   r,   r-   r.   r/   r
   r   r   r&   r   rv   with_optionsr   r   r0   r1   s   @r)   r?   r?   ?   s   
 (,"&"%)?C#'5>.4859+/,1  %	
    # "= ! 3  2 3 ) &*  
! &  (,"&"%)?C#'5>.4859+/,1 %  	
  # "= ! 3  2 3 ) &* 
 $ 
 #'"%)?C#'5>.4859+/,1   	
  # "= ! 3  2 3 ) &* 
 * #'%)'+"%)?C#'#5>.4859+/,1!_@  _@ #	_@
 %_@ _@ #_@ "=_@ !_@ _@ 3_@ _@ 2_@ 3_@ )_@  &*!_@" 
#_@B  ##'"&%)?C+/5>+/&/488<599=+-!&
 &
 !	&

  &
 #&
 "=&
 )&
 3&
 )&
 $&
 2&
 6&
 3&
 7&
  )!&
" 
#&
 &
P L 1 1r*   r?   c                  .    e Zd Zeddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zedddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zddddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Zeddddddededdddi d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZ	ddZ
ed fd       Z xZS )AsyncAzureOpenAINFr@   c                    y rN   rO   rP   s                 r)   r&   zAsyncAzureOpenAI.__init__)  rR   r*   c                    y rN   rO   rT   s                r)   r&   zAsyncAzureOpenAI.__init__=  rU   r*   rV   c                    y rN   rO   rX   s                r)   r&   zAsyncAzureOpenAI.__init__P  rU   r*   )rQ   rA   rB   rC   rD   rE   rF   r;   rG   rH   rI   rJ   rK   rL   c               *   |t         j                  j                  d      }|t         j                  j                  d      }|||t        d      |t         j                  j                  d      }|t	        d      |d|i}ni |d|i}|>|t         j                  j                  d      }|t	        d	      || d
| }n| d}n|t	        d      |t
        }t        |   ||||	|
||||	       || _        || _	        || _
        y)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`
        - `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.
        NrZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   )r'   rQ   rA   rB   rC   rD   rE   rF   r;   rG   rH   rI   rJ   rK   rL   r(   s                  r)   r&   zAsyncAzureOpenAI.__init__c  rn   r*   ro   c                   t         |   ||||||	|
||||xs | j                  |xs | j                  |xs | j                  d|      S rt   ru   rw   s                  r)   rv   zAsyncAzureOpenAI.copy  rx   r*   c                   K   | j                   | j                   S | j                  }|H |       }t        j                  |      r
| d {   }|rt	        |t
              st        d|       |S y 7 'wrz   )rl   rm   inspectisawaitabler{   r:   ri   r|   s      r)   r   z$AsyncAzureOpenAI._get_azure_ad_token  s     +'''00JE""5)#
5# 6 efkelm  L $s   AA4
A2(A4c                ~  K   t        |j                        ri |j                  ni }||_        | j                          d {   }||j                  d      Gd| |d<   n>| j                  t
        ur!|j                  d      | j                  |d<   nt        d      t        | !  |       d {   S 7 u7 wr   r   r   s       r)   r   z!AsyncAzureOpenAI._prepare_options   s     @H@Y)<GOO)<_a!#7799%{{?+3-4^4D+E(\\!11{{9%-%)\\	" 455W-g666 : 7s%   A B=B9A0B=4B;5B=;B=)rQ   r:   rA   r   rB   r   rC   r   rD   r   rE    AsyncAzureADTokenProvider | NonerF   r   rG   r   rH   r   rI   r   rJ   r   rK   httpx.AsyncClient | NonerL   r   r+   r,   )rA   r   rB   r   rC   r   rD   r   rE   r   rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r+   r,   )r;   r:   rB   r   rC   r   rD   r   rE   r   rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r+   r,   )rQ   r   rA   r   rB   r   rC   r   rD   r   rE   r   rF   r   r;   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r+   r,   )rC   r   rF   r   rB   r   rD   r   rE   r   r;   r   rG   r   rK   r   rH   r   rI   r   rp   r   rJ   r   rq   r   rr   r   r+   r   r   r   r   r1   s   @r)   r   r   (  s    
 (,"&"%)DH#'5>.485904,1  %	
    # "B ! 3  2 3 . &*  
! &  (,"&"%)DH#'5>.485904,1 %  	
  # "B ! 3  2 3 . &* 
 $ 
 #'"%)DH#'5>.485904,1   	
  # "B ! 3  2 3 . &* 
 * &*'+"&"%)DH#'#5>.485904,1!_@ #_@ %	_@
  _@ _@ #_@ "B_@ !_@ _@ 3_@ _@ 2_@ 3_@ ._@  &*!_@" 
#_@B  ##'"&%)DH+/5>04&/488<599=+-!&
 &
 !	&

  &
 #&
 "B&
 )&
 3&
 .&
 $&
 2&
 6&
 3&
 7&
  )!&
" 
#&
 &
P L" 7 7r*   r   )4
__future__r   rg   r   typingr   r   r   r   r   r	   r
   typing_extensionsr   r   httpx_typesr   r   r   r   _utilsr   r   _clientr   r   _modelsr   
_streamingr   r   _exceptionsr   _base_clientr   r   setr7   r:   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr   r   joinrj   r#   r3   r?   r   rO   r*   r)   <module>r      s$   " 	  N N N ,  7 7 ) ) ) , % :	   C( $R)?%?@ uU\\5CTCT5T/UV+5kRUFV9V3WX 7789 
 
/j!?@ /f1/%,,s";<f f1Rh7u'8'8+c:J'JK[ h7r*   