
    Ng                         d dl mZmZmZmZ d dlmZ d dlmZm	Z	 d dl
mZ  eddd           G d	 d
e                      ZdS )    )AnyDictListUnion)
deprecated)BaseMessageget_buffer_string)BaseChatMemoryz0.3.1z1.0.0z_Please see the migration guide at: https://python.langchain.com/docs/versions/migrating_memory/)sinceremovalmessagec                   "   e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	e
ed	<   	 ed
eeee         f         fd            Zed
efd            Zed
ee         fd            Zed
ee         fd            Zdeeef         d
eeef         fdZdS )ConversationBufferWindowMemoryzUse to keep track of the last k turns of a conversation.

    If the number of messages in the conversation is more than the maximum number
    of messages to keep, the oldest messages are dropped.
    Humanhuman_prefixAI	ai_prefixhistory
memory_key   kreturnc                 ,    | j         r| j        n| j        S )zString buffer of memory.)return_messagesbuffer_as_messagesbuffer_as_strselfs    Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain/memory/buffer_window.pybufferz%ConversationBufferWindowMemory.buffer   s     +/*>Vt&&DDVV    c                     | j         dk    r| j        j        | j          dz  d         ng }t          || j        | j                  S )z@Exposes the buffer as a string in case return_messages is False.r      N)r   r   )r   chat_memorymessagesr	   r   r   )r   r%   s     r   r   z,ConversationBufferWindowMemory.buffer_as_str#   sV     @Dvzz4#,dfWq[]];;r *n
 
 
 	
r!   c                 V    | j         dk    r| j        j        | j          dz  d         ng S )zIExposes the buffer as a list of messages in case return_messages is True.r   r#   N)r   r$   r%   r   s    r   r   z1ConversationBufferWindowMemory.buffer_as_messages-   s1     <@6A::t($&1772Mr!   c                     | j         gS )zMWill always return list of memory variables.

        :meta private:
        )r   r   s    r   memory_variablesz/ConversationBufferWindowMemory.memory_variables2   s       r!   inputsc                     | j         | j        iS )zReturn history buffer.)r   r    )r   r)   s     r   load_memory_variablesz4ConversationBufferWindowMemory.load_memory_variables:   s    --r!   N)__name__
__module____qualname____doc__r   str__annotations__r   r   r   intpropertyr   r   r   r    r   r   r(   r   r   r+    r!   r   r   r   	   sP           L#IsJAsJJJ0Wc4#445 W W W XW 
s 
 
 
 X
 ND$5 N N N XN !$s) ! ! ! X!.DcN .tCH~ . . . . . .r!   r   N)typingr   r   r   r   langchain_core._apir   langchain_core.messagesr   r	   langchain.memory.chat_memoryr
   r   r4   r!   r   <module>r9      s    ) ) ) ) ) ) ) ) ) ) ) ) * * * * * * B B B B B B B B 7 7 7 7 7 7 
	G	  +. +. +. +. +.^ +. +. +. +. +.r!   