
    Ah	                     p    S SK Jr  S SKJr  S SKJr  S SKJrJr  S SK	J
r
  \" SSSS	9 " S
 S\
5      5       rg)    )Any)
deprecated)BaseLanguageModel)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                   &  ^  \ rS rSr% SrSr\\S'   Sr\\S'   \	\S'   Sr
\\S	'   S
r\\S'   \S\4S j5       r\S\4S j5       r\S\\   4S j5       r\S\\   4S j5       rS\\\4   S\\\4   4S jrS\\\4   S\\\4   SS4U 4S jjrSrU =r$ )ConversationTokenBufferMemory
   zConversation 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returnc                 T    U R                   (       a  U R                  $ U R                  $ )zString buffer of memory.)return_messagesbuffer_as_messagesbuffer_as_strselfs    U/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/memory/token_buffer.pybuffer$ConversationTokenBufferMemory.buffer   s#     +/*>*>t&&VDDVDVV    c                 h    [        U R                  R                  U R                  U R                  S9$ )z@Exposes the buffer as a string in case return_messages is False.)r   r   )r   chat_memorymessagesr   r   r   s    r   r   +ConversationTokenBufferMemory.buffer_as_str$   s0     !%%**nn
 	
r!   c                 .    U R                   R                  $ )zIExposes the buffer as a list of messages in case return_messages is True.)r#   r$   r   s    r   r   0ConversationTokenBufferMemory.buffer_as_messages-   s     (((r!   c                     U R                   /$ )z=Will always return list of memory variables.

:meta private:
)r   r   s    r   memory_variables.ConversationTokenBufferMemory.memory_variables2   s       r!   inputsc                 2    U R                   U R                  0$ )zReturn history buffer.)r   r   )r   r+   s     r   load_memory_variables3ConversationTokenBufferMemory.load_memory_variables:   s    --r!   outputsNc                 b  > [         TU ]  X5        U R                  R                  nU R                  R                  U5      nX@R                  :  a_  / nX@R                  :  aM  UR                  UR                  S5      5        U R                  R                  U5      nX@R                  :  a  ML  ggg)z6Save context from this conversation to buffer. Pruned.r   N)	supersave_contextr#   r$   r   get_num_tokens_from_messagesr   appendpop)r   r+   r/   r   curr_buffer_lengthpruned_memory	__class__s         r   r2   *ConversationTokenBufferMemory.save_context>   s    V-!!**!XXBB6J 4 44M$';';;$$VZZ]3%)XX%J%J6%R" %';';; 5r!    )__name__
__module____qualname____firstlineno____doc__r   str__annotations__r   r   r   r   intpropertyr   r   r   listr   r   r)   dictr-   r2   __static_attributes____classcell__)r8   s   @r   r   r   
   s     L#Is	JOSW W W 
s 
 
 )D$5 ) ) !$s) ! !.DcN .tCH~ .
S4S> 
SDcN 
St 
S 
Sr!   r   N)typingr   langchain_core._apir   langchain_core.language_modelsr   langchain_core.messagesr   r   langchain.memory.chat_memoryr   r   r:   r!   r   <module>rM      sC     * < B 7 
	G	6SN 6S6Sr!   