
    i7              	          d dl Z d dlZd dlmZmZmZmZmZ erd dlm	Z	 d dl
mZ d dlmZ dedefdZd	eee   ef   d
ed   defdZ	 dd	eee   ef   dee   deee   ef   fdZdedefdZ	 dd	eee   ef   dee   deee   ef   fdZy)    N)TYPE_CHECKINGDictListOptionalUnion)OpenAIFileObject)CredentialLiteLLMParams)verbose_loggerlitellm_paramsreturnc                     t        di | }t        j                  t        j                  |j                               j                               j                         S )zX
    Hash of the credential params, used for mapping the file id to the right model
     )r	   hashlibsha256jsondumps
model_dumpencode	hexdigest)r   sensitive_paramss     r/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/router_utils/common_utils.py,get_litellm_params_sensitive_credential_hashr      sI     /@@>>

#..0188:ik    healthy_deployments	responsesr   c                    i }t        | t              rDt        | |      D ]3  \  }}|j                  ||j	                  di       j	                  d      <   5 |S t        | t
              r| j                         D ]
  \  }}|||<    |S )z}
    Create a mapping of model name to file id
    {
        "model_id": "file_id",
        "model_id": "file_id",
    }
    
model_infoid)
isinstancelistzipr   getdictitems)r   r   model_file_id_mapping
deploymentresponsemodel_idfile_ids          r   add_model_file_id_mappingsr*      s     %t,$'(;Y$G J  "|R044T: %H !  
'	.!4!:!:!<Hg.5!(+ "=  r   request_kwargsc                    || S |j                  d      xs i }|j                  d      xs i }|j                  d      xs |j                  d      }t               }t        | t              r| S | D ]Q  }|j                  d      xs i }|j                  d      }|,||k7  s2|j	                  |j                  d             S | D cg c]'  }|j                  di       j                  d      |vr|) c}S c c}w )zM
    If a model has a team_id

    Only use if request is from that team
    metadatalitellm_metadatauser_api_key_team_idr   team_idr   )r"   setr   r#   add)	r   r+   r-   r.   request_team_idids_to_remover&   _model_infomodel_team_ids	            r   filter_team_based_modelsr7   ,   s    ""!!*-3H%))*<=Cll#9: >N>R>R?O EM%t,"")
 nn\28b#	2 O+kood34 * .-J>>,+//5]J 	-  s   	,C8r&   c                 :    | j                  di       }d|v r|d   S y)a  
    Check if a deployment supports web search.

    Priority:
    1. Check config-level override in model_info.supports_web_search
    2. Default to True (assume supported unless explicitly disabled)

    Note: Ideally we'd fall back to litellm.supports_web_search() but
    model_prices_and_context_window.json doesn't have supports_web_search
    tags on all models yet. TODO: backfill and add fallback.
    r   supports_web_searchT)r"   )r&   r   s     r   _deployment_supports_web_searchr:   O   s+     b1J
*/00r   c                 p   || S t        | t              r| S d}|j                  d      xs g }|D ].  }|j                  d      dk(  s|j                  d      dk(  s,d} n |s| S | D cg c]  }t        |      s| }}t	        |       dkD  r#t	        |      dk(  rt        j                  d       |S c c}w )	z[
    If the request is websearch, filter out deployments that don't support web search
    Ftoolstype
web_searchweb_search_previewTr   z-No deployments support web search for request)r   r#   r"   r:   lenr
   warning)r   r+   is_web_search_requestr<   tooldfinal_deploymentss          r   filter_web_search_deploymentsrF   c   s     "" %t,""!w'-2E88F|+txx/?CW/W$(!	  !"" '&a*I!*L&   !#,=(>!(CNOs   )B3:B3)N)r   r   typingr   r   r   r   r   litellm.types.llms.openair   litellm.types.routerr	   litellm._loggingr
   r#   strr   r*   r7   boolr:   rF   r   r   r   <module>rM      s      = =: 8 + # !tDz4/0!=ABT=U!	!0 &* tDz4/0 TN  4:t F  , &*tDz4/0TN 4:tr   