
    Cj@              .          S r SSKrSSKrSSKJr  SSKJrJrJrJ	r	J
r
JrJrJrJr  SSK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Jr  SS	KJr  SS
KJr  SSKJ r   \" 5       r!SSK"J#r#  \(       a  SSK$J%r&  SSK'J(r(  \ SSSSSSSSSSSSS.S\)S\)S\)S\\)   S\\)   S\\)   S\\*   S\\*   S\\   S\\*   S\\   S\\   S\\   S\\   S\\\\4      S \\RV                  \\\4   4   4 S! jj5       r,\ SSSSSS"SSSSSSSS#.S\)S\)S\)S\\)   S\\)   S\\)   S\\*   S\\*   S$\-S\\   S\\*   S\\   S\\   S\\   S\\   S\\\\4      S \\RV                  \	\\\RV                  4   \	\\\\RV                  \\\4   4   4   \
\\\4   \\\4   4   4"S% jj5       r.S\\\4   S&\R^                  S'\-S(S)S*S+S \\RV                  \\\4   4   4S, jr0S-\RV                  S(S)S*S+4S. jr1S-\	\\\RV                  4   S(S)S*S+4S/ jr2g)0z?
This module is used to pass through requests to the LLM APIs.
    N)partial)	TYPE_CHECKINGAnyAsyncGenerator	Coroutine	GeneratorListOptionalUnioncast)CookieTypesQueryParamTypesRequestFiles)verbose_logger)get_llm_provider)AsyncHTTPHandlerHTTPHandler)BaseLLMHTTPHandler)CommonUtils)client   )BasePassthroughUtils)Logging)BasePassthroughConfig)custom_llm_providerapi_baseapi_keyrequest_query_paramsrequest_headerscontentdatafilesjsonparamscookiesr   methodendpointmodelr   r   r   r   r   r    r!   r"   r#   r$   r%   r   returnc                 "  #     [         R                  " 5       nSUS'   [        UUUUS9u  p#pTSSKJn  SSKJn  [        [        S   UR                  S5      5      =(       d    UR                  U" U5      US	9nUc  [        SU S35      e[        [        4U UUUUUUUUU	U
UUUUS.UD6n[        R                  " 5       n[        UR                   U5      nUR#                  S
U5      I S
h  vN n[         R$                  " U5      (       a;  UI S
h  vN n['        U[(        R*                  5      (       a  UR-                  5         U$ [        S5      e Ne NB! [(        R.                   a  nUeS
nAf[         a  nSSKJn  SSKJn  [        UUUUS9u  nn  nS
nU(       aQ   [        [        S   UR                  S5      5      =(       d    UR                  U" U5      US	9nO! [         a     Of = fUc  Ue[0        R3                  UUS9eS
nAff = f7f)zJ
Async: Reranks a list of documents based on their relevance to the query
Tallm_passthrough_router(   r   r   r   r   LlmProvidersProviderConfigManagerr   provider_configproviderr(   N	Provider 
 not found)r&   r'   r(   r   r   r   r   r   r    r!   r"   r#   r$   r%   r   z/Expected coroutine from async passthrough routeer1   )asyncioget_event_loopr   litellm.types.utilsr.   litellm.utilsr0   r   r
   getget_provider_passthrough_config	Exceptionr   llm_passthrough_routecontextvarscopy_contextrunrun_in_executoriscoroutine
isinstancehttpxResponseraise_for_statusHTTPStatusErrorbase_llm_http_handler_handle_error)r&   r'   r(   r   r   r   r   r   r    r!   r"   r#   r$   r%   r   kwargsloopr.   r0   r1   funcctxfunc_with_contextinit_responseresponser7   _resolved_custom_llm_providers                               j/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/litellm/passthrough/main.pyr+   r+   &   si    .c
%%'+/'(8H 3	9
5G 	57,-vzz:K/L
 
"BB!"56 C 
 	 "i(;'<JGHH!
 3!5+!
" #
( &&(#CGGT2"2249JKK }--**H (ENN33))+O MNN L +      "
47 1A 3	1
-'A '	"&45vzzBS7T# #*JJ)*FG K      "G#11+ 2 
 	
?"
s}   HC&E *E+$E E4E HE E H(E**H7&H?GH
G+(H*G++HHHF)r   r   r   r   r   r+   r    r!   r"   r#   r$   r%   r   r+   c                    SSK Jn  SSKJn  SSKJn  Un[        SUR                  S5      5      n[        UUUUS9u  p#pTU" S'0 UD6nUc>  SS	K	J
nJn  SS
KJn  SSKJn  U" UUS9nU(       a  U" UR                   SU0S9nOU" SU0S9nSU;   a  US   US'   UR#                  UU0 UUU
(       a  U
OUS9  [        [$        S   UR                  S5      5      =(       d    UR'                  U" U5      US9nUc  [)        SU S35      eUR+                  UUUUUUS9u  nnUS:X  a;  SU;   a5  [,        R.                  " [1        U5      5      n[2        R4                  " U5      nUR7                  U5      n UR9                  0 U/ 0 UU US9n![:        R<                  " U=(       d    0 U!SS9n"UR?                  U"UU
(       a  U
OU[1        U5      US9u  n"n#U(       a  [A        U[B        5      (       a
  SU;   a  X,S'   URD                  RG                  U UU#b  U#OU	U#c  U	c  U
OSUU#c  U	c  UOSUU"US9	n$URI                  UU
=(       d    U=(       d    0 S 9n%U%Ul%        U
(       a  U
OUn&URM                  U&U U&[1        U5      U"S!.S"9   U(       a  [O        UU$U%UUS#9$ URD                  RQ                  U$U%S$9n'U'RS                  5         [U        U'S%5      (       a  U%(       a  [W        U'UU5      $ U'$ ! [(         a  n(Uc  U(e[X        R[                  U(US&9eSn(A(ff = f)(zx
Pass through requests to the LLM APIs.

Step 1. Build the request
Step 2. Send the request
Step 3. Return the response
r   )get_litellm_paramsr-   r/   LiteLLMLoggingObjlitellm_logging_objr,   N)_get_httpx_clientget_async_httpx_client)resolve_llm_passthrough_timeout)httpxSpecialProvider)rL   litellm_paramstimeout)llm_providerr$   )r$   model_id)r(   r^   optional_paramsr'   r   request_datar   r1   r2   r4   r5   )r   r   r(   r'   r   r^   bedrockzapplication-inference-profile)headersr(   messagesrb   r^   r   r   F)r   re   forward_headers)re   r^   rc   r   r(   r(   )	r&   urlr    r!   r"   r#   r$   re   r%   )r'   rc   )complete_input_dictr   re   )inputr   additional_args)r   requestis_streaming_requestrY   r1   rl   stream
iter_bytesr6    ).-litellm.litellm_core_utils.get_litellm_paramsrW   r:   r.   r;   r0   r   r<   r   &litellm.llms.custom_httpx.http_handlerrZ   r[   !litellm.passthrough.timeout_utilsr\   litellm.types.llms.custom_httpr]   PassThroughEndpointupdate_environment_variablesr
   r=   r>   get_complete_urlr   "encode_bedrock_runtime_modelid_arnstrrF   URLget_api_keyvalidate_environmentr   forward_headers_from_requestsign_requestrE   dictr   build_requestrm   ro   pre_call_async_passthrough_requestsendrH   hasattr_sync_streamingrJ   rK   ))r&   r'   r(   r   r   r   r   r   r+   r    r!   r"   r#   r$   r%   r   rL   rW   r.   r0   	_is_asyncrY   litellm_params_dictrZ   r[   r\   r]   resolved_timeoutr1   updated_urlbase_target_urlencoded_url_strprovider_api_keyauth_headersre   signed_json_bodyrl   rm   rc   rR   r7   s)                                            rU   r?   r?      s   D Q03&I2FJJ?T4UV4D/	51E -6v6~	
 	VG:.
 +1EE!#34F
 'y:J.KLF V*0*<J'44*/!Tt 5  ()6::6G+H 		>	>12 
? 
  )$7#8
CDD#2#C#C1* $D $ K i',Kx,W%HH
 ii0 '227;"77*   8 L #??'-2G !0 < <*!Tt[! != !G 
4&&7d?Wmm))$4$@ g&.7?T&.7?T * 
G +??'T'R @  "6  4TL   #/K(
 ! 
-%9$7 /  (.}}'9'9'Rf'9'gH%%' ,//4H&x1DoVV   
"G#11+ 2 
 	

s%   8K AK K 
L'L  Lrl   rm   rY   rX   r1   r   c                   #    U R                   R                  XS9n[        R                  " U5      (       aF  U(       a  [	        UUUS9$ UI Sh  vN nUR                  5       I Sh  vN   UR                  5         U$ [        S5      e N9 N#7f)zf
Handle async passthrough requests.
Uses async client to send request and properly handles streaming.
rn   )rR   rY   r1   Nz$Expected coroutine from async client)r   r   r8   rD   _async_streamingareadrH   r>   )r   rl   rm   rY   r1   response_resultrR   s          rU   r   r   o  s      mm(((VO ?++#($7 /  -,H.."""%%'O >?? -"s$   ABBB&B
'"B
BrR   c           	   #     #    SSK Jn  / nSn U R                  5        H  nUR                  U5        Uv   M     U(       d'  U(       a  Sn UR	                  UR
                  UUS9  g g g ! [         a+  n[        R                  " S[        U5      U5         S nAg S nAff = f! U(       d_  U(       aW  Sn UR	                  UR
                  UUS9  f ! [         a+  n[        R                  " S[        U5      U5         S nAf S nAff = ff f = f7f)Nr   )executorFT	raw_bytesr1   zfFailed to schedule passthrough spend-tracking flush in _sync_streaming; %d buffered chunks dropped: %s)
r;   r   rp   appendsubmit"flush_passthrough_collected_chunksr>   r   	exceptionlen)rR   rY   r1   r   r   flush_scheduledchunkr7   s           rU   r   r     s    
 'IO((*EU#K + 9"O'JJ'$3    $-  ((I	N	  9"O'JJ'$3   
  ((I	N	  $-so   D,B! DA) &D)
B3!BDBD!D	3CD	
D!C?:D	?DD		Dc           	     f  #    U I S h  vN n UR                  5         / nSn UR                  5         S h  vN nUR	                  U5        U7v   M!   NK! [         a,     UR                  5       I S h  vN    e ! [         a     e f = ff = f NW
 O9! [         a,     UR                  5       I S h  vN    e ! [         a     e f = ff = f U(       dh  U(       a`  Sn [
        R                  " UR                  UUS95        g ! [         a+  n[        R                  " S[        U5      U5         S nAg S nAff = fg g ! U(       dh  U(       a`  Sn [
        R                  " UR                  UUS95        f ! [         a+  n[        R                  " S[        U5      U5         S nAf S nAff = ff f = f7f)NFTr   zgFailed to schedule passthrough spend-tracking flush in _async_streaming; %d buffered chunks dropped: %s)rH   r>   acloseaiter_bytesr   r8   create_task(async_flush_passthrough_collected_chunksr   r   r   )rR   rY   r1   iter_responser   r   r   r7   s           rU   r   r     s    
 #NM&&(  IO(446 	%U#K! #  	&&((( 	  			6  	&&((( 	  		 7 9"O##'PP"+(7 Q   ((J	N	  $-9"O##'PP"+(7 Q   ((J	N	  $-s(  F1AF1A F1B BBBB F1
B!A;4A75A;:B;
BBBBF1BB D= 
C	B81B42B87C	8
CC	CC		D= F1$D F1
D8!D3.F13D88F1=F.$E43F.4
F)>!F$F.$F))F..F1)3__doc__r8   r@   	functoolsr   typingr   r   r   r   r   r	   r
   r   r   rF   httpx._typesr   r   r   litellm._loggingr   1litellm.litellm_core_utils.get_llm_provider_logicr   rs   r   r   *litellm.llms.custom_httpx.llm_http_handlerr   litellm.passthrough.utilsr   r;   r   rJ   utilsr   *litellm.litellm_core_utils.litellm_loggingr   rX   0litellm.llms.base_llm.passthrough.transformationr   rz   r   rG   r+   boolr?   Requestr   r   r   rq       rU   <module>r      s     
 
 
  C C + N P I 1  *,  'WV  *."!+/&*!$((,%)=A!y
y
 y
 	y

 "#y
 smy
 c]y
 #4.y
 d^y
 c]y
 4.y
 L!y
 3-y
 _%y
 k"y
  U;(889:!y
$ 5>>>#s(334%y
 y
x  *."!+/&*#(!$((,%)=A#H
H
 H
 	H

 "#H
 smH
 c]H
 #4.H
 d^H
 !H
 c]H
 4.H
 L!H
 3-H
 _%H
  k"!H
" U;(889:#H
& 	NNc3&'c3ennnS#X.FFGGHc3m38	'H
 H
V@+//0@]]@ @ -	@
 -@ 5>>>#s(334@Bnn, ->/S%..01/,/ -/r   