§
    šŠtjŸ!  ã                  ó|  — d dl mZ d dlZd dl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 d dl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mZmZ d dl m!Z!  ej"        e#¦  «        Z$d d„Z%d!d„Z&d!d„Z' e
ddd¬¦  «         G d„ de¦  «        ¦   «         Z( e
ddd¬¦  «         G d„ dee(¦  «        ¦   «         Z)dS )"é    )ÚannotationsN)ÚAnyÚCallableÚDictÚListÚOptional)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLLM)ÚSerializable)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init)Ú
ConfigDictÚFieldÚ	SecretStr)Úbefore_sleep_logÚretryÚretry_if_exception_typeÚstop_after_attemptÚwait_exponential)Úenforce_stop_tokensÚmax_retriesÚintÚreturnúCallable[[Any], Any]c           
     ó(  — dd l }t          |d¦  «        rt          |j        j        ¦  «        nt          t
          ¦  «        }d}d}t          dt          | ¦  «        t          d||¬¦  «        |t          t          t          j        ¦  «        ¬¦  «        S )	Nr   Úerroré   é
   Té   )Ú
multiplierÚminÚmax)ÚreraiseÚstopÚwaitr   Úbefore_sleep)ÚcohereÚhasattrr   r   ÚCohereErrorÚ	Exceptionr   r   r   r   ÚloggerÚloggingÚWARNING)r   r*   Úretry_conditionsÚmin_secondsÚmax_secondss        ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/cohere.pyÚ_create_retry_decoratorr5      s™   € Ø€M€M€Mõ
 �6˜7Ñ#Ô#ð	0Õ ¤Ô 8Ñ9Ô9Ð9å$¥YÑ/Ô/ð ð €KØ€Kõ ØÝ Ñ,Ô,Ý¨°ÀÐMÑMÔMØÝ%¥f­g¬oÑ>Ô>ðñ ô ð ó    ÚllmÚCohereÚkwargsr   c                óX   ‡ — t          ‰ j        ¦  «        }|dˆ fd„¦   «         } |di |¤ŽS )ú*Use tenacity to retry the completion call.r9   r   r   c                 ó(   •—  ‰j         j        di | ¤ŽS ©N© )ÚclientÚgenerate©r9   r7   s    €r4   Ú_completion_with_retryz5completion_with_retry.<locals>._completion_with_retry7   s   ø€ à"ˆsŒzÔ"Ð,Ð, VÐ,Ð,Ð,r6   ©r9   r   r   r   r>   ©r5   r   ©r7   r9   Úretry_decoratorrB   s   `   r4   Úcompletion_with_retryrG   3   sS   ø€ å-¨c¬oÑ>Ô>€Oàð-ð -ð -ð -ð -ñ „_ð-ð "Ð!Ð+Ð+ FÐ+Ð+Ð+r6   c                óX   ‡ — t          ‰ j        ¦  «        }|dˆ fd„¦   «         } |di |¤ŽS )r;   r9   r   r   c               ›  ó8   •K  —  ‰j         j        di | ¤Žƒ d {V —†S r=   )Úasync_clientr@   rA   s    €r4   rB   z6acompletion_with_retry.<locals>._completion_with_retryB   s5   øè è € à.�SÔ%Ô.Ð8Ð8°Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r6   rC   r>   rD   rE   s   `   r4   Úacompletion_with_retryrK   >   sS   ø€ å-¨c¬oÑ>Ô>€Oàð9ð 9ð 9ð 9ð 9ñ „_ð9ð "Ð!Ð+Ð+ FÐ+Ð+Ð+r6   z0.0.30z1.0zlangchain_cohere.BaseCohere)ÚsinceÚremovalÚalternative_importc                  óÎ   — e Zd ZU dZdZded<   dZded<    ed¬¦  «        Zded<   	 d	Z	d
ed<   	 dZ
ded<   	 dZded<    ed¬¦  «        Zded<   	 dZded<   	 edd„¦   «         ZdS )Ú
BaseCoherezBase class for Cohere models.Nr   r?   rJ   )ÚdefaultúOptional[str]Úmodelg      è?ÚfloatÚtemperaturezOptional[SecretStr]Úcohere_api_keyúOptional[List[str]]r'   FÚboolÚ	streamingÚ	langchainÚstrÚ
user_agentÚvaluesr   r   c                óf  — 	 ddl }t          t          |dd¦  «        ¦  «        |d<   |d         }|                     |d                              ¦   «         |¬¦  «        |d<   |                     |d                              ¦   «         |¬¦  «        |d<   n# t          $ r t          d	¦  «        ‚w xY w|S )
z?Validate that api key and python package exists in environment.r   NrV   ÚCOHERE_API_KEYr\   )Úapi_keyÚclient_namer?   rJ   zTCould not import cohere python package. Please install it with `pip install cohere`.)r*   r   r   ÚClientÚget_secret_valueÚAsyncClientÚImportError)Úclsr]   r*   ra   s       r4   Úvalidate_environmentzBaseCohere.validate_environmentb   sð   € ð	ØˆMˆMˆMõ (=Ý$ VÐ-=Ð?OÑPÔPñ(ô (ˆFÐ#Ñ$ð ! Ô.ˆKØ%Ÿ}š}ØÐ/Ô0×AÒAÑCÔCØ'ð  -ñ  ô  ˆF�8Ñð &,×%7Ò%7ØÐ/Ô0×AÒAÑCÔCØ'ð &8ñ &ô &ˆF�>Ñ"Ð"øõ ð 	ð 	ð 	Ýð?ñô ð ð	øøøð$ ˆs   ‚B ÂB.)r]   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r?   Ú__annotations__rJ   r   rS   rU   rV   r'   rY   r\   r   rg   r>   r6   r4   rP   rP   I   sí   € € € € € € ð (Ð'à€FÐÐÐÑØ€LÐÐÐÑØ ˜5¨Ð.Ñ.Ô.€EÐ.Ð.Ð.Ñ.Øà€KÐÐÐÑØQà*.€NÐ.Ð.Ð.Ñ.ØVà $€DÐ$Ð$Ð$Ñ$à�e EÐ*Ñ*Ô*€IÐ*Ð*Ð*Ñ*Ø(à!€JÐ!Ð!Ð!Ñ!Ø<àðð ð ñ „Xðð ð r6   rP   z0.1.14zlangchain_cohere.Coherec                  ó(  — e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 d	Zd
ed<   	 d	Z	d
ed<   	 dZ
ded<   	 dZded<   	  ed¬¦  «        Zed*d„¦   «         Zed+d„¦   «         Zed*d„¦   «         Zed,d„¦   «         Zd-d!„Zd.d#„Z	 	 d/d0d'„Z	 	 d/d1d)„ZdS )2r8   a¦  Cohere 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.llms import Cohere

            cohere = Cohere(model="gptd-instruct-tft", cohere_api_key="my-api-key")
    é   r   Ú
max_tokensr   Úkr"   Úpg        rT   Úfrequency_penaltyÚpresence_penaltyNrR   Útruncater!   r   Úforbid)Úextrar   úDict[str, Any]c                ó\   — | j         | j        | j        | j        | j        | j        | j        dœS )z2Get the default parameters for calling Cohere API.©ro   rU   rp   rq   rr   rs   rt   ry   ©Úselfs    r4   Ú_default_paramszCohere._default_params¦   s9   € ð œ/ØÔ+Ø”Ø”Ø!%Ô!7Ø $Ô 5Øœð
ð 
ð 	
r6   úDict[str, str]c                ó
   — ddiS )NrV   r_   r>   rz   s    r4   Ú
lc_secretszCohere.lc_secrets³   s   € à Ð"2Ð3Ð3r6   c                ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.rS   )rS   r|   rz   s    r4   Ú_identifying_paramszCohere._identifying_params·   s   € ð A�7˜DœJÐ'Ð@¨4Ô+?Ð@Ð@r6   r[   c                ó   — dS )zReturn type of llm.r*   r>   rz   s    r4   Ú	_llm_typezCohere._llm_type¼   s	   € ð ˆxr6   r'   rW   r9   r   Údictc                óz   — | j         }| j        �|�t          d¦  «        ‚| j        �| j        |d<   n||d<   i |¥|¥S )Nz2`stop` found in both the input and default params.Ústop_sequences)r|   r'   Ú
ValueError)r{   r'   r9   Úparamss       r4   Ú_invocation_paramszCohere._invocation_paramsÁ   sY   € ØÔ%ˆØŒ9Ð  TÐ%5ÝÐQÑRÔRÐRØŒYÐ"Ø'+¤yˆFÐ#Ñ$Ð$à'+ˆFÐ#Ñ$Ø#�&Ð#˜FÐ#Ð#r6   Úresponsec                óN   — |j         d         j        }|rt          ||¦  «        }|S )Nr   )ÚgenerationsÚtextr   )r{   rŠ   r'   r�   s       r4   Ú_process_responsezCohere._process_responseË   s0   € ØÔ# AÔ&Ô+ˆð ð 	3Ý& t¨TÑ2Ô2ˆDØˆr6   ÚpromptÚrun_managerú"Optional[CallbackManagerForLLMRun]c                óž   —  | j         |fi |¤Ž}t          | f| j        |dœ|¤Ž}|                     d¦  «        }|                      ||¦  «        S )ah  Call out to Cohere's generate endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = cohere("Tell me a joke.")
        ©rS   r�   r†   )r‰   rG   rS   ÚgetrŽ   ©r{   r�   r'   r�   r9   rˆ   rŠ   Ú_stops           r4   Ú_callzCohere._callÓ   ss   € ð* )�Ô(¨Ð8Ð8°Ð8Ð8ˆÝ(Øð
Øœ
¨6ð
ð 
Ø5;ð
ð 
ˆð —
’
Ð+Ñ,Ô,ˆØ×%Ò% h°Ñ6Ô6Ð6r6   ú'Optional[AsyncCallbackManagerForLLMRun]c              ‹  ó®   K  —  | j         |fi |¤Ž}t          | f| j        |dœ|¤Žƒ d{V —†}|                     d¦  «        }|                      ||¦  «        S )at  Async call out to Cohere's generate endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = await cohere("Tell me a joke.")
        r“   Nr†   )r‰   rK   rS   r”   rŽ   r•   s           r4   Ú_acallzCohere._acallï   s•   è è € ð* )�Ô(¨Ð8Ð8°Ð8Ð8ˆÝ/Øð
Øœ
¨6ð
ð 
Ø5;ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð —
’
Ð+Ñ,Ô,ˆØ×%Ò% h°Ñ6Ô6Ð6r6   )r   rw   )r   r}   )r   r[   )r'   rW   r9   r   r   r„   )rŠ   r   r'   rW   r   r[   )NN)
r�   r[   r'   rW   r�   r‘   r9   r   r   r[   )
r�   r[   r'   rW   r�   r˜   r9   r   r   r[   )rh   ri   rj   rk   ro   rl   rp   rq   rr   rs   rt   r   r   Úmodel_configÚpropertyr|   r   r�   rƒ   r‰   rŽ   r—   rš   r>   r6   r4   r8   r8   |   s³  € € € € € € ðð ð €JÐÐÐÑØAà€A€J€J€J�JØ@à€A€J€J€J�JØDà"ÐÐ"Ð"Ð"Ñ"ØLà!ÐÐ!Ð!Ð!Ñ!Ø5à"€HÐ"Ð"Ð"Ñ"ð0ð €KÐÐÐÑØ<à�:Øðñ ô €Lð ð

ð 

ð 

ñ „Xð

ð ð4ð 4ð 4ñ „Xð4ð ðAð Að Añ „XðAð ðð ð ñ „Xðð$ð $ð $ð $ðð ð ð ð %)Ø:>ð	7ð 7ð 7ð 7ð 7ð> %)Ø?Cð	7ð 7ð 7ð 7ð 7ð 7ð 7r6   )r   r   r   r   )r7   r8   r9   r   r   r   )*Ú
__future__r   r/   Útypingr   r   r   r   r   Úlangchain_core._api.deprecationr	   Úlangchain_core.callbacksr
   r   Ú#langchain_core.language_models.llmsr   Ú langchain_core.load.serializabler   Úlangchain_core.utilsr   r   r   Úpydanticr   r   r   Útenacityr   r   r   r   r   Úlangchain_community.llms.utilsr   Ú	getLoggerrh   r.   r5   rG   rK   rP   r8   r>   r6   r4   ú<module>r¨      sA  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ðð ð ð ð.,ð ,ð ,ð ,ð,ð ,ð ,ð ,ð €Ø
˜EÐ6Sðñ ô ð-ð -ð -ð -ð -�ñ -ô -ñô ð-ð` €�( EÐ>WÐXÑXÔXðL7ð L7ð L7ð L7ð L7ˆS�*ñ L7ô L7ñ YÔXðL7ð L7ð L7r6   