
    OYhfS                    D   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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jV                  ejX                  f         Z- edeee   e e   f         Z.dj_                  g d      Z0 G d de"      Z1 G d de%e-e.f         Z2 G d de2ejV                  ee   f   e      Z3 G d de2ejX                  e e   f   e      Z4y)    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitablecast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/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    O/var/www/feuerwehr-webapp/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(   optionsr6   r)   s      r*   r=   zBaseAzureClient._build_request3   sq    
 ;;00Z@Q@Q5R%%))'2E 3t}};M)M -eWW[[MBw%g..r+   )r>   r   r,   zhttpx.Request)r.   r/   r0   r   r=   r1   r2   s   @r*   r4   r4   2   s'    	/$	/ 
	/ 	/r+   r4   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deeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Ze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 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__A       $ 	r+   c                    y rN   rO   )r(   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   s                r*   r'   zAzureOpenAI.__init__U       " 	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__h   rS   r+   )rB   rP   rA   rC   rD   rE   rF   projectr<   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`
        - `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
rC   rF   rU   r<   rG   rH   rI   rJ   rK   rL   osenvironr:   r   
ValueErrorAPI_KEY_SENTINELr&   r'   _api_version_azure_ad_token_azure_ad_token_provider)r(   rB   rP   rA   rC   rD   rE   rF   rU   r<   rG   rH   rI   rJ   rK   rL   r)   s                   r*   r'   zAzureOpenAI.__init__{   u   N ?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   rU   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   rU   r<   rG   rK   rH   rI   rm   rJ   rn   ro   r&   copyrh   ri   rj   r(   rC   rF   rU   rB   rD   rE   r<   rG   rK   rH   rI   rm   rJ   rn   ro   r)   s                   r*   rs   zAzureOpenAI.copy   u    . 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 )ri   rj   
isinstancer;   rf   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|   r:   rC   rg   rf   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+   )rP   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   rP   r   rA   r   rC   r   rD   r   rE   r   rF   r   rU   r   r<   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r,   r-   ) rC   r   rF   r   rU   r   rB   r   rD   r   rE   r   r<   str | httpx.URL | NonerG   r   rK   r   rH   int | NotGivenrI   r   rm   r   rJ   r   rn   r   ro   Mapping[str, Any]r,   r   r,   r   r>   r   r,   r-   r.   r/   r0   r   r   r   r'   r   rs   with_optionsr|   r   r1   r2   s   @r*   r@   r@   @   s7   
 (,"&"%)?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#b@  b@ #	b@
 %b@ b@ #b@ "=b@ !b@ b@ b@ 3b@ b@ 2b@ 3b@  )!b@" &*#b@$ 
%b@H  ##'""&%)?C+/5>+/&/488<599=+-#(
 (
 !	(

 (
  (
 #(
 "=(
 )(
 3(
 )(
 $(
 2(
 6(
 3(
  7!(
" )#(
$ 
%(
 (
T L 1 1r+   r@   c                  L    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eeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Ze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 fd       Z xZS )AsyncAzureOpenAINF)rA   rB   rC   rD   rE   rF   rU   rG   rH   rI   rJ   rK   rL   c                    y rN   rO   )r(   rP   rA   rB   rC   rD   rE   rF   rU   rG   rH   rI   rJ   rK   rL   s                  r*   r'   zAsyncAzureOpenAI.__init__/  s    & 	r+   c                    y rN   rO   )r(   rA   rB   rC   rD   rE   rF   rU   rG   rH   rI   rJ   rK   rL   s                 r*   r'   zAsyncAzureOpenAI.__init__D  rQ   r+   )rB   rC   rD   rE   rF   rU   rG   rH   rI   rJ   rK   rL   c                    y rN   rO   )r(   r<   rB   rC   rD   rE   rF   rU   rG   rH   rI   rJ   rK   rL   s                 r*   r'   zAsyncAzureOpenAI.__init__X  rQ   r+   )rP   rA   rB   rC   rD   rE   rF   rU   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`
        - `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.
        NrW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   )r(   rP   rA   rB   rC   rD   rE   rF   rU   r<   rG   rH   rI   rJ   rK   rL   r)   s                   r*   r'   zAsyncAzureOpenAI.__init__l  rk   r+   rl   c                   t         |   ||||||	|
|||||xs | j                  |xs | j                  |xs | j                  d|      S rq   rr   rt   s                   r*   rs   zAsyncAzureOpenAI.copy  ru   r+   c                  K   | j                   | j                   S | j                  }|_ |       }t        j                  |      r
| d {   }|rt	        t        t        |      t              st        d|       t        |      S y 7 >wrw   )	ri   rj   inspectisawaitablerx   r
   r   r;   rf   ry   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                ~  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=)rP   r;   rA   r   rB   r   rC   r   rD   r   rE    AsyncAzureADTokenProvider | NonerF   r   rU   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   rU   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   rU   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r,   r-   ) rP   r   rA   r   rB   r   rC   r   rD   r   rE   r   rF   r   rU   r   r<   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   r   r,   r-   ) rC   r   rF   r   rU   r   rB   r   rD   r   rE   r   r<   r   rG   r   rK   r   rH   r   rI   r   rm   r   rJ   r   rn   r   ro   r   r,   r   r   r   r   r2   s   @r*   r   r   .  sc   
 (,"&"%)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@ #b@ %	b@
  b@ b@ #b@ "Bb@ !b@ b@ b@ 3b@ b@ 2b@ 3b@  .!b@" &*#b@$ 
%b@H  ##'""&%)DH+/5>04&/488<599=+-#(
 (
 !	(

 (
  (
 #(
 "B(
 )(
 3(
 .(
 $(
 2(
 6(
 3(
  7!(
" )#(
$ 
%(
 (
T L" 7 7r+   r   )5
__future__r   rd   r   typingr   r   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   setr8   r;   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr   r   joinrg   r$   r4   r@   r   rO   r+   r*   <module>r      s$   " 	  T T T ,  7 7 ) ) ) , % :
   C( $R)?%?@ uU\\5CTCT5T/UV+5kRUFV9V3WX 7789 
 
/j!?@ /k1/%,,s";<f k1\p7u'8'8+c:J'JK[ p7r+   