
    ih                         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	e      Z G d
 de      Zy)$Fake ChatModel for testing purposes.    N)AnyAsyncIteratorDictIteratorListOptionalUnion)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)BaseChatModelSimpleChatModel)AIMessageChunkBaseMessage)ChatGenerationChatGenerationChunk
ChatResultc                       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Zedefd       Zy)FakeMessagesListChatModelr   	responsesNsleepr   imessagesstoprun_managerkwargsreturnc                     | j                   | j                     }| j                  t        | j                         dz
  k  r| xj                  dz  c_        nd| _        t        |      }t	        |g      S )N   r   message)generations)r   r   lenr   r   )selfr   r   r   r   response
generations          b/var/www/html/dev/engine/venv/lib/python3.12/site-packages/langchain_community/chat_models/fake.py	_generatez#FakeMessagesListChatModel._generate   s[     >>$&&)66C'!++FFaKFDF#H5
zl33    c                      y)Nzfake-messages-list-chat-model r$   s    r'   	_llm_typez#FakeMessagesListChatModel._llm_type&   s    .r)   NN)__name__
__module____qualname____doc__r   r   __annotations__r   r	   floatr   intstrr   r   r   r(   propertyr-   r+   r)   r'   r   r      s    .K  !E8E?!AsJ
 %):>	4{#4 tCy!4 67	4
 4 
4 /3 / /r)   r   c                   >   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       Z	 	 dd	ee   d
eee      dee   dedef
dZ	 	 dd	ee   d
eee   df   deedf   dedee   f
dZ	 	 dd	ee   d
eee   df   deedf   dedee   f
dZedeeef   fd       Zy)FakeListChatModelr   r   Nr   r   r   r   c                      y)Nzfake-list-chat-modelr+   r,   s    r'   r-   zFakeListChatModel._llm_type2   s    %r)   r   r   r   r   c                     | j                   | j                     }| j                  t        | j                         dz
  k  r| xj                  dz  c_        |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%   s         r'   _callzFakeListChatModel._call6   sR     >>$&&)66C'!++FFaKF  DFr)   c              +   V  K   | j                   | j                     }| j                  t        | j                         dz
  k  r| xj                  dz  c_        nd| _        |D ]E  }| j                  t	        j                  | j                         t        t        |             G y wNr   r   )contentr    )r   r   r#   r   timer   r   r$   r   r   r   r   r%   cs          r'   _streamzFakeListChatModel._streamE   s      >>$&&)66C'!++FFaKFDF 	IAzz%

4::&%nQ.GHH	Is   B'B)c                l  K   | j                   | j                     }| j                  t        | j                         dz
  k  r| xj                  dz  c_        nd| _        |D ]N  }| j                  't	        j                  | j                         d {    t        t        |             P y 7  wr>   )r   r   r#   r   asyncior   r   rA   s          r'   _astreamzFakeListChatModel._astreamV   s      >>$&&)66C'!++FFaKFDF 	IAzz%mmDJJ///%nQ.GHH	I/s   BB4B2!B4c                     d| j                   iS )Nr   )r   r,   s    r'   _identifying_paramsz%FakeListChatModel._identifying_paramsg   s    T^^,,r)   r.   )r/   r0   r1   r2   r   r3   r   r	   r4   r   r5   r7   r6   r-   r   r   r   r<   r
   r   r   rC   r   r   rF   r   rH   r+   r)   r'   r9   r9   +   sz   .O!E8E?!AsJ&3 & & %):>	{# tCy! 67	
  
$ (,=A	I{#I DItO$I 3T9:	I
 I 
%	&I( (,BF	I{#I DItO$I 8$>?	I
 I 
*	+I" -T#s(^ - -r)   r9   )r2   rE   r@   typingr   r   r   r   r   r	   r
   langchain_core.callbacksr   r   *langchain_core.language_models.chat_modelsr   r   langchain_core.messagesr   r   langchain_core.outputsr   r   r   r   r9   r+   r)   r'   <module>rN      sC    *   L L L V ? R R/ /6>- >-r)   