Ë
    µŒj7  ã                   ó¾   — 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
 d dlmZmZmZ d dlmZ d dlmZmZmZmZ d dlmZ  e j0                  e«      Z G d	„ d
e
«      Zy)é    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                   óÜ  — 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   ed<   	 dZeed<   	 dZee   ed<   	  ee¬«      Zee	ef   ed<   	 dZee   ed<    ed¬«      Z ed¬«      edee	ef   def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)%ÚPetalsa²  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           
      óT  — t        | «      j                  «       D �ch c]  }|j                  ’Œ }}|j                  di «      }t	        |«      D ]M  }||vsŒ||v rt        d|› d�«      ‚t        j                  d|› d|› d|› d�«       |j                  |«      ||<   ŒO ||d<   |S c c}w )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         úi/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/petals.pyÚbuild_extrazPetals.build_extraF   sÍ   € ô >HÈ»_×=SÑ=SÔ=UÓ#VÑ=U°E E§K£KÐ=UÐ Ð#Và—
‘
˜>¨2Ó.ˆÜ˜vž,ˆJØÐ!9Ò9Ø Ñ&Ü$ v¨j¨\Ð9IÐ%JÓKÐKÜ—‘Ø! * ð .Ø�Lð !)Ø)3¨Ð4JðNôð
 %+§J¡J¨zÓ$:��jÒ!ð 'ð "'ˆˆ~ÑØˆùò $Ws   œB%c                 óü   — t        t        |dd«      «      }	 ddlm} ddlm} |d   }|j                  |«      |d<   |j                  |«      |d<   |j                  «       |d<   |S # t        $ r t        d	«      ‚w xY w)
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   Úpetalsr8   Útransformersr9   Úfrom_pretrainedÚget_secret_valueÚImportError)r0   r&   r!   r8   r9   r   s         r4   Úvalidate_environmentzPetals.validate_environmentZ   s¡   € ô 4Ü  Ð)>Ð@UÓVó
Ðð	Ý>Ý2à Ñ-ˆJØ"/×"?Ñ"?À
Ó"KˆF�;ÑØ>×NÑNØó ˆF�8Ñð -@×,PÑ,PÓ,RˆFÐ(Ñ)ð ˆøô ò 	ÜðLóð ð	ús   ˜AA& Á&A;c                 ó¬   — | j                   | j                  | j                  | j                  | j                  | j
                  dœ}i |¥| j                  ¥S )z2Get the default parameters for calling Petals API.)r   r   r   r   r   r   )r   r   r   r   r   r   r    )ÚselfÚnormal_paramss     r4   Ú_default_paramszPetals._default_paramsr   sQ   € ð  ×+Ñ+Ø"×1Ñ1Ø—Z‘ZØ—Z‘ZØŸ™ØŸ/™/ñ
ˆð 6�-Ð5 4×#4Ñ#4Ð5Ð5ó    c                 ó:   — i d| j                   i¥| j                  ¥S )zGet the identifying parameters.r   )r   rC   ©rA   s    r4   Ú_identifying_paramszPetals._identifying_params   s$   € ð K�< §¡Ð1ÐJ°T×5IÑ5IÐJÐJrD   c                  ó   — y)zReturn type of llm.r:   © rF   s    r4   Ú	_llm_typezPetals._llm_type„   s   € ð rD   ÚpromptÚstopÚrun_managerÚkwargsc                 óè   — | j                   }i |¥|¥}| j                  |d¬«      d   } | j                  j                  |fi |¤Ž}| j                  j	                  |d   «      }|�t        ||«      }|S )zCall the Petals API.Úpt)Úreturn_tensorsÚ	input_idsr   )rC   r   r   ÚgenerateÚdecoder   )	rA   rK   rL   rM   rN   ÚparamsÚinputsÚoutputsÚtexts	            r4   Ú_callzPetals._call‰   s�   € ð ×%Ñ%ˆØ%�FÐ%˜fÐ%ˆØ—‘ °t�Ó<¸[ÑIˆØ&�$—+‘+×&Ñ& vÑ8°Ñ8ˆØ�~‰~×$Ñ$ W¨Q¡ZÓ0ˆØÐô ' t¨TÓ2ˆDØˆrD   )NN))Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   Ústrr   Úfloatr   Úintr   r   r   r   Úboolr   r   Údictr    r   r!   r   r   Úmodel_configr   Úclassmethodr5   r   r?   ÚpropertyrC   r   rG   rJ   r   r   rY   rI   rD   r4   r   r      sÏ  … ñð  €FˆCÓØ.à€IˆsÓØ1à/€J�Ó/Øà€K�ÓØ*à€N�CÓØIà€Eˆ5ÓØ8à€Eˆ8�C‰=Óð$ð €IˆtÓØHà $€J�˜‘Ó$Ø=á#(¸Ô#>€L�$�s˜C�x‘.Ó>ð!ð 04Ð˜ )Ñ,Ó3áØô€Lñ ˜(Ô#Øð  c¨3 h¡ð °Cò ó ó $ðð$ ð¨$ð °4ò ó ðð. ð
6  c¨3 h¡ò 
6ó ð
6ð ðK W¨S°#¨XÑ%6ò Kó ðKð ð˜3ò ó ðð %)Ø:>ñ	àðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
ôrD   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   Ú	getLoggerrZ   r-   r   rI   rD   r4   Ú<module>rp      sF   ðÛ ß 5Õ 5å =Ý 3ß VÑ VÝ 4ß BÓ Bå >à	ˆ×	Ñ	˜8Ó	$€ôKˆSõ KrD   