Ë
    uPêj™/  ã                   óv   — d dl m Z mZ d dl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  G d„ d	e«      Zy)
é    )ÚdatetimeÚ	timedelta)ÚFinalN)ÚModelResponseÚtoken_counterÚverbose_logger)Úverbose_router_logger)Ú	DualCache)ÚCustomLoggerc                   ó¤   — 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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)ÚLowestCostLoggingHandlerFÚ	test_flagr   Úlogged_successÚlogged_failureÚrouter_cacheÚrouting_argsc                 ó   — || _         y )N)r   )Úselfr   r   s      úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/router_strategy/lowest_cost.pyÚ__init__z!LowestCostLoggingHandler.__init__   s
   € Ø(ˆÕó    c                 óœ  — 	 	 |d   j                  d«      €y |d   d   j                  dd «      }|d   j                  di «      j                  dd «      }|�|€y t        |t        «      rt        |«      }	 t	        j
                  «       j                  d«      }t	        j
                  «       j                  d«      }t	        j
                  «       j                  d«      }	|› d	|› d	|	› �}
|› d
�}||z
  }d}t        |t        «      r]t        |dd «      }|�Nt        |t        j                  «      r4|j                  }|j                  }t        |j                  «       |z  «       | j                  j!                  |¬«      xs i }||vri ||<   |
||   vri ||   |
<   ||   |
   j                  dd«      |z   ||   |
   d<   ||   |
   j                  dd«      dz   ||   |
   d<   | j                  j#                  ||¬«       | j$                  r| xj&                  dz  c_        y y # t(        $ r }t+        j,                  d|«       Y d }~y d }~ww xY w)NÚlitellm_paramsÚmetadataÚmodel_groupÚ
model_infoÚidú%Y-%m-%dú%Hú%Mú-Ú_mapr   Úusage©ÚkeyÚtpmÚrpmé   ©r%   ÚvaluezSlitellm.router_strategy.lowest_cost.py::log_success_event(): Exception occured - %s)ÚgetÚ
isinstanceÚintÚstrr   ÚnowÚstrftimer   ÚgetattrÚlitellmÚUsageÚcompletion_tokensÚtotal_tokensÚfloatÚtotal_secondsr   Ú	get_cacheÚ	set_cacher   r   Ú	Exceptionr   Ú	exception)r   ÚkwargsÚresponse_objÚ
start_timeÚend_timer   r   Úcurrent_dateÚcurrent_hourÚcurrent_minuteÚprecise_minuteÚcost_keyÚresponse_msr5   Ú_usager4   Úrequest_count_dictÚes                     r   Úlog_success_eventz*LowestCostLoggingHandler.log_success_event   s‡  € ðJ	ðð Ð&Ñ'×+Ñ+¨JÓ7Ð?Øà%+Ð,<Ñ%=¸jÑ%I×%MÑ%MÈmÐ]aÓ%b�àÐ,Ñ-×1Ñ1°,ÀÓC×GÑGÈÈdÓS�ØÐ&¨"¨*ØÜ ¤CÔ(Ü˜R›�Bð
ô '/§l¡l£n×&=Ñ&=¸jÓ&I�Ü&.§l¡l£n×&=Ñ&=¸dÓ&C�Ü(0¯©«×(?Ñ(?ÀÓ(E�Ø+7¨.¸¸,¸ÀqÈÐHXÐ(Y�Ø%0 M°Ð"6�à08¸:Ñ0E�à �ä˜l¬MÔ:Ü$+¨L¸'À4Ó$H�FØÐ)¬j¸ÄÇÁÔ.OØ39×3KÑ3KÐ)Ø'-×':Ñ':˜Ü˜k×7Ñ7Ó9Ð<MÑMÔNð -1×,=Ñ,=×,GÑ,GÈHÐ,GÓ,UÒ,[ÐY[Ð"ð Ð/Ñ/Ø-/Ð& rÑ*à!Ð);¸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Ñ=à×!Ñ!×+Ñ+°Ð@RÐ+ÔSð —>’>Ø×'Ò'¨1Ñ,Ö'ð "øäò 	Ü×$Ñ$ØeÐgh÷ñ ûð	ús$   ‚H" ˜AH" ÁGH" È"	IÈ+IÉIc              ƒ   óÌ  K  — 	 	 |d   j                  d«      €y |d   d   j                  dd «      }|d   j                  d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
  }d}t        |t        «      r]t        |dd «      }|�Nt        |t        j                  «      r4|j                  }|j                  }t        |j                  «       |z  «       | j                  j!                  |¬«      ƒ d {  –—† xs i }||vri ||<   |||   vri ||   |<   ||   |   j                  dd«      |z   ||   |   d<   ||   |   j                  dd«      dz   ||   |   d<   | j                  j#                  ||¬«      ƒ d {  –—†  | j$                  r| xj&                  dz  c_        y y 7 Œ°7 Œ)# t(        $ r }t+        j,                  d|«       Y d }~y d }~ww xY w­w)Nr   r   r   r   r   r"   r   r   r    r!   r   r#   r$   r&   r'   r(   r)   z`litellm.proxy.hooks.prompt_injection_detection.py::async_pre_call_hook(): Exception occured - %s)r+   r,   r-   r.   r   r/   r0   r   r1   r2   r3   r4   r5   r6   r7   r   Úasync_get_cacheÚasync_set_cacher   r   r:   r   r;   )r   r<   r=   r>   r?   r   r   rD   r@   rA   rB   rC   rE   r5   rF   r4   rG   rH   s                     r   Úasync_log_success_eventz0LowestCostLoggingHandler.async_log_success_eventb   s©  è ø€ ðL	ðð Ð&Ñ'×+Ñ+¨JÓ7Ð?Øà%+Ð,<Ñ%=¸jÑ%I×%MÑ%MÈmÐ]aÓ%b�àÐ,Ñ-×1Ñ1°,ÀÓC×GÑGÈÈdÓS�ØÐ&¨"¨*ØÜ ¤CÔ(Ü˜R›�Bð
	ð &1 M°Ð"6�ä&.§l¡l£n×&=Ñ&=¸jÓ&I�Ü&.§l¡l£n×&=Ñ&=¸dÓ&C�Ü(0¯©«×(?Ñ(?ÀÓ(E�Ø+7¨.¸¸,¸ÀqÈÐHXÐ(Y�à08¸:Ñ0E�à �ä˜l¬MÔ:Ü$+¨L¸'À4Ó$H�FØÐ)¬j¸ÄÇÁÔ.OØ39×3KÑ3KÐ)Ø'-×':Ñ':˜ä˜k×7Ñ7Ó9Ð<MÑMÔNð 37×2CÑ2C×2SÑ2SÐX`Ð2SÓ2a×,aÒ,gÐegÐ"àÐ/Ñ/Ø-/Ð& rÑ*Ø!Ð);¸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Ø Ð(:ð 8ó ÷ ð ð
 —>’>Ø×'Ò'¨1Ñ,Ö'ð "ð) -bøðùô ò 	Ü×$Ñ$ØrÐtu÷ñ ûð	üsk   ‚I$„H8 ™I$šAH8 ÁI$ÁD'H8 ÆH4ÆBH8 ÈH6È%H8 È2I$È4H8 È6H8 È8	I!ÉIÉI$ÉI!É!I$Nr   Úhealthy_deploymentsÚmessagesÚinputÚrequest_kwargsc              ƒ   óò  K  — |› d�}| j                   j                  |¬«      ƒ d{  –—† xs i }t        d«       t        j                  «       j                  d«      }t        j                  «       j                  d«      }	t        j                  «       j                  d«      }
|› d|	› d|
› �}|€y|}|D ]  }|d	   d
   |vsŒ|dddœi||d	   d
   <   Œ 	 t        ||¬«      }|j                  «       }g }i }|j                  «       D �]°  \  }}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i «      j                  d«      }t        j                  j                  |i «      }d}d}|j                  di «      j                  dd«      r!|j                  di «      j                  d«      }|j                  di «      j                  dd«      r!|j                  di «      j                  d«      }|€|j                  dd«      }|€|j                  dd«      }||z   }|j                  |i «      j                  dd«      }|j                  |i «      j                  dd«      }t        j                  d||||j                  d	i «      j                  d
«      «       |j                  di «      j                  dd«      }|�|||<   ||z   |kD  s|dz   |kD  r�Œž|j                  ||f«       �Œ³ t        |«      dk(  ryt!        |d„ ¬«      }|d   d   } | S 7 �Œ»# t        $ r d}Y �Œw xY w­w)z;
        Returns a deployment with the lowest cost
        r"   r$   NÚinfr   r   r    r!   r   r   r   )r&   r'   )rO   Útextr&   r   r'   ÚmodelÚinput_cost_per_tokenÚoutput_cost_per_tokeng      @z7item_cost: %s, item_tpm: %s, item_rpm: %s, model_id: %sÚapi_baseÚ r(   c                 ó   — | d   S )Nr(   © )Úxs    r   ú<lambda>zJLowestCostLoggingHandler.async_get_available_deployments.<locals>.<lambda>.  s
   € ÈAÈaÉD€ r   )r   rK   r6   r   r/   r0   r   r:   Úitemsr+   r2   Ú
model_costr	   ÚdebugÚappendÚlenÚsorted)!r   r   rN   rO   rP   rQ   rD   rG   r@   rA   rB   rC   Úall_deploymentsÚdÚinput_tokensÚ_itemsÚpotential_deploymentsÚ_cost_per_deploymentÚitemÚitem_mapÚ_deploymentÚmÚ_deployment_tpmÚ_deployment_rpmÚitem_litellm_model_nameÚitem_litellm_model_cost_mapÚitem_input_costÚitem_output_costÚ	item_costÚitem_rpmÚitem_tpmÚ_deployment_api_baseÚselected_deployments!                                    r   Úasync_get_available_deploymentsz8LowestCostLoggingHandler.async_get_available_deployments±   sZ  è ø€ ð )˜M¨Ð.ˆà*.×*;Ñ*;×*KÑ*KÐPXÐ*KÓ*Y×$YÒ$_Ð]_Ðô
 	ˆeŒä&Ÿl™l›n×5Ñ5°jÓAˆÜ&Ÿl™l›n×5Ñ5°dÓ;ˆÜ (§¡£× 7Ñ 7¸Ó =ˆØ#/ .°°,°¸qÀÐ@PÐ QˆàÐ%Øà!3ˆØ$ò 	ˆAà�‰˜tÑ$¨OÒ;à"¨A°aÑ$8ð:�  ,¡°Ñ 5Ò6ð	ð	Ü(°(ÀÔGˆLð
 (×-Ñ-Ó/ˆð !#ÐØ&(ÐØ-×3Ñ3Ó5ó I	G‰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§o¡oÐ6FÈÓ&K×&OÑ&OÐPWÓ&XÐ#Ü*1×*<Ñ*<×*@Ñ*@ÐAXÐZ\Ó*]Ð'ð #ˆOØ#ÐØ�‰Ð/°Ó4×8Ñ8Ð9OÐQUÔVØ"-§/¡/Ð2BÀBÓ"G×"KÑ"KÐLbÓ"c�à�‰Ð/°Ó4×8Ñ8Ð9PÐRVÔWØ#.§?¡?Ð3CÀRÓ#H×#LÑ#LÐMdÓ#eÐ àÐ&Ø"=×"AÑ"AÐBXÐZ]Ó"^�àÐ'Ø#>×#BÑ#BÐCZÐ\_Ó#`Ð ð (Ð*:Ñ:ˆIà—|‘| N°BÓ7×;Ñ;¸EÀ1ÓEˆHØ—|‘| N°BÓ7×;Ñ;¸EÀ1ÓEˆHä!×'Ñ'ØIØØØØ—‘ ¨bÓ1×5Ñ5°dÓ;ôð $/§?¡?Ð3CÀRÓ#H×#LÑ#LÈZÐY[Ó#\Ð Ø#Ð/Ø=FÐ$Ð%9Ñ:ð ˜<Ñ'¨/Ò9¸XÈ¹\ÈOÒ=[áà%×,Ñ,¨k¸9Ð-EÖFðSI	GôV Ð$Ó%¨Ò*Øä &Ð'<Á.Ô QÐà%:¸1Ñ%=¸aÑ%@ÐØ"Ð"ðg %Zúô2 ò 	Ø‹Lð	üsA   ‚%O7§O"¨BO7ÃO7ÃO% Ã#=O7Ä!KO7Ï%O4Ï0O7Ï3O4Ï4O7)NNN)Ú__name__Ú
__module__Ú__qualname__r   ÚboolÚ__annotations__r   r-   r   r
   Údictr   rI   rM   r.   Úlistry   r[   r   r   r   r      s©   … Ø€IˆtÓØ€N�CÓØ€N�CÓàEGñ ) Yð )¸dó )òKòZMðf 15Ø#'Ø&*ñ@#àð@#ð "ð@#ð �t˜C ˜H‘~Ñ&¨Ñ-ð	@#ð
 �T‰z˜DÑ ð@#ð ˜t™ô@#r   r   )r   r   Útypingr   r2   r   r   r   Úlitellm._loggingr	   Úlitellm.caching.cachingr
   Ú"litellm.integrations.custom_loggerr   r   r[   r   r   ú<module>r…      s-   ð÷ )Ý ã ß @Ñ @Ý 2Ý -Ý ;ôd#˜|õ d#r   