§
    m
¼iÆ  ã                  ó4  — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ  eddd¬¦  «         G d„ de¦  «        ¦   «         Z eddd¬¦  «         G d„ dee¦  «        ¦   «         ZdS )é    )Úannotations)ÚAny)Ú
deprecated)ÚBaseChatMessageHistory)ÚBaseLanguageModel)ÚBaseMessageÚSystemMessageÚget_buffer_string)ÚBasePromptTemplate)Úpre_init)Ú	BaseModel)Úoverride)ÚLLMChain)ÚBaseChatMemory)ÚSUMMARY_PROMPTz0.2.12z1.0z’Refer here for how to incorporate summaries of conversation history: https://docs.langchain.com/oss/python/langgraph/add-memory#summarize-messages)ÚsinceÚremovalÚmessagec                  óf   — e Zd ZU dZdZded<   dZded<   ded<   eZd	ed
<   e	Z
ded<   dd„Zdd„ZdS )ÚSummarizerMixinzMixin for summarizer.ÚHumanÚstrÚhuman_prefixÚAIÚ	ai_prefixr   Úllmr   Úpromptztype[BaseMessage]Úsummary_message_clsÚmessagesúlist[BaseMessage]Úexisting_summaryÚreturnc                óž   — t          || j        | j        ¬¦  «        }t          | j        | j        ¬¦  «        }|                     ||¬¦  «        S )á   Predict a new summary based on the messages and existing summary.

        Args:
            messages: List of messages to summarize.
            existing_summary: Existing summary to build upon.

        Returns:
            A new summary string.
        ©r   r   ©r   r   ©ÚsummaryÚ	new_lines)r
   r   r   r   r   r   Úpredict©Úselfr   r!   r)   Úchains        ú”C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_classic/memory/summary.pyÚpredict_new_summaryz#SummarizerMixin.predict_new_summary$   sU   € õ &ØØÔ*Ø”nð
ñ 
ô 
ˆ	õ ˜TœX¨d¬kÐ:Ñ:Ô:ˆØ}Š}Ð%5Àˆ}ÑKÔKÐKó    c              ƒ  ó®   K  — t          || j        | j        ¬¦  «        }t          | j        | j        ¬¦  «        }|                     ||¬¦  «        ƒ d{V —†S )r$   r%   r&   r'   N)r
   r   r   r   r   r   Úapredictr+   s        r.   Úapredict_new_summaryz$SummarizerMixin.apredict_new_summary;   sk   è è € õ &ØØÔ*Ø”nð
ñ 
ô 
ˆ	õ ˜TœX¨d¬kÐ:Ñ:Ô:ˆØ—^’^Ð,<È	^ÑRÔRÐRÐRÐRÐRÐRÐRÐRr0   N)r   r    r!   r   r"   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r   r	   r   r/   r3   © r0   r.   r   r      s¡   € € € € € € ð  Ðà€LÐÐÐÑØ€IÐÐÐÑØÐÐÑØ!/€FÐ/Ð/Ð/Ñ/Ø-:ÐÐ:Ð:Ð:Ñ:ðLð Lð Lð Lð.Sð Sð Sð Sð Sð Sr0   r   z0.3.1z1.0.0z_Please see the migration guide at: https://python.langchain.com/docs/versions/migrating_memory/c                  ó´   ‡ — e Zd ZU dZdZded<   dZded<   eddœd d„¦   «         Ze	d!d„¦   «         Z
ed"d„¦   «         Zed#d„¦   «         Zd$ˆ fd„Zd%ˆ fd„Zˆ xZS )&ÚConversationSummaryMemoryzìContinually 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_stepr   r   Úchat_memoryr   rA   ÚintÚkwargsr   r"   c               óÜ   —  | d||dœ|¤Ž}t          dt          |j        j        ¦  «        |¦  «        D ]7}|                     |j        j        |||z   …         |j        ¦  «        |_        Œ8|S )a½  Create a ConversationSummaryMemory from a list of messages.

        Args:
            llm: The language model to use for summarization.
            chat_memory: The chat history to summarize.
            summarize_step: Number of messages to summarize at a time.
            **kwargs: Additional keyword arguments to pass to the class.

        Returns:
            An instance of ConversationSummaryMemory with the summarized history.
        )r   rB   r   r9   )ÚrangeÚlenrB   r   r/   r=   )Úclsr   rB   rA   rD   ÚobjÚis          r.   Úfrom_messagesz'ConversationSummaryMemory.from_messagesf   s„   € ð( ˆcÐ=c {Ð=Ð=°fÐ=Ð=ˆÝq#˜cœoÔ6Ñ7Ô7¸ÑHÔHð 	ð 	ˆAØ×0Ò0Ø”Ô(¨¨Q°Ñ-?Ð)?Ô@Ø”
ñô ˆCŒJˆJð ˆ
r0   ú	list[str]c                ó   — | j         gS )z,Will always return list of memory variables.)r?   )r,   s    r.   Úmemory_variablesz*ConversationSummaryMemory.memory_variables‚   s   € ð ”Ð Ð r0   Úinputsúdict[str, Any]c                ój   — | j         r|                      | j        ¬¦  «        g}n| j        }| j        |iS )zReturn history buffer.)Úcontent)Úreturn_messagesr   r=   r?   )r,   rO   r=   s      r.   Úload_memory_variablesz/ConversationSummaryMemory.load_memory_variables‡   s@   € ð Ôð 	!Ø×3Ò3¸D¼KÐ3ÑHÔHÐIˆFˆFà”[ˆFØ” Ð(Ð(r0   ÚvaluesÚdictc                ó~   — |d         j         }ddh}|t          |¦  «        k    rd|› d|› d}t          |¦  «        ‚|S )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)rH   rU   Úprompt_variablesÚexpected_keysÚmsgs        r.   Úvalidate_prompt_input_variablesz9ConversationSummaryMemory.validate_prompt_input_variables   sr   € ð " (Ô+Ô;ÐØ" KÐ0ˆØCÐ 0Ñ1Ô1Ò1Ð1ðKØ#ðKð KØ:GðKð Kð Kð õ ˜S‘/”/Ð!Øˆr0   Úoutputsúdict[str, str]ÚNonec                ó°   •— t          ¦   «                              ||¦  «         |                      | j        j        dd…         | j        ¦  «        | _        dS )z.Save context from this conversation to buffer.éþÿÿÿN)ÚsuperÚsave_contextr/   rB   r   r=   )r,   rO   r`   Ú	__class__s      €r.   rf   z&ConversationSummaryMemory.save_context   sO   ø€ å‰Œ×Ò˜V WÑ-Ô-Ð-Ø×.Ò.ØÔÔ% b c cÔ*ØŒKñ
ô 
ˆŒˆˆr0   c                óV   •— t          ¦   «                              ¦   «          d| _        dS )zClear memory contents.r<   N)re   Úclearr=   )r,   rg   s    €r.   ri   zConversationSummaryMemory.clear¥   s   ø€ å‰ŒŠ‰ŒˆØˆŒˆˆr0   )
r   r   rB   r   rA   rC   rD   r   r"   r;   )r"   rL   )rO   rP   r"   rP   )rU   rV   r"   rV   )rO   rP   r`   ra   r"   rb   )r"   rb   )r4   r5   r6   r7   r=   r8   r?   ÚclassmethodrK   ÚpropertyrN   r   rT   r   r_   rf   ri   Ú__classcell__)rg   s   @r.   r;   r;   S   s  ø€ € € € € € ðð ð €FÐÐÐÑØ€JÐÐÐÑàð  ðð ð ð ð ñ „[ðð6 ð!ð !ð !ñ „Xð!ð ð)ð )ð )ñ „Xð)ð ð
ð 
ð 
ñ „Xð
ð
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ð ð ð r0   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   Útyping_extensionsr   Úlangchain_classic.chains.llmr   Ú$langchain_classic.memory.chat_memoryr   Úlangchain_classic.memory.promptr   r   r;   r9   r0   r.   ú<module>rz      sÆ  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø >Ð >Ð >Ð >Ð >Ð >Ø <Ð <Ð <Ð <Ð <Ð <Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø :Ð :Ð :Ð :Ð :Ð :ð €Ø
Øð	Xð	ñ ô ð5Sð 5Sð 5Sð 5Sð 5Siñ 5Sô 5Sñô ð5Sðp €Ø
Øð	Gð	ñ ô ðMð Mð Mð Mð M °ñ Mô Mñô ðMð Mð Mr0   