from langchain. memory import ConversationBufferWindowMemory
# 只保留最后 1 次互动的记忆 memory = ConversationBufferWindowMemory (k=1)
2.3 获取历史对话中实体信息
以法律咨询场景为例 在法律咨询的场景中,客户可能会提到特定的案件名称、相关法律条款或个人信息(如“我在去年的交通 事故中受了伤,想了解关于赔偿的法律建议”)。ConversationEntityMemory 可以帮助 AI 记住这些关键 实体和实体关系细节,从而在整个对话过程中提供更准确、更个性化的法律建议。 11m = ChatOpenAI (model="gpt-3.5-turbo”,temperature=0)
memory = ConversationEntityMemory (11m=11m)
input = {"input”:“公众号《 LLM 应用全栈开发》的作者是莫尔索”} memory.load memory_variables (_input) memory.save_context ( input, {“output”:“是吗,这个公众号是干嘛的”)
print (memory.load_memory_variables ({"input”:”莫尔索是谁?“})) # 输出,可以看到提取了实体关系 {'history’:’Human:公众号《 LLM 应用全栈开发》的作者是莫尔索\n AI:是吗,这个公众号 是干嘛的’, 'entities':【莫尔索’:’《 LLM 应用全栈开发》的作者。’}}
2.4 利用知识图谱获取历史对话中的实体及其联系
以医疗咨询场景为例 在医疗咨询中,一个病人可能会描述多个症状和过去的医疗历史(如“我有糖尿病史,最近觉得经常口渴 和疲劳”)。ConversationKGMemory 可以构建一个包含病人症状、疾病历史和可能的健康关联的知识图 谱,从而帮助 AI 提供更全面和深入的医疗建议。
from langchain.memory import ConversationKGMemory from langchain. 11ms import OpenAI 11m = OpenAI (temperature=0) memory = ConversationKGMemory (11m=l1m)
memory.save_context ({"input”;“小李是程序员“),{ output”:“知道了,小李是程序员“) memory. save_context ({"input”:“莫尔索是小李的笔名“},{'output”:”明白,莫尔索是小李
variables = memory. load_memory_variables ({"input”:“告诉我关于小李的信息”}) print (variables)
{'history’:’0n 小李:小李 is 程序员.小李的笔名莫尔索.’}
2.5 对历史对话进行阶段性总结摘要