o
    Zh	                     @   s   d dl Z d dlZd dlmZ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 d dlmZ G dd deZG d	d
 d
eZdS )    N)AnyAsyncIteratorIteratorListMappingOptional)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)LanguageModelInput)LLM)RunnableConfigc                   @   s   e Zd ZU dZee ed< dZee	 ed< dZ
eed< edefdd	Z		dd
edeee  dee dedef
ddZ		dd
edeee  dee dedef
ddZedeeef fddZdS )FakeListLLMzFake LLM for testing purposes.	responsesNsleepr   ireturnc                 C   s   dS )zReturn type of llm.z	fake-list selfr   r   T/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/llms/fake.py	_llm_type   s   zFakeListLLM._llm_typepromptstoprun_managerkwargsc                 K   s<   | j | j }| jt| j d k r|  jd7  _|S d| _|S zReturn next response   r   r   r   lenr   r   r   r   r   responser   r   r   _call   s   zFakeListLLM._callc                    s>   | j | j }| jt| j d k r|  jd7  _|S d| _|S r   r   r   r   r   r   _acall)   s   zFakeListLLM._acallc                 C   s
   d| j iS )Nr   )r   r   r   r   r   _identifying_params8   s   
zFakeListLLM._identifying_params)NN)__name__
__module____qualname____doc__r   str__annotations__r   r   floatr   intpropertyr   r	   r   r!   r   r"   r   r#   r   r   r   r   r      sF   
 



r   c                   @   s   e Zd ZdZ	ddddedee deee  de	de
e f
d	d
Z	ddddedee deee  de	dee f
ddZdS )FakeStreamingListLLMz-Fake streaming list LLM for testing purposes.N)r   inputconfigr   r   r   c                k   s8    |  ||}|D ]}| jd urt| j |V  q	d S N)Zinvoker   timer   r.   r/   r   r   resultcr   r   r   stream@   s   
zFakeStreamingListLLM.streamc                K  sD   |  ||I d H }|D ]}| jd urt| jI d H  |V  qd S r0   )Zainvoker   asyncior2   r   r   r   astreamN   s   
zFakeStreamingListLLM.astreamr0   )r$   r%   r&   r'   r
   r   r   r   r(   r   r   r5   r   r7   r   r   r   r   r-   =   s<    


r-   )r6   r1   typingr   r   r   r   r   r   Zlangchain_core.callbacksr   r	   Zlangchain_core.language_modelsr
   Z#langchain_core.language_models.llmsr   Zlangchain_core.runnablesr   r   r-   r   r   r   r   <module>   s     /