
    Ng                         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dS )$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dS )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          `/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/chat_models/fake.py	_generatez#FakeMessagesListChatModel._generate   si     >$&)6C''!+++FFaKFFFDF#H555
zl3333    c                     dS )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?!!!AsJJJ
 %):>	4 4{#4 tCy!4 67	4
 4 
4 4 4 4 /3 / / / X/ / /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dS )FakeListChatModelr   r   Nr   r   r   r   c                     dS )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_        n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   sK     >$&)6C''!+++FFaKFFFDFr)   c              +   (  K   | j         | j                 }| j        t          | j                   dz
  k     r| xj        dz  c_        nd| _        |D ]B}| j        t	          j        | j                   t          t          |                    V  Cd S Nr   r   )contentr    )r   r   r#   r   timer   r   r$   r   r   r   r   r%   cs          r'   _streamzFakeListChatModel._streamE   s       >$&)6C''!+++FFaKFFFDF 	I 	IAz%
4:&&&%nQ.G.G.GHHHHHHH	I 	Ir)   c                6  K   | j         | j                 }| j        t          | j                   dz
  k     r| xj        dz  c_        nd| _        |D ]I}| j        t	          j        | j                   d {V  t          t          |                    W V  Jd S r>   )r   r   r#   r   asyncior   r   rA   s          r'   _astreamzFakeListChatModel._astreamV   s       >$&)6C''!+++FFaKFFFDF 	I 	IAz%mDJ/////////%nQ.G.G.GHHHHHHHH	I 	Ir)   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   +   s        ..OOO!E8E?!!!AsJJJ&3 & & & X& %):>	 {# tCy! 67	
  
   $ (,=A	I I{#I DItO$I 3T9:	I
 I 
%	&I I I I( (,BF	I I{#I DItO$I 8$>?	I
 I 
*	+I I I I" -T#s(^ - - - X- - -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      s*   * *   L L L L L L L L L L L L L L L L L L        V U U U U U U U ? ? ? ? ? ? ? ? R R R R R R R R R R/ / / / / / / /6>- >- >- >- >- >- >- >- >- >-r)   