§
    æ˜ºh½  ã                   óz   — d dl mZmZmZ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  G d„ de	¦  «        ZdS )	é    )ÚAnyÚDictÚListÚMappingÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)ÚExtraÚ	SecretStrÚroot_validator)Úconvert_to_secret_strÚget_from_dict_or_envc                   ó(  — e Zd ZU dZeed<   dZeed<   	 dZe	ed<   	 dZ
eed<   	 d	Zeed
<   	 dZeed<   	 dZe	ed<   	 dZe	ed<   	 dZe	ed<   	 g Zee         ed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZee         ed<    G d„ d¦  «        Z e¦   «         dedefd„¦   «         Ze de!eef         fd „¦   «         Z"e de!eef         fd!„¦   «         Z#e defd"„¦   «         Z$	 	 d(d#ed$eee                  d%ee%         d&edef
d'„Z&dS ))ÚNLPCloudaa  NLPCloud large language models.

    To use, you should have the ``nlpcloud`` python package installed, and the
    environment variable ``NLPCLOUD_API_KEY`` set with your API key.

    Example:
        .. code-block:: python

            from langchain_community.llms import NLPCloud
            nlpcloud = NLPCloud(model="finetuned-gpt-neox-20b")
    Úclientzfinetuned-gpt-neox-20bÚ
model_nameTÚgpuÚenÚlanggffffffæ?Útemperatureé   Ú
max_lengthÚlength_no_inputÚremove_inputÚremove_end_sequenceÚ	bad_wordsg      ð?Útop_pé2   Útop_kÚrepetition_penaltyé   Ú	num_beamsÚnum_return_sequencesNÚnlpcloud_api_keyc                   ó    — e Zd ZdZej        ZdS )úNLPCloud.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚforbidÚextra© ó    úi/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/nlpcloud.pyÚConfigr&   6   s   € € € € € Ø5Ð5à”ˆˆˆr.   r0   ÚvaluesÚreturnc                 ó  — t          t          |dd¦  «        ¦  «        |d<   	 ddl}|                     |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$   ÚNLPCLOUD_API_KEYr   Nr   r   r   )r   r   r   zXCould not import nlpcloud python package. Please install it with `pip install nlpcloud`.)r   r   ÚnlpcloudÚClientÚget_secret_valueÚImportError)Úclsr1   r5   s      r/   Úvalidate_environmentzNLPCloud.validate_environment;   s¿   € õ &;Ý  Ð);Ð=OÑPÔPñ&
ô &
ˆÐ!Ñ"ð	ØˆOˆOˆOà'ŸšØ�|Ô$ØÐ)Ô*×;Ò;Ñ=Ô=Ø˜5”MØ˜F”^ð	  /ñ  ô  ˆF�8ÑÐøõ ð 	ð 	ð 	ÝðAñô ð ð	øøøð
 ˆs   £A
A. Á.Bc                 óŒ   — | j         | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        dœS )z4Get the default parameters for calling NLPCloud API.©r   r   r   r   r   r   r   r   r    r"   r#   r<   ©Úselfs    r/   Ú_default_paramszNLPCloud._default_paramsQ   sP   € ð  Ô+Øœ/Ø#Ô3Ø Ô-Ø#'Ô#;ØœØ”ZØ”ZØ"&Ô"9ØœØ$(Ô$=ð
ð 
ð 	
r.   c                 óJ   — i d| j         i¥d| j        i¥d| j        i¥| j        ¥S )zGet the identifying parameters.r   r   r   )r   r   r   r?   r=   s    r/   Ú_identifying_paramszNLPCloud._identifying_paramsb   sH   € ð
Ø˜Tœ_Ð-ð
à�d”hÐð
ð �t”yÐ!ð
ð Ô"ð	
ð 	
r.   c                 ó   — dS )zReturn type of llm.r5   r-   r=   s    r/   Ú	_llm_typezNLPCloud._llm_typel   s	   € ð ˆzr.   ÚpromptÚstopÚrun_managerÚkwargsc                 óÚ   — |r"t          |¦  «        dk    rt          d¦  «        ‚|rt          |¦  «        dk    r	|d         }nd}i | j        ¥|¥} | j        j        |fd|i|¤Ž}|d         S )al  Call out to NLPCloud's create endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Not supported by this interface (pass in init method)

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = nlpcloud("Tell me a joke.")
        r!   zXNLPCloud only supports a single stop sequence per generation.Pass in a list of length 1.r   NÚend_sequenceÚgenerated_text)ÚlenÚ
ValueErrorr?   r   Ú
generation)r>   rD   rE   rF   rG   rI   ÚparamsÚresponses           r/   Ú_callzNLPCloud._callq   s˜   € ð* ð 	 •C˜‘I”I ’M�MÝð.ñô ð ð ð 	 •c˜$‘i”i 1’n�nØ œ7ˆLˆLàˆLØ3�DÔ(Ð3¨FÐ3ˆØ)�4”;Ô)¨&ÐVÐV¸|ÐVÈvÐVÐVˆØÐ(Ô)Ð)r.   )NN)'r'   r(   r)   r*   r   Ú__annotations__r   Ústrr   Úboolr   r   Úfloatr   Úintr   r   r   r   r   r   r   r    r"   r#   r$   r   r   r0   r   r   r:   Úpropertyr   r?   rA   rC   r   rP   r-   r.   r/   r   r   	   s•  € € € € € € ð
ð 
ð €K€K�KØ.€J�Ð.Ð.Ñ.ØØ€CˆÐÐÑØ%Ø€Dˆ#ÐÐÑØ.Ø€K�ÐÐÑØ+Ø€J�ÐÐÑØEØ €O�TÐ Ð Ñ ØSØ€L�$ÐÐÑØ-Ø $Ð˜Ð$Ð$Ñ$Ø:Ø€Iˆt�CŒyÐÐÑØ5Ø€Eˆ5ÐÐÑØDØ€Eˆ3€O€O�OØOØ #Ð˜Ð#Ð#Ñ#Ø:Ø€IˆsÐÐÑØ*Ø !Ð˜#Ð!Ð!Ñ!Ø;à,0Ð�h˜yÔ)Ð0Ð0Ñ0ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð* ð
 ¨¨c¨Ô!2ð 
ð 
ð 
ñ „Xð
ð  ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ñ „Xð
ð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	 *ð  *àð *ð �t˜C”yÔ!ð *ð Ð6Ô7ð	 *ð
 ð *ð 
ð *ð  *ð  *ð  *ð  *ð  *r.   r   N)Útypingr   r   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.pydantic_v1r
   r   r   Úlangchain_core.utilsr   r   r   r-   r.   r/   ú<module>r\      sÇ   ðØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LðH*ð H*ð H*ð H*ð H*ˆsñ H*ô H*ð H*ð H*ð H*r.   