
    gU              
           d dl Z d dlZd dlZd dlmZmZ d dlZ ej                  e      Z	g dZ
ddgZd Zddedee   fd	Zd
edefdZdd
edee   fdZ	 	 	 dd
edee   dee   dee   fdZy)    N)ListOptional)messagesapi_keypromptinputvertex_credentialsaws_access_key_idaws_secret_access_keymodel
mode_errorc                  <    ddg} dt        j                  |       dg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    O/var/www/openai/venv/lib/python3.12/site-packages/litellm/proxy/health_check.py_get_random_llm_messager      s%     &7Hh(?@AA    endpoint_datadetailsc                     |dur-| j                         D ci c]  \  }}|t        vs|| c}}S | j                         D ci c]  \  }}|t        v s|| c}}S c c}}w c c}}w )z7
    Clean the endpoint data for display to users.
    F)itemsILLEGAL_DISPLAY_PARAMSMINIMAL_DISPLAY_PARAMS)r   r   kvs       r   _clean_endpoint_datar   #   sz     % (--/S/$!Q1<R3RA/S  -224T4tq!=S8Sad4TSTs   AAA%A%
model_listreturnc                     t               }g }| D ]V  }|j                  d      xs i }|j                  d      xs d }|0||vs5|j                  |       |j                  |       X |S )N
model_infoid)setgetaddappend)r    seen_idsfiltered_deployments
deployment_model_info_ids         r   filter_deployments_by_idr.   .   ss     uH 
 nn\28bood#+t;hLL ''
3 !  r   c           	      R  K   g }| D ]a  }|d   }|j                  di       }t               |d<   |j                  dd      }|j                  t        j                  ||ddg             c t        j                  |  d{   }g }g }	t        ||       D ]  \  }
}|d   }t        |
t              r$d|
vr |j                  t        i ||
|             ?t        |
t              r |	j                  t        i ||
|             o|	j                  t        ||              ||	fS 7 w)	z<
    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   sF     E/0YY|R0
%<%>z"~~fd+!!**+		
  NNE**G *5
E/0j$'G:,E$$$%E%E*%EwO 
D)&&$%E%E*%EwO  &&';NG'TU 6 111' +s   A>D' D%B%D'	cli_modelc                 
  K   | s|r	|d|idg} ng g fS |:| D cg c]  }|d   d   |k(  s| }}|g k(  r| D cg c]  }|d   |k(  s| }}|} t        |       } t        | |       d{   \  }}||fS c c}w c c}w 7 w)z
    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!
!!Q'7%8%AU%JAz 	 
 b *4Q*Q,58Pq*OQ$
)J 4IG4 .** 111
 R.s1   BA7A7BA<A<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   