U
    hP                     @   sH   d dl mZmZmZmZ d dlmZmZ d dlm	Z	 G dd de	Z
dS )    )AnyDictListUnion)BaseMessageget_buffer_string)BaseChatMemoryc                   @   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 )ConversationBufferWindowMemoryzDBuffer for storing conversation memory inside a limited size window.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   B/tmp/pip-unpacked-wheel-bo69hh5q/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_variables%   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.messagesr   r   Zlangchain.memory.chat_memoryr   r	   r   r   r   r   <module>   s   