§
    æ˜ºh2  ã                   ó†   — 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 d dlmZ d dlmZ dZdZ G d	„ d
e	¦  «        ZdS )é    )ÚAnyÚDictÚListÚMappingÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)ÚExtraÚroot_validator)Úget_from_dict_or_env)Úenforce_stop_tokensÚgpt2)útext2text-generationútext-generationÚsummarizationc                   óX  — e Zd ZU dZeed<   e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 )ÚHuggingFaceHuba  HuggingFaceHub  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`, `text2text-generation` and `summarization` for now.

    Example:
        .. code-block:: python

            from langchain_community.llms import HuggingFaceHub
            hf = HuggingFaceHub(repo_id="gpt2", huggingfacehub_api_token="my-api-key")
    ÚclientÚrepo_idNÚtaskÚmodel_kwargsÚhuggingfacehub_api_tokenc                   ó    — e Zd ZdZej        ZdS )úHuggingFaceHub.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚforbidÚextra© ó    úp/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/huggingface_hub.pyÚConfigr   )   s   € € € € € Ø5Ð5à”ˆˆˆr"   r$   ÚvaluesÚreturnc                 ó*  — t          |dd¦  «        }	 ddlm} |d         } ||||                     d¦  «        ¬¦  «        }|j        t
          vr t          d|j        › d	t
          › d
�¦  «        ‚||d<   n# t          $ r t          d¦  «        ‚w xY w|S )z?Validate that api key and python package exists in environment.r   ÚHUGGINGFACEHUB_API_TOKENr   )ÚInferenceApir   r   )r   Útokenr   úGot invalid task ú, currently only ú are supportedr   zfCould not import huggingface_hub python package. Please install it with `pip install huggingface_hub`.)r   Úhuggingface_hub.inference_apir)   Úgetr   ÚVALID_TASKSÚ
ValueErrorÚImportError)Úclsr%   r   r)   r   r   s         r#   Úvalidate_environmentz#HuggingFaceHub.validate_environment.   sþ   € õ $8ØÐ.Ð0Jñ$
ô $
Ð ð	ØBÐBÐBÐBÐBÐBà˜YÔ'ˆGØ!�\ØØ.Ø—Z’Z Ñ'Ô'ðñ ô ˆFð
 Œ{¥+Ð-Ð-Ý ðB¨¬ð Bð BÝ&1ðBð Bð Bñô ð ð  &ˆF�8ÑÐøÝð 	ð 	ð 	ÝðHñô ð ð	øøøð
 ˆs   “A"A6 Á6B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"HuggingFaceHub._identifying_paramsJ   s<   € ð Ô)Ð/¨Rˆð
Øœ,°´	Ð:Ð:ð
à˜}Ð-ð
ð 	
r"   c                 ó   — dS )zReturn type of llm.Úhuggingface_hubr!   )r6   s    r#   Ú	_llm_typezHuggingFaceHub._llm_typeS   s
   € ð !Ð r"   ÚpromptÚstopÚrun_managerÚkwargsc                 óÜ  — | j         pi }i |¥|¥}|                      ||¬¦  «        }d|v rt          d|d         › �¦  «        ‚| j        j        dk    r$|d         d         t	          |¦  «        d…         }nc| j        j        dk    r|d         d         }nD| j        j        d	k    r|d         d
         }n%t          d| j        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ÚparamsÚerrorzError raised by inference API: r   r   Úgenerated_textNr   r   Úsummary_textr+   r,   r-   )r   r   r1   r   Úlenr0   r   )	r6   r<   r=   r>   r?   r7   rB   ÚresponseÚtexts	            r#   Ú_callzHuggingFaceHub._callX   s'  € ð* Ô)Ð/¨RˆØ,�MÐ, VÐ,ˆØ—;’; f°V�;Ñ<Ô<ˆØ�hÐÐÝÐR¸xÈÔ?PÐRÐRÑSÔSÐSØŒ;ÔÐ0Ò0Ð0à˜A”;Ð/Ô0µ°V±´°°Ô?ˆDˆDØŒ[ÔÐ!7Ò7Ð7Ø˜A”;Ð/Ô0ˆDˆDØŒ[Ô Ò0Ð0Ø˜A”;˜~Ô.ˆDˆDåð> D¤KÔ$4ð >ð >Ý"-ð>ð >ð >ñô ð ð Ðõ ' t¨TÑ2Ô2ˆDØˆr"   )NN)r   r   r   r   r   Ú__annotations__ÚDEFAULT_REPO_IDr   Ústrr   r   r   Údictr   r$   r   r   r4   Úpropertyr   r8   r;   r   r   rI   r!   r"   r#   r   r      sš  € € € € € € ðð ð €K€K�KØ"€GˆSÐ"Ð"Ñ"ØØ€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   N)Útypingr   r   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.pydantic_v1r
   r   Úlangchain_core.utilsr   Úlangchain_community.llms.utilsr   rK   r0   r   r!   r"   r#   ú<module>rU      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€ðtð tð tð tð t�Sñ tô tð tð tð tr"   