§
    šŠtjj  ã                   ór   — d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ  G d„ de¦  «        ZdS )	é    )Úpartial)ÚAnyÚDictÚListÚOptionalÚSequence)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLLM)Úpre_initc                   óž  — e Zd ZU dZeed<   eed<   	 dZee         ed<   	 dZ	ee         ed<   	 dZ
eeeef                  ed<   	 dZee         ed<   	 ed	eeef         fd
„¦   «         Zed	efd„¦   «         Zeded	efd„¦   «         Z	 	 ddedeee                  dee         d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 )ÚCTransformersa_  C Transformers LLM models.

    To use, you should have the ``ctransformers`` python package installed.
    See https://github.com/marella/ctransformers

    Example:
        .. code-block:: python

            from langchain_community.llms import CTransformers

            llm = CTransformers(model="/path/to/ggml-gpt-2.bin", model_type="gpt2")
    ÚclientÚmodelNÚ
model_typeÚ
model_fileÚconfigÚlibÚreturnc                 ó8   — | j         | j        | j        | j        dœS )zGet the identifying parameters.©r   r   r   r   r   ©Úselfs    úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/ctransformers.pyÚ_identifying_paramsz!CTransformers._identifying_params-   s'   € ð ”ZØœ/Øœ/Ø”kð	
ð 
ð 	
ó    c                 ó   — dS )zReturn type of llm.Úctransformers© r   s    r   Ú	_llm_typezCTransformers._llm_type7   s	   € ð ˆr   Úvaluesc                 ó¾   — 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w|d         pi } |j        |d         f|d         |d         |d         d	œ|¤Ž|d
<   |S )z5Validate that ``ctransformers`` package is installed.r   )ÚAutoModelForCausalLMz\Could not import `ctransformers` package. Please install it with `pip install ctransformers`r   r   r   r   r   )r   r   r   r   )r   r#   ÚImportErrorÚfrom_pretrained)Úclsr!   r#   r   s       r   Úvalidate_environmentz"CTransformers.validate_environment<   s³   € ð	Ø:Ð:Ð:Ð:Ð:Ð:Ð:øÝð 	ð 	ð 	ÝðEñô ð ð	øøøð ˜Ô!Ð' RˆØ?Ð/Ô?Ø�7ŒOð
à˜lÔ+Ø˜lÔ+Ø�u”ð	
ð 
ð
 ð
ð 
ˆˆxÑð ˆs   ‚	 ‰#ÚpromptÚstopÚrun_managerÚkwargsc                 óò   — g }|pt          j        ¦   «         }|                      ||d¬¦  «        D ]3}|                     |¦  «         |                     || j        ¬¦  «         Œ4d                     |¦  «        S )aV  Generate text from a prompt.

        Args:
            prompt: The prompt to generate text from.
            stop: A list of sequences to stop generation when encountered.

        Returns:
            The generated text.

        Example:
            .. code-block:: python

                response = llm.invoke("Tell me a joke.")
        T©r)   Ústream©ÚverboseÚ )r
   Úget_noop_managerr   ÚappendÚon_llm_new_tokenr0   Újoin)r   r(   r)   r*   r+   ÚtextÚ_run_managerÚchunks           r   Ú_callzCTransformers._callQ   s€   € ð* ˆØ"ÐQÕ&>Ô&OÑ&QÔ&QˆØ—[’[ ¨d¸4�[Ñ@Ô@ð 	Gð 	GˆEØ�KŠK˜ÑÔÐØ×)Ò)¨%¸¼Ð)ÑFÔFÐFÐFØ�wŠw�t‰}Œ}Ðr   c              ‹   ó²   K  — d}|rt          |j        | j        ¬¦  «        }d}|                      ||d¬¦  «        D ]}|r ||¦  «        ƒ d{V —† ||z  }Œ|S )a½  Asynchronous Call out to CTransformers generate method.
        Very helpful when streaming (like with websockets!)

        Args:
            prompt: The prompt to pass into the model.
            stop: A list of strings to stop generation when encountered.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python
                response = llm.invoke("Once upon a time, ")
        Nr/   r1   Tr-   )r   r4   r0   r   )r   r(   r)   r*   r+   Útext_callbackr6   Útokens           r   Ú_acallzCTransformers._acallm   s�   è è € ð* ˆØð 	XÝ# KÔ$@È$Ì,ÐWÑWÔWˆMàˆØ—[’[ ¨d¸4�[Ñ@Ô@ð 	ð 	ˆEØð +Ø#�m EÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�E‰MˆDˆDàˆr   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__Ústrr   r   r   r   r   r   Úpropertyr   r    r   r'   r   r
   r9   r   r	   r=   r   r   r   r   r      sæ  € € € € € € ðð ð €K€K�Kà€J€J�Jðð !%€J�˜”Ð$Ð$Ñ$Øà $€J�˜”Ð$Ð$Ñ$Ø:à'+€FˆH�T˜#˜s˜(”^Ô$Ð+Ð+Ñ+ð;ð €Cˆ�#ŒÐÐÑØHàð
 T¨#¨s¨(¤^ð 
ð 
ð 
ñ „Xð
ð ð˜3ð ð ð ñ „Xðð ð¨$ð °4ð ð ð ñ „Xðð. )-Ø:>ð	ð àðð �x ”}Ô%ðð Ð6Ô7ð	ð
 ðð 
ðð ð ð ð> %)Ø?Cð	ð àðð �t˜C”yÔ!ðð Ð;Ô<ð	ð
 ðð 
ðð ð ð ð ð r   r   N)Ú	functoolsr   Útypingr   r   r   r   r   Úlangchain_core.callbacksr	   r
   Ú#langchain_core.language_models.llmsr   Úlangchain_core.utilsr   r   r   r   r   ú<module>rJ      sÍ   ðØ Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø )Ð )Ð )Ð )Ð )Ð )ð@ð @ð @ð @ð @�Cñ @ô @ð @ð @ð @r   