Ë
    uPêjò?  ã            )       óÚ  — d Z ddlZddlZddlmZmZmZ ddlmZ ddl	m
Z
mZmZmZmZ ddlZddlmZ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 ddlm Z   e«       Z!ddl"m#Z# e
rddl$m%Z& ddl'm(Z( e dddddddddddddœ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dz  dedz  dedz  d eez  dz  d!ejV                  eeef   z  f d"„«       Z,e dddddddddddddœ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dz  dedz  dedz  d eez  dz  d!ejV                  eeeejV                  f   z  eeeejV                  eeef   z  f   z  eeeef   z  eeef   z  f d#„«       Z-d eez  d$ej\                  d%e/d&d'd(d)d!ejV                  eeef   z  fd*„Z0d+ejV                  d&d'd(d)fd,„Z1d+eeeejV                  f   d&d'd(d)fd-„Z2y).z?
This module is used to pass through requests to the LLM APIs.
é    N)ÚAsyncGeneratorÚ	CoroutineÚ	Generator)Úpartial)ÚTYPE_CHECKINGÚAnyÚFinalÚOptionalÚ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              ‹   ó  K  — 	 t        j                  «       }d|d<   t        ||||¬«      \  }}}}ddlm} ddlm} t        t        d   |j                  d«      «      xs |j                   ||«      |¬	«      }|€t        d|› d�«      ‚t        t        f| |||||||||	|
||||dœ|¤Ž}t        j                  «       }t        |j                   |«      }|j#                  d
|«      ƒ d
{  –—† }t        j$                  |«      r6|ƒ d
{  –—† }t'        |t(        j*                  «      r|j-                  «        |S t        d«      ‚7 ŒZ7 Œ=# t(        j.                  $ r}|‚d
}~wt        $ r’}ddlm} ddlm} t        ||||¬«      \  }}}}d
}|rN	 t        t        d   |j                  d«      «      xs |j                   ||«      |¬	«      }n# t        $ r Y nw xY w|€|‚t0        j3                  ||¬«      ‚d
}~ww xY w­w)zR
    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©Úer0   )ÚasyncioÚget_event_loopr   Úlitellm.types.utilsr-   Úlitellm.utilsr/   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-   r/   r0   ÚfuncÚctxÚfunc_with_contextÚinit_responseÚresponser6   Ú_Úresolved_custom_llm_providers                               ú]/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/passthrough/main.pyr*   r*      sj  è ø€ ð.c
Ü×,Ñ,Ó.ˆØ+/ˆÐ'Ñ(ä8HØØ 3ØØô	9
Ñ5ˆÐ" G¨Xõ 	5Ý7äÜÐ,Ñ-¨v¯z©zÐ:KÓ/Ló
ò 
à"×BÑBÙ!Ð"5Ó6Øð Có 
ð 	ð Ð"Ü˜iÐ(;Ð'<¸JÐGÓHÐHäÜ!ð
àØØØ 3ØØØ!5Ø+ØØØØØØØñ!
ð" ñ#
ˆô( !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×Rˆô ×Ñ˜}Ô-Ø$1×1ˆHô ˜(¤E§N¡NÔ3Ø×)Ñ)Ô+àˆOô ÐMÓNÐNð  Søð 2ùô × Ñ ò ð ˆûÜò "
å4Ý7ô 1AØØ 3ØØô	1
Ñ-ˆÐ'¨¨Að ˆÙ'ð	Ü"&ÜÐ4Ñ5°v·z±zÐBSÓ7Tó#ò #à*×JÑJÙ)Ð*FÓGØð Kó ñ  øô ò áðúð Ð"àˆGä#×1Ñ1ØØ+ð 2ó 
ð 	
ûð?"
üs}   ‚G?„C&E	 Ã*EÃ+E	 Ä	EÄ
/E	 Ä9G?Ä:E	 ÅE	 Å	G<ÅEÅG<Å*$G7Æ=GÇG7Ç	GÇG7ÇGÇG7Ç7G<Ç<G?c                 ó  — ddl m} ddlm} ddlm} t        |j                  dd«      «      }t        d|j                  d«      «      }t        ||||¬	«      \  }}}} |d)||d
œ|¤Ž}|€Bddl
m}m} ddlm} ddlm}  |||¬«      }|r ||j"                  d|i¬«      }n |d|i¬«      }d|v r|d   |d<   |j%                  ||i |||	r|	n|¬«       t        t&        d   |j                  d«      «      xs |j)                   ||«      |¬«      }|€t+        d|› d�«      ‚|j-                  ||||||¬«      \  }}|dk(  r7d|v r3t/        j0                  t3        |«      «      }t5        j6                  |«      }|j9                  |«      }|j;                  i |g i |||¬«      } t=        j>                  |xs i | d¬«      }!|jA                  |!||	r|	n|t3        |«      |¬«      \  }!}"|rtC        |tD        «      r	d |v r||d <   |jF                  jI                  | ||"�|"n||"€|€|	nd|
|"€|€|nd||!|¬!«	      }#|jK                  ||	xs |xs i ¬"«      }$|$|_&        |	r|	n|}%|jO                  |%||%t3        |«      |!d#œ¬$«       	 |rtQ        ||#|$||¬%«      S |jF                  jS                  |#|$¬&«      }&|&jU                  «        tW        |&d'«      r|$rtY        |&||«      S |&S # t*        $ r }'|€|'‚tZ        j]                  |'|¬(«      ‚d}'~'ww xY w)*zŒ
    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.   r*   FÚLiteLLMLoggingObjÚlitellm_logging_objr+   )r   r   N)Ú_get_httpx_clientÚget_async_httpx_client)Úresolve_llm_passthrough_timeout)ÚhttpxSpecialProvider)rK   Úlitellm_paramsÚtimeout)Úllm_providerr#   )r#   Úmodel_id)r'   r]   Úoptional_paramsr&   r   Úrequest_datar   r0   r1   r3   r4   )r   r   r'   r&   r   r]   Úbedrockzapplication-inference-profile)Úheadersr'   Úmessagesra   r]   r   r   )r   rd   Úforward_headers)rd   r]   rb   r   r'   r'   )	r%   Úurlr   r    r!   r"   r#   rd   r$   )r&   rb   )Úcomplete_input_dictr   rd   )Úinputr   Úadditional_args)r   ÚrequestÚis_streaming_requestrX   r0   ©rk   ÚstreamÚ
iter_bytesr5   © )/Ú-litellm.litellm_core_utils.get_litellm_paramsrV   r9   r-   r:   r/   Úboolr;   r   r   Ú&litellm.llms.custom_httpx.http_handlerrY   rZ   Ú!litellm.passthrough.timeout_utilsr[   Úlitellm.types.llms.custom_httpr\   ÚPassThroughEndpointÚupdate_environment_variablesr
   r<   r=   Úget_complete_urlr   Ú"encode_bedrock_runtime_modelid_arnÚstrrE   ÚURLÚget_api_keyÚvalidate_environmentr   Úforward_headers_from_requestÚsign_requestrD   Údictr   Úbuild_requestrl   rn   Úpre_callÚ_async_passthrough_requestÚsendrG   ÚhasattrÚ_sync_streamingrI   rJ   )(r%   r&   r'   r   r   r   r   r   r   r    r!   r"   r#   r$   r   rK   rV   r-   r/   Ú	_is_asyncrX   Úlitellm_params_dictrY   rZ   r[   r\   Úresolved_timeoutr0   Úupdated_urlÚbase_target_urlÚencoded_url_strÚprovider_api_keyÚauth_headersrd   Úsigned_json_bodyrk   rl   rb   rQ   r6   s(                                           rT   r>   r>   š   sð  € õB QÝ0Ý3ä˜FŸJ™JÐ'?ÀÓGÓH€Iä!%Ð&9¸6¿:¹:ÐF[Ó;\Ó!]Ðä4DØØ/ØØô	5Ñ1€EÐ ¨ñ "4Ð!a¸GÈhÑ!aÐZ`Ñ!aÐà€~÷	
õ 	VÝGá"AØØ.ô#
Ðñ Ù+Ø1×EÑEØ!Ð#3Ð4ô‰Fñ
 '¨yÐ:JÐ.KÔLˆFð �VÑØ*0°Ñ*<Ð˜JÑ'à×4Ñ4ØØ*ØØØ/Ù!‘T tð 5ô ô "ÜÐ(Ñ)¨6¯:©:Ð6GÓ+Hóò à	×	>Ñ	>ÙÐ1Ó2Øð 
?ó 
ð ð ÐÜ˜)Ð$7Ð#8¸
ÐCÓDÐDà#2×#CÑ#CØØØØØ1Ø*ð $Dó $Ñ €K�ð ˜iÒ'Ð,KÈxÑ,WÜ!,×!OÑ!OÔPSÐT_ÓP`Ó!aˆÜ—i‘i Ó0ˆð .×9Ñ9¸'ÓBÐà)×>Ñ>ØØØØØ*Ø Ø ð ?ó €Lô #×?Ñ?Ø'Ò-¨2ØØô€Gð !0× <Ñ <ØØ*Ù!‘T tÜ�[Ó!Øð !=ó !Ñ€GÐñ ”
˜4¤Ô&¨7°d©?ØˆˆW‰à—]‘]×0Ñ0ØØØ$4Ð$@Ñ ÀgØ&Ð.°7°?‰TÈØØ&Ð.°7°?‰TÈØØØð 1ó 
€Gð #2×"FÑ"FØØÒ'˜TÒ' Rð #Gó #Ðð "6ÐÔñ #'™$¨D€LØ× Ñ ØØ à#/Ü˜KÓ(Øñ
ð !ô ð
Ùä-ØØØ%9Ø$7Ø /ôð ð (.§}¡}×'9Ñ'9À'ÐRfÐ'9Ó'gˆHØ×%Ñ%Ô'ô ˜ ,Ô/Ñ4Hä& xÐ1DÀoÓVÐVð  �øÜò 
ØÐ"ØˆGÜ#×1Ñ1ØØ+ð 2ó 
ð 	
ûð
ús%   É;K ÊAK ËK Ë	L Ë K;Ë;L rk   rl   rX   rW   r0   r   c              ƒ   ó  K  — | j                   j                  ||¬«      }t        j                  |«      rD|rt	        |||¬«      S |ƒ d{  –—† }|j                  «       ƒ d{  –—†  |j                  «        |S t        d«      ‚7 Œ97 Œ#­w)zr
    Handle async passthrough requests.
    Uses async client to send request and properly handles streaming.
    rm   )rQ   rX   r0   Nz$Expected coroutine from async client)r   r„   r7   rC   Ú_async_streamingÚareadrG   r=   )r   rk   rl   rX   r0   Úresponse_resultrQ   s          rT   rƒ   rƒ   c  s�   è ø€ ð $Ÿ]™]×/Ñ/¸ÐH\Ð/Ó]€Oô ×Ñ˜?Ô+Ùä#Ø(Ø$7Ø /ôð ð %4×3ˆHØ—.‘.Ó"×"Ð"Ø×%Ñ%Ô'ØˆOô Ð>Ó?Ð?ð 4øØ"ús$   ‚ABÁ
BÁBÁ"BÁ#"BÂBrQ   c           	   #   óö  K  — ddl m} g }d}	 | j                  «       D ]  }|j                  |«       |–— Œ 	 |s%|r"d}	 |j	                  |j
                  ||¬«       y y y # t        $ r*}t        j                  dt        |«      |«       Y d }~y d }~ww xY w# |s[|rXd}	 |j	                  |j
                  ||¬«       w # t        $ r*}t        j                  dt        |«      |«       Y d }~w d }~ww xY ww w xY w­w)Nr   )ÚexecutorFT©Ú	raw_bytesr0   zfFailed to schedule passthrough spend-tracking flush in _sync_streaming; %d buffered chunks dropped: %s)
r:   r•   ro   ÚappendÚsubmitÚ"flush_passthrough_collected_chunksr=   r   Ú	exceptionÚlen)rQ   rX   r0   r•   r—   Úflush_scheduledÚchunkr6   s           rT   r†   r†   „  s  è ø€ õ
 'à$&€IØ€OðØ×(Ñ(Ó*ò 	ˆEØ×Ñ˜UÔ#Ø‹Kñ	ñ ¡9Ø"ˆOðØ—‘Ø'×JÑJØ'Ø$3ð  õ ð $-ˆøô ò Ü×(Ñ(ðIä˜	“NØ÷	ñ ûðûñ ¡9Ø"ˆOðØ—‘Ø'×JÑJØ'Ø$3ð  õ øô
 ò Ü×(Ñ(ðIä˜	“NØ÷	ñ ûðúð $-ˆüso   ‚C9Ž*B ¹C9Á A! ÁC9Á!	BÁ* BÂ
C9ÂBÂC9ÂC6ÂB>Â=C6Â>	C1Ã C,Ã'C6Ã,C1Ã1C6Ã6C9c           	     ó4  K  — | ƒ d {  –—† }	 |j                  «        g }d}	 |j                  «       2 3 d {  –—† }|j	                  |«       |­–— Œ 7 ŒJ# t        $ r+ 	 |j                  «       ƒ d {  –—†7   ‚ # t        $ r Y ‚ w xY ww xY w7 ŒT6 n7# t        $ r+ 	 |j                  «       ƒ d {  –—†7   ‚ # t        $ r Y ‚ w xY ww xY w	 |sc|r`d}	 t        j                  |j                  ||¬«      «       y # t        $ r*}t        j                  dt        |«      |«       Y d }~y d }~ww xY wy y # |sc|r`d}	 t        j                  |j                  ||¬«      «       w # t        $ r*}t        j                  dt        |«      |«       Y d }~w d }~ww xY ww w xY w­w)NFTr–   zgFailed to schedule passthrough spend-tracking flush in _async_streaming; %d buffered chunks dropped: %s)rG   r=   ÚacloseÚaiter_bytesr˜   r7   Úcreate_taskÚ(async_flush_passthrough_collected_chunksr   r›   rœ   )rQ   rX   r0   Úiter_responser—   r�   rž   r6   s           rT   r‘   r‘   £  sß  è ø€ ð
 "*Ÿ>€MðØ×&Ñ&Ô(ð %'€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(  ‚FˆA‰FŽA žF£B ³B·B¸B»B ÁFÁ	B	ÁA9Á2A5Á3A9Á8B	Á9	BÂB	ÂBÂB	Â	FÂBÂB ÂD. Â	CÂB4Â-B0Â.B4Â3CÂ4	C Â=CÂ?C Ã CÃD. ÃFÃ&C6 Ã5FÃ6	D)Ã? D$ÄFÄ$D)Ä)FÄ.FÄ6&EÅFÅ	FÅ& FÆFÆFÆFÆF)3Ú__doc__r7   r?   Úcollections.abcr   r   r   Ú	functoolsr   Útypingr   r   r	   r
   r   rE   Ú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   rI   Úutilsr   Ú*litellm.litellm_core_utils.litellm_loggingr   rW   Ú0litellm.llms.base_llm.passthrough.transformationr   rz   r€   rF   r*   r>   ÚRequestrr   rƒ   r†   r‘   rp   ó    rT   ú<module>r³      sË  ðñó Û ß @Ñ @Ý ß <Õ <ã ß CÑ Cå +Ý Nß PÝ IÝ 1Ý  á*Ó,Ð Ý 'áÝWÝVð ð '+ØØØ(,Ø#'ØØØ!%ØØ%)Ø"&Ø48ò!y
àðy
ð ðy
ð ð	y
ð
 ˜t™ðy
ð �D‰jðy
ð �4‰Zðy
ð  ™+ðy
ð ˜D‘[ðy
ð �4‰Zðy
ð �‰+ðy
ð ˜$Ñðy
ð �‰*ðy
ð ˜dÑ"ðy
ð ˜4Ñðy
ð  Ð*Ñ*¨TÑ1ð!y
ð$ ‡^�^�n S¨# XÑ.Ñ.ò%y
ó ðy
ðx ð '+ØØØ(,Ø#'ØØØ!%ØØ%)Ø"&Ø48ò!E
àðE
ð ðE
ð ð	E
ð
 ˜t™ðE
ð �D‰jðE
ð �4‰ZðE
ð  ™+ðE
ð ˜D‘[ðE
ð �4‰ZðE
ð �‰+ðE
ð ˜$ÑðE
ð �‰*ðE
ð ˜dÑ"ðE
ð ˜4ÑðE
ð  Ð*Ñ*¨TÑ1ð!E
ð& 
‡N�NØ��S˜%Ÿ.™.Ð(Ñ)ñ*à��S˜%Ÿ.™.¨>¸#¸s¸(Ñ+CÑCÐCÑDñEð ��S˜#�Ññð �S˜#�XÑñ	ò'E
ó ðE
ðP@ØÐ*Ñ*ð@à�]‰]ð@ð ð@ð -ð	@ð
 -ð@ð ‡^�^�n S¨# XÑ.Ñ.ó@ðBØ�n‰nðà,ðð -óð>/Ø˜˜S %§.¡.Ð0Ñ1ð/à,ð/ð -ô/r²   