Ë
    µŒjï  ã                   óî   — d dl mZmZmZmZ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mZmZ 	 d dlmZ d d	lmZ d d
lmZmZ d dlmZ  G d„ de«      Zy# e $ r  G d„ d«      ZY yw xY w)é    )ÚAnyÚDictÚListÚTypeÚUnion)ÚBaseLanguageModel)ÚBaseMessageÚSystemMessageÚget_buffer_string)ÚBasePromptTemplate)ÚField)ÚNetworkxEntityGraph)ÚKnowledgeTripleÚget_entitiesÚparse_triples)ÚLLMChain)ÚBaseChatMemory)ÚENTITY_EXTRACTION_PROMPTÚ"KNOWLEDGE_TRIPLE_EXTRACTION_PROMPT)Úget_prompt_input_keyc                   ó¼  ‡ — e Zd ZU dZdZeed<   dZeed<   dZ	eed<    e
e¬«      Zeed	<   eZeed
<   eZeed<   eed<   eZee   ed<   	 dZeed<   deeef   deeef   fd„Zedee   fd„«       Zdeeef   defd„Zdeeef   defd„Zdedee   fd„Z deeef   dee   fd„Z!dedee"   fd„Z#deeef   ddfd„Z$deeef   deeef   ddfˆ fd„Z%dˆ fd„Z&ˆ xZ'S ) ÚConversationKGMemoryz¶Knowledge graph conversation memory.

        Integrates with external knowledge graph to store and retrieve
        information about knowledge triples in the conversation.
        é   ÚkÚHumanÚhuman_prefixÚAIÚ	ai_prefix)Údefault_factoryÚkgÚknowledge_extraction_promptÚentity_extraction_promptÚllmÚsummary_message_clsÚhistoryÚ
memory_keyÚinputsÚreturnc                 óŠ  — | j                  |«      }g }|D ]I  }| j                  j                  |«      }|sŒ!d|› ddj                  |«      › d�}|j	                  |«       ŒK |s| j
                  rg nd}n=| j
                  r |D �cg c]  }| j                  |¬«      ‘Œ }}ndj                  |«      }| j                  |iS c c}w )zReturn history buffer.zOn z: z. Ú.Ú )ÚcontentÚ
)Ú_get_current_entitiesr    Úget_entity_knowledgeÚjoinÚappendÚreturn_messagesr$   r&   )	Úselfr'   ÚentitiesÚsummary_stringsÚentityÚ	knowledgeÚsummaryÚcontextÚtexts	            úg/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/memory/kg.pyÚload_memory_variablesz*ConversationKGMemory.load_memory_variables,   sÏ   € à×1Ñ1°&Ó9ˆHà ˆOÛ"�Ø ŸG™G×8Ñ8¸Ó@�	ÚØ # F 8¨2¨d¯i©i¸	Ó.BÐ-CÀ1ÐE�GØ#×*Ñ*¨7Õ3ð	 #ñ #Ø $× 4Ò 4™"¸"‘Ø×%Ò%áGVóÙGV¸t�D×,Ñ,°TÐ,Õ:Àð ñ ð Ÿ)™) OÓ4�à—O‘O WÐ-Ð-ùòs   ÂC c                 ó   — | j                   gS )zUWill always return list of memory variables.

            :meta private:
            )r&   )r3   s    r;   Úmemory_variablesz%ConversationKGMemory.memory_variablesB   s   € ð —O‘OÐ$Ð$ó    c                 ó^   — | j                   €t        || j                  «      S | j                   S )z!Get the input key for the prompt.)Ú	input_keyr   r>   )r3   r'   s     r;   Ú_get_prompt_input_keyz*ConversationKGMemory._get_prompt_input_keyJ   s)   € à�~‰~Ð%Ü+¨F°D×4IÑ4IÓJÐJØ—>‘>Ð!r?   Úoutputsc                 ó¾   — | j                   €Ft        |«      dk7  rt        d|j                  «       › �«      ‚t	        |j                  «       «      d   S | j                   S )z"Get the output key for the prompt.é   zOne output key expected, got r   )Ú
output_keyÚlenÚ
ValueErrorÚkeysÚlist)r3   rC   s     r;   Ú_get_prompt_output_keyz+ConversationKGMemory._get_prompt_output_keyP   sR   € à�‰Ð&Ü�w“< 1Ò$Ü$Ð'DÀWÇ\Á\Ã^ÐDTÐ%UÓVÐVÜ˜GŸL™L›NÓ+¨AÑ.Ð.Ø—?‘?Ð"r?   Úinput_stringc                 ó  — t        | j                  | j                  ¬«      }t        | j                  j
                  | j                   dz  d  | j                  | j                  ¬«      }|j                  ||¬«      }t        |«      S )N©r#   Úpromptr   ©r   r   )r%   Úinput)r   r#   r"   r   Úchat_memoryÚmessagesr   r   r   Úpredictr   )r3   rL   ÚchainÚbuffer_stringÚoutputs        r;   Úget_current_entitiesz)ConversationKGMemory.get_current_entitiesX   sz   € Ü §¡°$×2OÑ2OÔPˆEÜ-Ø× Ñ ×)Ñ)¨4¯6©6¨'°A©+¨-Ð8Ø!×.Ñ.ØŸ.™.ôˆMð
 —]‘]Ø%Ø"ð #ó ˆFô   Ó'Ð'r?   c                 óL   — | j                  |«      }| j                  ||   «      S )z-Get the current entities in the conversation.)rB   rX   )r3   r'   Úprompt_input_keys      r;   r.   z*ConversationKGMemory._get_current_entitiese   s*   € à#×9Ñ9¸&ÓAÐØ×,Ñ,¨VÐ4DÑ-EÓFÐFr?   c                 ó  — t        | j                  | j                  ¬«      }t        | j                  j
                  | j                   dz  d  | j                  | j                  ¬«      }|j                  ||d¬«      }t        |«      }|S )NrN   r   rP   T)r%   rQ   Úverbose)r   r#   r!   r   rR   rS   r   r   r   rT   r   )r3   rL   rU   rV   rW   r7   s         r;   Úget_knowledge_tripletsz+ConversationKGMemory.get_knowledge_tripletsj   s‚   € Ü §¡°$×2RÑ2RÔSˆEÜ-Ø× Ñ ×)Ñ)¨4¯6©6¨'°A©+¨-Ð8Ø!×.Ñ.ØŸ.™.ôˆMð
 —]‘]Ø%Ø"Øð #ó ˆFô
 & fÓ-ˆIØÐr?   Nc                 ó’   — | j                  |«      }| j                  ||   «      }|D ]  }| j                  j                  |«       Œ y)z=Get and update knowledge graph from the conversation history.N)rB   r]   r    Ú
add_triple)r3   r'   rZ   r7   Útriples        r;   Ú_get_and_update_kgz'ConversationKGMemory._get_and_update_kgy   sE   € à#×9Ñ9¸&ÓAÐØ×3Ñ3°FÐ;KÑ4LÓMˆIÛ#�Ø—‘×"Ñ" 6Õ*ñ $r?   c                 óH   •— t         ‰| �  ||«       | j                  |«       y)z.Save context from this conversation to buffer.N)ÚsuperÚsave_contextra   )r3   r'   rC   Ú	__class__s      €r;   rd   z!ConversationKGMemory.save_context€   s    ø€ ä‰GÑ  ¨Ô1Ø×#Ñ# FÕ+r?   c                 óV   •— t         ‰| �  «        | j                  j                  «        y)zClear memory contents.N)rc   Úclearr    )r3   re   s    €r;   rg   zConversationKGMemory.clear…   s   ø€ ä‰G‰MŒOØ�G‰G�M‰M�Or?   )r(   N)(Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚintÚ__annotations__r   Ústrr   r   r   r    r   r!   r   r   r"   r   r
   r$   r   r	   r&   r   r   r<   Úpropertyr   r>   rB   rK   rX   r.   r   r]   ra   rd   rg   Ú__classcell__)re   s   @r;   r   r      s“  ø… ñ	ð ˆˆ3‹
Ø#ˆ�cÓ#Øˆ	�3ÓÙ"'Ð8KÔ"LˆÐÓLà.ð 	$Ð%7ó 	
ð 8PÐ Ð"4ÓOØÓØ1>Ð˜T +Ñ.Ó>ØFØ#ˆ
�CÓ#ð	.°°S¸#°X±ð 	.À4ÈÈSÈÁ>ó 	.ð, 
ð	% d¨3¡iò 	%ó 
ð	%ð	"°°S¸#°X±ð 	"À3ó 	"ð	#°$°s¸C°x±.ð 	#ÀSó 	#ð	(°Sð 	(¸TÀ#¹Yó 	(ð	G°°S¸#°X±ð 	GÀ4ÈÁ9ó 	Gð
	°sð 	¸tÀOÑ?Tó 	ð	+¨T°#°s°(©^ð 	+Àó 	+ð	, t¨C°¨H¡~ð 	,ÀÀSÈ#ÀXÁð 	,ÐSWõ 	,÷
	ñ 	r?   r   c                   ó   — e Zd Zy)r   N)rh   ri   rj   © r?   r;   r   r   Œ   s   „ Ør?   N)!Útypingr   r   r   r   r   Úlangchain_core.language_modelsr   Úlangchain_core.messagesr	   r
   r   Úlangchain_core.promptsr   Úpydanticr   Úlangchain_community.graphsr   Ú)langchain_community.graphs.networkx_graphr   r   r   Úlangchain.chains.llmr   Úlangchain.memory.chat_memoryr   Úlangchain.memory.promptr   r   Úlangchain.memory.utilsr   r   ÚImportErrorrr   r?   r;   Ú<module>r      sg   ðß /Õ /å <ß QÑ QÝ 5Ý å :÷ñ ð~Ý-Ý;÷õ <ôp˜~õ pøðd ò ÷ó ðús   ¼%A" Á"A4Á3A4