Ë
    µŒjû  ã                   ó(  — d dl 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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lmZ d	ed
efd„Z ddœdee   deeeeef         ded
eeef   fd„Z! eddd¬«       G d„ dee«      «       Z"y)é    )ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚOptional)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseChatModelÚagenerate_from_streamÚgenerate_from_stream)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚChatMessageÚHumanMessageÚSystemMessage)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)Ú
ConfigDict)Ú
BaseCohereÚmessageÚreturnc                 ó¤   — t        | t        «      st        | t        «      ryt        | t        «      ryt        | t        «      ryt        d| › �«      ‚)zÀGet the role of the message.

    Args:
        message: The message.

    Returns:
        The role of the message.

    Raises:
        ValueError: If the message is of an unknown type.
    ÚUserÚChatbotÚSystemzGot unknown type )Ú
isinstancer   r   r   r   Ú
ValueError©r   s    úp/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/cohere.pyÚget_roler$      sG   € ô �'œ;Ô'¬:°g¼|Ô+LØÜ	�GœYÔ	'ØÜ	�Gœ]Ô	+ØäÐ,¨W¨IÐ6Ó7Ð7ó    N)Ú
connectorsÚmessagesr&   Úkwargsc          	      óè  — d|vrdnVt        |d   «      D ��cg c]=  \  }}|j                  |j                  j                  d«      xs dt	        |«      › �dœ‘Œ? c}}}|j                  dd«       |€|nd}|€|�dnd}| d   j                  | dd D �cg c]  }t        |«      |j                  dœ‘Œ c}|||d	œ|¥}	|	j                  «       D �
�ci c]  \  }
}|€Œ	|
|“Œ c}}
S c c}}w c c}w c c}}
w )
zàGet the request for the Cohere chat API.

    Args:
        messages: The messages.
        connectors: The connectors.
        **kwargs: The keyword arguments.

    Returns:
        The request for the Cohere chat API.
    Úsource_documentsNÚidzdoc-)Úsnippetr+   ÚAUTOéÿÿÿÿ)Úroler   )r   Úchat_historyÚ	documentsr&   Úprompt_truncation)	Ú	enumerateÚpage_contentÚmetadataÚgetÚstrÚpopÚcontentr$   Úitems)r'   r&   r(   ÚiÚdocr1   Úmaybe_connectorsr2   ÚxÚreqÚkÚvs               r#   Úget_cohere_chat_requestrB   1   s5  € ð$  VÑ+ñ 	ô $ FÐ+=Ñ$>Ô?ô
ñ
 @‘��3ð ×+Ñ+Ø—l‘l×&Ñ& tÓ,Ò?°$´s¸1³v°h°óð @ò
ð ð ‡J�JÐ! 4Ô(Ø%.Ð%6‘z¸DÐð
 Ð'¨:Ð+A‰Àtð ð
 ˜B‘<×'Ñ'àAIÈ#È2Áó
ÙAN¸A”X˜a“[¨Q¯Y©YÓ7Àñ
ð Ø&Ø.ñ	ð ð	€Cð !ŸY™Yœ[Ô:™[‘T�Q˜¨A©MˆAˆq‰D˜[Ò:Ð:ùó9
ùò&
ùó ;s   ˜AC#ÂC)Ã
C.ÃC.z0.0.30z1.0zlangchain_cohere.ChatCohere)ÚsinceÚremovalÚalternative_importc                   ó˜  — e Zd ZdZ edd¬«      Zedefd„«       Zede	ee
f   fd„«       Zede	ee
f   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e
de	ee
f   fd„Z	 	 dd	ee   d
e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f
d„Zdedefd„Zy)Ú
ChatCohereaA  `Cohere` chat large language models.

    To use, you should have the ``cohere`` python package installed, and the
    environment variable ``COHERE_API_KEY`` set with your API key, or pass
    it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.chat_models import ChatCohere
            from langchain_core.messages import HumanMessage

            chat = ChatCohere(max_tokens=256, temperature=0.75)

            messages = [HumanMessage(content="knock knock")]
            chat.invoke(messages)
    T)Úpopulate_by_nameÚarbitrary_types_allowedr   c                  ó   — y)zReturn type of chat model.zcohere-chat© ©Úselfs    r#   Ú	_llm_typezChatCohere._llm_type~   s   € ð r%   c                 ó   — d| j                   iS )z2Get the default parameters for calling Cohere API.Útemperature)rP   rL   s    r#   Ú_default_paramszChatCohere._default_paramsƒ   s   € ð ˜4×+Ñ+ð
ð 	
r%   c                 ó:   — i d| j                   i¥| j                  ¥S )zGet the identifying parameters.Úmodel)rS   rQ   rL   s    r#   Ú_identifying_paramszChatCohere._identifying_paramsŠ   s$   € ð A�7˜DŸJ™JÐ'Ð@¨4×+?Ñ+?Ð@Ð@r%   Nr'   ÚstopÚrun_managerr(   c              +   ó†  K  — t        |fi | j                  ¤|¤Ž}t        | j                  d«      r | j                  j                  di |¤Ž}n  | j                  j
                  di |¤ddi¤Ž}|D ]M  }|j                  dk(  sŒ|j                  }t        t        |¬«      ¬«      }	|r|j                  ||	¬«       |	–— ŒO y ­w©	NÚchat_streamÚstreamTztext-generation©r9   r"   )ÚchunkrK   )rB   rQ   ÚhasattrÚclientrY   ÚchatÚ
event_typeÚtextr   r   Úon_llm_new_token©
rM   r'   rU   rV   r(   ÚrequestrZ   ÚdataÚdeltar\   s
             r#   Ú_streamzChatCohere._stream�   s±   è ø€ ô *¨(ÑU°d×6JÑ6JÐUÈfÑUˆä�4—;‘; Ô.Ø,�T—[‘[×,Ñ,Ñ7¨wÑ7‰Fà%�T—[‘[×%Ñ%Ñ=¨Ñ=¸Ò=ˆFãˆDØ�‰Ð"3Ó3ØŸ	™	�Ü+´NÈ5Ô4QÔR�ÙØ×0Ñ0°¸eÐ0ÔDØ“ñ ùs   ‚B CÂ>Cc                óÔ  K  — t        |fi | j                  ¤|¤Ž}t        | j                  d«      r% | j                  j                  di |¤Žƒ d {  –—† }n( | j                  j
                  di |¤ddi¤Žƒ d {  –—† }|2 3 d {  –—† }|j                  dk(  sŒ|j                  }t        t        |¬«      ¬«      }	|r|j                  ||	¬«      ƒ d {  –—†  |	­–— Œ^7 Œ�7 Œf7 Œ]7 Œ6 y ­wrX   )rB   rQ   r]   Úasync_clientrY   r_   r`   ra   r   r   rb   rc   s
             r#   Ú_astreamzChatCohere._astream¥   sà   è ø€ ô *¨(ÑU°d×6JÑ6JÐUÈfÑUˆä�4×$Ñ$ mÔ4Ø8˜4×,Ñ,×8Ñ8ÑC¸7ÑC×C‰Fà1˜4×,Ñ,×1Ñ1ÑI°GÑIÀDÒI×IˆFá ÷ 	�$Ø�‰Ð"3Ó3ØŸ	™	�Ü+´NÈ5Ô4QÔR�ÙØ%×6Ñ6°uÀEÐ6ÓJ×JÐJØ”ð DøàIøð	øð
 Køñ !ùs`   ‚AC(ÁCÁ(C(Á9C Á:C(Â C&ÂC"ÂC&ÂC(Â:C(ÃC$ÃC(Ã C(Ã"C&Ã$C(Ã&C(Úresponsec                 óv   — |j                   |j                  |j                  |j                  |j                  dœS )z1Get the generation info from cohere API response.©r1   Ú	citationsÚsearch_resultsÚsearch_queriesÚtoken_countrm   )rM   rk   s     r#   Ú_get_generation_infozChatCohere._get_generation_info»   s;   € ð "×+Ñ+Ø!×+Ñ+Ø&×5Ñ5Ø&×5Ñ5Ø#×/Ñ/ñ
ð 	
r%   c                 ó^  — | j                   r! | j                  |f||dœ|¤Ž}t        |«      S t        |fi | j                  ¤|¤Ž} | j
                  j                  di |¤Ž}t        |j                  ¬«      }d }	t        |d«      r| j                  |«      }	t        t        ||	¬«      g¬«      S ©N)rU   rV   r[   r1   )r   Úgeneration_info)ÚgenerationsrK   )Ú	streamingrg   r   rB   rQ   r^   r_   r   ra   r]   rr   r   r   ©
rM   r'   rU   rV   r(   Ústream_iterrd   rk   r   ru   s
             r#   Ú	_generatezChatCohere._generateÅ   s¹   € ð �>Š>Ø&˜$Ÿ,™,ØðØ#°ñØ@FñˆKô (¨Ó4Ð4ä)¨(ÑU°d×6JÑ6JÐUÈfÑUˆØ#�4—;‘;×#Ñ#Ñ. gÑ.ˆä H§M¡MÔ2ˆØˆÜ�8˜[Ô)Ø"×7Ñ7¸ÓAˆOÜä wÀÔPðô
ð 	
r%   c              ‹   óz  K  — | j                   r) | j                  |f||dœ|¤Ž}t        |«      ƒ d {  –—† S t        |fi | j                  ¤|¤Ž} | j
                  j                  di |¤Ž}t        |j                  ¬«      }d }	t        |d«      r| j                  |«      }	t        t        ||	¬«      g¬«      S 7 Œ…­wrt   )rw   rj   r   rB   rQ   r^   r_   r   ra   r]   rr   r   r   rx   s
             r#   Ú
_ageneratezChatCohere._agenerateß   sÅ   è ø€ ð �>Š>Ø'˜$Ÿ-™-ØðØ#°ñØ@FñˆKô /¨{Ó;×;Ð;ä)¨(ÑU°d×6JÑ6JÐUÈfÑUˆØ#�4—;‘;×#Ñ#Ñ. gÑ.ˆä H§M¡MÔ2ˆØˆÜ�8˜[Ô)Ø"×7Ñ7¸ÓAˆOÜä wÀÔPðô
ð 	
ð <ús   ‚1B;³B9´BB;ra   c                 ó`   — t        | j                  j                  |¬«      j                  «      S )zCalculate number of tokens.)ra   )Úlenr^   ÚtokenizeÚtokens)rM   ra   s     r#   Úget_num_tokenszChatCohere.get_num_tokensù   s%   € ä�4—;‘;×'Ñ'¨TÐ'Ó2×9Ñ9Ó:Ð:r%   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úmodel_configÚpropertyr7   rN   r   r   rQ   rT   r   r   r   r   r   r   rg   r
   r   rj   rr   r   rz   r|   Úintr�   rK   r%   r#   rG   rG   c   sû  „ ññ$ ØØ $ô€Lð
 ð˜3ò ó ðð ð
  c¨3 h¡ò 
ó ð
ð ðA T¨#¨s¨(¡^ò Aó ðAð %)Ø:>ñ	à�{Ñ#ðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
Ð%Ñ	&óð2 %)Ø?Cñ	à�{Ñ#ðð �t˜C‘yÑ!ðð Ð;Ñ<ð	ð
 ðð 
Ð*Ñ	+óð,
¨Sð 
°T¸#¸s¸(±^ó 
ð %)Ø:>ñ	
à�{Ñ#ð
ð �t˜C‘yÑ!ð
ð Ð6Ñ7ð	
ð
 ð
ð 
ó
ð: %)Ø?Cñ	
à�{Ñ#ð
ð �t˜C‘yÑ!ð
ð Ð;Ñ<ð	
ð
 ð
ð 
ó
ð4; 3ð ;¨3ô ;r%   rG   )#Útypingr   r   r   r   r   r   Úlangchain_core._api.deprecationr	   Ú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   Úpydanticr   Úlangchain_community.llms.coherer   r7   r$   rB   rG   rK   r%   r#   Ú<module>r‘      sÆ   ðß E× Eå 6÷÷ñ ÷
÷ ÷ SÑ RÝ å 6ð8�kð 8 có 8ð2 26ò/;Ø�;Ñð/;ð ˜˜d 3¨ 8™nÑ-Ñ.ð/;ð ð	/;ð
 
ˆ#ˆsˆ(�^ó/;ñd Ø
˜EÐ6SôôU;� 
ó U;óñU;r%   