
    ^hC                         S SK JrJrJr  S SKJrJr  S SKrS SKJ	r	  S SK
JrJrJr  SSKJr  SSKJr  S	S
KJr  \" 5       rS\4S jr " S S\5      rg)    )AnyCallableOptional)AsyncAzureOpenAIAzureOpenAIN)prompt_factory)CustomStreamWrapperModelResponseTextCompletionResponse   )BaseLLM)OpenAITextCompletionConfig   )AzureOpenAIErrorazure_client_paramsc                 f    U R                  SS 5      nUb  SU;   a  XS'   U R                  S5        U $ )Nazure_endpointz/openai/deploymentsbase_url)getpop)r   r   s     _/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/azure/completion/handler.py!select_azure_base_url_or_endpointr      s@    (,,-=tDN! N2.<
+##$45    c                   "  ^  \ rS rSrSU 4S jjrS r   SS\S\S\S\S\S	\S
\S\S\	S\
S\\   4U 4S jjjr  SS\S	\S\S\S\S\S\S\S\\   4S jjr  SS\S\S	\S\S\S\S\\   4S jjr  SS\S\S	\S\S\S\S\\   4S jjrSrU =r$ )AzureTextCompletion   c                 "   > [         TU ]  5         g )N)super__init__)self	__class__s    r   r   AzureTextCompletion.__init__   s    r   c                 6    SS0nUb  XS'   U$ Ub  SU 3US'   U$ )Nzcontent-typezapplication/jsonzapi-keyBearer Authorization )r    api_keyazure_ad_tokenheaderss       r   validate_environment(AzureTextCompletion.validate_environment    sE    .
 !(I  ')00@'AGO$r   modelmessagesmodel_responser'   api_baseapi_versionapi_typer(   print_verboseacompletionr)   c                   > [         TU ]  5          Ub  Uc
  [        SSS9eUR                  SS5      n[	        X!SS9nSU;   ao  Ucd  UR                  S	5      (       d  US	-  nXQ -  nUU [        R                  UU
S
.nUb  UUS'   OUb  UUS'   USL a  [        S#0 UD6nO[        S#0 UD6nS US.UEnOUUS.UEnUSL aF  UR                  SS5      (       a  U R                  UUUUUUUU
US9	$ U R                  UUUUUUUU
UUS9
$ SU;   a  US   SL a  U R                  UUUUUUUU
US9	$ UR                  UUUUS.UUUS.S9  [        U[         5      (       d
  [        SSS9eUUU[        R                  UU
S.n[#        US9nUb  UUS'   OUb  UUS'   Uc  [        S#0 UD6nO@UnUb;  [        UR$                  [&        5      (       a  UR$                  R)                  SU5        UR*                  R,                  R.                  " S#0 UDSU
0D6nUR1                  5       nUR3                  5       nUR5                  UUUUUUS.S9  [6        R9                  [;        S#0 UD6US9$ ! [         a  nUeS nAf[<         aW  n[?        USS5      n[?        US S 5      n[?        US!S 5      nUc  U(       a  [?        US S 5      n[        U[A        U5      US"9eS nAff = f)$N  zMissing model or messagesstatus_codemessagemax_retriesr   
azure_text)r-   r,   custom_llm_providerzgateway.ai.cloudflare.com/)r0   r   http_clientr9   timeoutr'   r(   T)r,   promptstreamF)	logging_objr/   datar,   r'   r0   r(   r>   client)
r/   rB   r.   r'   r0   r,   r(   r>   rC   rA   )r'   r(   )r)   r0   r/   complete_input_dictinputr'   additional_argsmax retries must be an intr0   r   azure_deploymentr=   r9   r>   r   api-versionr>   )r)   r0   r/   )rF   r'   original_responserG   response_objectmodel_response_objectr7     r)   responser7   r8   r)   r&   )!r   
completionr   r   r   endswithlitellmclient_sessionr   r   r   async_streamingr3   	streamingpre_call
isinstanceintr   _custom_querydict
setdefaultcompletionswith_raw_responsecreateparse
model_dump	post_callopenai_text_completion_config%convert_to_chat_model_response_objectr   	Exceptiongetattrstr)r    r,   r-   r.   r'   r/   r0   r1   r(   r2   r>   rA   optional_paramslitellm_params	logger_fnr3   r)   rC   r9   r?   r   rB   azure_clientraw_responserR   stringified_responseer7   error_headerserror_responser!   s                                 r   rT   AzureTextCompletion.completion*   s   ( 	b	} 0& #-H  *--mQ?K#!LF +h6>#,,S11 C'*H (3'/j'.'='='2#*+' *9@+I6'3@N+,<="d*!1!H4G!H!,!C/B!C!%K?K #$ & d""&&x77//$/!)!# '$/'5 '% 0 
 
  ++!)!'5 '$/#'5 '%$/ ,   _,1Jd1R~~ +%# +#1#! & 
 
 $$ # (/.<$ (3$,/3% %  "+s33*$'1M 
 $/&.(-#*#9#9#.&'# 'H(;'# &5<'	2#/<J'(89>#.#E1D#EL#)L".:$22D4 4 %22==);  ,77IIPP   $+  (--/'/':':'<$%% #&:#*'2$,%	 & 	 2WW(>(VAU(V.< X    	G 	!!]C8K#Ay$7M$Q
D9N$ '	4 H"'Q 	s8   CI ,I $I )D4I 
K(I**K7AK		KrB   r>   rA   c           	        #    S n UR                  SS5      n[        U[        5      (       d
  [        SSS9eUUU[        R
                  UUS.n[        US9nUb  XS'   OU	b  XS	'   U
c  [        S0 UD6nO@U
nUb;  [        UR                  [        5      (       a  UR                  R                  S
U5        UR                  US   UR                  SSUR                   30UR                  R                  SUS.S9  UR                  R                   R"                  " S0 UDSU0D6I S h  vN nUR%                  5       n[&        R)                  UR+                  5       US9$  N6! [         a  nUeS nAf[,         aW  n[/        USS5      n[/        USS 5      n[/        USS 5      nUc  U(       a  [/        USS 5      n[        U[1        U5      US9eS nAff = f7f)Nr9   r   r5   rH   r6   rI   rK   r'   r(   rL   r?   r%   r$   Tr)   r/   r3   rD   rE   r>   rN   r7   rQ   r)   rR   rS   r&   )r   r[   r\   r   rV   rW   r   r   r]   r^   r_   rZ   r'   	_base_url_uri_referencer`   ra   rb   rc   rf   rg   rd   rh   ri   rj   )r    r'   r0   r,   r/   rB   r>   r.   rA   r(   rC   rR   r9   r   rn   ro   rq   r7   rr   rs   s                       r   r3   AzureTextCompletion.acompletion   s     ?	((=!4Kk3//& #-I   +"*$)&55*"# #D$7# "18I.+8F$45 ~/F2EF%*z ..0 0 !..99-U  8n$,, /7<;O;O:P1QR , 6 6 E E#'+/	! ! 	 ".!9!9!K!K!R!R "" '" L $))+H0VV ( 3 3 5&4 W  	   	G 	!!]C8K#Ay$7M$Q
D9N$ '	4 H"'Q 	sH   GD"E! (E)5E! GE! !
G+E--G:AGGGc
           	      |   UR                  SS5      n
[        U
[        5      (       d
  [        SSS9eUUU[        R
                  U
US.n[        US9nUb  X;S'   OUb  XS	'   U	c  [        S0 UD6nO@U	nUb;  [        UR                  [        5      (       a  UR                  R                  S
U5        UR                  US   UR                  SSUR                   30UR                  R                  SUS.S9  UR                  R                   R"                  " S0 UDSU0D6nUR%                  5       n['        UUSUS9nU$ )Nr9   r   r5   rH   r6   rI   rK   r'   r(   rL   r?   r%   r$   Trv   rE   r>   r:   completion_streamr,   r;   rA   r&   )r   r[   r\   r   rV   rW   r   r   r]   r^   r_   rZ   r'   rw   rx   r`   ra   rb   rc   r	   )r    rA   r/   r'   r0   rB   r,   r>   r(   rC   r9   r   rn   ro   rR   streamwrappers                   r   rY   AzureTextCompletion.streaming2  s|    hh}a0+s++")E 
 '& %"11&
 @ 3
 -4	*'4B 01>&=)<=L!L&:l6P6PRV+W+W**55m[Qx. ((+w|7K7K6L-MN(22AA#'+	 	 		
 $//AAHH 

#
  %%'+& ,#	
 r   c
           	         #     UUU[         R                  UR                  SS5      US.n
[        U
S9n
Ub  X:S'   OUb  XS'   U	c  [	        S0 U
D6nO@U	nUb;  [        UR                  [        5      (       a  UR                  R                  SU5        UR                  US   UR                  S	S
UR                   30UR                  R                  SUS.S9  UR                  R                  R                  " S0 UDSU0D6I S h  vN nUR!                  5       n[#        UUSUS9nU$  N"! [$         aW  n['        USS5      n['        USS 5      n['        USS 5      nUc  U(       a  ['        USS 5      n[)        U[+        U5      US9eS nAff = f7f)Nr9   r   rI   rK   r'   r(   rL   r?   r%   r$   Trv   rE   r>   r:   r{   r7   rQ   r)   rR   rS   r&   )rV   rW   r   r   r   r[   r]   r^   r_   rZ   r'   rw   rx   r`   ra   rb   rc   r	   rh   ri   r   rj   )r    rA   r/   r'   r0   rB   r,   r>   r(   rC   r   rn   ro   rR   r}   rq   r7   rr   rs   s                      r   rX   #AzureTextCompletion.async_streamingq  s    9	  +"*$)&55#xxq9"# #D$7# "18I.+8F$45~/F2EF%*z ..0 0 !..99-U  8n$,, /7<;O;O:P1QR , 6 6 E E#'+/	! ! 	 ".!9!9!K!K!R!R "" '" L $))+H/"*$0'	M !   	!!]C8K#Ay$7M$Q
D9N$ '	4 H"'Q 	s<   FDD* D(!D* 'F(D* *
F4AFFFr&   )returnN)FNN)NN)__name__
__module____qualname____firstlineno__r   r*   rj   listr
   r   boolr   r^   rT   r   r3   rY   rX   __static_attributes____classcell__)r!   s   @r   r   r      s   4 ""&%ww w &	w
 w w w w w  w  !w" $#w wF )-MM M 	M
 M M M &M M !Mp )-= = 	=
 = = = = !=P )-E E 	E
 E E E E !E Er   r   )typingr   r   r   openair   r   rV   3litellm.litellm_core_utils.prompt_templates.factoryr   litellm.utilsr	   r
   r   baser    openai.completion.transformationr   common_utilsr   rf   r^   r   r   r&   r   r   <module>r      sF    * * 0  N T T  J + : < 	4 	Z' Zr   