
    h                         d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d d	lmZ  ed
dd       G d dee             Zy)    N)ABC)AnyOptional)
deprecated)BaseChatMessageHistoryInMemoryChatMessageHistory)
BaseMemory)	AIMessageHumanMessage)Field)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                       e Zd ZU dZ ee      Zeed<   dZ	e
e   ed<   dZe
e   ed<   dZeed<   d	eeef   d
eeef   deeef   fdZd	eeef   d
eeef   ddfdZd	eeef   d
eeef   ddfdZddZddZy)BaseChatMemoryax  Abstract base class for chat memory.

    **ATTENTION** This abstraction was created prior to when chat models had
        native tool calling capabilities.
        It does **NOT** support native tool calling capabilities for chat models and
        will fail SILENTLY if used with a chat model that has native tool calling.

    DO NOT USE THIS ABSTRACTION FOR NEW CODE.
    )default_factorychat_memoryN
output_key	input_keyFreturn_messagesinputsoutputsreturnc                    | j                   t        || j                        }n| j                   }| j                  t	        |      dk(  r#t        t        |j                                     }nrd|v rCd}t        j                  d| j                  j                   d|j                          dd       n+d|j                          d	}t        |      | j                  }||   ||   fS )
N   output'z' got multiple output keys: zc. The default 'output' key is being used. If this is not desired, please manually set 'output_key'.   )
stacklevelzGot multiple output keys: zT, cannot determine which to store in memory. Please set the 'output_key' explicitly.)r   r   memory_variablesr   lennextiterkeyswarningswarn	__class____name__
ValueError)selfr   r   prompt_input_keyr   msgs         Z/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain/memory/chat_memory.py_get_input_outputz BaseChatMemory._get_input_output+   s    
 >>!3FD<Q<QR#~~??"7|q !$w||~"67
W$%
//0 1' (QR  !	 10@ A/ 0 
 !o%J&')<<<    c                     | j                  ||      \  }}| j                  j                  t        |      t	        |      g       yz.Save context from this conversation to buffer.)contentN)r/   r   add_messagesr   r
   r+   r   r   	input_str
output_strs        r.   save_contextzBaseChatMemory.save_contextJ   sB     $ 6 6vw G	:%%Y/*-	
r0   c                    K   | j                  ||      \  }}| j                  j                  t        |      t	        |      g       d{    y7 wr2   )r/   r   aadd_messagesr   r
   r5   s        r.   asave_contextzBaseChatMemory.asave_contextT   sR      !% 6 6vw G	:,,Y/*-
 	
 	
s   A
AAAc                 8    | j                   j                          yzClear memory contents.N)r   clearr+   s    r.   r>   zBaseChatMemory.clearb   s     r0   c                 T   K   | j                   j                          d{    y7 wr=   )r   aclearr?   s    r.   rA   zBaseChatMemory.aclearf   s     %%'''s   (&()r   N)r)   
__module____qualname____doc__r   r   r   r   __annotations__r   r   strr   r   booldictr   tupler/   r8   r;   r>   rA    r0   r.   r   r      s     +02+K'  !%J$#Ix}#!OT!=S#X= c3h= 
sCx	=>
4S> 
DcN 
t 

S#X
 c3h
 
	
!(r0   r   )r&   abcr   typingr   r   langchain_core._apir   langchain_core.chat_historyr   r   langchain_core.memoryr	   langchain_core.messagesr
   r   pydanticr   langchain.memory.utilsr   r   rJ   r0   r.   <module>rS      sU        * - ;  7 
	G	O(Z O(O(r0   