§
    ™Štj  ã                   ó¦   — d dl mZ d dlmZ d dlmZ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
d¬¦  «         G d„ dee¦  «        ¦   «         ZdS )é    )ÚAny)Ú
deprecated)ÚBaseMessageÚget_buffer_string)Úpre_init)Úoverride)ÚBaseChatMemory)ÚSummarizerMixinz0.3.1z2.0.0z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)ÚsinceÚremovalÚalternativeÚaddendumc                   óð  ‡ — e Zd ZU dZdZeed<   dZeed<   dZ	eed<   e
deee         z  fd	„¦   «         Zdeee         z  fd
„Ze
dee         fd„¦   «         Zedeeef         deeef         fd„¦   «         Zedeeef         deeef         fd„¦   «         Zededefd„¦   «         Zdeeef         deeef         ddfˆ fd„Zdeeef         deeef         ddfˆ fd„Zdd„Zdd„Zdˆ fd„Zdˆ fd„Zˆ xZS )ÚConversationSummaryBufferMemorya  Buffer with summarizer for storing conversation memory.

    Provides a running summary of the conversation together with the most recent
    messages in the conversation under the constraint that the total number of
    tokens in the conversation does not exceed a certain limit.
    iÐ  Úmax_token_limitÚ Úmoving_summary_bufferÚhistoryÚ
memory_keyÚreturnc                 óB   — |                       i ¦  «        | j                 S )zString buffer of memory.)Úload_memory_variablesr   ©Úselfs    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_classic/memory/summary_buffer.pyÚbufferz&ConversationSummaryBufferMemory.buffer#   s   € ð ×)Ò)¨"Ñ-Ô-¨d¬oÔ>Ð>ó    c              ƒ   óV   K  — |                       i ¦  «        ƒ d{V —†}|| j                 S )zAsync memory buffer.N)Úaload_memory_variablesr   )r   Úmemory_variabless     r   Úabufferz'ConversationSummaryBufferMemory.abuffer(   s9   è è € à!%×!<Ò!<¸RÑ!@Ô!@Ð@Ð@Ð@Ð@Ð@Ð@ÐØ ¤Ô0Ð0r   c                 ó   — | j         gS )z,Will always return list of memory variables.)r   r   s    r   r    z0ConversationSummaryBufferMemory.memory_variables-   s   € ð ”Ð Ð r   Úinputsc                 óÐ   — | j         j        }| j        dk    r!|                      | j        ¬¦  «        g}||z   }| j        r|}nt          || j        | j        ¬¦  «        }| j        |iS )zReturn history buffer.r   ©Úcontent©Úhuman_prefixÚ	ai_prefix)	Úchat_memoryÚmessagesr   Úsummary_message_clsÚreturn_messagesr   r(   r)   r   ©r   r#   r   Úfirst_messagesÚfinal_buffers        r   r   z5ConversationSummaryBufferMemory.load_memory_variables2   sŠ   € ð Ô!Ô*ˆØÔ%¨Ò+Ð+à×(Ò(°Ô1KÐ(ÑLÔLð1ˆNð $ fÑ,ˆFØÔð 	Ø &ˆLˆLå,ØØ!Ô.Øœ.ðñ ô ˆLð
 ” Ð.Ð.r   c              ƒ   óú   K  — | j                              ¦   «         ƒ d{V —†}| j        dk    r!|                      | j        ¬¦  «        g}||z   }| j        r|}nt          || j        | j        ¬¦  «        }| j        |iS )zHAsynchronously return key-value pairs given the text input to the chain.Nr   r%   r'   )	r*   Úaget_messagesr   r,   r-   r   r(   r)   r   r.   s        r   r   z6ConversationSummaryBufferMemory.aload_memory_variablesE   s©   è è € ð Ô'×5Ò5Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7ˆØÔ%¨Ò+Ð+à×(Ò(°Ô1KÐ(ÑLÔLð1ˆNð $ fÑ,ˆFØÔð 	Ø &ˆLˆLå,ØØ!Ô.Øœ.ðñ ô ˆLð
 ” Ð.Ð.r   Úvaluesc                 ó~   — |d         j         }ddh}|t          |¦  «        k    rd|› d|› d�}t          |¦  «        ‚|S )z4Validate that prompt input variables are consistent.ÚpromptÚsummaryÚ	new_linesz:Got unexpected prompt input variables. The prompt expects z, but it should have ú.)Úinput_variablesÚsetÚ
ValueError)Úclsr3   Úprompt_variablesÚexpected_keysÚmsgs        r   Úvalidate_prompt_input_variablesz?ConversationSummaryBufferMemory.validate_prompt_input_variablesX   sr   € ð " (Ô+Ô;ÐØ" KÐ0ˆØ�CÐ 0Ñ1Ô1Ò1Ð1ðKØ#ðKð KØ:GðKð Kð Kð õ ˜S‘/”/Ð!Øˆr   ÚoutputsNc                 ót   •— t          ¦   «                              ||¦  «         |                      ¦   «          dS )z.Save context from this conversation to buffer.N)ÚsuperÚsave_contextÚprune©r   r#   rA   Ú	__class__s      €r   rD   z,ConversationSummaryBufferMemory.save_contexte   s.   ø€ å‰Œ×Ò˜V WÑ-Ô-Ð-Ø�
Š
‰Œˆˆˆr   c              ƒ   ó�   •K  — t          ¦   «                              ||¦  «        ƒ d{V —† |                      ¦   «         ƒ d{V —† dS )z=Asynchronously save context from this conversation to buffer.N)rC   Úasave_contextÚaprunerF   s      €r   rI   z-ConversationSummaryBufferMemory.asave_contextj   s[   øè è € õ ‰gŒg×#Ò# F¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ø�kŠk‰mŒmÐÐÐÐÐÐÐÐÐr   c                 ó`  — | j         j        }| j                             |¦  «        }|| j        k    r|g }|| j        k    rM|                     |                     d¦  «        ¦  «         | j                             |¦  «        }|| j        k    °M|                      || j        ¦  «        | _        dS dS )z+Prune buffer if it exceeds max token limit.r   N)	r*   r+   ÚllmÚget_num_tokens_from_messagesr   ÚappendÚpopÚpredict_new_summaryr   ©r   r   Úcurr_buffer_lengthÚpruned_memorys       r   rE   z%ConversationSummaryBufferMemory.prunes   s¹   € àÔ!Ô*ˆØ!œX×BÒBÀ6ÑJÔJÐØ Ô 4Ò4Ð4ØˆMØ$ tÔ';Ò;Ð;Ø×$Ò$ V§Z¢Z°¡]¤]Ñ3Ô3Ð3Ø%)¤X×%JÒ%JÈ6Ñ%RÔ%RÐ"ð % tÔ';Ò;Ð;ð *.×)AÒ)AØØÔ*ñ*ô *ˆDÔ&Ð&Ð&ð 5Ð4r   c              ƒ   óp  K  — | j         j        }| j                             |¦  «        }|| j        k    r‚g }|| j        k    rM|                     |                     d¦  «        ¦  «         | j                             |¦  «        }|| j        k    °M|                      || j        ¦  «        ƒ d{V —†| _        dS dS )z:Asynchronously prune buffer if it exceeds max token limit.r   N)	r*   r+   rL   rM   r   rN   rO   Úapredict_new_summaryr   rQ   s       r   rJ   z&ConversationSummaryBufferMemory.aprune�   sÛ   è è € àÔ!Ô*ˆØ!œX×BÒBÀ6ÑJÔJÐØ Ô 4Ò4Ð4ØˆMØ$ tÔ';Ò;Ð;Ø×$Ò$ V§Z¢Z°¡]¤]Ñ3Ô3Ð3Ø%)¤X×%JÒ%JÈ6Ñ%RÔ%RÐ"ð % tÔ';Ò;Ð;ð 04×/HÒ/HØØÔ*ñ0ô 0ð *ð *ð *ð *ð *ð *ˆDÔ&Ð&Ð&ð 5Ð4r   c                 óV   •— t          ¦   «                              ¦   «          d| _        dS )zClear memory contents.r   N)rC   Úclearr   ©r   rG   s    €r   rW   z%ConversationSummaryBufferMemory.clear�   s"   ø€ å‰Œ�Š‰ŒˆØ%'ˆÔ"Ð"Ð"r   c              ƒ   óf   •K  — t          ¦   «                              ¦   «         ƒ d{V —† d| _        dS )z%Asynchronously clear memory contents.Nr   )rC   Úaclearr   rX   s    €r   rZ   z&ConversationSummaryBufferMemory.aclear”   s;   øè è € å‰gŒg�nŠnÑÔÐÐÐÐÐÐÐØ%'ˆÔ"Ð"Ð"r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚintÚ__annotations__r   Ústrr   ÚpropertyÚlistr   r   r!   r    r   Údictr   r   r   r   r@   rD   rI   rE   rJ   rW   rZ   Ú__classcell__)rG   s   @r   r   r      sy  ø€ € € € € € ðð ð  €O�SÐÐÑØ!#Ð˜3Ð#Ð#Ñ#Ø€J�ÐÐÑàð?˜˜d ;Ô/Ñ/ð ?ð ?ð ?ñ „Xð?ð1˜s T¨+Ô%6Ñ6ð 1ð 1ð 1ð 1ð
 ð! $ s¤)ð !ð !ð !ñ „Xð!ð ð/¨D°°c°¬Nð /¸tÀCÈÀH¼~ð /ð /ð /ñ „Xð/ð$ ð/°4¸¸S¸´>ð /ÀdÈ3ÐPSÈ8Änð /ð /ð /ñ „Xð/ð$ ð
°Tð 
¸dð 
ð 
ð 
ñ „Xð
ð 4¨¨S¨¤>ð ¸DÀÀcÀ¼Nð Ètð ð ð ð ð ð ð
à�S˜#�X”ðð �c˜3�h”ðð 
ð	ð ð ð ð ð ðð ð ð ðð ð ð ð(ð (ð (ð (ð (ð (ð
(ð (ð (ð (ð (ð (ð (ð (ð (ð (r   r   N)Útypingr   Úlangchain_core._apir   Úlangchain_core.messagesr   r   Úlangchain_core.utilsr   Útyping_extensionsr   Ú$langchain_classic.memory.chat_memoryr	   Ú langchain_classic.memory.summaryr
   r   © r   r   ú<module>rn      sø   ðØ Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ )Ð )Ð )Ð )Ð )Ð )Ø &Ð &Ð &Ð &Ð &Ð &à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø <Ð <Ð <Ð <Ð <Ð <ð €Ø
ØØ/ð	Kð
ñ 
ô 
ð@(ð @(ð @(ð @(ð @( n°oñ @(ô @(ñ
ô 
ð@(ð @(ð @(r   