Ë
    µŒj‹  ã                   ón   — d dl Z d dlmZmZ d dlmZ d dlmZ  e j                  e	«      Z
 G d„ de«      Zy)é    N)ÚAnyÚOptional)ÚLLM)ÚIpexLLMc                   ó°   — e Zd ZdZe	 dddddœdedee   dee   ded	ee   d
e	de
fd„«       Ze	 dddœdedee   dee   d
e	de
f
d„«       Zedefd„«       Zy)ÚBigdlLLMzÔWrapper around the BigdlLLM model

    Example:
        .. code-block:: python

            from langchain_community.llms import BigdlLLM
            llm = BigdlLLM.from_model_id(model_id="THUDM/chatglm-6b")
    NT)Útokenizer_idÚload_in_4bitÚload_in_low_bitÚmodel_idÚmodel_kwargsr	   r
   r   ÚkwargsÚreturnc                ó>  — t         j                  d«       	 ddlm}m} ddlm}	m}
 |�t         j                  d«       |st        d«      ‚|xs i }|xs |}	  |	j                  |fi |¤Ž}	  |j                  |fdd	i|¤Ž}d
|v r)|j                  «       D ��ci c]  \  }}|d
k7  sŒ||“Œ }}} | d||||dœ|¤ŽS # t        $ r t        d«      ‚w xY w# t        $ r  |
j                  |fi |¤Ž}Y Œ†w xY w# t        $ r  |j                  |fdd	i|¤Ž}Y Œ”w xY wc c}}w )a5  
        Construct object from model_id

        Args:
            model_id: Path for the huggingface repo id to be downloaded or
                      the huggingface checkpoint folder.
            tokenizer_id: Path for the huggingface repo id to be downloaded or
                      the huggingface checkpoint folder which contains the tokenizer.
            model_kwargs: Keyword arguments to pass to the model and tokenizer.
            kwargs: Extra arguments to pass to the model and tokenizer.

        Returns:
            An object of BigdlLLM.
        ú4BigdlLLM was deprecated. Please use IpexLLM instead.r   ©Ú	AutoModelÚAutoModelForCausalLM©ÚAutoTokenizerÚLlamaTokenizerúpCould not import bigdl-llm or transformers. Please install it with `pip install --pre --upgrade bigdl-llm[all]`.z°`load_in_low_bit` option is not supported in BigdlLLM and 
                is ignored. For more data types support with `load_in_low_bit`, 
                use IpexLLM instead.zŒBigdlLLM only supports loading in 4-bit mode, i.e. load_in_4bit = True. Please install it with `pip install --pre --upgrade bigdl-llm[all]`.r
   TÚtrust_remote_code©r   ÚmodelÚ	tokenizerr   © )ÚloggerÚwarningÚbigdl.llm.transformersr   r   Útransformersr   r   ÚImportErrorÚ
ValueErrorÚfrom_pretrainedÚ	ExceptionÚitems)Úclsr   r   r	   r
   r   r   r   r   r   r   Ú_model_kwargsÚ_tokenizer_idr   r   ÚkÚvs                    úl/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/bigdl_llm.pyÚfrom_model_idzBigdlLLM.from_model_id   s¡  € ô2 	�‰ÐMÔNð	÷÷ Cð Ð&Ü�N‰Nð(ôñ ÜðWóð ð %Ò*¨ˆØ$Ò0¨ˆð	WØ5˜×5Ñ5°mÑUÀ}ÑUˆIð	Ø8Ð(×8Ñ8ØñØ'+ðØ/<ñˆEð  -Ñ/à!.×!4Ñ!4Ô!6ôÙ!6™˜˜A¸!Ð?RÓ:R��1‘Ð!6ð ñ ñ ð 
ØØØØ&ñ	
ð
 ñ
ð 	
øôU ò 	ÜðWóð ð	ûô2 ò 	WØ6˜×6Ñ6°}ÑVÈÑVŠIð	Wûô ò 	Ø-�I×-Ñ-ØñØ'+ðØ/<ñŠEð	üós;   —B; ÁC Á,C5 ÂDÂ&DÂ;CÃC2Ã1C2Ã5DÄD)r	   c                óî  — t         j                  d«       	 ddlm}m} ddlm}m} |xs i }	|xs |}
	  |j                  |
fi |	¤Ž}	  |j                  |fi |	¤Ž}d|	v r)|	j                  «       D ��ci c]  \  }}|dk7  sŒ||“Œ }	}} | d||||	dœ|¤ŽS # t        $ r t        d«      ‚w xY w# t        $ r  |j                  |
fi |	¤Ž}Y Œ„w xY w# t        $ r  |j                  |fi |	¤Ž}Y Œ’w xY wc c}}w )	aê  
        Construct low_bit object from model_id

        Args:

            model_id: Path for the bigdl-llm transformers low-bit model folder.
            tokenizer_id: Path for the huggingface repo id or local model folder
                      which contains the tokenizer.
            model_kwargs: Keyword arguments to pass to the model and tokenizer.
            kwargs: Extra arguments to pass to the model and tokenizer.

        Returns:
            An object of BigdlLLM.
        r   r   r   r   r   r   r   r   )r   r   r    r   r   r!   r   r   r"   r$   r%   Úload_low_bitr&   )r'   r   r   r	   r   r   r   r   r   r(   r)   r   r   r*   r+   s                  r,   Úfrom_model_id_low_bitzBigdlLLM.from_model_id_low_biti   sV  € ô0 	�‰ÐMÔNð	÷÷ Cð %Ò*¨ˆØ$Ò0¨ˆð	WØ5˜×5Ñ5°mÑUÀ}ÑUˆIð	FØ5Ð(×5Ñ5°hÑPÀ-ÑPˆEð  -Ñ/à!.×!4Ñ!4Ô!6ôÙ!6™˜˜A¸!Ð?RÓ:R��1‘Ð!6ð ñ ñ ð 
ØØØØ&ñ	
ð
 ñ
ð 	
øô1 ò 	ÜðWóð ð	ûô ò 	WØ6˜×6Ñ6°}ÑVÈÑVŠIð	Wûô
 ò 	FØ*�I×*Ñ*¨8ÑE°}ÑEŠEð	Füós:   —B ´B- ÁC Á2C1Â C1ÂB*Â-CÃCÃC.Ã-C.c                  ó   — y)Nz	bigdl-llmr   )Úselfs    r,   Ú	_llm_typezBigdlLLM._llm_typeª   s   € àó    )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚstrr   ÚdictÚboolr   r   r-   r0   Úpropertyr3   r   r4   r,   r   r      s  „ ñð ð (,ðQ
ð
 '+Ø!Ø)-òQ
àðQ
ð ˜t‘nðQ
ð
 ˜s‘mðQ
ð ðQ
ð " #™ðQ
ð ðQ
ð 
òQ
ó ðQ
ðf ð (,ð>
ð
 '+ò>
àð>
ð ˜t‘nð>
ð
 ˜s‘mð>
ð ð>
ð 
ò>
ó ð>
ð@ ð˜3ò ó ñr4   r   )ÚloggingÚtypingr   r   Ú#langchain_core.language_models.llmsr   Ú!langchain_community.llms.ipex_llmr   Ú	getLoggerr5   r   r   r   r4   r,   Ú<module>rC      s1   ðÛ ß  å 3å 5à	ˆ×	Ñ	˜8Ó	$€ôaˆwõ ar4   