
    h                         d dl mZmZmZmZ d dlmZmZ d dlZer	d dl	m
Z eZneZddddd	d
ddddddZ G d de      Zdedee   fdZdedee   dee   ded   fdZy)    )TYPE_CHECKINGAnyLiteralOptional)HTTPExceptionstatusN)Routerz/chat/completionsz/completionsz/embeddingsz/image/generationsz/audio/speechz/audio/transcriptionsz/moderationsz/rerankz
/responsesz$/responses/{response_id}/input_itemsz/images/edits)acompletionatext_completion
aembeddingaimage_generationaspeechatranscriptionamoderationarerank
aresponsesalist_input_itemsaimage_editc                   (     e Zd Zdedef fdZ xZS )ProxyModelNotFoundErrorroute
model_namec                 X    d| d| di}t         |   t        j                  |       y )Nerrorz%: Invalid model name passed in model=z:. Call `/v1/models` to view available models for your key.)status_codedetail)super__init__r   HTTP_400_BAD_REQUEST)selfr   r   r   	__class__s       [/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/proxy/route_llm_request.pyr   z ProxyModelNotFoundError.__init__   s?    wCJ<  PJ  K
 	V%@%@P    )__name__
__module____qualname__strr   __classcell__)r!   s   @r"   r   r      s    Qc Qs Q Qr#   r   datareturnc                     d| v r | d   d| d   v r| d   j                  d      S d| v r | d   d| d   v r| d   j                  d      S y)zN
    Get the team id from the data's metadata or litellm_metadata params.
    metadataNuser_api_key_team_idlitellm_metadata)get)r)   s    r"   get_team_id_from_datar0   &   sx    
 	d("d:&66J##$:;;d"#$0"d+=&>>&'++,BCCr#   
llm_router
user_model
route_type)r
   r   r   r   r   r   r   r   r   aget_responsesadelete_responsesr   
_arealtimer   agenerate_contentagenerate_content_streamallm_passthrough_routeavector_store_searchavector_store_createc                   K   t        |       }||j                  ng }d| v sd| v r,| t        ||       di | S  t        t        |       di | S d| v rK| j	                  d      }t        j
                  di |} t        ||       di | }|j                          |S |dk(  r| j                  dd      d| j                  dd      v ru|s| j                  d	d
      r |j                  di | S | j	                  d      j                  d      D 	cg c]  }	|	j                          }
}	 |j                  dd|
i| S |F||j                  | d   |      nd}||| d<    t        ||       di | S | d   |v s| d   |j                         v r t        ||       di | S |j                  $| d   |j                  v r t        ||       di | S | d   |j                  v r t        ||       di | ddiS | d   |vr|j                   j"                  r t        t        |       di | S |j$                  "t'        |j(                  j*                        dkD  r t        ||       di | S |dv rH t        ||       di | S | t        t        |       di | S |dk(  r t        t        |       di | S t,        j                  ||      }t/        || j                  dd            c c}	w w)z,
    Common helper to route the request
    Napi_keyapi_baseuser_configr
   model ,fastest_responseFmodelsspecific_deploymentTr   )r   r4   r5   r   r9   )r   r    )r0   model_namesgetattrlitellmpopr	   discardr/   "abatch_completion_fastest_responsesplitstripabatch_completionmap_team_modelget_model_idsmodel_group_aliasdeployment_namesrouter_general_settingspass_through_all_modelsdefault_deploymentlenpattern_routerpatternsROUTE_ENDPOINT_MAPPINGr   )r)   r1   r2   r3   team_idrouter_model_namesrouter_configuser_routerret_valr@   rD   team_model_name
route_names                r"   route_requestrb   9   s~    : $D)G3=3I//rDJ$.!77:*7?$??477zl4<t<<	$	/nn5}57'+*7?$? 	m#HHWb!-488GR(("88&.@:@@H4HH15'1B1H1H1MNekkmNFN/://FvFFF		 " %%d7mW= 	
 &+DM77:*7?$?? M//G}
 8 8 :: 87:*7?$?? ((4W!=!== 87:*7?$??']j99977:*7 ,0  ']"4411II8ww:,8@4@@--9z0099:Q>;wzj\;CdCC    <wzj\;CdCC		0ww:,08488	/	/0ww:,08488 (++J
CJ
!88GR( u Os   DK7K2+GK7)typingr   r   r   r   fastapir   r   rI   litellm.routerr	   _RouterLitellmRouterrZ   r   dictr'   r0   rb   rF   r#   r"   <module>ri      s    8 8 ) 0MM '&--!?" Qm Q # &r
r'r r 	 	rr#   