
    g\                    T   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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         Z0 edee"e   e#e   f         Z1dje                  g d      Z3 G d de%      Z4 G d de(e0e1f         Z5 G d de5ej\                  e"e   f   e      Z6 G d de5ej^                  e#e   f   e      Z7y)    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitablecastoverload)Selfoverride   )	NOT_GIVENOmitQuery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 )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    E/var/www/openai/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                  :     e Zd Zedd	 	 	 	 	 d fd       Z xZS )BaseAzureClientr   retries_takenc                  |j                   t        v r_t        |j                        rJ|j                  j	                  d      }|-dt        | j                        vrd| |j                    |_         t        | !  ||      S )Nmodelz/deploymentsz/deployments/r7   )	url_deployments_endpointsr   	json_datagetstrbase_urlr(   _build_request)r*   optionsr8   r:   r+   s       r,   rA   zBaseAzureClient._build_request4   sv     ;;00Z@Q@Q5R%%))'2E 3t}};M)M -eWW[[MBw%g]%KKr-   )rB   r   r8   intr.   zhttpx.Request)r0   r1   r2   r   rA   r3   r4   s   @r,   r6   r6   3   s;    
 	L$L 	L
 
L Lr-   r6   c                  \    e Zd Zedddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zed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dd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ddededdddi d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZ	ddZ
edd       ZddZ xZS )AzureOpenAINF)azure_deploymentapi_versionapi_keyazure_ad_tokenazure_ad_token_providerorganizationwebsocket_base_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validationc                    y N )r*   azure_endpointrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   s                  r,   r)   zAzureOpenAI.__init__D       $ r-   c                    y rT   rU   )r*   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   s                 r,   r)   zAzureOpenAI.__init__X       " r-   )rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   c                    y rT   rU   )r*   r@   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   s                 r,   r)   zAzureOpenAI.__init__k   rY   r-   )rG   rV   rF   rH   rI   rJ   rK   projectrL   r@   rM   rN   rO   rP   rQ   rR   c               j   |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	      ||j                  d
       d| }
n"|j                  d
       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`
        - `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   r[   r@   rM   rN   rO   rP   rQ   rL   rR   osenvironr>   r   
ValueErrorrstripAPI_KEY_SENTINELr(   r)   _api_version_azure_ad_token_azure_ad_token_provider)r*   rG   rV   rF   rH   rI   rJ   rK   r[   rL   r@   rM   rN   rO   rP   rQ   rR   r+   s                    r,   r)   zAzureOpenAI.__init__~      P ?jjnn%;<G!ZZ^^,CDN?~5:Q:Y B  **..)=>Kq   *K8MI}Im[IM%!#0G!H%  L   +,33C899MN^M_`,33C89A) !UVV?&G%#+'#1(C 	 	
 (-(?%r-   rH   rK   r[   rL   rG   rI   rJ   r@   rM   rQ   rN   rO   set_default_headersrP   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.
        )rG   rI   rJ   )rH   rK   r[   rL   r@   rM   rQ   rN   rO   ru   rP   rv   rw   r(   copyrp   rq   rr   r*   rH   rK   r[   rL   rG   rI   rJ   r@   rM   rQ   rN   rO   ru   rP   rv   rw   r+   s                    r,   r{   zAzureOpenAI.copy   x    0 w|%1##+ 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 )rq   rr   
isinstancer?   rm   r*   providertokens      r,   _get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token  sa    +'''00JE
5# 6 efkelm  Lr-   c                H   t        |j                        ri |j                  ni }t        |      }||_        | j                         }||j	                  d      d| |d<   |S | j
                  t        ur"|j	                  d      | j
                  |d<   |S t        d      NAuthorizationBearer api-keyzUnable to handle authr   headersr   r   r>   rH   ro   rm   r*   rB   r   rI   s       r,   _prepare_optionszAzureOpenAI._prepare_options"  s    @H@Y)<GOO)<_aW%!113%{{?+3-4^4D+E(  \\!11{{9%-%)\\	"
  455r-   c                    i }i || j                   |d}| j                  dk7  rd| j                  i}||fS | j                         }|rdd| i}||fS N)rb   
deploymentz<missing API key>r   r   r   rp   rH   r   r*   r:   extra_queryauth_headersqueryr   s         r,   _configure_realtimezAzureOpenAI._configure_realtime6  s    

,,

 <<..%t||4L
 l"" ,,.E /75'1BCl""r-   )rV   r?   rF   
str | NonerG   r   rH   r   rI   r   rJ   AzureADTokenProvider | NonerK   r   rL   str | httpx.URL | NonerM   !float | Timeout | None | NotGivenrN   rC   rO   Mapping[str, str] | NonerP   Mapping[str, object] | NonerQ   httpx.Client | NonerR   boolr.   r/   )rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   rM   r   rN   rC   rO   r   rP   r   rQ   r   rR   r   r.   r/   )r@   r?   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   rM   r   rN   rC   rO   r   rP   r   rQ   r   rR   r   r.   r/   )"rG   r   rV   r   rF   r   rH   r   rI   r   rJ   r   rK   r   r[   r   rL   r   r@   r   rM   r   rN   rC   rO   r   rP   r   rQ   r   rR   r   r.   r/   )"rH   r   rK   r   r[   r   rL   r   rG   r   rI   r   rJ   r   r@   r   rM   r   rQ   r   rN   int | NotGivenrO   r   ru   r   rP   r   rv   r   rw   Mapping[str, Any]r.   r   r.   r   rB   r   r.   r   r:   r?   r   r   r.   ztuple[Query, dict[str, str]]r0   r1   r2   r   r   r   r)   r   r{   with_optionsr   r   r   r3   r4   s   @r,   rE   rE   C   s   
 (,"&"%)?C#'595>.4859+/,1!  %	
    # "= ! 3 3  2 3 )  &*!" 
# &  (,"&"%)?C#'595>.4859+/,1 %  	
  # "= ! 3 3  2 3 ) &*  
! $ 
 #'"%)?C#'595>.4859+/,1   	
  # "= ! 3 3  2 3 ) &*  
! * #'%)'+"%)?C#'"59#5>.4859+/,1%d@  d@ #	d@
 %d@ d@ #d@ "=d@ !d@ d@ 3d@ d@ 3d@ d@ 2d@  3!d@" )#d@$ &*%d@& 
'd@L  ##'"59"&%)?C+/5>+/&/488<599=+-%*
 *
 !	*

 *
 3*
  *
 #*
 "=*
 )*
 3*
 )*
 $*
 2*
 6*
  3!*
" 7#*
$ )%*
& 
'*
 *
X L  &#r-   rE   c                  n    e Zd Zeddddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeddddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zedddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zdd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ddededdddi d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZ	ddZ
edd       ZddZ xZS )AsyncAzureOpenAINF)rF   rG   rH   rI   rJ   rK   r[   rL   rM   rN   rO   rP   rQ   rR   c                    y rT   rU   )r*   rV   rF   rG   rH   rI   rJ   rK   r[   rL   rM   rN   rO   rP   rQ   rR   s                   r,   r)   zAsyncAzureOpenAI.__init__G  s    & r-   c                    y rT   rU   )r*   rF   rG   rH   rI   rJ   rK   r[   rL   rM   rN   rO   rP   rQ   rR   s                  r,   r)   zAsyncAzureOpenAI.__init__\  rW   r-   )rG   rH   rI   rJ   rK   r[   rL   rM   rN   rO   rP   rQ   rR   c                    y rT   rU   )r*   r@   rG   rH   rI   rJ   rK   r[   rL   rM   rN   rO   rP   rQ   rR   s                  r,   r)   zAsyncAzureOpenAI.__init__p  rW   r-   )rV   rF   rG   rH   rI   rJ   rK   r[   r@   rL   rM   rN   rO   rP   rQ   rR   c               j   |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	      ||j                  d
       d| }	n"|j                  d
       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`
        - `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.
        Nr]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   )r*   rV   rF   rG   rH   rI   rJ   rK   r[   r@   rL   rM   rN   rO   rP   rQ   rR   r+   s                    r,   r)   zAsyncAzureOpenAI.__init__  rs   r-   rt   c                   t         |   ||||||	|
||||||xs | j                  |xs | j                  |xs | j                  d|      S ry   rz   r|   s                    r,   r{   zAsyncAzureOpenAI.copy  r}   r-   c                  K   | j                   | j                   S | j                  }|_ |       }t        j                  |      r
| d {   }|rt	        t        t        |      t              st        d|       t        |      S y 7 >wr   )	rq   rr   inspectisawaitabler   r
   r   r?   rm   r   s      r,   r   z$AsyncAzureOpenAI._get_azure_ad_token  s     +'''00JE""5)#
4U+;S A efkelm  u: $s   AB
B	?Bc                d  K   t        |j                        ri |j                  ni }t        |      }||_        | j                          d {   }||j	                  d      d| |d<   |S | j
                  t        ur"|j	                  d      | j
                  |d<   |S t        d      7 `wr   r   r   s       r,   r   z!AsyncAzureOpenAI._prepare_options*  s     @H@Y)<GOO)<_aW%!#7799%{{?+3-4^4D+E(  \\!11{{9%-%)\\	"
  455 :s   AB0B.A!B0c                   K   i }i || j                   |d}| j                  dk7  rd| j                  i}||fS | j                          d {   }|rdd| i}||fS 7 wr   r   r   s         r,   r   z$AsyncAzureOpenAI._configure_realtime>  s     

,,

 <<..%t||4L
 l"" 2244E /75'1BCl"" 5s   A
A AA ) rV   r?   rF   r   rG   r   rH   r   rI   r   rJ    AsyncAzureADTokenProvider | NonerK   r   r[   r   rL   r   rM   r   rN   rC   rO   r   rP   r   rQ   httpx.AsyncClient | NonerR   r   r.   r/   )rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   r[   r   rL   r   rM   r   rN   rC   rO   r   rP   r   rQ   r   rR   r   r.   r/   )r@   r?   rG   r   rH   r   rI   r   rJ   r   rK   r   r[   r   rL   r   rM   r   rN   rC   rO   r   rP   r   rQ   r   rR   r   r.   r/   )"rV   r   rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   r[   r   r@   r   rL   r   rM   r   rN   rC   rO   r   rP   r   rQ   r   rR   r   r.   r/   )"rH   r   rK   r   r[   r   rL   r   rG   r   rI   r   rJ   r   r@   r   rM   r   rQ   r   rN   r   rO   r   ru   r   rP   r   rv   r   rw   r   r.   r   r   r   r   r   r4   s   @r,   r   r   F  s   
 (,"&"%)DH#'"595>.485904,1#  %	
    # "B !  3 3  2 3  .!" &*#$ 
% (  (,"&"%)DH#'"595>.485904,1! %  	
  # "B !  3 3  2 3 .  &*!" 
# & 
 #'"%)DH#'"595>.485904,1!   	
  # "B !  3 3  2 3 .  &*!" 
# , &*'+"&"%)DH#'"#595>.485904,1%d@ #d@ %	d@
  d@ d@ #d@ "Bd@ !d@ d@ d@ 3d@ 3d@ d@ 2d@  3!d@" .#d@$ &*%d@& 
'd@L  ##'"59"&%)DH+/5>04&/488<599=+-%*
 *
 !	*

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