
    Ah                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJrJr  S SKJr  S SKJr  S S	K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)    )annotations)Any)
deprecated)BaseChatMessageHistory)BaseLanguageModel)BaseMessageSystemMessageget_buffer_string)BasePromptTemplate)pre_init)	BaseModel)LLMChain)BaseChatMemory)SUMMARY_PROMPTz0.2.12z1.0zRefer here for how to incorporate summaries of conversation history: https://langchain-ai.github.io/langgraph/how-tos/memory/add-summary-conversation-history/)sinceremovalmessagec                      \ rS rSr% SrSrS\S'   SrS\S'   S\S	'   \r	S
\S'   \
rS\S'         SS jr      SS jrSrg)SummarizerMixin   zMixin for summarizer.Humanstrhuman_prefixAI	ai_prefixr   llmr   promptztype[BaseMessage]summary_message_clsc                    [        UU R                  U R                  S9n[        U R                  U R
                  S9nUR                  X#S9$ N)r   r   )r   r   )summary	new_lines)r
   r   r   r   r   r   predictselfmessagesexisting_summaryr"   chains        P/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/memory/summary.pypredict_new_summary#SummarizerMixin.predict_new_summary#   sI    
 &**nn
	 TXXdkk:}}%5}KK    c                   #    [        UU R                  U R                  S9n[        U R                  U R
                  S9nUR                  X#S9I S h  vN $  N7fr    )r
   r   r   r   r   r   apredictr$   s        r)   apredict_new_summary$SummarizerMixin.apredict_new_summary1   sR     
 &**nn
	 TXXdkk:^^,<^RRRRs   AAAA N)r&   zlist[BaseMessage]r'   r   returnr   )__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r   r   r	   r   r*   r/   __static_attributes__r1   r,   r)   r   r      s      L#Is	!/F/-:*:L#L L 
	LS#S S 
	Sr,   r   z0.3.1z1.0.0z_Please see the migration guide at: https://python.langchain.com/docs/versions/migrating_memory/c                     ^  \ rS rSr% SrSrS\S'   SrS\S'   \SS	.         SS
 jj5       r	\
SS j5       rSS jr\SS j5       rSU 4S jjrSU 4S jjrSrU =r$ )ConversationSummaryMemory@   zContinually summarizes the conversation history.

The summary is updated after each conversation turn.
The implementations returns a summary of the conversation history which
can be used to provide context to the model.
 r   bufferhistory
memory_key   )summarize_stepc                   U " SXS.UD6n[        S[        UR                  R                  5      U5       H=  nUR	                  UR                  R                  XfU-    UR
                  5      Ul        M?     U$ )N)r   chat_memoryr   r1   )rangelenrD   r&   r*   r>   )clsr   rD   rB   kwargsobjis          r)   from_messages'ConversationSummaryMemory.from_messagesS   sp     =c=f=q#coo667HA00((-?@

CJ I
 
r,   c                    U R                   /$ )z=Will always return list of memory variables.

:meta private:
)r@   )r%   s    r)   memory_variables*ConversationSummaryMemory.memory_variablesd   s       r,   c                    U R                   (       a  U R                  U R                  S9/nOU R                  nU R                  U0$ )zReturn history buffer.)content)return_messagesr   r>   r@   )r%   inputsr>   s      r)   load_memory_variables/ConversationSummaryMemory.load_memory_variablesl   s=    33DKK3HIF[[F((r,   c                r    US   R                   nSS1nU[        U5      :w  a  SU SU S3n[        U5      eU$ )z4Validate that prompt input variables are consistent.r   r!   r"   z:Got unexpected prompt input variables. The prompt expects z, but it should have .)input_variablesset
ValueError)rG   valuesprompt_variablesexpected_keysmsgs        r)   validate_prompt_input_variables9ConversationSummaryMemory.validate_prompt_input_variablest   s[     "(+;;"K0C 011L#$$9-K  S/!r,   c                   > [         TU ]  X5        U R                  U R                  R                  SS U R
                  5      U l        g)z.Save context from this conversation to buffer.N)supersave_contextr*   rD   r&   r>   )r%   rS   outputs	__class__s      r)   rd   &ConversationSummaryMemory.save_context   s?    V-..%%bc*KK
r,   c                0   > [         TU ]  5         SU l        g)zClear memory contents.r=   N)rc   clearr>   )r%   rf   s    r)   ri   ConversationSummaryMemory.clear   s    r,   )r>   )
r   r   rD   r   rB   intrH   r   r2   r;   )r2   z	list[str])rS   dict[str, Any]r2   rl   )r[   dictr2   rm   )rS   rl   re   zdict[str, str]r2   None)r2   rn   )r3   r4   r5   r6   r7   r>   r8   r@   classmethodrK   propertyrN   rT   r   r_   rd   ri   r9   __classcell__)rf   s   @r)   r;   r;   @   s     FCJ   ,
   
#   ! !) 
 

 r,   r;   N)
__future__r   typingr   langchain_core._apir   langchain_core.chat_historyr   langchain_core.language_modelsr   langchain_core.messagesr   r	   r
   langchain_core.promptsr   langchain_core.utilsr   pydanticr   langchain.chains.llmr   langchain.memory.chat_memoryr   langchain.memory.promptr   r   r;   r1   r,   r)   <module>r~      s    "  * > < Q Q 5 )  ) 7 2 
	d	#Si #S#SL 
	G	D DDr,   