
    7|h                     r    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y)	    )AnyDictListMappingOptional)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envpre_init)
ConfigDict	SecretStrc                      e Zd ZU dZ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<    e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(y))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")
    Nclientzfinetuned-gpt-neox-20b
model_nameTgpuenlanggffffff?temperature   
max_lengthlength_no_inputremove_inputremove_end_sequence	bad_wordsg      ?top_p2   top_krepetition_penalty   	num_beamsnum_return_sequencesnlpcloud_api_keyforbid)extravaluesreturnc                     t        t        |dd            |d<   	 ddl}|j                  |d   |d   j	                         |d   |d         |d	<   |S # t
        $ r t        d
      w xY w)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)clsr'   r+   s      `/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/nlpcloud.pyvalidate_environmentzNLPCloud.validate_environment:   s     &; );=OP&
!"	'|$)*;;=5MF^	  /  F8   	A 	s   6A A(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#   r3   selfs    r0   _default_paramszNLPCloud._default_paramsP   sg      ++//#33 --#'#;#;ZZZZ"&"9"9$($=$=
 	
    c                 r    i d| j                   id| j                  id| j                  i| j                  S )zGet the identifying parameters.r   r   r   )r   r   r   r6   r4   s    r0   _identifying_paramszNLPCloud._identifying_paramsa   sQ    
T__-
dhh
 tyy!
 ""	
 	
r7   c                      y)zReturn type of llm.r+    r4   s    r0   	_llm_typezNLPCloud._llm_typek   s     r7   promptstoprun_managerkwargsc                     |rt        |      dkD  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
ValueErrorr6   r   
generation)r5   r=   r>   r?   r@   rB   paramsresponses           r0   _callzNLPCloud._callp   s    * CIM.  c$i1n7LL3D((3F3)4;;))&V|VvV())r7   )NN))__name__
__module____qualname____doc__r   r   __annotations__r   strr   boolr   r   floatr   intr   r   r   r   r   r   r   r    r"   r#   r$   r   r   r   model_configr   r   r1   propertyr   r6   r9   r<   r   rI   r;   r7   r0   r   r   	   s   
 FC.J.C%D#.K+JE OT SL$- $$:ItCy5E5DE3OO ##:Is* !#!;,0hy)0L $ 4  * 
c!2 
 
  
WS#X%6 
 
 3   %):>	 * * tCy! * 67	 *
  * 
 *r7   r   N)typingr   r   r   r   r   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   pydanticr   r   r   r;   r7   r0   <module>rZ      s(    5 5 = 3 V V *G*s G*r7   