
    h                     n    d dl 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
y)    )Any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y)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    | j                   r| j                  S | j                  S )zString buffer of memory.)return_messagesbuffer_as_messagesbuffer_as_strselfs    \/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain/memory/buffer_window.pybufferz%ConversationBufferWindowMemory.buffer   s#     +/*>*>t&&VDDVDVV    c                     | j                   dkD  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#   sT     @Dvvz4##,,dffWq[];r **nn
 	
r   c                 r    | j                   dkD  r'| j                  j                  | j                    dz  d S 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-   s7     <@66A:t(($&&17M2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                 2    | 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   listr   r   r   r   r&   dictr   r)    r   r   r   r   	   s      L#IsJAsJ0Wc4#445 W W 
s 
 
 ND$5 N N !$s) ! !.DcN .tCH~ .r   r   N)typingr   r   langchain_core._apir   langchain_core.messagesr   r   langchain.memory.chat_memoryr   r   r4   r   r   <module>r9      s=     * B 7 
	G	+.^ +.+.r   