
    g              	           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Z G d de      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/rerank)acompletionatext_completion
aembeddingaimage_generationaspeechatranscriptionamoderationarerankc                   (     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       T/var/www/openai/venv/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
llm_router
user_model
route_type)	r
   r   r   r   r   r   r   r   
_arealtimec                   K   ||j                   ng }d| v sd| v r t        t        |       di | S d| v r9| j                  d      }t        j                  di |} t        ||       di | 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 || 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k(  r, t        ||       di | S | t        t        |       di | S t&        j                  ||      }	t)        |	| j                  dd            c c}w w)z-
    Common helper to route the request

    api_keyapi_baseuser_configr
   model ,fastest_responseFmodelsspecific_deploymentTr   r   )r   r    )model_namesgetattrlitellmpopr	   get"abatch_completion_fastest_responsesplitstripabatch_completion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&   r'   r(   r)   router_model_namesrouter_configuser_routerr/   r3   
route_names
             r   route_requestrM   #   s    * 4>3I//rDJ$.0ww:,08488	$	/nn5}54w{zl4<t<< 	m#HHWb!-488GR(("88&.@:@@H4HH15'1B1H1H1MN1Mekkm1MFN/://FvFFF		M//G}
 8 8 ::77:*7?$?? ((4W!=!==77:*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 (++J
CJ
!88GR( K Os   C I7"I29E>I7)typingr   r   r   r   fastapir   r   r8   litellm.routerr	   _RouterLitellmRouterrH   r   dictr$   rM   r5   r    r   <module>rT      s    8 8 ) 0MM '&--!	 Qm QO
O'O O 	
	Or    