
    }hw                         d dl Z d dlmZ d dlmZmZ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DictOptionalTuple)
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        V/var/www/html/engine/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r0   )r-   r   aadd_messagesr   r   r3   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r;   )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   boolr   r   r   r-   r6   r9   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   r   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      sX      - - * - ;  7 
	G	I(Z I(I(r.   