Ë
    µŒjÞ  ã                  ó¼   — d dl mZ d dlmZmZmZmZ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mZmZmZ d dlmZmZmZ d dlmZ dd„Zdd	„Z G d
„ dee«      Zy)é    )Úannotations)ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚOptional)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseChatModelÚagenerate_from_streamÚgenerate_from_stream)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚChatMessageÚHumanMessageÚSystemMessage)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)ÚBaseFriendlic                ó¤   — t        | t        «      st        | t        «      ryt        | t        «      ryt        | t        «      ryt        d| › �«      ‚)zßGet role of the message.

    Args:
        message (BaseMessage): The message object.

    Raises:
        ValueError: Raised when the message is of an unknown type.

    Returns:
        str: The role of the message.
    ÚuserÚ	assistantÚsystemzGot unknown type )Ú
isinstancer   r   r   r   Ú
ValueError©Úmessages    úr/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/friendli.pyÚget_roler"      sG   € ô �'œ;Ô'¬:°g¼|Ô+LØÜ�'œ9Ô%ØÜ�'œ=Ô)ØÜ
Ð(¨¨	Ð2Ó
3Ð3ó    c                ó\   — d| D �cg c]  }t        |«      |j                  dœ‘Œ c}iS c c}w )z×Get a request of the Friendli chat API.

    Args:
        messages (List[BaseMessage]): Messages comprising the conversation so far.

    Returns:
        Dict[str, Any]: The request for the Friendli chat API.
    Úmessages©ÚroleÚcontent)r"   r(   )r%   r    s     r!   Úget_chat_requestr)   0   s?   € ð 	á#ó
á#�ô ˜gÓ&°7·?±?ÓCØ#ñ
ðð ùò
s   †)c                  óþ   — e Zd ZU dZdZded<   edd„«       Zedd„«       Zedd„«       Z	edd„«       Z
	 d	 	 	 	 	 dd
„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zy	)ÚChatFriendlia3  Friendli LLM for chat.

    ``friendli-client`` package should be installed with `pip install friendli-client`.
    You must set ``FRIENDLI_TOKEN`` environment variable or provide the value of your
    personal access token for the ``friendli_token`` argument.

    Example:
        .. code-block:: python

            from langchain_community.chat_models import FriendliChat

            chat = Friendli(
                model="meta-llama-3.1-8b-instruct", friendli_token="YOUR FRIENDLI TOKEN"
            )
            chat.invoke("What is generative AI?")
    zmeta-llama-3.1-8b-instructÚstrÚmodelc                ó
   — ddiS )NÚfriendli_tokenÚFRIENDLI_TOKEN© ©Úselfs    r!   Ú
lc_secretszChatFriendli.lc_secretsU   s   € à Ð"2Ð3Ð3r#   c                óŒ   — | j                   | j                  | j                  | j                  | j                  | j
                  dœS )z@Get the default parameters for calling Friendli completions API.©Úfrequency_penaltyÚpresence_penaltyÚ
max_tokensÚstopÚtemperatureÚtop_pr6   r2   s    r!   Ú_default_paramszChatFriendli._default_paramsY   s>   € ð "&×!7Ñ!7Ø $× 5Ñ 5ØŸ/™/Ø—I‘IØ×+Ñ+Ø—Z‘Zñ
ð 	
r#   c                ó6   — d| j                   i| j                  ¥S )zGet the identifying parameters.r-   )r-   r=   r2   s    r!   Ú_identifying_paramsz ChatFriendli._identifying_paramse   s   € ð ˜Ÿ™Ð< t×';Ñ';Ð<Ð<r#   c                 ó   — y)Nzfriendli-chatr1   r2   s    r!   Ú	_llm_typezChatFriendli._llm_typej   s   € àr#   Nc                óš   — | j                   }| j                  �|�t        d«      ‚| j                  �| j                  |d<   n||d<   i |¥|¥S )z,Get the parameters used to invoke the model.z2`stop` found in both the input and default params.r:   )r=   r:   r   )r3   r:   ÚkwargsÚparamss       r!   Ú_get_invocation_paramsz#ChatFriendli._get_invocation_paramsn   sZ   € ð ×%Ñ%ˆØ�9‰9Ð  TÐ%5ÜÐQÓRÐRØ�Y‰YÐ"Ø!ŸY™YˆF�6ŠNà!ˆF�6‰NØ#�&Ð#˜FÐ#Ð#r#   c              +  óx  K  —  | j                   dd|i|¤Ž} | j                  j                  j                  j                  di t        |«      ¤d| j                  dœ¤|¤Ž}|D ]S  }|j                  d   j                  j                  }|sŒ)|r|j                  |«       t        t        |¬«      ¬«      –— ŒU y ­w©Nr:   T)Ústreamr-   r   ©r(   r   r1   )rE   ÚclientÚchatÚcompletionsÚcreater)   r-   ÚchoicesÚdeltar(   Úon_llm_new_tokenr   r   ©	r3   r%   r:   Úrun_managerrC   rD   rH   ÚchunkrO   s	            r!   Ú_streamzChatFriendli._stream{   s±   è ø€ ð -�×,Ñ,ÑA°$ÐA¸&ÑAˆØ4�—‘×!Ñ!×-Ñ-×4Ñ4ñ 
Ü˜xÓ(ð
Ø15¸T¿Z¹Zò
ØKQñ
ˆó ˆEØ—M‘M !Ñ$×*Ñ*×2Ñ2ˆEÚÙØ×0Ñ0°Ô7Ü)´.ÈÔ2OÔPÓPñ ùs   ‚B	B:Â.B:c               ó²  K  —  | j                   dd|i|¤Ž} | j                  j                  j                  j                  di t        |«      ¤d| j                  dœ¤|¤Žƒ d {  –—† }|2 3 d {  –—† }|j                  d   j                  j                  }|sŒ/|r|j                  |«      ƒ d {  –—†  t        t        |¬«      ¬«      ­–— Œd7 Œj7 Œa7 Œ"6 y ­wrG   )rE   Úasync_clientrK   rL   rM   r)   r-   rN   rO   r(   rP   r   r   rQ   s	            r!   Ú_astreamzChatFriendli._astream�   s×   è ø€ ð -�×,Ñ,ÑA°$ÐA¸&ÑAˆØ@�t×(Ñ(×-Ñ-×9Ñ9×@Ñ@ñ 
Ü˜xÓ(ð
Ø15¸T¿Z¹Zò
ØKQñ
÷ 
ˆñ "÷ 	Q�%Ø—M‘M !Ñ$×*Ñ*×2Ñ2ˆEÚÙØ%×6Ñ6°uÓ=×=Ð=Ü)´.ÈÔ2OÔPÔPð
øð	Qøð >øñ	 "ùsN   ‚A"CÁ$CÁ%CÁ+CÁ/CÁ0CÁ3&CÂCÂ0CÂ1CÃCÃCÃCc           	     óÚ  — | j                   r! | j                  |f||dœ|¤Ž}t        |«      S  | j                  d
d|i|¤Ž} | j                  j
                  j                  j                  d
|D �cg c]  }t        |«      |j                  dœ‘Œ c}d| j                  dœ|¤Ž}t        |j                  d   j                  j                  ¬«      }t        t        |¬«      g¬	«      S c c}w ©N)r:   rR   r:   r&   F)r%   rH   r-   r   rI   r   )Úgenerationsr1   )Ú	streamingrT   r   rE   rJ   rK   rL   rM   r"   r(   r-   r   rN   r    r   r   ©	r3   r%   r:   rR   rC   Ústream_iterrD   r    Úresponses	            r!   Ú	_generatezChatFriendli._generateŸ   s  € ð �>Š>Ø&˜$Ÿ,™,ØðØ#°ñØ@FñˆKô (¨Ó4Ð4à,�×,Ñ,ÑA°$ÐA¸&ÑAˆØ6�4—;‘;×#Ñ#×/Ñ/×6Ñ6ð 
ñ  (óñ
  (�Gô % WÓ-Ø&Ÿ™óð  (ñð Ø—*‘*ñ
ð ñ
ˆô  H×$4Ñ$4°QÑ$7×$?Ñ$?×$GÑ$GÔHˆÜ¤~¸gÔ'FÐ&GÔHÐHùòs   Á1C(
c           	   ‹  ó
  K  — | j                   r) | j                  |f||dœ|¤Ž}t        |«      ƒ d {  –—† S  | j                  d
d|i|¤Ž} | j                  j
                  j                  j                  d
|D �cg c]  }t        |«      |j                  dœ‘Œ c}d| j                  dœ|¤Žƒ d {  –—† }t        |j                  d   j                  j                  ¬«      }t        t        |¬«      g¬	«      S 7 ŒÆc c}w 7 ŒO­wrY   )r[   rW   r   rE   rV   rK   rL   rM   r"   r(   r-   r   rN   r    r   r   r\   s	            r!   Ú
_ageneratezChatFriendli._agenerate½   s  è ø€ ð �>Š>Ø'˜$Ÿ-™-ØðØ#°ñØ@FñˆKô /¨{Ó;×;Ð;à,�×,Ñ,ÑA°$ÐA¸&ÑAˆØB˜×*Ñ*×/Ñ/×;Ñ;×BÑBð 
ñ  (óñ
  (�Gô % WÓ-Ø&Ÿ™óð  (ñð Ø—*‘*ñ
ð ñ
÷ 
ˆô  H×$4Ñ$4°QÑ$7×$?Ñ$?×$GÑ$GÔHˆÜ¤~¸gÔ'FÐ&GÔHÐHð# <úòð
ús/   ‚1D³C:´ADÁ;C<
ÂDÂ1DÂ2A	DÃ<D)ÚreturnzDict[str, str])rb   úDict[str, Any])rb   r,   )N)r:   úOptional[List[str]]rC   r   rb   rc   )NN)
r%   úList[BaseMessage]r:   rd   rR   ú"Optional[CallbackManagerForLLMRun]rC   r   rb   zIterator[ChatGenerationChunk])
r%   re   r:   rd   rR   ú'Optional[AsyncCallbackManagerForLLMRun]rC   r   rb   z"AsyncIterator[ChatGenerationChunk])
r%   re   r:   rd   rR   rf   rC   r   rb   r   )
r%   re   r:   rd   rR   rg   rC   r   rb   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   Ú__annotations__Úpropertyr4   r=   r?   rA   rE   rT   rW   r_   ra   r1   r#   r!   r+   r+   A   s�  … ñð" .€Eˆ3Ó-àò4ó ð4ð ò	
ó ð	
ð ò=ó ð=ð òó ðð +/ð$Ø'ð$Ø:=ð$à	ó$ð  %)Ø:>ð	Qà#ðQð "ðQð 8ð	Qð
 ðQð 
'óQð* %)Ø?Cð	Qà#ðQð "ðQð =ð	Qð
 ðQð 
,óQð* %)Ø:>ð	Ià#ðIð "ðIð 8ð	Ið
 ðIð 
óIðB %)Ø?Cð	Ià#ðIð "ðIð =ð	Ið
 ðIð 
ôIr#   r+   N)r    r   rb   r,   )r%   re   rb   rc   ) Ú
__future__r   Útypingr   r   r   r   r   r	   Úlangchain_core.callbacksr
   r   Ú*langchain_core.language_models.chat_modelsr   r   r   Úlangchain_core.messagesr   r   r   r   r   r   Úlangchain_core.outputsr   r   r   Ú!langchain_community.llms.friendlir   r"   r)   r+   r1   r#   r!   Ú<module>ru      sO   ðÝ "ç E× E÷÷ñ ÷
÷ ÷ SÑ Rå :ó4ó*ô"XI�= ,õ XIr#   