o
    Zh                     @   s   d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
 ddlmZmZ ddlmZmZ ddlmZmZ ddlmZmZmZ G dd	 d	eZG d
d deZdS )$Fake ChatModel for testing purposes.    N)AnyAsyncIteratorDictIteratorListOptionalUnion)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)BaseChatModelSimpleChatModel)AIMessageChunkBaseMessage)ChatGenerationChatGenerationChunk
ChatResultc                   @   s   e Zd ZU dZee ed< dZee	 ed< dZ
eed< 		ddee deee  d	ee d
edef
ddZedefddZdS )FakeMessagesListChatModelr   	responsesNsleepr   imessagesstoprun_managerkwargsreturnc                 K   sL   | j | j }| jt| j d k r|  jd7  _nd| _t|d}t|gdS )N   r   message)Zgenerations)r   r   lenr   r   )selfr   r   r   r   responseZ
generation r"   [/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/chat_models/fake.py	_generate   s   
z#FakeMessagesListChatModel._generatec                 C      dS )Nzfake-messages-list-chat-modelr"   r    r"   r"   r#   	_llm_type&      z#FakeMessagesListChatModel._llm_typeNN)__name__
__module____qualname____doc__r   r   __annotations__r   r   floatr   intstrr   r   r   r$   propertyr'   r"   r"   r"   r#   r      s(   
 

r   c                   @   s  e Zd ZU dZeed< dZee ed< dZ	e
ed< edefdd	Z		dd
ee deee  dee dedef
ddZ		dd
ee deee df deedf dedee f
ddZ		dd
ee deee df deedf dedee f
ddZedeeef fddZdS )FakeListChatModelr   r   Nr   r   r   r   c                 C   r%   )Nzfake-list-chat-modelr"   r&   r"   r"   r#   r'   2   r(   zFakeListChatModel._llm_typer   r   r   r   c                 K   s<   | j | j }| jt| j d k r|  jd7  _|S d| _|S )z;First try to lookup in queries, else return 'foo' or 'bar'.r   r   )r   r   r   )r    r   r   r   r   r!   r"   r"   r#   _call6   s   zFakeListChatModel._callc                 k   sn    | j | j }| jt| j d k r|  jd7  _nd| _|D ]}| jd ur+t| j tt|ddV  qd S Nr   r   )contentr   )r   r   r   r   timer   r   r    r   r   r   r   r!   cr"   r"   r#   _streamE   s   
zFakeListChatModel._streamc                 K  st   | j | j }| jt| j d k r|  jd7  _nd| _|D ]}| jd ur.t| jI d H  tt|ddV  qd S r5   )r   r   r   r   asyncior   r   r8   r"   r"   r#   _astreamV   s   
zFakeListChatModel._astreamc                 C   s
   d| j iS )Nr   )r   r&   r"   r"   r#   _identifying_paramsg   s   
z%FakeListChatModel._identifying_paramsr)   )r*   r+   r,   r-   r   r.   r   r   r/   r   r0   r2   r1   r'   r   r   r   r4   r	   r   r   r:   r
   r   r<   r   r=   r"   r"   r"   r#   r3   +   s`   
 





r3   )r-   r;   r7   typingr   r   r   r   r   r   r	   Zlangchain_core.callbacksr
   r   Z*langchain_core.language_models.chat_modelsr   r   Zlangchain_core.messagesr   r   Zlangchain_core.outputsr   r   r   r   r3   r"   r"   r"   r#   <module>   s    $