§
    è˜ºh`  ã                   ó^   — d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
  G d„ de
¦  «        ZdS )é    )ÚAnyÚDictÚList)ÚBaseLanguageModel)ÚBaseMessageÚget_buffer_string)ÚBaseChatMemoryc                   óL  ‡ — e Zd ZU dZdZeed<   dZeed<   eed<   dZ	eed<   d	Z
eed
<   edefd„¦   «         Zedefd„¦   «         Zedee         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         ddfˆ fd„Zˆ xZS )ÚConversationTokenBufferMemoryz*Conversation chat memory with token limit.ÚHumanÚhuman_prefixÚAIÚ	ai_prefixÚllmÚhistoryÚ
memory_keyiÐ  Úmax_token_limitÚreturnc                 ó,   — | j         r| j        n| j        S )zString buffer of memory.)Úreturn_messagesÚbuffer_as_messagesÚbuffer_as_str©Úselfs    úe/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/memory/token_buffer.pyÚbufferz$ConversationTokenBufferMemory.buffer   s   € ð +/Ô*>ÐVˆtÔ&Ð&ÀDÔDVÐVó    c                 óN   — t          | j        j        | j        | j        ¬¦  «        S )z@Exposes the buffer as a string in case return_messages is False.)r   r   )r   Úchat_memoryÚmessagesr   r   r   s    r   r   z+ConversationTokenBufferMemory.buffer_as_str   s/   € õ !ØÔÔ%ØÔ*Ø”nð
ñ 
ô 
ð 	
r   c                 ó   — | j         j        S )zIExposes the buffer as a list of messages in case return_messages is True.)r   r    r   s    r   r   z0ConversationTokenBufferMemory.buffer_as_messages    s   € ð ÔÔ(Ð(r   c                 ó   — | j         gS )zMWill always return list of memory variables.

        :meta private:
        )r   r   s    r   Úmemory_variablesz.ConversationTokenBufferMemory.memory_variables%   s   € ð ”Ð Ð r   Úinputsc                 ó   — | j         | j        iS )zReturn history buffer.)r   r   )r   r$   s     r   Úload_memory_variablesz3ConversationTokenBufferMemory.load_memory_variables-   s   € à” ¤Ð-Ð-r   ÚoutputsNc                 ój  •— t          ¦   «                              ||¦  «         | j        j        }| j                             |¦  «        }|| j        k    r\g }|| j        k    rQ|                     |                     d¦  «        ¦  «         | j                             |¦  «        }|| j        k    °MdS dS dS )z6Save context from this conversation to buffer. Pruned.r   N)	ÚsuperÚsave_contextr   r    r   Úget_num_tokens_from_messagesr   ÚappendÚpop)r   r$   r'   r   Úcurr_buffer_lengthÚpruned_memoryÚ	__class__s         €r   r*   z*ConversationTokenBufferMemory.save_context1   s·   ø€ å‰Œ×Ò˜V WÑ-Ô-Ð-àÔ!Ô*ˆØ!œX×BÒBÀ6ÑJÔJÐØ Ô 4Ò4Ð4ØˆMØ$ tÔ';Ò;Ð;Ø×$Ò$ V§Z¢Z°¡]¤]Ñ3Ô3Ð3Ø%)¤X×%JÒ%JÈ6Ñ%RÔ%RÐ"ð % tÔ';Ò;Ð;Ð;Ð;ð 5Ð4à;Ð;r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   r   r   r   ÚintÚpropertyr   r   r   r   r   r   r#   r   r&   r*   Ú__classcell__)r0   s   @r   r   r   	   s�  ø€ € € € € € Ø4Ð4à€L�#ÐÐÑØ€IˆsÐÐÑØ	ÐÐÑØ€J�ÐÐÑØ€O�SÐÐÑàðW˜ð Wð Wð Wñ „XðWð ð
˜sð 
ð 
ð 
ñ „Xð
ð ð) D¨Ô$5ð )ð )ð )ñ „Xð)ð ð! $ s¤)ð !ð !ð !ñ „Xð!ð.¨D°°c°¬Nð .¸tÀCÈÀH¼~ð .ð .ð .ð .ð
S 4¨¨S¨¤>ð 
S¸DÀÀcÀ¼Nð 
SÈtð 
Sð 
Sð 
Sð 
Sð 
Sð 
Sð 
Sð 
Sð 
Sð 
Sr   r   N)Útypingr   r   r   Úlangchain_core.language_modelsr   Úlangchain_core.messagesr   r   Úlangchain.memory.chat_memoryr	   r   © r   r   ú<module>r?      s�   ðØ "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à <Ð <Ð <Ð <Ð <Ð <Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà 7Ð 7Ð 7Ð 7Ð 7Ð 7ð2Sð 2Sð 2Sð 2Sð 2S Nñ 2Sô 2Sð 2Sð 2Sð 2Sr   