
    Ah                         S SK Jr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KJr  S SKJr  \" SS	S
S9 " S S\5      5       r\" SS	S
S9 " S S\5      5       rg)    )AnyOptional)
deprecated)
BaseMemory)BaseMessageget_buffer_string)pre_init)BaseChatMemory)get_prompt_input_keyz0.3.1z1.0.0z_Please see the migration guide at: https://python.langchain.com/docs/versions/migrating_memory/)sinceremovalmessagec                   D   \ rS rSr% SrSr\\S'   Sr\\S'   Sr	\\S'   \
S	\4S
 j5       rS	\4S jrS\\   S	\4S jr\
S	\4S j5       rS	\4S jr\
S	\\   4S j5       rS	\\   4S jr\
S	\\   4S j5       rS\\\4   S	\\\4   4S jrS\\\4   S	\\\4   4S jrSrg)ConversationBufferMemory   a?  A basic memory implementation that simply stores the conversation history.

This stores the entire conversation history in memory without any
additional processing.

Note that additional processing may be required in some situations when the
conversation history is too large to fit in the context window of the model.
Humanhuman_prefixAI	ai_prefixhistory
memory_keyreturnc                 T    U R                   (       a  U R                  $ U R                  $ )String buffer of memory.)return_messagesbuffer_as_messagesbuffer_as_strselfs    O/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/memory/buffer.pybufferConversationBufferMemory.buffer"   s#     +/*>*>t&&VDDVDVV    c                    #    U R                   (       a  U R                  5       I Sh  vN $ U R                  5       I Sh  vN $  N N7f)r   N)r   abuffer_as_messagesabuffer_as_strr   s    r    abuffer ConversationBufferMemory.abuffer'   sB      ## **,,	
 **,,	
,,s    %AAAA AAmessagesc                 @    [        UU R                  U R                  S9$ )N)r   r   )r   r   r   r   r)   s     r    _buffer_as_str'ConversationBufferMemory._buffer_as_str/   s"     **nn
 	
r#   c                 L    U R                  U R                  R                  5      $ )?Exposes the buffer as a string in case return_messages is True.)r,   chat_memoryr)   r   s    r    r   &ConversationBufferMemory.buffer_as_str6   s!     ""4#3#3#<#<==r#   c                 t   #    U R                   R                  5       I Sh  vN nU R                  U5      $  N7f)r/   N)r0   aget_messagesr,   r+   s     r    r&   'ConversationBufferMemory.abuffer_as_str;   s2     ))7799""8,, :s   868c                 .    U R                   R                  $ )JExposes the buffer as a list of messages in case return_messages is False.)r0   r)   r   s    r    r   +ConversationBufferMemory.buffer_as_messages@   s     (((r#   c                 R   #    U R                   R                  5       I Sh  vN $  N7f)r6   N)r0   r3   r   s    r    r%   ,ConversationBufferMemory.abuffer_as_messagesE   s      %%335555s   '%'c                     U R                   /$ )z=Will always return list of memory variables.

:meta private:
r   r   s    r    memory_variables)ConversationBufferMemory.memory_variablesI   s       r#   inputsc                 2    U R                   U R                  0$ zReturn history buffer.r   r!   r   r>   s     r    load_memory_variables.ConversationBufferMemory.load_memory_variablesQ       --r#   c                 Z   #    U R                  5       I Sh  vN nU R                  U0$  N7f)z9Return key-value pairs given the text input to the chain.N)r'   r   )r   r>   r!   s      r    aload_memory_variables/ConversationBufferMemory.aload_memory_variablesU   s'     ||~%(( &s   +)+ N)__name__
__module____qualname____firstlineno____doc__r   str__annotations__r   r   propertyr   r!   r'   listr   r,   r   r&   r   r%   r<   dictrC   rG   __static_attributes__rI   r#   r    r   r      s%     L#IsJW W W
s 

tK'8 
S 
 >s > >-c -
 )D$5 ) )64+< 6 !$s) ! !.DcN .tCH~ .)4S> )d3PS8n )r#   r   c                   j   \ rS rSr% SrSr\\S'   Sr\\S'    Sr	\\S'   S	r
\\   \S
'   S	r\\   \S'   Sr\\S'   \S\S\4S j5       r\S\\   4S j5       rS\\\4   S\\\4   4S jrS\\\4   S\\\4   4S jrS\\\4   S\\\4   SS	4S jrS\\\4   S\\\4   SS	4S jrSS jrSS jrSrg	)ConversationStringBufferMemory[   a  A basic memory implementation that simply stores the conversation history.

This stores the entire conversation history in memory without any
additional processing.

Equivalent to ConversationBufferMemory but tailored more specifically
for string-based conversations rather than chat models.

Note that additional processing may be required in some situations when the
conversation history is too large to fit in the context window of the model.
r   r   r   r    r!   N
output_key	input_keyr   r   valuesr   c                 N    UR                  SS5      (       a  Sn[        U5      eU$ )z*Validate that return messages is not True.r   Fz@return_messages must be False for ConversationStringBufferMemory)get
ValueError)clsr[   msgs      r    validate_chains.ConversationStringBufferMemory.validate_chainsx   s*     ::'//TCS/!r#   c                     U R                   /$ )z<Will always return list of memory variables.
:meta private:
r;   r   s    r    r<   /ConversationStringBufferMemory.memory_variables   s    
   r#   r>   c                 2    U R                   U R                  0$ r@   rA   rB   s     r    rC   4ConversationStringBufferMemory.load_memory_variables   rE   r#   c                 ,   #    U R                  U5      $ 7fr@   )rC   rB   s     r    rG   5ConversationStringBufferMemory.aload_memory_variables   s     ))&11   outputsc                    U R                   c  [        XR                  5      nOU R                   nU R                  cP  [	        U5      S:w  a  SUR                  5        3n[        U5      e[        [        UR                  5       5      5      nOU R                  nU R                   S3X   -   nU R                   S3X%   -   nU =R                  SU SU 3-  sl        g).Save context from this conversation to buffer.N   zOne output key expected, got z: 
)rZ   r   r<   rY   lenkeysr^   nextiterr   r   r!   )r   r>   rj   prompt_input_keyr`   rY   humanais           r    save_context+ConversationStringBufferMemory.save_context   s    >>!3F<Q<QR#~~??"7|q 5glln5EF o%d7<<>23JJ$$%R(6+CCr"W%88E7"RD))r#   c                 ,   #    U R                  X5      $ 7f)rl   )rv   )r   r>   rj   s      r    asave_context,ConversationStringBufferMemory.asave_context   s        11ri   c                     SU l         g)zClear memory contents.rX   Nr!   r   s    r    clear$ConversationStringBufferMemory.clear   s	    r#   c                 ,   #    U R                  5         g 7f)N)r}   r   s    r    aclear%ConversationStringBufferMemory.aclear   s     

ri   r|   )r   N)rJ   rK   rL   rM   rN   r   rO   rP   r   r!   rY   r   rZ   r   r	   rS   ra   rQ   rR   r<   r   rC   rG   rv   ry   r}   r   rT   rI   r#   r    rV   rV   [   s;   
  L#Is3FC $J$#Ix}#JT d   !$s) ! !.DcN .tCH~ .24S> 2d3PS8n 2*4S> *DcN *t *"2S#X2 c3h2 
	2r#   rV   N)typingr   r   langchain_core._apir   langchain_core.memoryr   langchain_core.messagesr   r   langchain_core.utilsr	   langchain.memory.chat_memoryr
   langchain.memory.utilsr   r   rV   rI   r#   r    <module>r      sy      * , B ) 7 7 
	G	D)~ D)D)N 
	G	JZ JJr#   