Ë
    ´ŒjÏ  ã                  ó  — 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  eddd¬«       G d„ de«      «       Z eddd¬«       G d„ dee«      «       Zy)é    )Úannotations)ÚAny)Ú
deprecated)ÚBaseChatMessageHistory)ÚBaseLanguageModel)ÚBaseMessageÚSystemMessageÚget_buffer_string)ÚBasePromptTemplate)Úpre_init)Ú	BaseModel)ÚLLMChain)ÚBaseChatMemory)ÚSUMMARY_PROMPTz0.2.12z1.0zžRefer here for how to incorporate summaries of conversation history: https://langchain-ai.github.io/langgraph/how-tos/memory/add-summary-conversation-history/)ÚsinceÚremovalÚmessagec                  ó|   — 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y)ÚSummarizerMixinzMixin for summarizer.ÚHumanÚstrÚhuman_prefixÚAIÚ	ai_prefixr   Úllmr   Úpromptztype[BaseMessage]Úsummary_message_clsc                ó®   — t        || j                  | j                  ¬«      }t        | j                  | j
                  ¬«      }|j                  ||¬«      S ©N)r   r   )r   r   )ÚsummaryÚ	new_lines)r
   r   r   r   r   r   Úpredict©ÚselfÚmessagesÚexisting_summaryr!   Úchains        úb/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/memory/summary.pyÚpredict_new_summaryz#SummarizerMixin.predict_new_summary#   sK   € ô
 &ØØ×*Ñ*Ø—n‘nô
ˆ	ô ˜TŸX™X¨d¯k©kÔ:ˆØ�}‰}Ð%5Àˆ}ÓKÐKó    c              ƒ  óÊ   K  — t        || j                  | j                  ¬«      }t        | j                  | j
                  ¬«      }|j                  ||¬«      ƒ d {  –—† S 7 Œ­wr   )r
   r   r   r   r   r   Úapredictr#   s        r(   Úapredict_new_summaryz$SummarizerMixin.apredict_new_summary1   sU   è ø€ ô
 &ØØ×*Ñ*Ø—n‘nô
ˆ	ô ˜TŸX™X¨d¯k©kÔ:ˆØ—^‘^Ð,<È	�^ÓR×RÐRÐRús   ‚AA#ÁA!ÁA#N)r%   zlist[BaseMessage]r&   r   Úreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r   r	   r   r)   r-   © r*   r(   r   r      s‚   … ñ  à€L�#ÓØ€IˆsÓØ	ÓØ!/€FÐÓ/Ø-:ÐÐ*Ó:ðLà#ðLð ðLð 
ó	LðSà#ðSð ðSð 
ô	Sr*   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
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_stepc               óð   —  | d||dœ|¤Ž}t        dt        |j                  j                  «      |«      D ]=  }|j	                  |j                  j                  |||z    |j
                  «      |_        Œ? |S )N)r   Úchat_memoryr   r4   )ÚrangeÚlenr>   r%   r)   r8   )Úclsr   r>   r<   ÚkwargsÚobjÚis          r(   Úfrom_messagesz'ConversationSummaryMemory.from_messagesS   st   € ñ Ð=�c {Ñ=°fÑ=ˆÜ�qœ#˜cŸo™o×6Ñ6Ó7¸ÖHˆAØ×0Ñ0Ø—‘×(Ñ(¨¨Q°Ñ-?Ð@Ø—
‘
óˆC�Jð Ið
 ˆ
r*   c                ó   — | j                   gS )zMWill always return list of memory variables.

        :meta private:
        )r:   )r$   s    r(   Úmemory_variablesz*ConversationSummaryMemory.memory_variablesd   s   € ð —‘Ð Ð r*   c                óŠ   — | j                   r| j                  | j                  ¬«      g}n| j                  }| j                  |iS )zReturn history buffer.)Úcontent)Úreturn_messagesr   r8   r:   )r$   Úinputsr8   s      r(   Úload_memory_variablesz/ConversationSummaryMemory.load_memory_variablesl   s=   € à×ÒØ×3Ñ3¸D¿K¹KÐ3ÓHÐI‰Fà—[‘[ˆFØ—‘ Ð(Ð(r*   c                óp   — |d   j                   }ddh}|t        |«      k7  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)rA   ÚvaluesÚprompt_variablesÚexpected_keysÚmsgs        r(   Úvalidate_prompt_input_variablesz9ConversationSummaryMemory.validate_prompt_input_variablest   s[   € ð " (Ñ+×;Ñ;ÐØ" KÐ0ˆØœCÐ 0Ó1Ò1àLØ#Ð$Ð$9¸-¸ÈðKð ô ˜S“/Ð!Øˆr*   c                ó–   •— t         ‰| �  ||«       | j                  | j                  j                  dd | j
                  «      | _        y)z.Save context from this conversation to buffer.éþÿÿÿN)ÚsuperÚsave_contextr)   r>   r%   r8   )r$   rK   ÚoutputsÚ	__class__s      €r(   rZ   z&ConversationSummaryMemory.save_context�   sA   ø€ ä‰Ñ˜V WÔ-Ø×.Ñ.Ø×Ñ×%Ñ% b cÐ*Ø�K‰Kó
ˆ�r*   c                ó0   •— t         ‰| �  «        d| _        y)zClear memory contents.r7   N)rY   Úclearr8   )r$   r\   s    €r(   r^   zConversationSummaryMemory.clear‰   s   ø€ ä‰‰ŒØˆ�r*   )
r   r   r>   r   r<   ÚintrB   r   r.   r6   )r.   z	list[str])rK   údict[str, Any]r.   r`   )rR   Údictr.   ra   )rK   r`   r[   zdict[str, str]r.   ÚNone)r.   rb   )r/   r0   r1   r2   r8   r3   r:   ÚclassmethodrE   ÚpropertyrG   rL   r   rV   rZ   r^   Ú__classcell__)r\   s   @r(   r6   r6   @   s¡   ø… ñð €FˆCÓØ€J�Óàð  ñàðð ,ðð
 ðð ðð 
#òó ðð  ò!ó ð!ó)ð ò
ó ð
õ
÷ñ r*   r6   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   Úlangchain.chains.llmr   Úlangchain.memory.chat_memoryr   Úlangchain.memory.promptr   r   r6   r4   r*   r(   Ú<module>rr      s�   ðÝ "å å *Ý >Ý <ß QÑ QÝ 5Ý )Ý å )Ý 7Ý 2ñ Ø
Øð	dô	ô#S�ió #Sóð#SñL Ø
Øð	Gô	ôD °ó DóñDr*   