
    -h"                         S r SSKJrJrJrJrJrJrJr  SSK	J
r
  SSKJrJr  SSKJrJr  SSKJrJrJr  SSKJrJrJr  SSKJrJrJr  S	rS
rS\S\S\4S jr \
" SSSS9 " S S\5      5       r!g)u   
Deprecated LiteLLM wrapper.

⭐  Use `pip install langchain-litellm` and import
   `from langchain_litellm import ChatLiteLLMRouter` instead.
    )AnyAsyncIteratorIteratorListMappingOptionalType)
deprecated)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)agenerate_from_streamgenerate_from_stream)AIMessageChunkBaseMessageBaseMessageChunk)ChatGenerationChatGenerationChunk
ChatResult)ChatLiteLLM_convert_delta_to_message_chunk_convert_dict_to_messagetoken_usagemodel_extrausageparamsreturnc                 L    [         U 0nUS   nU H  nXB;  d  M
  X4   X$'   M     U$ )z%Get llm output from usage and params.metadata)token_usage_key_name)r   r   
llm_outputr   keys        ^/root/34ku/venv/lib/python3.13/site-packages/langchain_community/chat_models/litellm_router.pyget_llm_outputr#       s7    &.Jj!H &mJO      z0.3.24z1.0z#langchain_litellm.ChatLiteLLMRouter)sinceremovalalternative_importc                     ^  \ rS rSr% Sr\\S'   S\S\SS4U 4S jjr\S\	4S j5       r
S	\SS4S
 jrS\	SS4S jr   SS\\   S\\\	      S\\   S\\   S\S\4S jjr  SS\\   S\\\	      S\\   S\S\\   4
S jjr  SS\\   S\\\	      S\\   S\S\\   4
S jjr   SS\\   S\\\	      S\\   S\\   S\S\4S jjrS\\\      S\4S jrS\\	\4   S	\S\4S jrSrU =r $ )ChatLiteLLMRouter,   uA   DEPRECATED – use `langchain_litellm.ChatLiteLLMRouter` instead.routerkwargsr   Nc                6   > [         TU ]  " SSU0UD6  Xl        g)zConstruct Chat LiteLLM Router.r+   N )super__init__r+   )selfr+   r,   	__class__s      r"   r0   ChatLiteLLMRouter.__init__6   s    11&1r$   c                     g)NLiteLLMRouterr.   )r1   s    r"   	_llm_typeChatLiteLLMRouter._llm_type;   s    r$   r   c                 D    SnX!;   a  X   c  X	 UR                  S0 5        g )Napi_baser   )
setdefault)r1   r   api_base_key_names      r"   _prepare_params_for_router,ChatLiteLLMRouter._prepare_params_for_router?   s.    &&6+D+L) 	*b)r$   
model_namec                     U R                   R                  nU(       d  [        S5      eU H  nUS   U:X  d  M  Xl          g   [        SU S35      e)zSet the default model to use for completion calls.

Sets `self.model` to `model_name` if it is in the litellm router's
(`self.router`) model list. This provides the default model to use
for completion calls if no `model` kwarg is provided.
zmodel_list is None or empty.r>   NzModel z not found in model_list.)r+   
model_list
ValueErrormodel)r1   r>   r@   entrys       r"   set_default_model#ChatLiteLLMRouter.set_default_modelH   sX     [[++
;<<E\"j0'
   6*-FGHHr$   messagesstoprun_managerstreamc                 (   Ub  UOU R                   nU(       a   U R                  " U4X#S.UD6n[        U5      $ U R                  X5      u  p0 U	EUEn	U R	                  U	5        U R
                  R                  " SSU0U	D6n
U R                  " U
40 U	D6$ )N)rG   rH   rF   r.   )	streaming_streamr   _create_message_dictsr<   r+   
completion_create_chat_resultr1   rF   rG   rH   rI   r,   should_streamstream_itermessage_dictsr   responses              r"   	_generateChatLiteLLMRouter._generateX   s     #)"4$..,,#@FK (44 $ : :8 J%F%f%''/;;)) 
"

 '';F;;r$   c              +     #    [         nU R                  X5      u  pg0 UEUESS0EnU R                  U5        U R                  R                  " S	SU0UD6 Hu  n[        US   5      S:X  a  M  US   S   S   n	[        X5      nUR                  n[        US9n
U(       a(  UR                  " [        UR                  5      4SU
0UD6  U
v   Mw     g 7f
NrI   TrF   choicesr   delta)messagechunkr.   )r   rM   r<   r+   rN   lenr   r2   r   on_llm_new_tokenstrcontentr1   rF   rG   rH   r,   default_chunk_classrS   r   r\   rZ   cg_chunks              r"   rL   ChatLiteLLMRouter._streamq   s      7E $ : :8 J5F5f5h5''/[[++M]MfME5#$))$Q'0E3EOE"'//*59H,,&.6:@ N Ns   CCc                  #    [         nU R                  X5      u  pg0 UEUESS0EnU R                  U5        U R                  R                  " S	SU0UD6I S h  vN   S h  vN n[        US   5      S:X  a  M  US   S   S   n	[        X5      nUR                  n[        US9n
U(       a0  UR                  " [        UR                  5      4SU
0UD6I S h  vN   U
7v   M   N N N
 g 7frX   )r   rM   r<   r+   acompletionr]   r   r2   r   r^   r_   r`   ra   s              r"   _astreamChatLiteLLMRouter._astream   s     7E $ : :8 J5F5f5h5''/!%!8!8 "
""
&,"
 
 
 	% 5#$))$Q'0E3EOE"'//*59H!22&.6:@   N
 	
sI   AC+C#C+C)!C%"C)%A2C+C'C+%C)'C+)C+c                 X  #    Ub  UOU R                   nU(       a(  U R                  " SXUS.UD6n[        U5      I S h  vN $ U R                  X5      u  p0 U	EUEn	U R	                  U	5        U R
                  R                  " SSU0U	D6I S h  vN n
U R                  " U
40 U	D6$  Ng N7f)N)rF   rG   rH   rF   r.   )rK   rg   r   rM   r<   r+   rf   rO   rP   s              r"   
_agenerateChatLiteLLMRouter._agenerate   s      #)"4$..-- !+IOK /{;;; $ : :8 J%F%f%''/00 
"

 
 '';F;; <
s"   <B*B&AB*B(B*(B*llm_outputsc                    0 nS nU Hi  nUc  M  US   nUbC  UR                  5       R                  5        H!  u  pgXb;   a  X&   b  X&==   U-  ss'   M  XrU'   M#     Ub  MX  UR                  S5      nMk     X R                  S.nU(       a  X8S'   U$ )Nr   system_fingerprint)r   r>   )
model_dumpitemsgetrB   )	r1   rl   overall_token_usagern   outputr   kvcombineds	            r"   _combine_llm_outputs&ChatLiteLLMRouter._combine_llm_outputs   s    $&!!F~ /K&'224::<DA/4G4J4V+.!3.12A.	 =
 ")%+ZZ0D%E" " $7jjQ-?)*r$   rT   c           	          SSK Jn  / nUS    HB  n[        US   5      n[        U[	        UR                  S5      S9S9nUR                  U5        MD     UR                  SU" SSS	95      n[        U40 UD6n	[        XIS
9$ )Nr   )UsagerY   r[   finish_reason)r{   )r[   generation_infor   )prompt_tokenstotal_tokens)generationsr    )	litellm.utilsrz   r   r   dictrq   appendr#   r   )
r1   rT   r   rz   r   resr[   genr   r    s
             r"   rO   %ChatLiteLLMRouter._create_chat_result   s     	(I&C.s9~>G  $377?3K LC s# ' ll7EPQ,RS#K:6:
kIIr$   )rB   r+   )NNN)NN)!__name__
__module____qualname____firstlineno____doc__r   __annotations__r0   propertyr_   r6   r<   rD   r   r   r   r   boolr   rU   r   r   rL   r   r   rg   rj   r   rw   r   rO   __static_attributes____classcell__)r2   s   @r"   r)   r)   ,   s*    LK#   
 3  * * *IC ID I& %):>!%<{#< tCy!< 67	<
 < < 
<8 %):>	{# tCy! 67	
  
%	&8 %)?C	{# tCy! ;<	
  
*	+< %)?C!%<{#< tCy!< ;<	<
 < < 
<8Xd^0D  ,JS)J58J	J Jr$   r)   N)"r   typingr   r   r   r   r   r   r	   langchain_core._api.deprecationr
    langchain_core.callbacks.managerr   r   *langchain_core.language_models.chat_modelsr   r   langchain_core.messagesr   r   r   langchain_core.outputsr   r   r   'langchain_community.chat_models.litellmr   r   r   r   model_extra_key_namer   r#   r)   r.   r$   r"   <module>r      s    O N N 6 R Q R R  % $ 	# 	 	 	 
<
uJ uJ
uJr$   