a
    ag                     @   sb   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dG d	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/)ZsinceZremovalmessagec                   @   s   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eeee f d
ddZeed
ddZeee d
ddZeee d
ddZeeef eeef dd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.
    ZHumanhuman_prefixZAI	ai_prefixhistory
memory_key   k)returnc                 C   s   | j r| jS | jS )zString buffer of memory.)Zreturn_messagesbuffer_as_messagesbuffer_as_strself r   l/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain/memory/buffer_window.pybuffer   s    z%ConversationBufferWindowMemory.bufferc                 C   s8   | j dkr"| jj| j  d d ng }t|| j| jd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   r   r   r   r   #   s    &z,ConversationBufferWindowMemory.buffer_as_strc                 C   s&   | j dkr"| jj| j  d 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   r   r   r   r   -   s    z1ConversationBufferWindowMemory.buffer_as_messagesc                 C   s   | j gS )zMWill always return list of memory variables.

        :meta private:
        )r   r   r   r   r   memory_variables2   s    z/ConversationBufferWindowMemory.memory_variables)inputsr   c                 C   s   | j | jiS )zReturn history buffer.)r   r   )r   r   r   r   r   load_memory_variables:   s    z4ConversationBufferWindowMemory.load_memory_variablesN)__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   r   	   s   
		r   N)typingr   r   r   r   Zlangchain_core._apir   Zlangchain_core.messagesr   r   Zlangchain.memory.chat_memoryr	   r   r   r   r   r   <module>   s   