§
    šŠtj‹  ã                   ór   — 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dS )é    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dS )Ú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                                d¦  «         	 ddlm}m} ddlm}	m}
 n# t          $ r t          d¦  «        ‚w xY w|�t                                d¦  «         |st          d¦  «        ‚|pi }|p|}	  |	j
        |fi |¤Ž}n# t          $ r  |
j
        |fi |¤Ž}Y nw xY w	  |j
        |fd	d
i|¤Ž}n # t          $ r  |j
        |fd	d
i|¤Ž}Y nw xY wd|v rd„ |                     ¦   «         D ¦   «         } | d||||dœ|¤ŽS )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]`.Nz°`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_codec                 ó&   — i | ]\  }}|d k    ¯||“ŒS ©r   © ©Ú.0ÚkÚvs      ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/bigdl_llm.pyú
<dictcomp>z*BigdlLLM.from_model_id.<locals>.<dictcomp>]   ó0   € ð ð ð Ù˜˜A¸!Ð?RÒ:RÐ:R��1Ð:RÐ:RÐ:Ró    ©r   ÚmodelÚ	tokenizerr   r   )Ú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&   s                  r!   Úfrom_model_idzBigdlLLM.from_model_id   s=  € õ2 	�ŠÐMÑNÔNÐNð	ðð ð ð ð ð ð ð ð CÐBÐBÐBÐBÐBÐBÐBÐBøåð 	ð 	ð 	ÝðWñô ð ð	øøøð Ð&Ý�NŠNð(ñô ð ð ð 	ÝðWñô ð ð %Ð*¨ˆØ$Ð0¨ˆð	WØ5˜Ô5°mÐUÐUÀ}ÐUÐUˆIˆIøÝð 	Wð 	Wð 	WØ6˜Ô6°}ÐVÐVÈÐVÐVˆIˆIˆIð	Wøøøð	Ø8Ð(Ô8Øðð Ø'+ðØ/<ðð ˆEˆEøõ ð 	ð 	ð 	Ø-�IÔ-Øðð Ø'+ðØ/<ðð ˆEˆEˆEð	øøøð
  -Ð/Ð/ðð Ø!.×!4Ò!4Ñ!6Ô!6ðñ ô ˆMð ˆsð 
ØØØØ&ð	
ð 
ð
 ð
ð 
ð 	
s-   œ- ­AÂ B ÂB*Â)B*Â.B? Â?CÃC)r	   c                óº  — t                                d¦  «         	 ddlm}m} ddlm}m} n# t          $ r t          d¦  «        ‚w xY w|pi }	|p|}
	  |j	        |
fi |	¤Ž}n# t          $ r  |j	        |
fi |	¤Ž}Y nw xY w	  |j        |fi |	¤Ž}n# t          $ r  |j        |fi |	¤Ž}Y nw xY wd|	v rd„ |	                     ¦   «         D ¦   «         }	 | d	||||	dœ|¤ŽS )
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   c                 ó&   — i | ]\  }}|d k    ¯||“ŒS r   r   r   s      r!   r"   z2BigdlLLM.from_model_id_low_bit.<locals>.<dictcomp>ž   r#   r$   r%   r   )r(   r)   r*   r   r   r+   r   r   r,   r.   r/   Úload_low_bitr0   )r1   r   r   r	   r   r   r   r   r   r2   r3   r'   r&   s                r!   Úfrom_model_id_low_bitzBigdlLLM.from_model_id_low_biti   s×  € õ0 	�ŠÐMÑNÔNÐNð	ðð ð ð ð ð ð ð ð CÐBÐBÐBÐBÐBÐBÐBÐBøåð 	ð 	ð 	ÝðWñô ð ð	øøøð %Ð*¨ˆØ$Ð0¨ˆð	WØ5˜Ô5°mÐUÐUÀ}ÐUÐUˆIˆIøÝð 	Wð 	Wð 	WØ6˜Ô6°}ÐVÐVÈÐVÐVˆIˆIˆIð	Wøøøð	FØ5Ð(Ô5°hÐPÐPÀ-ÐPÐPˆEˆEøÝð 	Fð 	Fð 	FØ*�IÔ*¨8ÐEÐE°}ÐEÐEˆEˆEˆEð	Føøøð  -Ð/Ð/ðð Ø!.×!4Ò!4Ñ!6Ô!6ðñ ô ˆMð ˆsð 
ØØØØ&ð	
ð 
ð
 ð
ð 
ð 	
s-   œ- ­AÁA" Á"A=Á<A=ÂB ÂB+Â*B+c                 ó   — dS )Nz	bigdl-llmr   )Úselfs    r!   Ú	_llm_typezBigdlLLM._llm_typeª   s   € àˆ{r$   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚstrr   ÚdictÚboolr   r   r4   r8   Úpropertyr;   r   r$   r!   r   r      sU  € € € € € ðð ð ð (,ðQ
ð
 '+Ø!Ø)-ðQ
ð Q
ð Q
àðQ
ð ˜t”nðQ
ð
 ˜s”mðQ
ð ðQ
ð " #œðQ
ð ðQ
ð 
ðQ
ð Q
ð Q
ñ „[ðQ
ðf ð (,ð>
ð
 '+ð>
ð >
ð >
àð>
ð ˜t”nð>
ð
 ˜s”mð>
ð ð>
ð 
ð>
ð >
ð >
ñ „[ð>
ð@ ð˜3ð ð ð ñ „Xðð ð r$   r   )ÚloggingÚtypingr   r   Ú#langchain_core.language_models.llmsr   Ú!langchain_community.llms.ipex_llmr   Ú	getLoggerr<   r(   r   r   r$   r!   ú<module>rJ      sš   ðØ €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à 3Ð 3Ð 3Ð 3Ð 3Ð 3à 5Ð 5Ð 5Ð 5Ð 5Ð 5à	ˆÔ	˜8Ñ	$Ô	$€ðað að að að aˆwñ aô að að að ar$   