Ë
    µŒj}  ã                   ój   — 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y)	é    )Úpartial)ÚAnyÚDictÚListÚOptionalÚSequence)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLLM)Úpre_initc                   óB  — 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y)Ú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                 ó`   — | j                   | j                  | j                  | j                  dœS )zGet the identifying parameters.©r   r   r   r   r   ©Úselfs    úp/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/ctransformers.pyÚ_identifying_paramsz!CTransformers._identifying_params-   s*   € ð —Z‘ZØŸ/™/ØŸ/™/Ø—k‘kñ	
ð 	
ó    c                  ó   — y)zReturn type of llm.Úctransformers© r   s    r   Ú	_llm_typezCTransformers._llm_type7   s   € ð r   Úvaluesc                 ó¢   — 	 ddl m} |d   xs i } |j                  |d   f|d   |d   |d   d	œ|¤Ž|d
<   |S # t        $ r t        d«      ‚w xY w)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‹   € ð	Ý:ð ˜Ñ!Ò' RˆØ?Ð/×?Ñ?Ø�7‰Oð
à˜lÑ+Ø˜lÑ+Ø�u‘ñ	
ð
 ñ
ˆˆxÑð ˆøô ò 	ÜðEóð ð	ús	   ‚9 ¹AÚpromptÚstopÚrun_managerÚkwargsc                 óæ   — g }|xs t        j                  «       }| j                  ||d¬«      D ]0  }|j                  |«       |j	                  || j
                  ¬«       Œ2 dj                  |«      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   sj   € ð* ˆØ"ÒQÔ&>×&OÑ&OÓ&QˆØ—[‘[ ¨d¸4�[Ö@ˆEØ�K‰K˜ÔØ×)Ñ)¨%¸¿¹Ð)ÕFð Að �w‰w�t‹}Ðr   c              ‹   óÀ   K  — d}|r!t        |j                  | j                  ¬«      }d}| j                  ||d¬«      D ]  }|r ||«      ƒ d{  –—†  ||z  }Œ |S 7 Œ­w)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   sk   è ø€ ð* ˆÙÜ# K×$@Ñ$@È$Ï,É,ÔWˆMàˆØ—[‘[ ¨d¸4�[Ö@ˆEÙÙ# EÓ*×*Ð*Ø�E‰M‰Dð Að
 ˆð +ús   ‚AAÁAÁA)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      sa  … ñð ƒKàƒJðð !%€J�˜‘Ó$Øà $€J�˜‘Ó$Ø:à'+€FˆH�T˜#˜s˜(‘^Ñ$Ó+ð;ð €Cˆ�#‰ÓØHàð
 T¨#¨s¨(¡^ò 
ó ð
ð ð˜3ò ó ðð ð¨$ð °4ò ó ðð. )-Ø:>ñ	àðð �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÷õ 4Ý )ô@�Cõ @r   