
    ^hU              
           S SK r S SKrS SKrS SKJrJr  S SKr\R                  " \5      r	/ SQr
SS/rS rSS\S\\   4S	 jjrS
\S\4S jrSS
\S\\   4S jjr   SS
\S\\   S\\   S\\   4S jjrg)    N)ListOptional)messagesapi_keypromptinputvertex_credentialsaws_access_key_idaws_secret_access_keymodel
mode_errorc                  >    SS/n S[         R                  " U 5      S./$ )z$
Get a random message from the LLM.
zHey how's it going?zWhat's 1 + 1?user)rolecontent)randomchoice)r   s    T/home/james-whalen/.local/lib/python3.13/site-packages/litellm/proxy/health_check.py_get_random_llm_messager      s%     &7Hh(?@AA    endpoint_datadetailsc                     USLa1  U R                  5        VVs0 s H  u  p#U[        ;  d  M  X#_M     snn$ U R                  5        VVs0 s H  u  p#U[        ;   d  M  X#_M     snn$ s  snnf s  snnf )z/
Clean the endpoint data for display to users.
F)itemsILLEGAL_DISPLAY_PARAMSMINIMAL_DISPLAY_PARAMS)r   r   kvs       r   _clean_endpoint_datar   #   sv     % (--/S/$!1<R3R/S  -224T4tq=S8Sdad4TSTs   A(A(
A.A.
model_listreturnc                     [        5       n/ nU  He  nUR                  S5      =(       d    0 nUR                  S5      =(       d    S nUc  M<  XQ;  d  MC  UR                  U5        UR                  U5        Mg     U$ )N
model_infoid)setgetaddappend)r    seen_idsfiltered_deployments
deployment_model_info_ids         r   filter_deployments_by_idr.   .   sq     uH 
 nn\28bood#+t;LL ''
3 !  r   c           
      l  #    / nU  H`  nUS   nUR                  S0 5      n[        5       US'   UR                  SS5      nUR                  [        R                  " UUSS/S95        Mb     [
        R                  " U6 I Sh  vN n/ n/ n	[        Xp5       H  u  pUS   n[        U
[        5      (       a'  SU
;  a!  UR                  [        0 UEU
EU5      5        MF  [        U
[        5      (       a!  U	R                  [        0 UEU
EU5      5        M|  U	R                  [        XA5      5        M     X4$  N7f)	z4
Perform a health check for each model in the list.
litellm_paramsr#   r   modeNztest from litellm)r1   r   r   error)r&   r   r(   litellmahealth_checkasynciogatherzip
isinstancedictr   )r    r   tasksr   r0   r#   r1   resultshealthy_endpointsunhealthy_endpoints
is_healthys              r   _perform_health_checkr?   A   sB     E/0YY|R0
%<%>z"~~fd+!!**+		
  NNE**G 5
/0j$''G:,E$$$%E%E*%EwO 
D))&&$%E%E*%EwO  &&';N'TU 6 11' +s   A?D4D2B1D4	cli_modelc                 &  #    U (       d  U(       a	  USU0S./n O/ / 4$ UbC  U  Vs/ s H  oDS   S   U:X  d  M  UPM     nnU/ :X  a  U  Vs/ s H  oDS   U:X  d  M  UPM     nnUn [        U S9n [        X5      I Sh  vN u  pgXg4$ s  snf s  snf  N7f)zo
Perform a health check on the system.

Returns:
    (bool): True if the health check passes, False otherwise.
r   )
model_namer0   Nr0   rB   )r    )r.   r?   )r    r   r@   r   x_new_model_listr<   r=   s           r   perform_health_checkrE   j   s      (Wi<PQJ r6M!
!!'7%8%AU%JAz 	 
 b *4Q*Q,58Pq*OQ$
)J 4I4 .* 11
 R.s2   #BBBB
B
B
 B;B<B)T)NNT)r5   loggingr   typingr   r   r3   	getLogger__name__loggerr   r   r   r9   boolr   r.   listr?   strrE    r   r   <module>rO      s       ! 			8	$  "<0 B x~   	 &&2D &28D> &2V  #"	#2#2C=#2 }#2 d^	#2r   