Ë
    uPêjë  ã                   ó”  — d dl Z d dlZd dlZd dl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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mZ d d	lmZm Z m!Z! d d
l"m#Z#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<  G d„ d«      Z=de>deez  dz  de?fd„Z@ G d„ de4e.«      ZAy)é    N)ÚCallableÚ	Coroutine)ÚAnyÚFinal)ÚAPITimeoutErrorÚAsyncAzureOpenAIÚAsyncOpenAIÚAzureOpenAIÚBadRequestErrorÚOpenAI)ÚAZURE_OPERATION_POLLING_TIMEOUTÚDEFAULT_MAX_RETRIES)ÚLogging)Úspeech_request_bodyÚtrack_llm_api_timing)Ú	SSRFErrorÚassert_same_origin)ÚAsyncHTTPHandlerÚHTTPHandlerÚget_async_httpx_client)ÚEmbeddingResponseÚImageResponseÚLlmProvidersÚModelResponse)ÚCustomStreamWrapperÚ convert_to_model_response_objectÚ
modify_urlé   )ÚHttpxBinaryResponseContenté   )ÚBaseLLM)Ú!build_output_token_limit_responseÚis_output_token_limit_erroré   )ÚAzureOpenAIErrorÚBaseAzureLLMÚget_azure_ad_token_from_oidcÚprocess_azure_headersÚ!select_azure_base_url_or_endpoint)Ú$AzureFoundryMAIImageGenerationConfigÚ!get_azure_image_generation_config)Ú+azure_deployment_image_generation_json_bodyc                   ó2   — e Zd ZdZ	 	 dd„Zd„ Zdedefd„Zy)	ÚAzureOpenAIAssistantsAPIConfigzˆ
    Reference: https://learn.microsoft.com/en-us/azure/ai-services/openai/assistants-reference-messages?tabs=python#create-message
    Nc                  ó   — y ©N© ©Úselfs    ú]/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/azure/azure.pyÚ__init__z'AzureOpenAIAssistantsAPIConfig.__init__@   s   € ð 	ó    c                 ó
   — g d¢S )N)ÚroleÚcontentÚattachmentsÚmetadatar1   r2   s    r4   Ú*get_supported_openai_create_message_paramszIAzureOpenAIAssistantsAPIConfig.get_supported_openai_create_message_paramsE   s   € ò
ð 	
r6   Únon_default_paramsÚoptional_paramsc                 ó  — |j                  «       D ]õ  \  }}|dk(  r||d<   |dk(  r||d<   Œ|dk(  r7t        |t        «      r||d<   Œ6t        j                  j                  dd¬«      ‚|dk(  sŒ]g }t        |t        «      rX|D ]R  }d|v r|j                  |d   «       Œt        j                  d	u rŒ/t        j                  j                  d
|› d�d¬«      ‚ ŒÇt        j                  j                  dt        |«      › d|› �d¬«      ‚ |S )Nr8   r;   r9   z'Azure only accepts content as a string.é�  )ÚmessageÚstatus_coder:   Úfile_idTzAzure doesn't support z<. To drop it from the call, set `litellm.drop_params = True.z8Invalid param. attachments should always be a list. Got=z, Expected=List. Raw value=)
ÚitemsÚ
isinstanceÚstrÚlitellmÚutilsÚUnsupportedParamsErrorÚlistÚappendÚdrop_paramsÚtype)r3   r=   r>   ÚparamÚvalueÚfile_idsÚitems          r4   Ú'map_openai_params_create_message_paramszFAzureOpenAIAssistantsAPIConfig.map_openai_params_create_message_paramsM   sX  € Ø.×4Ñ4Ó6ò 	‰LˆE�5Ø˜ŠØ*/� Ñ'Ø˜
Ò"Ø.3� 
Ò+Ø˜)Ò#Ü˜e¤SÔ)Ø16�O IÒ.ä!Ÿ-™-×>Ñ>Ø IØ$'ð ?ó ð ð ˜-Ó'Ø&(�Ü˜e¤TÔ*Ø %ò 
"˜Ø$¨Ñ,Ø$ŸO™O¨D°©OÕ<ä&×2Ñ2°dÑ:Ø $ä&-§m¡m×&JÑ&JØ.DÀUÀGð  LHð  -IØ03ð 'Kó '"ð !"ñ
"ô "Ÿ-™-×>Ñ>Ø"ZÔ[_Ð`eÓ[fÐZgð  hCð  DIð  CJð  !KØ$'ð ?ó ð ð9	ð@ Ðr6   ©ÚreturnN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r5   r<   ÚdictrR   r1   r6   r4   r.   r.   ;   s-   „ ñðà	óò

ð!È$ð !Ðaeô !r6   r.   Úazure_client_paramsÚazure_clientrT   c                 ó„   — |€ydg}| j                  «       D ]'  \  }}||v sŒ|dk(  sŒ|€Œ||j                  d   k7  sŒ' y y)z‚
    Returns True if user passed in client params != initialized azure client

    Currently only implemented for api version
    TÚapi_versionzapi-versionF)rD   Ú_custom_query)rZ   r[   Údynamic_paramsÚkÚvs        r4   Ú_check_dynamic_azure_paramsrb   q   s^   € ð ÐØà*˜O€NØ#×)Ñ)Ó+ò ‰ˆˆ1Ø�Ò 1¨Ó#5Ø‰}  l×&@Ñ&@ÀÑ&OÓ!OÙðð
 r6   c            #       ó²  ‡ — e Zd Zd3ˆ fd„Zdeez  dedeej                  z  fd„Z
 e«       deez  dedeej                  z  defd	„«       Z	 	 	 d4d
ededededz  dededededz  dedz  dededeej                  z  dedededz  fd„Zddddi fdedz  ded
edededededededededz  dedz  dedz  dedz  fd„Zdddi fdedededz  dededeeef   d
ededededz  dedz  dedz  fd„Zdddi fdedededz  dededed
ededededz  dedz  dedz  fd„Zdddddddi fd
edededededededz  dedz  dedz  deej                  z  dz  dedz  dedz  dedz  dedz  defd „Z	 	 	 	 	 	 	 	 d5d
ededededededed!ededz  dedz  dedz  dedz  dedz  dedz  deeeeef   z  fd"„Z	 d6de dz  deej                  z  dz  dededededed#edz  dejB                  fd$„Z"	 d6de#dz  deej                  z  dz  dededededed#edz  dejB                  fd%„Z$	 d6d&ed
edz  d'edz  defd(„Z%	 	 	 d7dede&dz  d&ededededed
edz  de&fd)„Z'	 	 	 	 	 	 	 	 	 	 d8d*eded!ededed
edz  dedz  dedz  dedz  de&dz  dedz  dedz  dedz  de&fd+„Z(	 	 	 	 	 d9d
eded,ed!ededz  dedz  dedz  d-edz  dedeej                  z  dededz  dedz  d.edz  dedz  de)f d/„Z*	 	 d:d
eded,ed!ededz  dedz  dedz  dedz  dedz  dedeej                  z  dededz  de)fd0„Z+	 	 	 d7d
edz  dedededed1ededz  dedz  d*edz  defd2„Z,ˆ xZ-S );ÚAzureChatCompletionrT   Nc                 ó"   •— t         ‰| �  «        y r0   )Úsuperr5   )r3   Ú	__class__s    €r4   r5   zAzureChatCompletion.__init__‡   s   ø€ Ü‰ÑÕr6   r[   ÚdataÚtimeoutc                 ó:  — 	  |j                   j                  j                  j                  di |¤d|i¤Ž}t	        |j
                  «      }|j                  «       }||fS # t        $ r$}t        |«      s‚ t        ||d¬«      cY d}~S d}~wt        $ r}|‚d}~ww xY w)ú´
        Helper to:
        - call chat.completions.create.with_raw_response when litellm.return_response_headers is True
        - call chat.completions.create by default
        ri   F©Úerh   Úis_asyncNr1   )ÚchatÚcompletionsÚwith_raw_responseÚcreaterY   ÚheadersÚparser   r#   r"   Ú	Exception)r3   r[   rh   ri   Úraw_responsers   Úresponserm   s           r4   Ú.make_sync_azure_openai_chat_completion_requestzBAzureChatCompletion.make_sync_azure_openai_chat_completion_requestŠ   s—   € ð	Ø"X ,×"3Ñ"3×"?Ñ"?×"QÑ"Q×"XÑ"XÑ"qÐ[_Ñ"qÐipÒ"qˆLä! ,×"6Ñ"6Ó7ˆGØ*×0Ñ0Ó2ˆHØ˜HÐ$Ð$øÜò 	UÜ.¨qÔ1ØÜ4°q¸tÈeÔTÕTûÜò 	ØˆGûð	ús*   ‚AA Á	BÁ(BÂBÂBÂBÂBÚlogging_objc              ƒ   ó  K  — t        j                   «       }	  |j                  j                  j                  j                  d	i |¤d|i¤Žƒ d{  –—† }t        |j                  «      }|j                  «       }||fS 7 Œ-# t        $ rF}	t        j                   «       }
t        |
|z
  d«      }|	xj                  d|› d|› d�z  c_
        |	‚d}	~	wt        $ r$}	t        |	«      s‚ t        |	|d¬«      cY d}	~	S d}	~	wt        $ r}	|	‚d}	~	ww xY w­w)
rk   ri   Nr    z - timeout value=z, time taken=z secondsTrl   r1   )Útimero   rp   rq   rr   rY   rs   rt   r   ÚroundrA   r   r#   r"   ru   )r3   r[   rh   ri   ry   Ú
start_timerv   rs   rw   rm   Úend_timeÚ
time_deltas               r4   Ú)make_azure_openai_chat_completion_requestz=AzureChatCompletion.make_azure_openai_chat_completion_request¢   sú   è ø€ ô !ŸI™I›Kˆ
ð	Ø(^¨×(9Ñ(9×(EÑ(E×(WÑ(W×(^Ñ(^Ñ(wÐaeÑ(wÐovÒ(w×"wˆLä! ,×"6Ñ"6Ó7ˆGØ*×0Ñ0Ó2ˆHØ˜HÐ$Ð$ð	 #xùô
 ò 	Ü"Ÿi™i›kˆHÜ % h°Ñ&;¸QÓ ?ˆJØ�IŠIÐ,¨W¨I°]À:À,ÈhÐWÑW�IØˆGûÜò 	TÜ.¨qÔ1ØÜ4°q¸tÈdÔSÕSûÜò 	ØˆGûð	üs_   ‚D
˜7A? ÁA=Á,A? Á<D
Á=A? Á?	DÂAC	Ã	DÃC4Ã.DÃ/D
Ã4DÄ DÄDÄD
ÚmodelÚmessagesÚmodel_responseÚapi_keyÚapi_baser]   Úapi_typeÚazure_ad_tokenÚazure_ad_token_providerr_   Úprint_verboseÚacompletionrs   c                 ó¶  — |r||d<   	 |�|€t        dd¬«      ‚|j                  dd «      }|€t        }|j                  dd«      }|�(d|v r$| j                  ||||||||	|||¬	«      }d |d
œ|¥}nŒt        j
                  j                  |j                  d«      xs |¬«      r-t	        j
                  «       j                  |||||xs i ¬«      }n,t	        j                  «       j                  |||||xs i ¬«      }|du rP|j                  dd«      r| j                  |||
||||||	||||¬«      S | j                  ||||||||	|
||||||¬«      S d|v r%|d   du r| j                  |||
||||||	||||¬«      S |j                  ||||dœ|||dœ¬«       t        |t        «      st        dd¬«      ‚| j!                  |||||d|¬«      }t        |t"        t$        f«      st        dd¬«      ‚| j'                  |||¬«      \  }}t        |t(        «      rt        dd|d d › �¬«      ‚|j+                  «       }|j-                  ||||||dœ¬«       t/        ||||¬«      S # t         $ r}|‚d }~wt0        $ rb}t3        |dd«      }t3        |dd «      }t3        |d d «      }t3        |d!d «      }|€|rt3        |dd «      }t        |t)        |«      ||¬"«      ‚d }~ww xY w)#NÚextra_headersé¦  zMissing model or messages©rB   rA   Úmax_retriesÚ	json_modeFúgateway.ai.cloudflare.com)r…   r�   r]   r�   ri   r„   r‡   rˆ   rŠ   ÚclientÚlitellm_params©r�   r‚   Ú
base_model)r�   )r�   r‚   r>   r“   rs   TÚstream)ry   r…   r_   rh   r�   r„   r]   r‡   rˆ   ri   r’   r�   r“   )r…   rh   rƒ   r„   r]   r�   r‡   rˆ   r_   ri   r’   ry   r�   Úconvert_tool_call_to_json_moder“   ©r„   r‡   )rs   r]   r…   Úcomplete_input_dict©Úinputr„   Úadditional_argsúmax retries must be an int©r]   r…   r„   r�   r’   Ú	_is_asyncr“   éô  ú8azure_client is not an instance of AzureOpenAI or OpenAI©r[   rh   ri   ú'Unexpected string response from Azure: )rs   r]   r…   ©r›   r„   Úoriginal_responserœ   )Úresponse_objectÚmodel_response_objectr—   Ú_response_headersrB   rs   rw   Úbody©rB   rA   rs   r©   )r%   Úpopr   Ú,_init_azure_client_for_cloudflare_ai_gatewayrG   ÚAzureOpenAIGPT5ConfigÚis_model_gpt_5_modelÚgetÚtransform_requestÚAzureOpenAIConfigÚasync_streamingrŠ   Ú	streamingÚpre_callrE   ÚintÚget_azure_openai_clientr
   r   rx   rF   Ú
model_dumpÚ	post_callr   ru   Úgetattr)r3   r�   r‚   rƒ   r„   r…   r]   r†   r‡   rˆ   r_   r‰   ri   ry   r>   r“   Ú	logger_fnrŠ   rs   r’   r�   r�   rh   r[   rw   Ústringified_responserm   rB   Úerror_headersÚerror_responseÚ
error_bodys                                  r4   Ú
completionzAzureChatCompletion.completionÂ   s  € ñ, Ø/6ˆO˜OÑ,ðh	Øˆ} Ð 0Ü&°3Ð@[Ô\Ð\à)×-Ñ-¨m¸TÓBˆKØÐ"Ü1�Ø,;×,?Ñ,?ÀÈUÓ,SˆIð Ð#Ð(CÀxÑ(OØ×JÑJØ%ØØ +Ø +Ø#Ø#Ø#1Ø,CØ +Ø!Ø#1ð Kó �ð 59ÀhÑ*bÐRaÐ*b‘Ü×.Ñ.×CÑCÈ.×J\ÑJ\Ð]iÓJjÒJsÐnsÐCÔtÜ×4Ñ4Ó6×HÑHØØ%Ø$3Ø#1Ø#šM rð Ió ‘ô ×0Ñ0Ó2×DÑDØØ%Ø$3Ø#1Ø#šM rð Eó �ð ˜dÑ"Ø"×&Ñ& x°Ô7Ø×/Ñ/Ø$/Ø!)Ø'5Ø!Ø#Ø 'Ø$/Ø'5Ø0GØ 'Ø%Ø$/Ø'5ð 0ó ð ð   ×+Ñ+Ø!)Ø!Ø'5Ø 'Ø$/Ø#Ø'5Ø0GØ'5Ø 'Ø%Ø$/Ø$/Ø7@Ø'5ð ,ó ð ð" ˜_Ñ,°ÀÑ1JÈdÑ1RØ—~‘~Ø +Ø%Ø#1ØØØ#Ø +Ø#1Ø,CØ#Ø!Ø +Ø#1ð &ó ð ð" ×$Ñ$Ø"Ø#ð (/Ø.<ñ$ð (3Ø$,Ø/3ñ%ð %ô ô " +¬sÔ3Ü*°sÐD`ÔaÐaà&*×&BÑ&BØ +Ø%Ø#ØØ!Ø#Ø#1ð 'Có '�ô " ,´¼fÐ0EÔFÜ*Ø$'Ø Zôð ð
 %)×$WÑ$WØ!-°DÀ'ð %Xó %Ñ!�˜ô ˜h¬Ô,Ü*Ø$'Ø"IÈ(ÐSWÐTWÈ.ÐIYÐ Zôð ð /7×.AÑ.AÓ.CÐ$à×%Ñ%Ø"Ø#Ø&:à#*Ø'2Ø$,ñ%ð	 &ô 	ô 8Ø$8Ø*8Ø3<Ø&-ô	ð øô  ò 	ØˆGûÜò 	Ü!(¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ$+¨A¨z¸4Ó$@ˆNÜ '¨¨6°4Ó 8ˆJØÐ$©Ü '¨¸	À4Ó H�Ü"Ø'Ü˜A›Ø%Øô	ð ûð	ús8   ‰D&I Ä0I Å(I Å9C%I É	KÉ(I*É*KÉ6AKËKr�   r—   r“   c           	   ƒ   óÚ  K  — d }	 | j                  |||||d|¬«      }t        |t        t        f«      st	        d«      ‚|	j                  |d   |j                  ||dœ|d|dœ¬«       | j                  ||||	¬«      ƒ d {  –—† \  }}||	j                  d	<   t        |t        «      rt        d
d|d d
 › �¬«      ‚|j                  «       }|	j                  |d   ||d|i¬«       t        ||d|i||¬«      S 7 Œu# t        $ r*}|	j                  |d   |d|it        |«      ¬«       |‚d }~wt        j                  $ r>}|	j                  |d   |d|it        |«      ¬«       t        d
t        |«      ¬«      ‚d }~wt         $ rg}t#        |dt        |«      «      }t#        |dd «      }|	j                  |d   |d|it        |«      ¬«       t%        |d«      r|‚t        d
||¬«      ‚d }~ww xY w­w)NTrž   úBAzure client is not an instance of AsyncAzureOpenAI or AsyncOpenAIr‚   r˜   ©rs   r…   rŠ   r™   rš   ©r[   rh   ri   ry   Úresponse_headersr    r£   rŽ   r™   r¤   rs   )r¦   r§   Úhidden_paramsr¨   r—   ©r›   r„   rœ   r¥   rA   r©   rB   ©rB   rA   r©   )r¶   rE   r   r	   Ú
ValueErrorr´   r„   r€   Úmodel_call_detailsrF   r%   r·   r¸   r   ÚasyncioÚCancelledErrorru   r¹   Úhasattr)r3   r„   r]   r�   r…   rh   ri   r_   rƒ   ry   r�   r‡   rˆ   r—   r’   r“   rw   r[   rs   r»   rm   rA   r©   s                          r4   rŠ   zAzureChatCompletion.acompletion„  s{  è ø€ ð$ ˆðW	Tà"&×">Ñ">Ø'Ø!ØØØØØ-ð #?ó #ˆLô ˜lÔ-=¼{Ð,KÔLÜ Ð!eÓfÐfà× Ñ Ø˜:Ñ&Ø$×,Ñ,ð $+Ø*8ñ ð !)Ø#'Ø+/ñ!ð !ô ð '+×&TÑ&TØ)ØØØ'ð	 'Uó '÷ !ÑˆG�Xð BIˆK×*Ñ*Ð+=Ñ>ä˜(¤CÔ(Ü&Ø #ØEÀhÈtÐPSÀnÐEUÐVôð ð +3×*=Ñ*=Ó*?Ð Ø×!Ñ!Ø˜:Ñ&ØØ"6Ø!6¸Ð =ð	 "ô ô 4Ø 4Ø&4Ø(¨'Ð2Ø")Ø/Môð ð+!ùô8  ò 	à×!Ñ!Ø˜:Ñ&ØØ!6¸Ð =Ü"% a£&ð	 "ô ð ˆGûÜ×%Ñ%ò 	Dà×!Ñ!Ø˜:Ñ&ØØ!6¸Ð =Ü"% a£&ð	 "ô ô #¨s¼CÀ»FÔCÐCûÜò 	TÜ$ Q¨	´3°q³6Ó:ˆGÜ! ! V¨TÓ2ˆDà×!Ñ!Ø˜:Ñ&ØØ!6¸Ð =Ü"% a£&ð	 "ô ô �q˜-Ô(Ø�ä&°3ÀÈdÔSÐSûð	TüsU   ‚G+†A:C8 Â C6ÂA4C8 Ã5G+Ã6C8 Ã8	G(Ä%D&Ä&G(Ä<9E5Å5G(ÆA"G#Ç#G(Ç(G+c           
      óü  — |||t         j                  |	|dœ}t        |¬«      }|�||d<   n+|
�"|
j                  d«      rt	        |
«      }
|
|d<   n|�||d<   | j                  |||||d|¬«      }t        |t        t        f«      st        d	d
¬«      ‚|j                  |d   |j                  ||
dœ|d|dœ¬«       | j                  |||¬«      \  }}t        ||d||j                  dd «      t        |«      ¬«      }|S )N)r]   Úazure_endpointÚazure_deploymentÚhttp_clientr�   ri   )rZ   r„   zoidc/r‡   rˆ   Frž   r    r¡   rŽ   r‚   r˜   TrÂ   rš   r¢   ÚazureÚstream_options©Úcompletion_streamr�   Úcustom_llm_providerry   rÒ   r¨   )rG   Úclient_sessionr)   Ú
startswithr'   r¶   rE   r
   r   r%   r´   r„   rx   r   r¯   r(   )r3   ry   r…   r„   r]   r_   rh   r�   ri   r�   r‡   rˆ   r’   r“   rZ   r[   rs   rw   Ústreamwrappers                      r4   r³   zAzureChatCompletion.streamingð  sl  € ð$ 'Ø&Ø %Ü"×1Ñ1Ø&Øñ
Ðô @ÐTgÔhÐØÐØ-4Ð 	Ò*ØÐ'Ø×(Ñ(¨Ô1Ü!=¸nÓ!M�Ø4BÐÐ 0Ò1Ø$Ð0Ø=TÐÐ 9Ñ:à"×:Ñ:Ø#ØØØØØØ)ð ;ó 
ˆô ˜,¬´fÐ(=Ô>Ü"ØØRôð ð
 	×ÑØ�zÑ"Ø ×(Ñ(ð  'Ø&4ñð %Ø#Ø'+ñð 	ô 	
ð !×OÑOØ%¨D¸'ð Pó 
Ñˆ�ô  3Ø&ØØ 'Ø#ØŸ8™8Ð$4°dÓ;Ü3°GÓ<ô 
ˆð Ðr6   c           
   ƒ   ón  K  — 	 | j                  |||||d|¬«      }t        |t        t        f«      st	        d«      ‚|j                  |d   |j                  ||
dœ|d|dœ¬«       | j                  ||||¬«      ƒ d {  –—† \  }}||j                  d	<   t        ||d
||j                  dd «      |¬«      }|S 7 Œ9# t        $ ro}t        |dd«      }t        |dd «      }t        |dd «      }t        |dt        |«      «      }t        |dd «      }|€|rt        |dd «      }t        ||||¬«      ‚d }~ww xY w­w)NTrž   rÁ   r‚   r˜   rÂ   rš   rÃ   rÄ   rÑ   rÒ   rÓ   rB   r    rs   rw   rA   r©   rª   )r¶   rE   r   r	   rÈ   r´   r„   r€   rÉ   r   r¯   ru   r¹   rF   r%   )r3   ry   r…   r„   r]   r_   rh   r�   ri   r�   r‡   rˆ   r’   r“   r[   rs   rw   rØ   rm   rB   r¼   r½   rA   r¾   s                           r4   r²   z#AzureChatCompletion.async_streaming<  sš  è ø€ ð ;	Ø"&×">Ñ">Ø'Ø!ØØØØØ-ð #?ó #ˆLô ˜lÔ-=¼{Ð,KÔLÜ Ð!eÓfÐfð × Ñ Ø˜:Ñ&Ø$×,Ñ,ð $+Ø*8ñ ð !)Ø#'Ø+/ñ!ð !ô ð '+×&TÑ&TØ)ØØØ'ð	 'Uó '÷ !ÑˆG�Xð BIˆK×*Ñ*Ð+=Ñ>ô $7Ø"*ØØ$+Ø'Ø#Ÿx™xÐ(8¸$Ó?Ø")ô$ˆMð !Ð ð#!ùô$ ò 	Ü!(¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ$+¨A¨z¸4Ó$@ˆNÜ$ Q¨	´3°q³6Ó:ˆGÜ '¨¨6°4Ó 8ˆJØÐ$©Ü '¨¸	À4Ó H�Ü"Ø'ØØ%Øô	ð ûð	üs<   ‚D5„A:B: Á>B8Á?8B: Â7D5Â8B: Â:	D2ÃA*D-Ä-D2Ä2D5r›   r’   c           	   ƒ   ó4  K  — d }	 | j                  ||||d|	|¬«      }t        |t        t        f«      st	        d«      ‚ |j
                  j                  j                  di |¤d|
i¤Žƒ d {  –—† }t        |j                  «      }	 |j                  «       }t        |t        «      r!t        |j                  xs dd|d d › �¬«      ‚|j!                  «       }|j#                  ||d	|i|¬
«       t%        ||d|it'        |«      d¬«      }t        |t(        «      st        dd¬«      ‚|S 7 Œ¼# t        j                  $ r$}t        |j                  xs dd|› �¬«      |‚d }~ww xY w# t*        $ r'}|j#                  ||d	|it        |«      ¬
«       |‚d }~ww xY w­w)NT©r]   r…   r„   r�   rŸ   r’   r“   rÁ   ri   r    z.Failed to parse raw Azure embedding response: rŽ   r£   r™   rÆ   rs   Ú	embedding)r¦   r§   rÅ   r¨   Úresponse_typez:embedding_response is not an instance of EmbeddingResponser1   )r¶   rE   r   r	   rÈ   Ú
embeddingsrq   rr   rY   rs   rt   ÚjsonÚJSONDecodeErrorr%   rB   rF   r·   r¸   r   r(   r   ru   )r3   r�   rh   rƒ   r›   ry   r…   r„   r]   r’   ri   r�   r‡   rˆ   r“   rw   Úopenai_aclientrv   rs   Ú
json_errorr»   Úembedding_responserm   s                          r4   Ú
aembeddingzAzureChatCompletion.aembedding‰  só  è ø€ ð" ˆðF	Ø$(×$@Ñ$@Ø'Ø!ØØØØØ-ð %Aó %ˆNô ˜nÔ/?ÄÐ.MÔNÜ Ð!eÓfÐfà(Z¨×(AÑ(A×(SÑ(S×(ZÑ(ZÑ(sÐ]aÑ(sÐkrÒ(s×"sˆLÜ! ,×"6Ñ"6Ó7ˆGð"Ø'×-Ñ-Ó/�ô ˜(¤CÔ(Ü&Ø ,× 8Ñ 8Ò ?¸CØEÀhÈtÐPSÀnÐEUÐVôð ð +3×*=Ñ*=Ó*?Ð ð ×!Ñ!ØØØ!6¸Ð =Ø"6ð	 "ô ô )IØ 4Ø&4Ø(¨'Ð2Ü"7¸Ó"@Ø)ô)Ðô Ð0Ô2CÔDÜ&Ø #ØXôð ð &Ð%ða #tùô" ×'Ñ'ò "Ü&Ø ,× 8Ñ 8Ò ?¸CØLÈZÈLÐYôð "ð"ûð"ûô@ ò 	à×!Ñ!ØØØ!6¸Ð =Ü"% a£&ð	 "ô ð ˆGûð	üs`   ‚F†A&E% Á,D)Á-E% ÂD+ ÂBE% Ä(FÄ)E% Ä+E"Ä>EÅE"Å"E% Å%	FÅ."FÆFÆFr>   c                 óä  — |r||d<   | j                   €| j                  «       | _         	 ||dœ|¥}|€t        j                  }|j	                  ||	||	|
dœdœ¬«       |du r| j                  |||||	||||||¬«      S | j                  |||	|d||¬	«      }t        |t        t        f«      st        d
d¬«      ‚ |j                  j                  j                  di |¤d|i¤Ž}t        |j                  «      }|j!                  «       }t        |t"        «      r!t        |j$                  xs d
d|d d
 › �¬«      ‚|j'                  ||	||dœ|¬«       t)        |j+                  «       |dt-        |«      ¬«      S # t        $ r}|‚d }~wt.        $ rb}t1        |dd
«      }t1        |dd «      }t1        |dd «      }t#        |«      }|€|rt1        |dd «      }|j2                  }t        |||¬«      ‚d }~ww xY w)NrŒ   )r�   r›   r˜   )r™   rs   rš   T)rh   r›   r�   ry   r„   rƒ   ri   r’   r“   r…   r]   FrÛ   r    r¡   rŽ   ri   r£   ©r™   r…   rÆ   rÜ   )r¦   r§   rÝ   r¨   rB   rs   rw   )rB   rA   rs   r1   )Ú_client_sessionÚcreate_client_sessionrG   r   r´   rä   r¶   rE   r
   r   r%   rÞ   rq   rr   rY   rs   rt   rF   rB   r¸   r   r·   r(   ru   r¹   Útext)r3   r�   r›   r…   r]   ri   ry   rƒ   r>   r„   r‡   rˆ   r�   r’   rä   rs   r“   rh   r[   rv   rw   rm   rB   r¼   r½   Ú
error_texts                             r4   rÜ   zAzureChatCompletion.embeddingã  sc  € ñ& Ø/6ˆO˜OÑ,Ø×ÑÐ'Ø#'×#=Ñ#=Ó#?ˆDÔ ðL	gØ$)°EÑM¸_ÐMˆDØÐ"Ü%×9Ñ9�à× Ñ ØØà+/Ø+2ÀnÑUñ!ð !ô ð ˜TÑ!Ø—‘ØØØØ +Ø#Ø#1Ø#Ø!Ø#1Ø%Ø +ð 'ó ð ð #'×">Ñ">Ø'Ø!ØØØØØ-ð #?ó #ˆLô ˜l¬[¼&Ð,AÔBÜ&Ø #ØVôð ð L˜<×2Ñ2×DÑD×KÑKÑdÈdÑdÐ\cÒdˆLÜ˜<×/Ñ/Ó0ˆGØ*×0Ñ0Ó2ˆHÜ˜(¤CÔ(Ü&Ø ,× 8Ñ 8Ò ?¸CØEÀhÈtÐPSÀnÐEUÐVôð ð
 ×!Ñ!ØØØ8<È(Ñ SØ"*ð	 "ô ô 4Ø (× 3Ñ 3Ó 5Ø&4Ø)Ü"7¸Ó"@ô	ð øô  ò 	ØˆGûÜò 	gÜ!(¨¨M¸3Ó!?ˆKÜ# A y°$Ó7ˆMÜ$+¨A¨z¸4Ó$@ˆNÜ˜Q›ˆJØÐ$©Ü '¨¸	À4Ó H�Ø+×0Ñ0�
Ü"¨{ÀJÐXeÔfÐfûð	gús,   ªAE6 Á=C8E6 Å6	G/Å?FÆG/ÆAG*Ç*G/Údeployment_namec	           	   ƒ   ó(  K  — |€ui }	|�;t        |t        «      st        |t        «      r5t        j                  |«      }
|
|	d<   nt        j                  dd¬«      |	d<   t        t        j                  |	¬«      }n|}d|v �r³|dv �r®t        |d	¬
«      }|j                  dd«       |j                  |t        j                  |«      |¬«      ƒ d{  –—† }d|j                  v r|j                  d   }nt        d|j                  ¬«      ‚	 t!        ||«       |j%                  ||¬«      ƒ d{  –—† }|j'                  «       ƒ d{  –—†  t(        }t+        j*                  «       }d|j                  «       vrt        dd¬«      ‚|j                  «       d   dvr³t+        j*                  «       |z
  |kD  rt        dd¬«      ‚t-        j.                  t        |j                  j%                  d«      xs d«      «      ƒ d{  –—†  |j%                  ||¬«      ƒ d{  –—† }|j'                  «       ƒ d{  –—†  |j                  «       d   dvrŒ³|j                  «       d   dk(  rg|j                  «       }|j%                  d|«      }t        |t0        «      r|j%                  dd«      nt        j                  |«      }t        d||¬«      ‚|j                  «       d    }t        j2                  d!|j                  t        j                  |«      j5                  d"«      t        j6                  d#d$¬%«      ¬&«      S t9        |||«      }|j                  |||¬'«      ƒ d{  –—† S 7 �ŒŽ# t"        $ r}t        dd|› �¬«      ‚d}~ww xY w7 �ŒU7 �Œ@7 �Œ‹7 �Œs7 �Œ^7 Œ7­w)(ú‚
        Implemented for azure dall-e-2 image gen calls

        Alternative to needing a custom transport implementation
        Nri   ç     À‚@ç      @©ri   Úconnect)Úllm_providerÚparamsúimages/generations©z2023-06-01-previewz2023-07-01-previewz2023-08-01-previewz2023-09-01-previewz2023-10-01-previewú!/openai/images/generations:submit©Úoriginal_urlÚnew_pathr�   ©Úurlrh   rs   úoperation-locationr    rŽ   éö  úRejected polling URL: ©rû   rs   Ústatusú'Polling response missing 'status' field©Ú	succeededÚfailedé˜  úOperation polling timed out.úretry-afteré
   r  ÚerrorrA   úImage generation failedr@   rÇ   ÚresultéÈ   úutf-8ÚPOSTúhttps://api.openai.com/v1©Úmethodrû   ©rB   rs   r9   Úrequest©rû   rß   rs   )rE   Úfloatrµ   ÚhttpxÚTimeoutr   r   ÚAZUREr   r«   Úpostrß   Údumpsrs   r%   ré   r   r   r¯   Úareadr   r{   rÊ   ÚsleeprY   ÚResponseÚencodeÚRequestr,   )r3   r’   ri   r…   r]   r„   rh   rs   rë   Ú_paramsÚ_httpx_timeoutÚasync_handlerrw   Úoperation_location_urlÚssrf_errÚtimeout_secsr}   Ú
error_dataÚ_error_bodyÚ
_error_msgr  Úrequest_jsons                         r4   Úmake_async_azure_httpx_requestz2AzureChatCompletion.make_async_azure_httpx_requestH  sŒ  è ø€ ð  ˆ>ØˆGØÐ"Ü˜g¤uÔ-´¸GÄSÔ1IÜ,1¯M©M¸'Ó,B�NØ)7�G˜IÒ&ä%*§]¡]¸5È#Ô%N�˜	Ñ"ä2Ü)×/Ñ/Øô‰Mð
 #ˆMð ! HÒ,Øðòô "¨xÐBeÔfˆHà�H‰HØ˜ôð +×/Ñ/ØÜ—Z‘Z Ó%Øð 0ó ÷ ˆHð
 $ x×'7Ñ'7Ñ7Ø08×0@Ñ0@ÐAUÑ0VÑ&ä&°3ÀÇÁÔNÐNð
Ü"Ð#9¸8ÔDð +×.Ñ.Ø*Øð /ó ÷ ˆHð
 —.‘.Ó"×"Ð"ä'FˆLÜ $§	¡	£ˆJØ˜xŸ}™}›Ñ.ô
 'Ø #ØEôð ð —-‘-“/ (Ñ+Ð3JÑJÜ—9‘9“; Ñ+¨lÒ:Ü*°sÐDbÔcÐcä—m‘m¤C¨×(8Ñ(8×(<Ñ(<¸]Ó(KÒ(QÈrÓ$RÓS×SÐSØ!.×!2Ñ!2Ø.Ø#ð "3ó "÷ �ð —n‘nÓ&×&Ð&ð —-‘-“/ (Ñ+Ð3JÒJð �}‰}‹˜xÑ(¨HÒ4Ø$,§M¡M£O�
ð &0§^¡^°G¸ZÓ%H�ô " +¬tÔ4ð  —O‘O IÐ/HÔIäŸ™ JÓ/ð ô
 'Ø #Ø&Ø#ôð ð %ŸM™M›O¨HÑ5ˆFÜ—>‘>ØØ ×(Ñ(ÜŸ
™
 6Ó*×1Ñ1°'Ó:ÜŸ™¨VÐ9TÔUô	ð ô JÈ(ÐTXÐZiÓjˆØ"×'Ñ'ØØØð (ó 
÷ 
ð 	
ðUúô ò Ü&Ø #Ø4°X°JÐ?ôð ûðúð
ùð
 #ùð" Tùðùð 'ùð6
ús¤   ‚CNÃMÃ9NÄ
M  ÄNÄ,NÄ-NÅNÅB7NÇ<NÇ=NÈN
ÈNÈ/NÈ0NÉ
DNÍNÍNÍ 	M>Í)M9Í9M>Í>NÎNÎNÎ
NÎNÎNc	           	      óŒ  — |€wi }	|�;t        |t        «      st        |t        «      r5t        j                  |«      }
|
|	d<   nt        j                  dd¬«      |	d<   t        d(i |	¤dt        j                  i¤Ž}n|}d|v �rƒ|dv �r~t        |d	¬
«      }|j                  dd«       |j                  |t        j                  |«      |¬«      }d|j                  v r|j                  d   }nt        d|j                  ¬«      ‚	 t!        ||«       |j%                  ||¬«      }|j'                  «        t(        }t+        j*                  «       }d|j                  «       vrt        dd¬«      ‚|j                  «       d   dvr›t+        j*                  «       |z
  |kD  rt        dd¬«      ‚t+        j,                  t        |j                  j%                  d«      xs d«      «       |j%                  ||¬«      }|j'                  «        |j                  «       d   dvrŒ›|j                  «       d   dk(  rg|j                  «       }|j%                  d|«      }t        |t.        «      r|j%                  dd«      nt        j                  |«      }t        d||¬«      ‚|j                  «       d    }t        j0                  d!|j                  t        j                  |«      j3                  d"«      t        j4                  d#d$¬%«      ¬&«      S t7        |||«      }|j                  |||¬'«      S # t"        $ r}t        dd|› �¬«      ‚d}~ww xY w))rí   Nri   rî   rï   rð   r’   rô   rõ   rö   r÷   r�   rú   rü   r    rŽ   rý   rþ   rÿ   r   r  r  r  r  r  r  r  r	  rA   r
  r@   rÇ   r  r  r  r  r  r  r  r  r1   )rE   r  rµ   r  r  r   rG   rÖ   r   r«   r  rß   r  rs   r%   ré   r   r   r¯   Úreadr   r{   r  rY   r  r  r  r,   )r3   r’   ri   r…   r]   r„   rh   rs   rë   r   r!  Úsync_handlerrw   r#  r$  r%  r}   r&  r'  r(  r  r)  s                         r4   Úmake_sync_azure_httpx_requestz1AzureChatCompletion.make_sync_azure_httpx_requestÈ  s5  € ð  ˆ>ØˆGØÐ"Ü˜g¤uÔ-´¸GÄSÔ1IÜ,1¯M©M¸'Ó,B�NØ)7�G˜IÒ&ä%*§]¡]¸5È#Ô%N�˜	Ñ"ä&ÑP¨ÑP¼×9OÑ9OÒP‰Là!ˆLð ! HÒ,Øðòô "¨xÐBeÔfˆHà�H‰HØ˜ôð $×(Ñ(ØÜ—Z‘Z Ó%Øð )ó ˆHð
 $ x×'7Ñ'7Ñ7Ø08×0@Ñ0@ÐAUÑ0VÑ&ä&°3ÀÇÁÔNÐNðÜ"Ð#9¸8ÔDð $×'Ñ'Ø*Øð (ó ˆHð
 �M‰MŒOä'FˆLÜ $§	¡	£ˆJØ˜xŸ}™}›Ñ.Ü&Ø #ØEôð ð —-‘-“/ (Ñ+Ð3JÑJÜ—9‘9“; Ñ+¨lÒ:Ü*°sÐDbÔcÐcä—
‘
œ3˜x×/Ñ/×3Ñ3°MÓBÒHÀbÓIÔJØ'×+Ñ+Ø.Ø#ð ,ó �ð —‘”ð —-‘-“/ (Ñ+Ð3JÒJð �}‰}‹˜xÑ(¨HÒ4Ø$,§M¡M£O�
ð &0§^¡^°G¸ZÓ%H�ô " +¬tÔ4ð  —O‘O IÐ/HÔIäŸ™ JÓ/ð ô
 'Ø #Ø&Ø#ôð ð %ŸM™M›O¨HÑ5ˆFÜ—>‘>ØØ ×(Ñ(ÜŸ
™
 6Ó*×1Ñ1°'Ó:ÜŸ™¨VÐ9TÔUô	ð ô JÈ(ÐTXÐZiÓjˆØ× Ñ ØØØð !ó 
ð 	
øôo ò Ü&Ø #Ø4°X°JÐ?ôð ûðús   ÄL% Ì%	MÌ.L>Ì>MrZ   r•   c                 ó¾  — ddl m}m} |j                  d«      xs |j                  d«      xs dj	                  d«      }|j                  dd«      }|€d} |j
                  |xs |«      r |j                  ||¬«      S |j                  |«      r|j                  |||¬	«      S t        j                  ||d
¬«      }|�|S d|v r|}	n|dz   |z   }	|	dz  }	|	d|z   z  }	|	S )Nr   )Ú%AzureFoundryFluxImageGenerationConfigr*   rÎ   Úbase_urlÚ ú/r]   )r…   r]   )r…   r�   r]   z/openai/images/generations)r…   r]   Úroutez/openai/deployments/z/images/generationsz?api-version=)Ú&litellm.llms.azure_ai.image_generationr0  r*   r¯   ÚrstripÚis_mai_modelÚget_mai_image_generation_urlÚis_flux2_modelÚget_flux2_image_generation_urlr&   Úget_azure_v1_image_url)
r3   rZ   r�   r•   r0  r*   r…   r]   Úv1_urlÚbase_url_with_deployments
             r4   Úcreate_azure_base_urlz)AzureChatCompletion.create_azure_base_url=  s+  € ÷	
ð -×0Ñ0Ð1AÓBÒoÐFY×F]ÑF]Ð^hÓFiÒoÐmo×wÑwØó
ˆð #6×"9Ñ"9¸-ÈÓ"LˆØˆ=ØˆEà<Ð/×<Ñ<¸ZÒ=PÈ5ÔQØTÐ7×TÑTØ!Ø'ôð ð 1×?Ñ?ÀÔFØ8×WÑWØ!ØØ'ð Xó ð ô %×;Ñ;ØØ#Ø.ô
ˆð
 ÐØˆMà! XÑ-Ø'/Ñ$à'/Ð2HÑ'HÈ5Ñ'PÐ$à Ð$9Ñ9Ð Ø  O°kÑ$AÑAÐ à'Ð'r6   c           
   ƒ   ó  K  — d }	 |j                  dd«      }|j                  d«      r|j                  d«      }|j                  dd«      }| j                  ||
xs |j                  dd«      |j                  dd«      ¬«      }|j	                  |d   ||||dœ¬	«       | j                  d |	||||||
¬
«      ƒ d {  –—† }t        |j                  dd«      «      }|�C|j                  |j                  dd«      ||xs
 t        «       ||||t        j                  ¬«      S |j                  «       }|}|j                  ||d|i|¬«       t        ||d¬«      S 7 Œ›# t        $ r'}|j                  ||d|it        |«      ¬«       |‚d }~ww xY w­w)Nr…   r2  r3  r]   r�   ©rZ   r�   r•   Úprompt©r™   r…   rs   rš   ©r’   ri   r…   r]   r„   rh   rs   rë   údall-e-2©r�   rv   rƒ   ry   Úrequest_datar>   r“   Úencodingr™   rÆ   Úimage_generation©r¦   r§   rÝ   )r¯   Úendswithr6  r>  r´   r*  r+   Ú#transform_image_generation_responser   rG   rG  rß   r¸   r   ru   rF   )r3   rh   rƒ   rZ   r„   r›   ry   rs   r’   ri   r�   rw   r…   r]   Úimg_gen_api_baseÚhttpx_responseÚprovider_configr»   rm   s                      r4   Úaimage_generationz%AzureChatCompletion.aimage_generationq  sò  è ø€ ð !%ˆðF	à/×3Ñ3°JÀÓCˆHØ× Ñ  Ô%Ø#Ÿ?™?¨3Ó/�Ø&9×&=Ñ&=¸mÈRÓ&PˆKØ&*×&@Ñ&@Ø$7ØÒ4˜tŸx™x¨°Ó4ØŸ8™8 G¨RÓ0ð 'Aó 'Ðð × Ñ Ø˜8‘nØà+/Ø 0Ø&ñ!ð !ô ð ;?×:]Ñ:]ØØØ)Ø'ØØØØ %ð ;^ó 	;÷ 	5ˆNô &GÀtÇxÁxÐPWÐYcÓGdÓ%eˆOØÐ*Ø&×JÑJØŸ(™( 7¨JÓ7Ø!/Ø#1Ò#D´]³_Ø +Ø!%Ø$(Ø#'Ü$×-Ñ-ð Kó 	ð 	ð *×.Ñ.Ó0�à.6Ð$à×%Ñ%ØØ#Ø%:¸DÐ$AØ&:ð	 &ô ô 8Ø$8Ø*8Ø"4ôð ðG	5ùôP ò 	à×!Ñ!ØØØ!6¸Ð =Ü"% a£&ð	 "ô ð ˆGûð	üsH   ‚F†B5E Â;EÂ<A#E ÄFÄ 6E ÅFÅE Å	F	Å""FÆF	Æ	FrA  c                 óÔ  — 	 |rt        |«      dkD  r|}nd }|
�3|�1|j                  dd «      �|j                  dd «      |
j                  d<   |j                  di «      }i |¥|¥}|r|j                  dd «      nd }|xs ||dœ|¥}|j                  dd«      }t	        |t
        «      st        dd	¬
«      ‚|€%|�# |«       }|r|j                  dd «       d|› �|d<   | j                  |xs i ||xs d|	|d¬«      }|du r| j                  |t        ||
||||||¬«
      S | j                  |||¬«      }|j                  |d   ||||dœ¬«       | j                  d |||	xs d|xs d|||¬«      }t        |j                  dd«      «      }t	        |t        «      rC|j                  |j                  dd«      ||
xs
 t!        «       ||||t"        j$                  ¬«      S |j'                  «       }|j)                  ||d|i|¬«       t+        ||
d¬«      S # t        $ r}|‚d }~wt,        $ r@}t/        |dd «      }|�t        |t1        |«      ¬
«      ‚t        dt1        |«      ¬
«      ‚d }~ww xY w) Nr   r•   r�   Ú
extra_body)r�   rA  r�   r    r�   r�   rŽ   zapi-keyzBearer ÚAuthorizationr2  F)r“   r„   Ú
model_namer]   r…   rn   T)
rh   r›   ry   rƒ   r„   r’   rZ   ri   rs   r�   r@  rA  rB  rš   rC  rD  rE  r™   rÆ   rH  rI  rB   r    )Úlenr¯   Ú_hidden_paramsr«   rE   rµ   r%   Úinitialize_azure_sdk_clientrO  r›   r>  r´   r.  r+   r*   rK  r   rG   rG  rß   r¸   r   ru   r¹   rF   )r3   rA  ri   r>   ry   rs   r�   r„   r…   r]   rƒ   r‡   rˆ   r’   Úaimg_generationr“   rQ  Úflattened_paramsr•   rh   r�   rZ   rL  rM  rN  rw   rm   Ú
error_codes                               r4   rH  z$AzureChatCompletion.image_generationÇ  s  € ð$q	HÙœ˜U› ašØ‘à�ð Ð*Ø"Ð.Ø"×&Ñ& |°TÓ:ÐFà9G×9KÑ9KÈLÐZ^Ó9_�×-Ñ-¨gÑ6ð !0× 3Ñ 3°LÀ"Ó EˆJØ&G¨Ð&G¸JÐ&GÐáJX × 2Ñ 2°<ÀÔ FÐ^bˆJØ$.Ò$7°%À6Ñ^ÐM]Ð^ˆDØ!%§¡¨-¸Ó!;ˆKÜ˜k¬3Ô/Ü&°3Ð@\Ô]Ð]àˆÐ#:Ð#FÙ!8Ó!:�Ù!Ø—K‘K 	¨4Ô0Ø18¸Ð8HÐ/I�G˜OÑ,ð :>×9YÑ9YØ-Ò3°ØØ š; BØ'Ø!Øð :Zó :Ðð  $Ñ&Ø×-Ñ-ØÜØ +Ø#1Ø#Ø!Ø(;Ø#Ø#Øð .ó ð ð '+×&@Ñ&@Ø$7ØØ%ð 'Aó 'Ðð × Ñ Ø˜8‘nØà+/Ø 0Ø&ñ!ð !ô ð 59×4VÑ4VØØØ)Ø'Ò-¨2Øš 2ØØØ %ð 5Wó 	5ˆNô &GÀtÇxÁxÐPWÐYcÓGdÓ%eˆOÜ˜/Ô+OÔPØ&×JÑJØŸ(™( 7¨JÓ7Ø!/Ø#1Ò#D´]³_Ø +Ø!%Ø$(Ø#'Ü$×-Ñ-ð Kó 	ð 	ð -×1Ñ1Ó3ˆHð ×!Ñ!ØØØ!6¸Ð =Ø"*ð	 "ô ô 4Ø (Ø&4Ø0ôð øô
  ò 	ØˆGûÜò 	HÜ '¨¨=¸$Ó ?ˆJØÐ%Ü&°:ÄsÈ1ÃvÔNÐNä&°3ÄÀAÃÔGÐGûð	Hús1   ‚DH ÄB=H Ç4H È	I'ÈHÈI'È';I"É"I'ÚvoiceÚorganizationÚaspeechc                 óŠ  — |j                  dd«      }	|�#|du r| j                  ||||||||||	|
|||¬«      S | j                  ||||d||¬«      }|j                  ||t	        |||«      t        |j                  «      dœ¬«        |j                  j                  j                  d|||d	œ|¤Ž}t        |j                  ¬
«      S )Nr�   r    T)r�   r›   rZ  r>   r„   r…   r]   r‡   rˆ   r�   ri   ry   r’   r“   F©r…   r]   r„   r�   rŸ   r’   r“   ræ   rš   ©r�   rZ  r›   ©rw   r1   )r«   Úasync_audio_speechr¶   r´   r   rF   r1  ÚaudioÚspeechrr   r   rw   )r3   r�   r›   rZ  r>   r„   r…   r]   r[  r�   ri   ry   r‡   rˆ   r\  r’   r“   r[   rw   s                      r4   Úaudio_speechz AzureChatCompletion.audio_speechL  s  € ð& &×)Ñ)¨-¸Ó;ˆàÐ 7¨d¡?Ø×*Ñ*ØØØØ /ØØ!Ø'Ø-Ø(?Ø'ØØ'ØØ-ð +ó ð ð" ,0×+GÑ+GØØ#ØØØØØ)ð ,Hó ,
ˆð 	×ÑØØä':¸5À%ÈÓ'YÜ × 5Ñ 5Ó6ñð 	ô 	
ð ;˜,×,Ñ,×3Ñ3×:Ñ:ð 
ØØØñ
ð ñ	
ˆô *°8×3DÑ3DÔEÐEr6   c           	   ƒ   ó8  K  — | j                  ||||d||¬«      }|j                  ||t        |||«      t        |j                  «      dœ¬«        |j
                  j                  j                  d|||dœ|¤Žƒ d {  –—† }t        |j                  ¬«      S 7 Œ­w)NTr^  ræ   rš   r_  r`  r1   )
r¶   r´   r   rF   r1  rb  rc  rr   r   rw   )r3   r�   r›   rZ  r>   r„   r…   r]   r‡   rˆ   r�   ri   ry   r’   r“   r[   Úazure_responses                    r4   ra  z&AzureChatCompletion.async_audio_speechŽ  sÃ   è ø€ ð" 15×0LÑ0LØØ#ØØØØØ)ð 1Mó 1
ˆð 	×ÑØØä':¸5À%ÈÓ'YÜ × 5Ñ 5Ó6ñð 	ô 	
ð 'G l×&8Ñ&8×&?Ñ&?×&FÑ&Fð '
ØØØñ'
ð ñ	'
÷ !
ˆô *°>×3JÑ3JÔKÐKð!
ús   ‚A;BÁ=BÁ>BÚmodec
                 óè  — t         j                  xs t        j                  «       }
|�3d|v r/|j	                  d«      s|dz  }||› z  }t        |||||
¬«      }d }n"t        |||||
¬«      }|€|dk7  rt        d«      ‚d }|€ddd	œg}	 |j                  j                  j                  j                  ||¬
«      }i }|�t        |d«      st        d«      ‚|j                  j                  dd «      �|j                  d   |d<   |j                  j                  dd «      �|j                  d   |d<   |j                  j                  dd «      �|j                  d   |d<   |S # t        $ r}|‚d }~ww xY w)Nr‘   r3  )r1  r]   r„   ri   rÐ   )r]   rÎ   r„   ri   rÐ   rH  zmodel is not setÚuserÚHey)r8   r9   r”   rs   zinvalid completion responsezx-ratelimit-remaining-requestszx-ratelimit-remaining-tokenszx-ms-region)rG   rÖ   r  ÚClientrJ  r
   ru   ro   rp   rq   rr   rÌ   rs   r¯   )r3   r�   r„   r…   r]   ri   rg  r‚   r›   rA  rÖ   r’   r¿   rm   rw   s                  r4   Úget_headerszAzureChatCompletion.get_headers»  sº  € ô !(× 6Ñ 6Ò H¼%¿,¹,».ˆØÐÐ$?À8Ñ$Kà×$Ñ$ SÔ)Ø˜C‘�Ø˜5˜'Ñ"ˆHÜ Ø!Ø'ØØØ*ôˆFð ‰Eô !Ø'Ø'ØØØ*ôˆFð ˆ} Ð);Ò!;ÜÐ 2Ó3Ð3àˆ
àÐØ!'°EÑ:Ð;ˆHð	ØŸ™×0Ñ0×BÑB×IÑIØØ!ð Jó ˆJð ˆàÐ¤W¨Z¸Ô%CÜÐ9Ó:Ð:ð ×Ñ×"Ñ"Ð#CÀTÓJÐVà9C×9KÑ9KÐLlÑ9mˆHÐ5Ñ6à×Ñ×!Ñ!Ð"@À$ÓGÐSØ7A×7IÑ7IÐJhÑ7iˆHÐ3Ñ4à×Ñ×!Ñ! -°Ó6ÐBØ&0×&8Ñ&8¸Ñ&GˆH�]Ñ#àˆøô% ò 	ØˆGûð	ús   Â	1E! Å!	E1Å*E,Å,E1rS   )FNN)NNNNNNNNr0   )NNN)
NNNNNNNNNN)NNNNN)NN).rU   rV   rW   r5   r
   r   rY   r  r  r  rx   r   r   r	   ÚLiteLLMLoggingObjr€   rF   rJ   r   r   Úboolr¿   r   rµ   rŠ   Úobjectr³   r²   r   rä   r   rÜ   r   r  r*  r   r.  r>  r   rO  rH  r   rd  ra  rl  Ú__classcell__)rg   s   @r4   rd   rd   †   sq
  ø„ õðà! FÑ*ðð ðð ˜Ÿ™Ñ&ó	ñ0 Óðà&¨Ñ4ðð ðð ˜Ÿ™Ñ&ð	ð
 'òó ððb "Ø#Øñ)@àð@ð ð@ð &ð	@ð
 �t‘ð@ð ð@ð ð@ð ð@ð ˜d™
ð@ð "*¨D¡ð@ð ð@ð  ð@ð ˜Ÿ™Ñ&ð@ð 'ð@ð$ ð%@ð& ˜‘ó'@ð\ &*Ø37Ø6:ØØ&(ñ!jTà�t‘ðjTð ðjTð ð	jTð
 ðjTð ðjTð ðjTð ðjTð &ðjTð 'ðjTð ðjTð ˜d™
ðjTð "*¨D¡ðjTð )-¨t©ðjTð  ˜t™ó!jTðn &*Ø37ØØ&(ñJà&ðJð ðJð �t‘ð	Jð
 ðJð ðJð �3˜�;ÑðJð ðJð ðJð ðJð ˜d™
ðJð "*¨D¡ðJð ˜t™óJðn &*Ø37ØØ&(ñKà&ðKð ðKð �t‘ð	Kð
 ðKð ðKð ðKð ðKð ðKð ðKð ˜d™
ðKð "*¨D¡ðKð ˜t™óKðj #Ø"&Ø*.Ø04Ø"&Ø%)Ø37Ø&(ñXàðXð ðXð *ð	Xð
 ðXð 'ðXð ðXð �t‘ðXð ˜4‘ZðXð ! 4Ñ'ðXð ˜Ÿ™Ñ&¨Ñ-ðXð ˜4‘ZðXð ˜d™
ðXð "*¨D¡ðXð ˜t™ðXð  
ó!XðH #Ø%)Ø37Ø"&ØØØ#Ø&*ñ#cgàðcgð ðcgð ð	cgð
 ðcgð ðcgð 'ðcgð *ðcgð ðcgð �t‘ðcgð ˜d™
ðcgð "*¨D¡ðcgð ˜4‘Zðcgð  ˜‘ð!cgð" ˜t™ð#cgð$ 
˜Y s¨CÐ1BÐ'BÑCÑ	Có%cgð\ '+ñ~
à  4Ñ'ð~
ð ˜Ÿ™Ñ&¨Ñ-ð~
ð ð	~
ð
 ð~
ð ð~
ð ð~
ð ð~
ð ˜t™ð~
ð 
�‰ó~
ðR '+ñs
à˜dÑ"ðs
ð ˜Ÿ™Ñ&¨Ñ-ðs
ð ð	s
ð
 ðs
ð ðs
ð ðs
ð ðs
ð ˜t™ðs
ð 
�‰ós
ðr "&ñ	2(à!ð2(ð �T‰zð2(ð ˜$‘Jð	2(ð
 
ó2(ðz ØØ ñTàðTð &¨Ñ,ðTð "ð	Tð
 ðTð ðTð 'ðTð ðTð �T‰zðTð 
óTðz !Ø"Ø#Ø"&Ø/3Ø%)Ø37ØØØ&*ñ!CHàðCHð ðCHð ð	CHð
 'ðCHð ðCHð �T‰zðCHð �t‘ðCHð ˜‘*ðCHð ˜4‘ZðCHð &¨Ñ,ðCHð ˜d™
ðCHð "*¨D¡ðCHð  ˜t™ð!CHð" 
ó#CHðd &*Ø37Ø#ØØ&*ñ#@Fàð@Fð ð@Fð ð	@Fð
 ð@Fð �t‘ð@Fð ˜‘*ð@Fð ˜4‘Zð@Fð ˜D‘jð@Fð ð@Fð ˜Ÿ™Ñ&ð@Fð 'ð@Fð ˜d™
ð@Fð "*¨D¡ð@Fð ˜‘ð@Fð" ˜t™ð#@Fð$ 
$ó%@Fð` Ø&*ñ+Làð+Lð ð+Lð ð	+Lð
 ð+Lð �t‘ð+Lð ˜‘*ð+Lð ˜4‘Zð+Lð ˜d™
ð+Lð "*¨D¡ð+Lð ð+Lð ˜Ÿ™Ñ&ð+Lð 'ð+Lð ˜t™ð+Lð  
$ó!+Lðj !%Ø!Ø!ñCà�T‰zðCð ðCð ð	Cð
 ðCð ðCð ðCð ˜‘+ðCð �d‰{ðCð �d‘
ðCð 
÷Cr6   rd   )BrÊ   rß   r{   Úcollections.abcr   r   Útypingr   r   r  Úopenair   r   r	   r
   r   r   rG   Úlitellm.constantsr   r   Ú*litellm.litellm_core_utils.litellm_loggingr   rm  Ú(litellm.litellm_core_utils.logging_utilsr   r   Ú$litellm.litellm_core_utils.url_utilsr   r   Ú&litellm.llms.custom_httpx.http_handlerr   r   r   Úlitellm.types.utilsr   r   r   r   Úlitellm.utilsr   r   r   Útypes.llms.openair   Úbaser!   Úopenai.common_utilsr"   r#   Úcommon_utilsr%   r&   r'   r(   r)   rH  r*   r+   Úimage_generation.http_utilsr,   r.   rY   rn  rb   rd   r1   r6   r4   ú<module>r€     s·   ðÛ Û Û ß /ß ã ÷÷ ó ß RÝ Sß ^ß N÷ñ ÷
ó ÷ñ õ <Ý ÷÷õ ÷õ U÷3ñ 3ðlØðàÐ 0Ñ0°4Ñ7ðð 
óô*x˜,¨õ xr6   