§
    ‡ìNgŠ  ã                   ó¤   — 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 d dlmZ  eddd	¬
¦  «         G d„ dee¦  «        ¦   «         ZdS )é    )ÚAnyÚDictÚListÚUnion)Ú
deprecated)ÚBaseMessageÚget_buffer_string)Úpre_init)ÚBaseChatMemory)ÚSummarizerMixinz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dZeed<   dZeed<   dZ	eed<   e
deeee         f         fd	„¦   «         Zdeeee         f         fd
„Ze
dee         fd„¦   «         Zdeeef         deeef         fd„Z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    ú[/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain/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 )zMWill always return list of memory variables.

        :meta private:
        )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_variables1   s†   € àÔ!Ô*ˆØÔ%¨Ò+Ð+à×(Ò(°Ô1KÐ(ÑLÔLð1ˆNð $ fÑ,ˆFØÔð 	Ø &ˆLˆLå,Ø TÔ%6À$Ä.ðñ ô ˆ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_variablesA   s¥   è è € àÔ'×5Ò5Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7ˆØÔ%¨Ò+Ð+à×(Ò(°Ô1KÐ(ÑLÔLð1ˆNð $ fÑ,ˆFØÔð 	Ø &ˆLˆLå,Ø TÔ%6À$Ä.ðñ ô ˆLð ” Ð.Ð.r   Úvaluesc                 óz   — |d         j         }ddh}|t          |¦  «        k    rt          d|› d|› d¦  «        ‚|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)Úclsr4   Úprompt_variablesÚexpected_keyss       r   Úvalidate_prompt_input_variablesz?ConversationSummaryBufferMemory.validate_prompt_input_variablesQ   ss   € ð " (Ô+Ô;ÐØ" KÐ0ˆØCÐ 0Ñ1Ô1Ò1Ð1ÝðKØ#ðKð KØ:GðKð Kð Kñô ð ð ˆ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_context]   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_contextb   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 limitr   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.prunei   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Ø˜tÔ9ñ*ô *ˆ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 )z9Asynchronously prune buffer if it exceeds max token limitr   N)	r+   r,   rL   rM   r   rN   rO   Úapredict_new_summaryr   rQ   s       r   rJ   z&ConversationSummaryBufferMemory.aprunev   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Ø˜tÔ9ñ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ŒgnŠnÑÔÐÐÐÐÐÐÐØ%'ˆÔ"Ð"Ð"r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚintÚ__annotations__r   Ústrr   Úpropertyr   r   r   r   r"   r!   r   r   r   r    r
   r@   rD   rI   rE   rJ   rW   rZ   Ú__classcell__)rG   s   @r   r   r      sg  ø€ € € € € € ðð ð  €OSÐÐÑØ!#Ð˜3Ð#Ð#Ñ#Ø€JÐÐÑàð?˜˜c 4¨Ô#4Ð4Ô5ð ?ð ?ð ?ñ „Xð?ð1˜u S¨$¨{Ô*;Ð%;Ô<ð 1ð 1ð 1ð 1ð
 ð! $ s¤)ð !ð !ð !ñ „Xð!ð/¨D°°c°¬Nð /¸tÀCÈÀH¼~ð /ð /ð /ð /ð /°4¸¸S¸´>ð /ÀdÈ3ÐPSÈ8Änð /ð /ð /ð /ð  ð	°Tð 	¸dð 	ð 	ð 	ñ „Xð	ð 4¨¨S¨¤>ð ¸DÀÀcÀ¼Nð Ètð ð ð ð ð ð ð
Ø˜3 ˜8”nðØ/3°C¸°H¬~ðà	ðð ð ð ð ð ðð ð ð ðð ð ð ð(ð (ð (ð (ð (ð (ð
(ð (ð (ð (ð (ð (ð (ð (ð (ð (r   r   N)Útypingr   r   r   r   Úlangchain_core._apir   Úlangchain_core.messagesr   r	   Úlangchain_core.utilsr
   Úlangchain.memory.chat_memoryr   Úlangchain.memory.summaryr   r   © r   r   ú<module>rk      sõ   ðØ )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à *Ð *Ð *Ð *Ð *Ð *Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ )Ð )Ð )Ð )Ð )Ð )à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ð €Ø
Øð	Gð	ñ ô ðx(ð x(ð x(ð x(ð x( n°oñ x(ô x(ñô ðx(ð x(ð x(r   