
    dh7                         S SK r S SKJrJrJrJrJr  S SKJr  S SK	J
r
  S SKJrJrJr  S SKJr  S SKJrJrJrJr  S SKJr  \ R0                  " \5      r " S	 S
\
5      rg)    N)AnyDictListMappingOptional)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envpre_init)
get_fields)
ConfigDictField	SecretStrmodel_validator)enforce_stop_tokensc                      \ rS rSr% SrSr\\S'    Sr\\S'    Sr	\
\S'    Sr\\S	'    S
r\\S'    Sr\\S'    Sr\\   \S'    Sr\\S'    Sr\\   \S'    \" \S9r\\
\4   \S'    Sr\\   \S'   \" SS9r\" SS9\S\\
\4   S\4S j5       5       r\ S\S\4S j5       r!\"S\\
\4   4S j5       r#\"S\$\
\4   4S j5       r%\"S\
4S j5       r&  S&S \
S!\\'\
      S"\\(   S#\S\
4
S$ jjr)S%r*g)'Petals   a  Petals Bloom models.

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

Any parameters that are valid to be passed to the call can be passed
in, even if not explicitly saved on this class.

Example:
    .. code-block:: python

        from langchain_community.llms import petals
        petals = Petals()

Nclient	tokenizerzbigscience/bloom-petals
model_namegffffff?temperature   max_new_tokensg?top_ptop_kT	do_sample
max_length)default_factorymodel_kwargshuggingface_api_keyforbid)extrabefore)modevaluesreturnc           
      \   [        U 5      R                  5        Vs1 sH  o"R                  iM     nnUR                  S0 5      n[	        U5       HP  nXS;  d  M
  XT;   a  [        SU S35      e[        R                  SU SU SU S35        UR                  U5      XE'   MR     XAS'   U$ s  snf )z>Build extra kwargs from additional params that were passed in.r!   zFound z supplied twice.z	WARNING! z/ is not default parameter.
                    zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.)	r   r'   aliasgetlist
ValueErrorloggerwarningpop)clsr'   fieldall_required_field_namesr$   
field_names         W/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/petals.pybuild_extraPetals.build_extraF   s     >H_=S=S=U#V=UEKK=U #V

>2.v,J9&$vj\9I%JKK!* .L !))34JN
 %+JJz$:! ' "'~ $Ws   B)c                     [        [        USS5      5      n SSKJn  SSKJn  US   nUR                  U5      US'   UR                  U5      US'   UR                  5       US'   U$ ! [         a    [        S	5      ef = f)
z?Validate that api key and python package exists in environment.r"   HUGGINGFACE_API_KEYr   )AutoDistributedModelForCausalLM)AutoTokenizerr   r   r   zpCould not import transformers or petals python package.Please install with `pip install -U transformers petals`.)	r
   r   petalsr:   transformersr;   from_pretrainedget_secret_valueImportError)r1   r'   r"   r:   r;   r   s         r5   validate_environmentPetals.validate_environmentZ   s     4 )>@UV
	>2-J"/"?"?
"KF;>NN F8 -@,P,P,RF()   	L 	s   AA& &A<c                     U R                   U R                  U R                  U R                  U R                  U R
                  S.n0 UEU R                  E$ )z2Get the default parameters for calling Petals API.)r   r   r   r   r   r   )r   r   r   r   r   r   r!   )selfnormal_paramss     r5   _default_paramsPetals._default_paramsr   sQ      ++"11ZZZZ//
 6-54#4#455    c                 :    0 SU R                   0EU R                  E$ )zGet the identifying parameters.r   )r   rF   rD   s    r5   _identifying_paramsPetals._identifying_params   s$     K<1JT5I5IJJrH   c                     g)zReturn type of llm.r<    rJ   s    r5   	_llm_typePetals._llm_type   s     rH   promptstoprun_managerkwargsc                     U R                   n0 UEUEnU R                  USS9S   nU R                  R                  " U40 UD6nU R                  R	                  US   5      nUb  [        X5      nU$ )zCall the Petals API.pt)return_tensors	input_idsr   )rF   r   r   generatedecoder   )	rD   rQ   rR   rS   rT   paramsinputsoutputstexts	            r5   _callPetals._call   s}     %%%F%f%t<[I++&&v88~~$$WQZ0 't2DrH   rN   )NN)+__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   strr   floatr   intr   r   r   r   boolr   r   dictr!   r   r"   r   r   model_configr   classmethodr6   r   rA   propertyrF   r   rK   rO   r   r   r_   __static_attributes__rN   rH   r5   r   r      s     FC.Is1/J/K*NCIE58E8C=$ ItH $J$=#(#>L$sCx.>! 04),3L (#c3h C   $$ $ 4  . 
6c3h 
6 
6 KWS#X%6 K K 3   %):>	 tCy! 67	
  
 rH   r   )loggingtypingr   r   r   r   r   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   langchain_core.utils.pydanticr   pydanticr   r   r   r   langchain_community.llms.utilsr   	getLoggerra   r.   r   rN   rH   r5   <module>ry      sD     5 5 = 3 V V 4 B B >			8	$KS KrH   