
    A'hj                         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        |j                               d   }nnd|v rAd}t        j                  d| j                  j                   d|j                          d       n)t        d|j                          d      | j                  }||   ||   fS )	N   r   output'z' got multiple output keys: zc. The default 'output' key is being used. If this is not desired, please manually set 'output_key'.zGot multiple output keys: zT, cannot determine which to store in memory. Please set the 'output_key' explicitly.)r   r   memory_variablesr   lenlistkeyswarningswarn	__class____name__
ValueError)selfr   r   prompt_input_keyr   s        c/home/kushmeetdev/Regenta/Chatbot/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 !',,.1!4
W$%
//0 1' (QR !00@ A/ 0  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_contextF   sB     $ 6 6vw G	:%%Y/*-	
r,   c                    K   | j                  ||      \  }}| j                  j                  t        |      t	        |      g       d{    y7 wr.   )r+   r   aadd_messagesr   r
   r1   s        r*   asave_contextzBaseChatMemory.asave_contextP   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.clear\   s     r,   c                 T   K   | j                   j                          d{    y7 wr9   )r   aclearr;   s    r*   r=   zBaseChatMemory.aclear`   s     %%'''s   (&()r   N)r&   
__module____qualname____doc__r   r   r   r   __annotations__r   r   strr   r   booldictr   tupler+   r4   r7   r:   r=    r,   r*   r   r      s     +02+K'  !%J$#Ix}#!OT!=38n=/3CH~=	sCx=6
4S> 
DcN 
t 


38n

/3CH~

	

!(r,   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   rF   r,   r*   <module>rO      sU        * - ;  7 
	G	I(Z I(I(r,   