§
    æ˜ºh  ã                   ó²   — 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mZ d dl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)ÚExtraÚFieldÚ	SecretStrÚroot_validator)Úconvert_to_secret_strÚget_from_dict_or_env)Úenforce_stop_tokensc                   óZ  — e Zd ZU dZeed<   	 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<    G d„ d¦  «        Z ed¬¦  «        deeef         deeef         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()

    ÚclientÚ	tokenizerzbigscience/bloom-petalsÚ
model_namegffffffæ?Útemperatureé   Úmax_new_tokensgÍÌÌÌÌÌì?Útop_pNÚtop_kTÚ	do_sampleÚ
max_length)Údefault_factoryÚmodel_kwargsÚhuggingface_api_keyc                   ó    — e Zd ZdZej        ZdS )úPetals.Configz'Configuration for this pydantic config.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚforbidÚextra© ó    úg/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/petals.pyÚConfigr!   A   s   € € € € € Ø5Ð5à”ˆˆˆr)   r+   )ÚpreÚvaluesÚreturnc           
      óT  — d„ | j                              ¦   «         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 r(   )Úalias)Ú.0Úfields     r*   ú	<setcomp>z%Petals.build_extra.<locals>.<setcomp>I   s   € Ð#UÐ#UÐ#U°E E¤KÐ#UÐ#UÐ#Ur)   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.)Ú
__fields__r-   ÚgetÚlistÚ
ValueErrorÚloggerÚwarningÚpop)Úclsr-   Úall_required_field_namesr'   Ú
field_names        r*   Úbuild_extrazPetals.build_extraF   sö   € ð $VÐ#U¸S¼^×=RÒ=RÑ=TÔ=TÐ#UÑ#UÔ#UÐ à—
’
˜>¨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Ñ!øØ!&ˆˆ~ÑØˆr)   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   ÚpetalsrB   ÚtransformersrC   Úfrom_pretrainedÚget_secret_valueÚImportError)r<   r-   r   rB   rC   r   s         r*   Úvalidate_environmentzPetals.validate_environmentY   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_paramsq   sE   € ð  Ô+Ø"Ô1Ø”ZØ”ZØœØœ/ð
ð 
ˆð 6�-Ð5 4Ô#4Ð5Ð5r)   c                 ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.r   )r   rM   ©rK   s    r*   Ú_identifying_paramszPetals._identifying_params~   s   € ð K�< ¤Ð1ÐJ°TÔ5IÐJÐJr)   c                 ó   — dS )zReturn type of llm.rD   r(   rO   s    r*   Ú	_llm_typezPetals._llm_typeƒ   s	   € ð ˆxr)   Ú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   )rM   r   r   ÚgenerateÚdecoder   )	rK   rS   rT   rU   rV   Ú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Øˆr)   )NN)$r"   r#   r$   r%   r   Ú__annotations__r   Ústrr   Úfloatr   Úintr   r   r   r   Úboolr   r   Údictr   r   r   r   r+   r   r?   rI   ÚpropertyrM   r   rP   rR   r   r   ra   r(   r)   r*   r   r      s£  € € € € € € ðð ð  €K€K�KØ.à€N€N�NØ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ðð ð ð ð ñ ô ð ð
 €^˜ÐÑÔð  c¨3 h¤ð °D¸¸c¸´Nð ð ð ñ Ôðð$ €^ÑÔð¨$ð °4ð ð ð ñ Ôðð. ð
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ð	ð
 ðð 
ðð ð ð ð ð r)   r   )ÚloggingÚtypingr   r   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.pydantic_v1r
   r   r   r   Úlangchain_core.utilsr   r   Úlangchain_community.llms.utilsr   Ú	getLoggerr"   r9   r   r(   r)   r*   ú<module>rq      sú   ðØ €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là >Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ðKð Kð Kð Kð KˆSñ Kô Kð Kð Kð Kr)   