§
    šŠtjÞ  ã                  óÄ   — 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dS )é    )Ú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)ÚBaseFriendliÚmessager   ÚreturnÚstrc                óÚ   — t          | t          ¦  «        st          | t          ¦  «        rdS t          | t          ¦  «        rdS t          | t          ¦  «        rdS 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©r   s    úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chat_models/friendli.pyÚget_roler$      sq   € õ �'�;Ñ'Ô'ð ­:°g½|Ñ+LÔ+Lð ØˆvÝ�'�9Ñ%Ô%ð Øˆ{Ý�'�=Ñ)Ô)ð ØˆxÝ
Ð2¨Ð2Ð2Ñ
3Ô
3Ð3ó    ÚmessagesúList[BaseMessage]úDict[str, Any]c                ó   — dd„ | D ¦   «         iS )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.
    r&   c                ó<   — g | ]}t          |¦  «        |j        d œ‘ŒS ©)ÚroleÚcontent©r$   r-   ©Ú.0r   s     r#   ú
<listcomp>z$get_chat_request.<locals>.<listcomp>:   s:   € ð 
ð 
ð 
àõ ˜gÑ&Ô&°7´?ÐCÐCð
ð 
ð 
r%   © )r&   s    r#   Úget_chat_requestr3   0   s-   € ð 	ð 
ð 
à#ð
ñ 
ô 
ðð r%   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dS )(Ú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-instructr   Úmodelr   úDict[str, str]c                ó
   — ddiS )NÚfriendli_tokenÚFRIENDLI_TOKENr2   ©Úselfs    r#   Ú
lc_secretszChatFriendli.lc_secretsU   s   € à Ð"2Ð3Ð3r%   r(   c                óP   — | 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_pr?   r;   s    r#   Ú_default_paramszChatFriendli._default_paramsY   s4   € ð "&Ô!7Ø $Ô 5Øœ/Ø”IØÔ+Ø”Zð
ð 
ð 	
r%   c                ó"   — d| j         i| j        ¥S )zGet the identifying parameters.r6   )r6   rF   r;   s    r#   Ú_identifying_paramsz ChatFriendli._identifying_paramse   s   € ð ˜œÐ< tÔ';Ð<Ð<r%   c                ó   — dS )Nzfriendli-chatr2   r;   s    r#   Ú	_llm_typezChatFriendli._llm_typej   s   € àˆr%   NrC   úOptional[List[str]]Úkwargsr   c                óz   — | j         }| j        �|�t          d¦  «        ‚| j        �| j        |d<   n||d<   i |¥|¥S )z,Get the parameters used to invoke the model.Nz2`stop` found in both the input and default params.rC   )rF   rC   r!   )r<   rC   rL   Úparamss       r#   Ú_get_invocation_paramsz#ChatFriendli._get_invocation_paramsn   sV   € ð Ô%ˆØŒ9Ð  TÐ%5ÝÐQÑRÔRÐRØŒYÐ"Ø!œYˆF�6‰NˆNà!ˆF�6‰NØ#�&Ð#˜FÐ#Ð#r%   r&   r'   Úrun_managerú"Optional[CallbackManagerForLLMRun]úIterator[ChatGenerationChunk]c              +  ó<  K  —  | j         dd|i|¤Ž} | j        j        j        j        di t          |¦  «        ¤d| j        dœ¤|¤Ž}|D ]R}|j        d         j        j	        }|r7|r| 
                    |¦  «         t          t          |¬¦  «        ¬¦  «        V — ŒSd S ©NrC   T)Ústreamr6   r   ©r-   r"   r2   )rO   ÚclientÚchatÚcompletionsÚcreater3   r6   ÚchoicesÚdeltar-   Úon_llm_new_tokenr   r   ©	r<   r&   rC   rP   rL   rN   rU   Úchunkr\   s	            r#   Ú_streamzChatFriendli._stream{   sí   è è € ð -�Ô,ÐAÐA°$ÐA¸&ÐAÐAˆØ4�”Ô!Ô-Ô4ð 
ð 
Ý˜xÑ(Ô(ð
Ø15¸T¼Zð
ð 
ð 
ØKQð
ð 
ˆð ð 	Qð 	QˆEØ”M !Ô$Ô*Ô2ˆEØð QØð 8Ø×0Ò0°Ñ7Ô7Ð7Ý)µ.ÈÐ2OÑ2OÔ2OÐPÑPÔPÐPÐPÐPøð	Qð 	Qr%   ú'Optional[AsyncCallbackManagerForLLMRun]ú"AsyncIterator[ChatGenerationChunk]c               ób  K  —  | j         dd|i|¤Ž} | j        j        j        j        di t          |¦  «        ¤d| j        dœ¤|¤Žƒ d {V —†}|2 3 d {V —†}|j        d         j        j	        }|r>|r| 
                    |¦  «        ƒ d {V —† t          t          |¬¦  «        ¬¦  «        W V — Œ_6 d S rT   )rO   Úasync_clientrX   rY   rZ   r3   r6   r[   r\   r-   r]   r   r   r^   s	            r#   Ú_astreamzChatFriendli._astream�   s<  è è € ð -�Ô,ÐAÐA°$ÐA¸&ÐAÐAˆØ@�tÔ(Ô-Ô9Ô@ð 
ð 
Ý˜xÑ(Ô(ð
Ø15¸T¼Zð
ð 
ð 
ØKQð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð "ð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Q�%Ø”M !Ô$Ô*Ô2ˆEØð QØð >Ø%×6Ò6°uÑ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ý)µ.ÈÐ2OÑ2OÔ2OÐPÑPÔPÐPÐPÐPÐPøð "˜6˜6s   ÁB.r   c                óT  — | j         r  | j        |f||dœ|¤Ž}t          |¦  «        S  | j        d
d|i|¤Ž} | j        j        j        j        d
d„ |D ¦   «         d| j        dœ|¤Ž}t          |j
        d         j        j        ¬¦  «        }t          t          |¬¦  «        g¬	¦  «        S )N©rC   rP   rC   c                ó<   — g | ]}t          |¦  «        |j        d œ‘ŒS r+   r.   r/   s     r#   r1   z*ChatFriendli._generate.<locals>.<listcomp>®   óA   € ð ð ð ð
 õ % WÑ-Ô-Ø&œðð ðð ð r%   F©r&   rU   r6   r   rV   r"   ©Úgenerationsr2   )Ú	streamingr`   r   rO   rW   rX   rY   rZ   r6   r   r[   r   r-   r   r   ©	r<   r&   rC   rP   rL   Ústream_iterrN   Úresponser   s	            r#   Ú	_generatezChatFriendli._generateŸ   sÿ   € ð Œ>ð 	5Ø&˜$œ,ØðØ#°ðð Ø@Fðð ˆKõ (¨Ñ4Ô4Ð4à,�Ô,ÐAÐA°$ÐA¸&ÐAÐAˆØ6�4”;Ô#Ô/Ô6ð 
ðð ð
  (ðñ ô ð Ø”*ð
ð 
ð ð
ð 
ˆõ  HÔ$4°QÔ$7Ô$?Ô$GÐHÑHÔHˆÝ¥~¸gÐ'FÑ'FÔ'FÐ&GÐHÑHÔHÐHr%   c              ‹  óp  K  — | j         r& | j        |f||dœ|¤Ž}t          |¦  «        ƒ d {V —†S  | j        d
d|i|¤Ž} | j        j        j        j        d
d„ |D ¦   «         d| j        dœ|¤Žƒ d {V —†}t          |j
        d         j        j        ¬¦  «        }t          t          |¬¦  «        g¬	¦  «        S )Nrg   rC   c                ó<   — g | ]}t          |¦  «        |j        d œ‘ŒS r+   r.   r/   s     r#   r1   z+ChatFriendli._agenerate.<locals>.<listcomp>Ì   ri   r%   Frj   r   rV   r"   rk   r2   )rm   re   r   rO   rd   rX   rY   rZ   r6   r   r[   r   r-   r   r   rn   s	            r#   Ú
_ageneratezChatFriendli._agenerate½   s4  è è € ð Œ>ð 	<Ø'˜$œ-ØðØ#°ðð Ø@Fðð ˆKõ /¨{Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;à,�Ô,ÐAÐA°$ÐA¸&ÐAÐAˆØB˜Ô*Ô/Ô;ÔBð 
ðð ð
  (ðñ ô ð Ø”*ð
ð 
ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ  HÔ$4°QÔ$7Ô$?Ô$GÐHÑHÔHˆÝ¥~¸gÐ'FÑ'FÔ'FÐ&GÐHÑHÔHÐHr%   )r   r7   )r   r(   )r   r   )N)rC   rK   rL   r   r   r(   )NN)
r&   r'   rC   rK   rP   rQ   rL   r   r   rR   )
r&   r'   rC   rK   rP   ra   rL   r   r   rb   )
r&   r'   rC   rK   rP   rQ   rL   r   r   r   )
r&   r'   rC   rK   rP   ra   rL   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   Ú__annotations__Úpropertyr=   rF   rH   rJ   rO   r`   re   rq   rt   r2   r%   r#   r5   r5   A   sj  € € € € € € ðð ð" .€EÐ-Ð-Ð-Ñ-àð4ð 4ð 4ñ „Xð4ð ð	
ð 	
ð 	
ñ „Xð	
ð ð=ð =ð =ñ „Xð=ð ðð ð ñ „Xðð +/ð$ð $ð $ð $ð $ð  %)Ø:>ð	Qð Qð Qð Qð Qð* %)Ø?Cð	Qð Qð Qð Qð Qð* %)Ø:>ð	Ið Ið Ið Ið IðB %)Ø?Cð	Ið Ið Ið Ið Ið Ið Ir%   r5   N)r   r   r   r   )r&   r'   r   r(   ) Ú
__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$   r3   r5   r2   r%   r#   ú<module>r‚      s–  ðØ "Ð "Ð "Ð "Ð "Ð "à EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rà :Ð :Ð :Ð :Ð :Ð :ð4ð 4ð 4ð 4ð*ð ð ð ð"XIð XIð XIð XIð XI�= ,ñ XIô XIð XIð XIð XIr%   