HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/langchain/memory/__pycache__/token_buffer.cpython-310.pyc
o

���g�	�@sjddlmZmZmZddlmZddlmZddlm	Z	m
Z
ddlmZedddd	�Gd
d�de��Z
dS)
�)�Any�Dict�List)�
deprecated)�BaseLanguageModel)�BaseMessage�get_buffer_string)�BaseChatMemoryz0.3.1z1.0.0z_Please see the migration guide at: https://python.langchain.com/docs/versions/migrating_memory/)�since�removal�messagecs�eZdZUdZdZeed<dZeed<eed<dZ	eed<d	Z
eed
<ede
fdd
��Zedefdd��Zedeefdd��Zedeefdd��Zdeee
fdeee
ffdd�Zdeee
fdeeefddf�fdd�Z�ZS)�ConversationTokenBufferMemoryz�Conversation chat memory with token limit.

    Keeps only the most recent messages in the conversation under the constraint
    that the total number of tokens in the conversation does not exceed a certain limit.
    �Human�human_prefix�AI�	ai_prefix�llm�history�
memory_keyi��max_token_limit�returncCs|jr|jS|jS)zString buffer of memory.)�return_messages�buffer_as_messages�
buffer_as_str��self�r�H/usr/local/lib/python3.10/dist-packages/langchain/memory/token_buffer.py�buffersz$ConversationTokenBufferMemory.buffercCst|jj|j|jd�S)z@Exposes the buffer as a string in case return_messages is False.)rr)r�chat_memory�messagesrrrrrrr$s
�z+ConversationTokenBufferMemory.buffer_as_strcCs|jjS)zIExposes the buffer as a list of messages in case return_messages is True.)rr rrrrr-sz0ConversationTokenBufferMemory.buffer_as_messagescCs|jgS)zMWill always return list of memory variables.

        :meta private:
        )rrrrr�memory_variables2sz.ConversationTokenBufferMemory.memory_variables�inputscCs|j|jiS)zReturn history buffer.)rr)rr"rrr�load_memory_variables:sz3ConversationTokenBufferMemory.load_memory_variables�outputsNcslt��||�|jj}|j�|�}||jkr2g}||jkr4|�|�d��|j�|�}||jksdSdSdS)z6Save context from this conversation to buffer. Pruned.rN)	�super�save_contextrr r�get_num_tokens_from_messagesr�append�pop)rr"r$r�curr_buffer_length�
pruned_memory��	__class__rrr&>s

��z*ConversationTokenBufferMemory.save_context)�__name__�
__module__�__qualname__�__doc__r�str�__annotations__rrrr�int�propertyrrrrrrr!rr#r&�
__classcell__rrr,rr

s"
	"2r
N)�typingrrr�langchain_core._apir�langchain_core.language_modelsr�langchain_core.messagesrr�langchain.memory.chat_memoryr	r
rrrr�<module>s�