
    dh}                     j    S SK Jr  S SKJrJrJrJrJr  S SKJ	r	J
r
  S SKJr  S SKJr   " S S\5      rg)	    )partial)AnyDictListOptionalSequence)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LLM)pre_initc                   X   \ rS rSr% Sr\\S'   \\S'    Sr\	\   \S'    Sr
\	\   \S'    Sr\	\\\4      \S'    Sr\	\   \S	'    \S
\\\4   4S j5       r\S
\4S j5       r\S\S
\4S j5       r  SS\S\	\\      S\	\   S\S
\4
S jjr  SS\S\	\\      S\	\   S\S
\4
S jjrSrg)CTransformers   aC  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                 `    U R                   U R                  U R                  U R                  S.$ )zGet the identifying parameters.r   r   r   r   r   selfs    ^/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/ctransformers.py_identifying_params!CTransformers._identifying_params-   s*     ZZ////kk	
 	
    c                     g)zReturn type of llm.ctransformers r   s    r   	_llm_typeCTransformers._llm_type7   s     r   valuesc                      SSK Jn  US   =(       d    0 nUR                  " US   4US   US   US   S	.UD6US
'   U$ ! [         a    [        S5      ef = f)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_environment"CTransformers.validate_environment<   s    	: !'R/??7O
l+l+u	

 
x   	E 	s	   > Apromptstoprun_managerkwargsc                     / nU=(       d    [         R                  " 5       nU R                  XSS9 H-  nUR                  U5        UR	                  XpR
                  S9  M/     SR                  U5      $ )a  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_tokenr4   join)r   r,   r-   r.   r/   text_run_managerchunks           r   _callCTransformers._callQ   sf    * "Q&>&O&O&Q[[4[@EKK))%)F A wwt}r   c                    #    SnU(       a  [        UR                  U R                  S9nSnU R                  XSS9 H  nU(       a  U" U5      I Sh  vN   Xg-  nM      U$  N7f)am  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, ")
Nr3   r5   Tr1   )r   r8   r4   r   )r   r,   r-   r.   r/   text_callbackr:   tokens           r   _acallCTransformers._acallm   sf     * #K$@$@$,,WM[[4[@E#E***MD A
  +s   AA"A A"r!   )NN)__name__
__module____qualname____firstlineno____doc__r   __annotations__strr   r   r   r   r   r   propertyr   r"   r   r*   r   r
   r=   r   r	   rB   __static_attributes__r!   r   r   r   r      sf    KJ !%J$ $J$:'+FHT#s(^$+; C#H
T#s(^ 
 
 3   $ 4  . )-:>	 x}% 67	
  
> %)?C	 tCy! ;<	
  
 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>rR      s)     6 6 4 )@C @r   