Ë
    µŒj¯"  ã                   óâ   — d Z ddlmZmZmZmZmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZ ddlmZmZmZ ddlmZmZmZ ddlmZmZmZ d	Zd
Zdededefd„Z  e
ddd¬«       G d„ de«      «       Z!y)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                 óH   — t         | i}|d   }|D ]  }||vsŒ||   ||<   Œ |S )z%Get llm output from usage and params.Úmetadata)Útoken_usage_key_name)r   r   Ú
llm_outputr   Úkeys        úx/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/litellm_router.pyÚget_llm_outputr#       s=   € ä&¨Ð.€Jà�jÑ!€HÛˆØ�jÒ à& s™mˆJ�sŠOð ð Ðó    z0.3.24z1.0z#langchain_litellm.ChatLiteLLMRouter)ÚsinceÚremovalÚalternative_importc                   ó¸  ‡ — e Zd ZU dZeed<   dededdfˆ fd„Zedefd„«       Z	deddfd	„Z
d
eddfd„Z	 	 	 ddee   deee      dee   dee   dedefd„Z	 	 ddee   deee      dee   dedee   f
d„Z	 	 ddee   deee      dee   dedee   f
d„Z	 	 	 ddee   deee      dee   dee   dedefd„Zdeee      defd„Zdeeef   dedefd„Zˆ xZS )ÚChatLiteLLMRouteruA   DEPRECATED â€“ use `langchain_litellm.ChatLiteLLMRouter` instead.ÚrouterÚkwargsr   Nc                ó6   •— t        ‰| �  dd|i|¤Ž || _        y)zConstruct Chat LiteLLM Router.r*   N© )ÚsuperÚ__init__r*   )Úselfr*   r+   Ú	__class__s      €r"   r/   zChatLiteLLMRouter.__init__6   s   ø€ ä‰ÑÑ1 Ð1¨&Ò1Øˆ�r$   c                  ó   — y)NÚLiteLLMRouterr-   )r0   s    r"   Ú	_llm_typezChatLiteLLMRouter._llm_type;   s   € àr$   r   c                 óD   — d}||v r||   €||= |j                  di «       y )NÚapi_baser   )Ú
setdefault)r0   r   Úapi_base_key_names      r"   Ú_prepare_params_for_routerz,ChatLiteLLMRouter._prepare_params_for_router?   s6   € à&ÐØ Ñ&¨6Ð2CÑ+DÐ+LØÐ(Ð)ð 	×Ñ˜* bÕ)r$   Ú
model_namec                 ó–   — | j                   j                  }|st        d«      ‚|D ]  }|d   |k(  sŒ|| _         y t        d|› d�«      ‚)a  Set 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)r0   r:   r<   Úentrys       r"   Úset_default_modelz#ChatLiteLLMRouter.set_default_modelH   sZ   € ð —[‘[×+Ñ+ˆ
ÙÜÐ;Ó<Ð<ÛˆEØ�\Ñ" jÓ0Ø'�”
Ùð  ô ˜6 * Ð-FÐGÓHÐHr$   ÚmessagesÚstopÚrun_managerÚstreamc                 ó"  — |�|n| j                   }|r! | j                  |f||dœ|¤Ž}t        |«      S | j                  ||«      \  }}	i |	¥|¥}	| j	                  |	«        | j
                  j                  dd|i|	¤Ž}
 | j                  |
fi |	¤ŽS )N)rB   rC   rA   r-   )Ú	streamingÚ_streamr   Ú_create_message_dictsr9   r*   Ú
completionÚ_create_chat_result©r0   rA   rB   rC   rD   r+   Úshould_streamÚstream_iterÚmessage_dictsr   Úresponses              r"   Ú	_generatezChatLiteLLMRouter._generateX   s½   € ð #)Ð"4™¸$¿.¹.ˆÙØ&˜$Ÿ,™,ØðØ#°ñØ@FñˆKô (¨Ó4Ð4à $× :Ñ :¸8ÀTÓ JÑˆ�vØ%�FÐ%˜fÐ%ˆØ×'Ñ'¨Ô/à)�4—;‘;×)Ñ)ñ 
Ø"ð
àñ
ˆð (ˆt×'Ñ'¨Ñ;°FÑ;Ð;r$   c              +   óœ  K  — t         }| j                  ||«      \  }}i |¥|¥ddi¥}| j                  |«        | j                  j                  d	d|i|¤ŽD ]q  }t        |d   «      dk(  rŒ|d   d   d   }	t        |	|«      }|j                  }t        |¬«      }
|r( |j                  t        |j                  «      fd|
i|¤Ž |
–— Œs y ­w©
NrD   TrA   Úchoicesr   Údelta)ÚmessageÚchunkr-   )r   rH   r9   r*   rI   Úlenr   r1   r   Úon_llm_new_tokenÚstrÚcontent©r0   rA   rB   rC   r+   Údefault_chunk_classrN   r   rV   rT   Úcg_chunks              r"   rG   zChatLiteLLMRouter._streamq   sî   è ø€ ô 7EÐØ $× :Ñ :¸8ÀTÓ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ñ5ˆØ×'Ñ'¨Ô/à+�T—[‘[×+Ñ+ÑM°]ÐMÀfÔMˆEÜ�5˜Ñ#Ó$¨Ò)ØØ˜)Ñ$ QÑ'¨Ñ0ˆEÜ3°EÐ;NÓOˆEØ"'§/¡/ÐÜ*°5Ô9ˆHÙØ,�×,Ñ,Ü˜Ÿ™Ó&ñØ.6ðØ:@òð ‹Nñ Nùs   ‚C
Cc                óÖ  K  — t         }| j                  ||«      \  }}i |¥|¥ddi¥}| j                  |«        | j                  j                  d	d|i|¤Žƒ d {  –—† 2 3 d {  –—† }t        |d   «      dk(  rŒ|d   d   d   }	t        |	|«      }|j                  }t        |¬«      }
|r0 |j                  t        |j                  «      fd|
i|¤Žƒ d {  –—†  |
­–— Œ‚7 Œ†7 Œ7 Œ6 y ­wrR   )r   rH   r9   r*   ÚacompletionrW   r   r1   r   rX   rY   rZ   r[   s              r"   Ú_astreamzChatLiteLLMRouter._astreamŠ   s"  è ø€ ô 7EÐØ $× :Ñ :¸8ÀTÓ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ñ5ˆØ×'Ñ'¨Ô/à!8 §¡×!8Ñ!8ñ "
Ø"ð"
Ø&,ñ"
÷ 
ð 
÷ 	�%ô �5˜Ñ#Ó$¨Ò)ØØ˜)Ñ$ QÑ'¨Ñ0ˆEÜ3°EÐ;NÓOˆEØ"'§/¡/ÐÜ*°5Ô9ˆHÙØ2�k×2Ñ2Ü˜Ÿ™Ó&ñØ.6ðØ:@ñ÷ ð ð ŒNð
øð 	øðøñ
ùsI   ‚AC)ÁC!ÁC)ÁC'Á#C#Á$C'Á'A/C)ÃC%ÃC)Ã#C'Ã%C)Ã'C)c              ‹   óR  K  — |�|n| j                   }|r) | j                  d|||dœ|¤Ž}t        |«      ƒ d {  –—† S | j                  ||«      \  }}	i |	¥|¥}	| j	                  |	«        | j
                  j                  dd|i|	¤Žƒ d {  –—† }
 | j                  |
fi |	¤ŽS 7 Œi7 Œ­w)N)rA   rB   rC   rA   r-   )rF   r`   r   rH   r9   r*   r_   rJ   rK   s              r"   Ú
_ageneratezChatLiteLLMRouter._agenerate¥   sÓ   è ø€ ð #)Ð"4™¸$¿.¹.ˆÙØ'˜$Ÿ-™-ð Ø!¨¸+ñØIOñˆKô /¨{Ó;×;Ð;à $× :Ñ :¸8ÀTÓ JÑˆ�vØ%�FÐ%˜fÐ%ˆØ×'Ñ'¨Ô/à0˜Ÿ™×0Ñ0ñ 
Ø"ð
àñ
÷ 
ˆð (ˆt×'Ñ'¨Ñ;°FÑ;Ð;ð <øð
ús"   ‚7B'¹B#ºAB'ÂB%ÂB'Â%B'Úllm_outputsc                 ó  — i }d }|D ]b  }|€Œ|d   }|�B|j                  «       j                  «       D ]!  \  }}||v r||   �||xx   |z  cc<   Œ|||<   Œ# |�ŒR|j                  d«      }Œd || j                  dœ}|r||d<   |S )Nr   Úsystem_fingerprint)r   r:   )Ú
model_dumpÚitemsÚgetr>   )	r0   rc   Úoverall_token_usagere   Úoutputr   ÚkÚvÚcombineds	            r"   Ú_combine_llm_outputsz&ChatLiteLLMRouter._combine_llm_outputsÁ   sº   € Ø$&ÐØ!ÐÛ!ˆFØˆ~àØ  Ñ/ˆKØÐ&à'×2Ñ2Ó4×:Ñ:Ö<‘D�A�qØÐ/Ñ/Ð4GÈÑ4JÐ4VØ+¨AÓ.°!Ñ3Ô.à12Ð+¨AÒ.ð	 =ð
 "Ñ)Ø%+§Z¡ZÐ0DÓ%EÑ"ð "ð $7ÀdÇjÁjÑQˆÙØ-?ˆHÐ)Ñ*Øˆr$   rO   c           	      ó  — ddl m} g }|d   D ]G  }t        |d   «      }t        |t	        |j                  d«      ¬«      ¬«      }|j                  |«       ŒI |j                  d |dd¬	«      «      }t        |fi |¤Ž}	t        ||	¬
«      S )Nr   )ÚUsagerS   rU   Úfinish_reason)rq   )rU   Úgeneration_infor   )Úprompt_tokensÚtotal_tokens)Úgenerationsr    )	Úlitellm.utilsrp   r   r   Údictrh   Úappendr#   r   )
r0   rO   r   rp   ru   ÚresrU   Úgenr   r    s
             r"   rJ   z%ChatLiteLLMRouter._create_chat_result×   s�   € õ 	(àˆØ˜IÔ&ˆCÜ.¨s°9©~Ó>ˆGÜ ØÜ $°3·7±7¸?Ó3KÔ LôˆCð ×Ñ˜sÕ#ð 'ð —l‘l 7©EÀÐPQÔ,RÓSˆÜ# KÑ:°6Ñ:ˆ
Ü k¸jÔIÐIr$   )NNN)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r/   ÚpropertyrY   r4   r9   r@   r   r   r   r   Úboolr   rP   r   r   rG   r   r   r`   rb   rw   rn   r   rJ   Ú__classcell__)r1   s   @r"   r)   r)   ,   s$  ø… ñ LàƒKð #ð °ð ¸õ ð
 ð˜3ò ó ðð*°ð *¸ó *ðI¨Cð I°Dó Ið& %)Ø:>Ø!%ñ<à�{Ñ#ð<ð �t˜C‘yÑ!ð<ð Ð6Ñ7ð	<ð
 ˜‘ð<ð ð<ð 
ó<ð8 %)Ø:>ñ	à�{Ñ#ðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
Ð%Ñ	&óð8 %)Ø?Cñ	à�{Ñ#ðð �t˜C‘yÑ!ðð Ð;Ñ<ð	ð
 ðð 
Ð*Ñ	+óð< %)Ø?CØ!%ñ<à�{Ñ#ð<ð �t˜C‘yÑ!ð<ð Ð;Ñ<ð	<ð
 ˜‘ð<ð ð<ð 
ó<ð8°°X¸d±^Ñ0Dð Èó ð,JØ  S Ñ)ðJØ58ð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_namerw   r#   r)   r-   r$   r"   Ú<module>r‹      s“   ðñ÷ O× NÑ Nå 6÷÷÷ RÑ Qß RÑ R÷ñ ð %Ð Ø$Ð ð	˜#ð 	¨ð 	°ó 	ñ Ø
ØØ<ôô
uJ˜ó uJóñ
uJr$   