§
    æ˜ºh„  ã                   óŠ   — d dl mZmZmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ dZ G d	„ d
e
¦  «        ZdS )é    )ÚAnyÚDictÚListÚMappingÚOptionalN)ÚCallbackManagerForLLMRun)ÚLLM)ÚExtraÚroot_validator)Úget_from_dict_or_env)Úenforce_stop_tokens)útext2text-generationútext-generationÚsummarizationc                   óN  — e Zd ZU dZdZeed<   	 dZee         ed<   	 dZ	ee
         ed<   	 dZee         ed<    G d„ d	¦  «        Z e¦   «         d
ede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 )ÚHuggingFaceEndpointaÐ  HuggingFace Endpoint models.

    To use, you should have the ``huggingface_hub`` python package installed, and the
    environment variable ``HUGGINGFACEHUB_API_TOKEN`` set with your API token, or pass
    it as a named parameter to the constructor.

    Only supports `text-generation` and `text2text-generation` for now.

    Example:
        .. code-block:: python

            from langchain_community.llms import HuggingFaceEndpoint
            endpoint_url = (
                "https://abcdefghijklmnop.us-east-1.aws.endpoints.huggingface.cloud"
            )
            hf = HuggingFaceEndpoint(
                endpoint_url=endpoint_url,
                huggingfacehub_api_token="my-api-key"
            )
    Ú Úendpoint_urlNÚtaskÚmodel_kwargsÚhuggingfacehub_api_tokenc                   ó    — e Zd ZdZej        ZdS )úHuggingFaceEndpoint.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚforbidÚextra© ó    úu/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/huggingface_endpoint.pyÚConfigr   .   s   € € € € € Ø5Ð5à”ˆˆˆr!   r#   ÚvaluesÚreturnc                 ó  — t          |dd¦  «        }	 ddlm} 	  |d|¬¦  «                             ¦   «          n"# t          $ r}t          d¦  «        |‚d}~ww xY wn# t          $ r t          d	¦  «        ‚w xY w||d<   |S )
z?Validate that api key and python package exists in environment.r   ÚHUGGINGFACEHUB_API_TOKENr   )ÚHfApizhttps://huggingface.co)ÚendpointÚtokenzICould not authenticate with huggingface_hub. Please check your API token.NzfCould not import huggingface_hub python package. Please install it with `pip install huggingface_hub`.)r   Úhuggingface_hub.hf_apir(   ÚwhoamiÚ	ExceptionÚ
ValueErrorÚImportError)Úclsr$   r   r(   Úes        r"   Úvalidate_environmentz(HuggingFaceEndpoint.validate_environment3   sê   € õ $8ØÐ.Ð0Jñ$
ô $
Ð ð	Ø4Ð4Ð4Ð4Ð4Ð4ð	Ø�Ø5Ø2ðñ ô ÷ ’&‘(”(�(�(øÝð ð ð Ý ð3ñô ð ðøøøøðøøøð øõ ð 	ð 	ð 	ÝðHñô ð ð	øøøð
 .FˆÐ)Ñ*Øˆs+   “A š: ¹A º
AÁAÁAÁA ÁA7c                 ó>   — | j         pi }i | j        | j        dœ¥d|i¥S )zGet the identifying parameters.)r   r   r   )r   r   r   )ÚselfÚ_model_kwargss     r"   Ú_identifying_paramsz'HuggingFaceEndpoint._identifying_paramsO   s=   € ð Ô)Ð/¨Rˆð
Ø#Ô0¸$¼)ÐDÐDð
à˜}Ð-ð
ð 	
r!   c                 ó   — dS )zReturn type of llm.Úhuggingface_endpointr    )r4   s    r"   Ú	_llm_typezHuggingFaceEndpoint._llm_typeX   s
   € ð &Ð%r!   ÚpromptÚstopÚrun_managerÚkwargsc                 ó˜  — | j         pi }i |¥|¥}||dœ}d| j        › �ddœ}	 t          j        | j        ||¬¦  «        }	n.# t          j        j        $ r}
t          d|
› �¦  «        ‚d}
~
ww xY w|	                     ¦   «         }d|v rt          d	|d         › �¦  «        ‚| j	        d
k    r;|d         d         }| 
                    |¦  «        r|t          |¦  «        d…         }nT| j	        dk    r|d         d         }n:| j	        dk    r|d         d         }n t          d| j	        › dt          › d�¦  «        ‚|�t          ||¦  «        }|S )an  Call out to HuggingFace Hub's inference endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = hf("Tell me a joke.")
        )ÚinputsÚ
parameterszBearer zapplication/json)ÚAuthorizationzContent-Type)ÚheadersÚjsonz$Error raised by inference endpoint: NÚerrorzError raised by inference API: r   r   Úgenerated_textr   r   Úsummary_textzGot invalid task z, currently only z are supported)r   r   ÚrequestsÚpostr   Ú
exceptionsÚRequestExceptionr.   rC   r   Ú
startswithÚlenÚVALID_TASKSr   )r4   r:   r;   r<   r=   r5   ÚparamsÚparameter_payloadrB   Úresponser1   rE   Útexts                r"   Ú_callzHuggingFaceEndpoint._call]   sÑ  € ð* Ô)Ð/¨Rˆð -�MÐ, VÐ,ˆØ'-¸VÐDÐDÐð G tÔ'DÐFÐFØ.ð
ð 
ˆð	IÝ”}ØÔ!¨7Ð9Jðñ ô ˆHˆHøõ Ô"Ô3ð 	Ið 	Ið 	IÝÐGÀAÐGÐGÑHÔHÐHøøøøð	Iøøøà!Ÿš™œˆØ�nÐ$Ð$ÝØK°.ÀÔ2IÐKÐKñô ð ð Œ9Ð)Ò)Ð)Ø! !Ô$Ð%5Ô6ˆDà�Š˜vÑ&Ô&ð +Ø�C ™KœK˜M˜MÔ*�øØŒYÐ0Ò0Ð0Ø! !Ô$Ð%5Ô6ˆDˆDØŒY˜/Ò)Ð)Ø! !Ô$ ^Ô4ˆDˆDåð> D¤Ið >ð >Ý"-ð>ð >ð >ñô ð ð Ðõ ' t¨TÑ2Ô2ˆDØˆs   £A  Á A+ÁA&Á&A+)NN)r   r   r   r   r   ÚstrÚ__annotations__r   r   r   Údictr   r#   r   r   r2   Úpropertyr   r   r6   r9   r   r   rR   r    r!   r"   r   r      s‘  € € € € € € ðð ð* €L�#ÐÐÑØØ€Dˆ(�3Œ-ÐÐÑðIà#'€L�(˜4”.Ð'Ð'Ñ'Ø1à.2Ð˜h sœmÐ2Ð2Ñ2ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð6 ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ñ „Xð
ð ð&˜3ð &ð &ð &ñ „Xð&ð %)Ø:>ð	?ð ?àð?ð �t˜C”yÔ!ð?ð Ð6Ô7ð	?ð
 ð?ð 
ð?ð ?ð ?ð ?ð ?ð ?r!   r   )Útypingr   r   r   r   r   rG   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.pydantic_v1r
   r   Úlangchain_core.utilsr   Úlangchain_community.llms.utilsr   rM   r   r    r!   r"   ú<module>r]      sÛ   ðØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à €€€Ø =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à >Ð >Ð >Ð >Ð >Ð >àJ€ðNð Nð Nð Nð N˜#ñ Nô Nð Nð Nð Nr!   