Ë
    uPêj\  ã                   óÌ   — d dl Z d dlmZmZ d dl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 erd d	lmZ eez  ZneZ G d
„ de«      Z G d„ de«      Zy)é    N)ÚdatetimeÚ	timedelta)ÚTYPE_CHECKINGÚAnyÚFinal)ÚModelResponseÚtoken_counterÚverbose_logger)Ú	DualCache)ÚCustomLogger)Ú!_get_parent_otel_span_from_kwargsÚsafe_divide_seconds)ÚLiteLLMPydanticObjectBase)ÚSpanc                   ó8   — e Zd ZU dZeed<   dZeed<   dZeed<   y)ÚRoutingArgsi  Úttlr   Úlowest_latency_bufferé
   Úmax_latency_list_sizeN)	Ú__name__Ú
__module__Ú__qualname__r   ÚfloatÚ__annotations__r   r   Úint© ó    úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/router_strategy/lowest_latency.pyr   r      s"   … Ø€CˆÓØ#$Ð˜5Ó$Ø!#Ð˜3Ô#r   r   c                   óN  — e Zd ZU dZeed<   dZeed<   dZeed<   i fde	de
fd„Zd	„ Zd
„ Zd„ Z	 	 	 	 ddededee
eef      dz  deez  dz  de
dz  de
dz  fd„Z	 	 	 ddededee
eef      dz  deez  dz  de
dz  f
d„Z	 	 	 ddededee
eef      dz  deez  dz  de
dz  f
d„Zy)ÚLowestLatencyLoggingHandlerFÚ	test_flagr   Úlogged_successÚlogged_failureÚrouter_cacheÚrouting_argsc                 ó2   — || _         t        di |¤Ž| _        y )Nr   )r%   r   r&   )Úselfr%   r&   s      r   Ú__init__z$LowestLatencyLoggingHandler.__init__!   s   € Ø(ˆÔÜ'Ñ7¨,Ñ7ˆÕr   c                 ó   — 	 	 | j                  |«      }|d   j                  |«      €y |d   |   j                  dd «      }|d   j                  d«      xs i j                  dd «      }|�|€y t        |t        «      rt	        |«      }	 |› d�}t        j                  «       j                  d«      }	t        j                  «       j                  d«      }
t        j                  «       j                  d«      }|	› d	|
› d	|› �}||z
  }t        |t        «      r|j                  «       }d }|j                  d
d «      �|d
   du r|j                  d|«      |z
  }|}d }d}t        |t        «      rvt        |dd «      }|�g|j                  }|j                  }|}t        ||«      }|�t        |«      }n|}|�/t        |t        «      r|j                  «       }n|}t        ||«      }t!        |«      }| j"                  j%                  ||¬«      xs i }||vri ||<   t'        ||   j                  dg «      «      | j(                  j*                  k  r%||   j-                  dg «      j/                  |«       n||   d   dd  |gz   ||   d<   |�ot'        ||   j                  dg «      «      | j(                  j*                  k  r%||   j-                  dg «      j/                  |«       n||   d   dd  |gz   ||   d<   |||   vri ||   |<   ||   |   j                  dd«      |z   ||   |   d<   ||   |   j                  dd«      dz   ||   |   d<   | j"                  j1                  ||| j(                  j2                  ¬«       | j4                  r| xj6                  dz  c_        y y # t8        $ r }t;        j<                  d|«       Y d }~y d }~ww xY w)NÚlitellm_paramsÚmodel_groupÚ
model_infoÚidÚ_mapú%Y-%m-%dú%Hú%Mú-ÚstreamTÚcompletion_start_timer   Úusage©ÚkeyÚparent_otel_spanÚlatencyé   Útime_to_first_tokenÚtpmÚrpm©r8   Úvaluer   ú`litellm.proxy.hooks.prompt_injection_detection.py::async_pre_call_hook(): Exception occured - %s)Ú_select_metadata_fieldÚgetÚ
isinstancer   Ústrr   ÚnowÚstrftimer   Útotal_secondsr   ÚgetattrÚcompletion_tokensÚtotal_tokensr   r   r   r%   Ú	get_cacheÚlenr&   r   Ú
setdefaultÚappendÚ	set_cacher   r"   r#   Ú	Exceptionr
   Ú	exception)r(   ÚkwargsÚresponse_objÚ
start_timeÚend_timeÚmetadata_fieldr,   r.   Úlatency_keyÚcurrent_dateÚcurrent_hourÚcurrent_minuteÚprecise_minuteÚresponse_msÚ!time_to_first_token_response_timeÚfinal_valuer<   rK   Ú_usagerJ   Úresponse_secondsÚnormalized_valueÚttft_secondsr9   Úrequest_count_dictÚes                             r   Úlog_success_eventz-LowestLatencyLoggingHandler.log_success_event%   sk  € ð~	ðð %)×$?Ñ$?ÀÓ$GˆNØÐ&Ñ'×+Ñ+¨NÓ;ÐCØà%+Ð,<Ñ%=¸nÑ%M×%QÑ%QÐR_ÐaeÓ%f�àÐ-Ñ.×2Ñ2°<Ó@ÒFÀB×KÑKÈDÐRVÓW�ØÐ&¨"¨*ØÜ ¤CÔ(Ü˜R›�Bð
	ð )4 }°DÐ%9�ä&.§l¡l£n×&=Ñ&=¸jÓ&I�Ü&.§l¡l£n×&=Ñ&=¸dÓ&C�Ü(0¯©«×(?Ñ(?ÀÓ(E�Ø+7¨.¸¸,¸ÀqÈÐHXÐ(Y�à&¨Ñ3�Ü˜k¬9Ô5ð #.×";Ñ";Ó"=�KØ48Ð1à—:‘:˜h¨Ó-Ð9¸fÀXÑ>NÐRVÑ>Và8>¿
¹
ÐCZÐ\dÓ8eÐhrÑ8rÐ5à%0�Ø48Ð#Ø �ä˜l¬MÔ:Ü$+¨L¸'À4Ó$H�FØÐ)Ø39×3KÑ3KÐ)Ø'-×':Ñ':˜ð 3>Ð(ä2EÐFVÐXiÓ2jÐ(Ø+Ð7Ü*/Ð0@Ó*A™Kà*:˜Kà<ÐHÜ)Ð*KÌYÔWØ/P×/^Ñ/^Ó/`¡à/P Ü2EÀlÐTeÓ2fÐ/ô
 +LÈFÓ*SÐ à×%Ñ%×/Ñ/°KÐRbÐ/ÓcÒiÐgið #ð Ð/Ñ/Ø-/Ð& rÑ*ô Ð)¨"Ñ-×1Ñ1°)¸RÓ@ÓAÀD×DUÑDU×DkÑDkÒkØ& rÑ*×5Ñ5°iÀÓD×KÑKÈKÕXà8JÈ2Ñ8NÈyÑ8YÐZ[ÐZ\Ð8]ÐalÐ`mÑ8mÐ& rÑ*¨9Ñ5ð 'Ð2äÐ.¨rÑ2×6Ñ6Ð7LÈbÓQÓRØ×+Ñ+×AÑAòBð +¨2Ñ.×9Ñ9Ð:OÐQSÓT×[Ñ[Ð\oÕpàHZÐ[]ÑH^Ð_tÑHuØ˜BðIà0Ð1ñI2Ð*¨2Ñ.Ð/DÑEð "Ð);¸BÑ)?Ñ?Ø=?Ð& rÑ*¨>Ñ:ð ' rÑ*¨>Ñ:×>Ñ>¸uÀaÓHÈ<ÑWð # 2Ñ& ~Ñ6°uÑ=ð
 ASÐSUÑ@VÐWeÑ@f×@jÑ@jÐkpÐrsÓ@tÐwxÑ@xÐ" 2Ñ& ~Ñ6°uÑ=à×!Ñ!×+Ñ+Ø#Ð+=À4×CTÑCT×CXÑCXð ,ô ð
 —>’>Ø×'Ò'¨1Ñ,Ö'ð "øäò 	Ü×$Ñ$ØrÐtu÷ñ ûð	ús$   ‚&N$ ©AN$ Á.L4N$ Î$	OÎ-OÏOc              ƒ   ó–  K  — 	 | j                  |«      }|j                  dd«      }t        |t        j                  «      �rV|d   j                  |«      €y|d   |   j                  dd«      }|d   j                  d«      xs i j                  dd«      }|�|€yt        |t
        «      rt        |«      }	 |› d�}	| j                  j                  |	¬«      ƒ d{  –—† xs i }
||
vri |
|<   t        |
|   j                  d	g «      «      | j                  j                  k  r%|
|   j                  d	g «      j                  d
«       n|
|   d	   dd d
gz   |
|   d	<   | j                  j                  |	|
| j                  j                  ¬«      ƒ d{  –—†  yy7 Œ¼7 Œ# t         $ r }t#        j$                  d|«       Y d}~yd}~ww xY w­w)zR
        Check if Timeout Error, if timeout set deployment latency -> 100
        rR   Nr+   r,   r-   r.   r/   ©r8   r:   g     @�@r;   r?   rA   )rB   rC   rD   ÚlitellmÚTimeoutr   rE   r%   Úasync_get_cacherM   r&   r   rN   rO   Úasync_set_cacher   rQ   r
   rR   )r(   rS   rT   rU   rV   rW   Ú
_exceptionr,   r.   rX   rd   re   s               r   Úasync_log_failure_eventz3LowestLatencyLoggingHandler.async_log_failure_event¦   sö  è ø€ ð3	Ø$(×$?Ñ$?ÀÓ$GˆNØ &§
¡
¨;¸Ó =ˆJÜ˜*¤g§o¡oÕ6ØÐ*Ñ+×/Ñ/°Ó?ÐGØà)/Ð0@Ñ)AÀ.Ñ)Q×)UÑ)UÐVcÐeiÓ)j�Kà Ð!1Ñ2×6Ñ6°|ÓDÒJÈ×OÑOÐPTÐVZÓ[�BØ"Ð*¨b¨jØÜ# B¬Ô,Ü  ›W˜ð
	ð -8¨=¸Ð)=�KØ6:×6GÑ6G×6WÑ6WÐ\gÐ6WÓ6h×0hÒ0nÐlnÐ&àÐ!3Ñ3Ø13Ð*¨2Ñ.ô Ð-¨bÑ1×5Ñ5°iÀÓDÓEÈ×HYÑHY×HoÑHoÒoØ*¨2Ñ.×9Ñ9¸)ÀRÓH×OÑOÐPVÕWà<NÈrÑ<RÐS\Ñ<]Ð^_Ð^`Ð<aÐekÐdlÑ<lÐ*¨2Ñ.¨yÑ9à×+Ñ+×;Ñ;Ø'Ø0Ø ×-Ñ-×1Ñ1ð <ó ÷ ñ ð ð% 1iøðùô ò 	Ü×$Ñ$ØrÐtu÷ñ ûð	üsn   ‚G	„AF ÁG	ÁAF ÂG	ÂA F ÃFÃB5F ÆFÆF ÆG	ÆF ÆF Æ	GÆ&GÆ<G	ÇGÇG	c              ƒ   óÔ  K  — 	 	 | j                  |«      }|d   j                  |«      €y |d   |   j                  dd «      }|d   j                  d«      xs i j                  dd «      }|�|€y t        |t        «      rt	        |«      }	 |› d�}t        j                  «       j                  d«      }	t        j                  «       j                  d«      }
t        j                  «       j                  d«      }|	› d	|
› d	|› �}||z
  }t        |t        «      r|j                  «       }d }|j                  d
d «      �|d
   du r|j                  d|«      |z
  }|}d}d }t        |t        «      rvt        |dd «      }|�g|j                  }|j                  }|}t        ||«      }|�t        |«      }n|}|�/t        |t        «      r|j                  «       }n|}t        ||«      }t!        |«      }| j"                  j%                  ||d¬«      ƒ d {  –—† xs i }||vri ||<   t'        ||   j                  dg «      «      | j(                  j*                  k  r%||   j-                  dg «      j/                  |«       n||   d   dd  |gz   ||   d<   |�ot'        ||   j                  dg «      «      | j(                  j*                  k  r%||   j-                  dg «      j/                  |«       n||   d   dd  |gz   ||   d<   |||   vri ||   |<   ||   |   j                  dd«      |z   ||   |   d<   ||   |   j                  dd«      dz   ||   |   d<   | j"                  j1                  ||| j(                  j2                  ¬«      ƒ d {  –—†  | j4                  r| xj6                  dz  c_        y y 7 �Œ¦7 Œ*# t8        $ r }t;        j<                  d|«       Y d }~y d }~ww xY w­w)Nr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   Tr5   r   r6   )r8   r9   Ú
local_onlyr:   r;   r<   r=   r>   r?   z\litellm.router_strategy.lowest_latency.py::async_log_success_event(): Exception occured - %s)rB   rC   rD   r   rE   r   rF   rG   r   rH   r   rI   rJ   rK   r   r   r   r%   rk   rM   r&   r   rN   rO   rl   r   r"   r#   rQ   r
   rR   )r(   rS   rT   rU   rV   rW   r,   r.   rX   rY   rZ   r[   r\   r]   r^   r_   rK   r<   r`   rJ   ra   rb   rc   r9   rd   re   s                             r   Úasync_log_success_eventz3LowestLatencyLoggingHandler.async_log_success_eventß   s˜  è ø€ ðB	ðð %)×$?Ñ$?ÀÓ$GˆNØÐ&Ñ'×+Ñ+¨NÓ;ÐCØà%+Ð,<Ñ%=¸nÑ%M×%QÑ%QÐR_ÐaeÓ%f�àÐ-Ñ.×2Ñ2°<Ó@ÒFÀB×KÑKÈDÐRVÓW�ØÐ&¨"¨*ØÜ ¤CÔ(Ü˜R›�Bð

ð )4 }°DÐ%9�ä&.§l¡l£n×&=Ñ&=¸jÓ&I�Ü&.§l¡l£n×&=Ñ&=¸dÓ&C�Ü(0¯©«×(?Ñ(?ÀÓ(E�Ø+7¨.¸¸,¸ÀqÈÐHXÐ(Y�à&¨Ñ3�Ü˜k¬9Ô5ð #.×";Ñ";Ó"=�KØ48Ð1Ø—:‘:˜h¨Ó-Ð9¸fÀXÑ>NÐRVÑ>Và8>¿
¹
ÐCZÐ\dÓ8eÐhrÑ8rÐ5à%0�Ø �Ø48Ð#ä˜l¬MÔ:Ü$+¨L¸'À4Ó$H�FØÐ)Ø39×3KÑ3KÐ)Ø'-×':Ñ':˜ð 3>Ð(ä2EÐFVÐXiÓ2jÐ(Ø+Ð7Ü*/Ð0@Ó*A™Kà*:˜Kà<ÐHÜ)Ð*KÌYÔWØ/P×/^Ñ/^Ó/`¡à/P Ü2EÀlÐTeÓ2fÐ/ô +LÈFÓ*SÐ à×+Ñ+×;Ñ;Ø'Ø)9Ø#'ð <ó ÷ ò ð
 ð #ð Ð/Ñ/Ø-/Ð& rÑ*ô Ð)¨"Ñ-×1Ñ1°)¸RÓ@ÓAÀD×DUÑDU×DkÑDkÒkØ& rÑ*×5Ñ5°iÀÓD×KÑKÈKÕXà8JÈ2Ñ8NÈyÑ8YÐZ[ÐZ\Ð8]ÐalÐ`mÑ8mÐ& rÑ*¨9Ñ5ð 'Ð2äÐ.¨rÑ2×6Ñ6Ð7LÈbÓQÓRØ×+Ñ+×AÑAòBð +¨2Ñ.×9Ñ9Ð:OÐQSÓT×[Ñ[Ð\oÕpàHZÐ[]ÑH^Ð_tÑHuØ˜BðIà0Ð1ñI2Ð*¨2Ñ.Ð/DÑEð "Ð);¸BÑ)?Ñ?Ø=?Ð& rÑ*¨>Ñ:ð ' rÑ*¨>Ñ:×>Ñ>¸uÀaÓHÈ<ÑWð # 2Ñ& ~Ñ6°uÑ=ð
 ASÐSUÑ@VÐWeÑ@f×@jÑ@jÐkpÐrsÓ@tÐwxÑ@xÐ" 2Ñ& ~Ñ6°uÑ=à×'Ñ'×7Ñ7Ø#Ð+=À4×CTÑCT×CXÑCXð 8ó ÷ ð ð
 —>’>Ø×'Ò'¨1Ñ,Ö'ð "ð[ùðPùô ò 	Ü×$Ñ$ØnÐpq÷ñ ûð	üsk   ‚O(„&N< ªO(«AN< Á/O(Á0F!N< ÈN7ÈE=N< ÎN:Î%N< Î5O(Î7N< Î:N< Î<	O%ÏO ÏO(Ï O%Ï%O(Nr,   Úhealthy_deploymentsÚmessagesÚinputÚrequest_kwargsrd   c                 óâ  — i }t        d«      }t        j                  «       j                  d«      }	t        j                  «       j                  d«      }
t        j                  «       j                  d«      }|	› d|
› d|› �}d}|€y|}|D ]   }|d   d   |vsŒd	d
g|d
d
dœi||d   d   <   Œ" 	 t	        ||¬«      }|j                  «       }t        j                  t        |«      t        |«      «      }t        |«      }g }|j                  «       D �]2  \  }}d}|D ]  }||d   d   k(  sŒ|}Œ |€Œ!|j                  dd«      xsS |j                  di «      j                  dd«      xs/ |j                  di «      j                  dd«      xs t        d«      }|j                  dd«      xsS |j                  di «      j                  dd«      xs/ |j                  di «      j                  dd«      xs t        d«      }|j                  d	g «      }|j                  dg «      }|j                  |i «      j                  dd
«      }|j                  |i «      j                  dd
«      }d}|duxr- |j                  dd«      duxr |d   du xr t        |«      d
kD  }|r,|D ]  } t        | t         «      sŒ|| z  }Œ |t        |«      z  }n+|D ]  } t        | t         «      sŒ|| z  }Œ |t        |«      z  }|j                  di «      j                  dd«      }!|!�|||!<   ||z   |kD  s|dz   |kD  r�Œ |j                  ||f«       �Œ5 t        |«      d
k(  ryt        |d„ ¬«      }"|"d
   d   }| j                   j"                  |z  }#|"D �$cg c]  }$|$d   ||#z   k  sŒ|$‘Œ }%}$t        j$                  |%«      }&|&d
   }| j'                  |«      }'|�|'|v r|||'   d<   |S # t
        $ r d
}Y �Œ-w xY wc c}$w )z>Common logic for both sync and async get_available_deploymentsÚinfr0   r1   r2   r3   Nr-   r.   r:   r   )r=   r>   )rs   Útextr=   r+   r>   r<   g        r4   TÚapi_baseÚ r;   c                 ó   — | d   S )Nr;   r   )Úxs    r   ú<lambda>zHLowestLatencyLoggingHandler._get_available_deployments.<locals>.<lambda>Û  s   € ÐPQÐRSÑPT€ r   rh   Ú_latency_per_deployment)r   r   rF   rG   r	   rQ   ÚitemsÚrandomÚsampleÚlistrM   ÚdictrC   rD   rO   Úsortedr&   r   ÚchoicerB   )(r(   r,   rr   rs   rt   ru   rd   r~   Úlowest_latencyrY   rZ   r[   r\   Ú
deploymentÚall_deploymentsÚdÚinput_tokensÚ_itemsÚ_all_deploymentsÚpotential_deploymentsÚitemÚitem_mapÚ_deploymentÚmÚ_deployment_tpmÚ_deployment_rpmÚitem_latencyÚitem_ttft_latencyÚitem_rpmÚitem_tpmÚtotalÚuse_ttftÚ_call_latencyÚ_deployment_api_baseÚsorted_deploymentsÚbufferr|   Úvalid_deploymentsÚrandom_valid_deploymentrW   s(                                           r   Ú_get_available_deploymentsz6LowestLatencyLoggingHandler._get_available_deploymentsd  s“  € ð *,ÐÜ˜u›ˆä&Ÿl™l›n×5Ñ5°jÓAˆÜ&Ÿl™l›n×5Ñ5°dÓ;ˆÜ (§¡£× 7Ñ 7¸Ó =ˆØ#/ .°°,°¸qÀÐ@PÐ Qˆàˆ
àÐ%Øà,ˆØ$ò 	ˆAà�‰˜tÑ$¨OÒ;à ˜sØ"¨A°aÑ$8ð:�  ,¡°Ñ 5Ò6ð	ð	Ü(°(ÀÔGˆLð
 (×-Ñ-Ó/ˆä"(§-¡-´°V³¼cÀ&»kÓ"JÐÜÐ/Ó0ˆð (*ÐØ-×3Ñ3Ó5ó @	J‰NˆD�(àˆKØ(ò $�Ø˜1˜\™?¨4Ñ0Ó0Ø"#‘Kð$ð Ð"Øð —‘  tÓ,ò  Ø—?‘?Ð#3°RÓ8×<Ñ<¸UÀDÓIò à—?‘? <°Ó4×8Ñ8¸ÀÓEò ô ˜“<ð	 ð —‘  tÓ,ò  Ø—?‘?Ð#3°RÓ8×<Ñ<¸UÀDÓIò à—?‘? <°Ó4×8Ñ8¸ÀÓEò ô ˜“<ð	 ð $Ÿ<™<¨	°2Ó6ˆLØ (§¡Ð-BÀBÓ GÐØ—|‘| N°BÓ7×;Ñ;¸EÀ1ÓEˆHØ—|‘| N°BÓ7×;Ñ;¸EÀ1ÓEˆHð ˆEà dÐ*ò /Ø"×&Ñ& x°Ó6¸dÐBò/à" 8Ñ,°Ð4ò/ô Ð)Ó*¨QÑ.ð	 ñ Ø%6ò /�MÜ! -´Õ7Ø Ñ.™ð/ð  %¤sÐ+<Ó'=Ñ=‘à%1ò /�MÜ! -´Õ7Ø Ñ.™ð/ð  %¤s¨<Ó'8Ñ8�ð $/§?¡?Ð3CÀRÓ#H×#LÑ#LÈZÐY[Ó#\Ð Ø#Ð/Ø@LÐ'Ð(<Ñ=ð ˜<Ñ'¨/Ò9¸XÈ¹\ÈOÒ=[áà%×,Ñ,¨k¸<Ð-HÖIðA@	JôD Ð$Ó%¨Ò*Øô %+Ð+@ÁnÔ$UÐð ,¨AÑ.¨qÑ1ˆð ×)Ñ)×?Ñ?À.ÑPˆà/AÖ#e¨!ÀQÀqÁTÈ^Ð^dÑMdÓEd¢AÐ#eÐÐ#eô *0¯©Ð7HÓ)IÐØ,¨QÑ/ˆ
Ø $× ;Ñ ;¸NÓ KˆØÐ%¨.¸NÑ*JØH_ˆN˜>Ñ*Ð+DÑEØÐøôC ò 	Ø‹Lð	üòr $fs   Â.O ÎO,ÎO,ÏO)Ï(O)c              ƒ   ó¬   K  — |› d�}t        |«      }| j                  j                  ||¬«      ƒ d {  –—† xs i }| j                  ||||||«      S 7 Œ­w)Nr/   r7   )r   r%   rk   r    ©	r(   r,   rr   rs   rt   ru   rX   r9   rd   s	            r   Úasync_get_available_deploymentsz;LowestLatencyLoggingHandler.async_get_available_deploymentsí  su   è ø€ ð !,˜}¨DÐ1ˆä/PÐQ_Ó/`Ðà×#Ñ#×3Ñ3¸ÐVfÐ3Óg×gÒmÐkmð 	ð ×.Ñ.ØØØØØØó
ð 	
ð hús   ‚1A³A´Ac                 ó�   — |› d�}t        |«      }| j                  j                  ||¬«      xs i }| j                  ||||||«      S )z>
        Returns a deployment with the lowest latency
        r/   r7   )r   r%   rL   r    r¢   s	            r   Úget_available_deploymentsz5LowestLatencyLoggingHandler.get_available_deployments  sd   € ð !,˜}¨DÐ1ˆä/PÐQ_Ó/`ÐØ!×.Ñ.×8Ñ8¸[Ð[kÐ8ÓlÒrÐprÐà×.Ñ.ØØØØØØó
ð 	
r   )NNNN)NNN)r   r   r   r"   Úboolr   r#   r   r$   r   rƒ   r)   rf   rn   rq   rE   r‚   r    r£   r¥   r   r   r   r!   r!      s€  … Ø€IˆtÓØ€N�CÓØ€N�CÓàEGñ 8 Yð 8¸dó 8òòB7òrCðR 15Ø#'Ø&*Ø*.ñGàðGð "ðGð �t˜C ˜H‘~Ñ&¨Ñ-ð	Gð
 �T‰z˜DÑ ðGð ˜t™ðGð ! 4™KóGðZ 15Ø#'Ø&*ñ
àð
ð "ð
ð �t˜C ˜H‘~Ñ&¨Ñ-ð	
ð
 �T‰z˜DÑ ð
ð ˜t™ó
ð: 15Ø#'Ø&*ñ
àð
ð "ð
ð �t˜C ˜H‘~Ñ&¨Ñ-ð	
ð
 �T‰z˜DÑ ð
ð ˜t™ô
r   r!   )r€   r   r   Útypingr   r   r   ri   r   r	   r
   Úlitellm.caching.cachingr   Ú"litellm.integrations.custom_loggerr   Ú'litellm.litellm_core_utils.core_helpersr   r   Úlitellm.types.utilsr   Úopentelemetry.tracer   Ú_Spanr   r!   r   r   r   ú<module>r®      sW   ðó ß (ß ,Ñ ,ã ß @Ñ @Ý -Ý ;ß jÝ 9áÝ1à�3‰;�Dà€Dô$Ð+ô $ôB
 ,õ B
r   