§
    ™Štj#  ã                  ó6  — 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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2.0.0zôFor agents, summarize conversation history with `create_agent` and summarization middleware. See https://docs.langchain.com/oss/python/langchain/short-term-memory and https://docs.langchain.com/oss/python/langgraph/add-memory#summarize-messages)ÚsinceÚremovalÚaddendumc                  ó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        ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/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langchain.agents.create_agentzùFor agents that need to remember prior interactions, use `create_agent` with checkpointing or the `Store` API. See https://docs.langchain.com/oss/python/langchain/short-term-memory and https://docs.langchain.com/oss/python/langchain/long-term-memory)r   r   Úalternativer   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   rB   Ú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   rC   r   r9   )ÚrangeÚlenrC   r   r/   r>   )Úclsr   rC   rB   rE   ÚobjÚis          r.   Úfrom_messagesz'ConversationSummaryMemory.from_messagesk   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,   rP   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)rI   rV   Ú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/   rC   r   r>   )r,   rP   ra   Ú	__class__s      €r.   rg   z&ConversationSummaryMemory.save_context¢   sO   ø€ å‰Œ×Ò˜V WÑ-Ô-Ð-Ø×.Ò.ØÔÔ% b c cÔ*ØŒKñ
ô 
ˆŒˆˆr0   c                óV   •— t          ¦   «                              ¦   «          d| _        dS )zClear memory contents.r=   N)rf   Úclearr>   )r,   rh   s    €r.   rj   zConversationSummaryMemory.clearª   s   ø€ å‰Œ�Š‰ŒˆØˆŒˆˆr0   )
r   r   rC   r   rB   rD   rE   r   r"   r<   )r"   rM   )rP   rQ   r"   rQ   )rV   rW   r"   rW   )rP   rQ   ra   rb   r"   rc   )r"   rc   )r4   r5   r6   r7   r>   r8   r@   ÚclassmethodrL   ÚpropertyrO   r   rU   r   r`   rg   rj   Ú__classcell__)rh   s   @r.   r<   r<   U   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>r{      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 €Ø
ØØ/ð	Kð
ñ 
ô 
ðMð Mð Mð Mð M °ñ Mô Mñ
ô 
ðMð Mð Mr0   