§
    šŠtj7  ã                   óÂ   — 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 j        e¦  «        Z G d	„ d
e
¦  «        ZdS )é    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                   óP  — 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(dS )%Ú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           
      ód  — d„ t          | ¦  «                             ¦   «         D ¦   «         }|                     di ¦  «        }t          |¦  «        D ]Y}||vrS||v rt	          d|› d�¦  «        ‚t
                               d|› d|› d|› d�¦  «         |                     |¦  «        ||<   ŒZ||d<   |S )	z>Build extra kwargs from additional params that were passed in.c                 ó   — h | ]	}|j         ’Œ
S © )Úalias)Ú.0Úfields     ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/petals.pyú	<setcomp>z%Petals.build_extra.<locals>.<setcomp>J   s   € Ð#VÐ#VÐ#V°E E¤KÐ#VÐ#VÐ#Vó    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&   ÚgetÚlistÚ
ValueErrorÚloggerÚwarningÚpop)Úclsr&   Úall_required_field_namesr#   Ú
field_names        r.   Úbuild_extrazPetals.build_extraF   sú   € ð $WÐ#V½ZÈ¹_¼_×=SÒ=SÑ=UÔ=UÐ#VÑ#VÔ#VÐ à—
’
˜>¨2Ñ.Ô.ˆÝ˜v™,œ,ð 		;ð 		;ˆJØÐ!9Ð9Ð9Ø Ð&Ð&Ý$Ð%J¨jÐ%JÐ%JÐ%JÑKÔKÐKÝ—’ðN *ð Nð NØðNð Nà)3ðNð Nð Nñô ð ð
 %+§J¢J¨zÑ$:Ô$:��jÑ!øØ!&ˆˆ~ÑØˆr0   c                 ó6  — t          t          |dd¦  «        ¦  «        }	 ddlm} ddlm} |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!   Ú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)r7   r&   r!   r=   r>   r   s         r.   Úvalidate_environmentzPetals.validate_environmentZ   sä   € õ 4Ý  Ð)>Ð@UÑVÔVñ
ô 
Ðð	Ø>Ð>Ð>Ð>Ð>Ð>Ø2Ð2Ð2Ð2Ð2Ð2à Ô-ˆJØ"/×"?Ò"?À
Ñ"KÔ"KˆF�;ÑØ>×NÒNØñ ô  ˆF�8Ñð -@×,PÒ,PÑ,RÔ,RˆFÐ(Ñ)Ð)øåð 	ð 	ð 	ÝðLñô ð ð	øøøð
 ˆs    AA< Á<Bc                 óf   — | 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     r.   Ú_default_paramszPetals._default_paramsr   sE   € ð  Ô+Ø"Ô1Ø”ZØ”ZØœØœ/ð
ð 
ˆð 6�-Ð5 4Ô#4Ð5Ð5r0   c                 ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.r   )r   rH   ©rF   s    r.   Ú_identifying_paramszPetals._identifying_params   s   € ð K�< ¤Ð1ÐJ°TÔ5IÐJÐJr0   c                 ó   — dS )zReturn type of llm.r?   r*   rJ   s    r.   Ú	_llm_typezPetals._llm_type„   s	   € ð ˆxr0   ÚpromptÚstopÚrun_managerÚkwargsc                 óä   — | j         }i |¥|¥}|                      |d¬¦  «        d         } | j        j        |fi |¤Ž}| j                             |d         ¦  «        }|�t          ||¦  «        }|S )zCall the Petals API.Úpt)Úreturn_tensorsÚ	input_idsr   )rH   r   r   ÚgenerateÚdecoder   )	rF   rN   rO   rP   rQ   ÚparamsÚinputsÚoutputsÚtexts	            r.   Ú_callzPetals._call‰   s†   € ð Ô%ˆØ%�FÐ%˜fÐ%ˆØ—’ °t�Ñ<Ô<¸[ÔIˆØ&�$”+Ô& vÐ8Ð8°Ð8Ð8ˆØŒ~×$Ò$ W¨Q¤ZÑ0Ô0ˆØÐõ ' t¨TÑ2Ô2ˆDØˆr0   )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   Úclassmethodr:   r   rD   ÚpropertyrH   r   rK   rM   r   r   r\   r*   r0   r.   r   r      s›  € € € € € € ðð ð  €FˆCÐÐÑØ.à€IˆsÐÐÑØ1à/€J�Ð/Ð/Ñ/Øà€K�ÐÐÑØ*à€N�CÐÐÑØIà€Eˆ5ÐÐÑØ8à€Eˆ8�CŒ=ÐÐÑð$ð €IˆtÐÐÑØHà $€J�˜”Ð$Ð$Ñ$Ø=à#( 5¸Ð#>Ñ#>Ô#>€L�$�s˜C�x”.Ð>Ð>Ñ>ð!ð 04Ð˜ )Ô,Ð3Ð3Ñ3à�:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð  c¨3 h¤ð °Cð ð ð ñ „[ñ $Ô#ðð$ ð¨$ð °4ð ð ð ñ „Xðð. ð
6  c¨3 h¤ð 
6ð 
6ð 
6ñ „Xð
6ð ðK W¨S°#¨XÔ%6ð Kð Kð Kñ „XðKð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	ð àðð �t˜C”yÔ!ðð Ð6Ô7ð	ð
 ðð 
ðð ð ð ð ð r0   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   Ú	getLoggerr]   r4   r   r*   r0   r.   ú<module>rs      s  ðØ €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà >Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ðKð Kð Kð Kð KˆSñ Kô Kð Kð Kð Kr0   