12-多轮对话中让AI保持长期记忆的8种优化方式篇.pdf

12-多轮对话中让AI保持长期记忆的8种优化方式篇.pdf_第1页
12-多轮对话中让AI保持长期记忆的8种优化方式篇.pdf_第2页
12-多轮对话中让AI保持长期记忆的8种优化方式篇.pdf_第3页
多轮对话中让AI保持长期记忆的8种优化方式篇来自:AiGC面试宝典宁静致远2024年02月08日10:05一、前言在基于大模型的Agent中,长期记忆的状态维护至关重要,在OpenAIAI应用研究主管LilianWeng的博客《基于大模型的Agent构成》[1]中,将记忆视为关键的组件之一,下面我将结合LangChain中的代码,8种不同的记忆维护方式在不同场景中的应用。二、Agent如何获取上下文对话信息?2.1获取全量历史对话以一般客服场景为例在电信公司的客服聊天机器人场景中,如果用户在对话中先是询问了账单问题,接着又谈到了网络连接问题,ConversationBufferMemory可以用来记住整个与用户的对话历史,可以帮助AI在回答网络问题时还记得账单问题的相关细节,从而提供更连贯的服务。2.2滑动窗口获取最近部分对话内容以商品咨询场景为例在一个电商平台上,如果用户询问关于特定产品的问题(如手机的电池续航时间),然后又问到了配送方式,ConversationBufferWindowMemory可以帮助AI只专注于最近的一两个问题(如配送方式),而不是整个对话历史,以提供更快速和专注的答复。•多轮对话中让AI保持长期记忆的8种优化方式篇•一、前言•二、Agent如何获取上下文对话信息?•2.1获取全量历史对话•2.2滑动窗口获取最近部分对话内容•2.3获取历史对话中实体信息•2.4利用知识图谱获取历史对话中的实体及其联系•2.5对历史对话进行阶段性总结摘要•2.6需要获取最新对话,又要兼顾较早历史对话•2.7回溯最近和最关键的对话信息•2.8基于向量检索对话信息•致谢fromlangchain.memoryimportConversationBufferMemorymemory=ConversationBufferMemory()memory.save_context({"input":"你好"},{"output":"怎么了"})variables=memory.load_memory_variables({})扫码加查看更多2.3获取历史对话中实体信息以法律咨询场景为例在法律咨询的场景中,客户可能会提到特定的案件名称、相关法律条款或个人信息(如“我在去年的交通事故中受了伤,想了解关于赔偿的法律建议”)。ConversationEntityMemory可以帮助AI记住这些关键实体和实体关系细节,从而在整个对话过程中提供更准确、更个性化的法律建议。2.4利用知识图谱获取历史对话中的实体及其联系以医疗咨询场景为例在医疗咨询中,一个病人可能会描述多个症状和过去的医疗历史(如“我有糖尿病史,最近觉得经常口渴和疲劳”)。ConversationKGMemory可以构建一个包含病人症状、疾病历史和可能的健康关联的知识图谱,从而帮助AI提供更全面和深入的医疗建议。2.5对历史对话进行阶段性总结摘要fromlangchain.memoryimportConversationBufferWindowMemory#只保留最后1次互动的记忆memory=ConversationBufferWindowMemory(k=1)llm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0)memory=ConversationEntityMemory(llm=llm)_input={"input":"公众号《LLM应用全栈开发》的作者是莫尔索"}memory.load_memory_variables(_input)memory.save_context(_input,{"output":"是吗,这个公众号是干嘛的"})print(memory.load_memory_variables({"input":"莫尔索是谁?"}))#输出,可以看到提取了实体关系{'history':'Human:公众号《LLM应用全栈开发》的作者是莫尔索\nAI:是吗,这个公众号是干嘛的','entities':{'莫尔索':'《LLM应用全栈开发》的作者。'}}fromlangchain.memoryimportConversationKGMemoryfromlangchain.llmsimportOpenAIllm=OpenAI(temperature=0)memory=ConversationKGMemory(llm=llm)memory.save_context({"input":"小李是程序员"},{"output":"知道了,小李是程序员"})memory.save_context({"input":"莫尔索是小李的笔名"},{"output":"明白,莫尔索是小李的笔名"})variables=memory.load_memory_variables({"input":"告诉我关于小李的信息"})print(variables)#输出{'history':'On小李:小李is程序员.小李的笔名莫尔索.'}以教育辅导场景为例在一系列的教育辅导对话中,学生可能会提出不同的数学问题或理解难题(如“我不太理解二次方程的求解方法”)。ConversationSummaryMemory可以帮助AI总结之前的辅导内容和学生的疑问点,以便在随后的辅导中提供更针对性的解释和练习.2....

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

发表评论取消回复

参与评论可获取积分奖励  
微风舍
实名认证
内容提供者

微风舍,风起于青萍之末,浪成于微澜之间,舍是漏舍,唯吾德馨。

确认删除?
回到顶部