多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)

多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)
在上篇文章[2024 年,基于大模型的 Agent 如何在企业落地?]中提到关于在 AI 对话产品构建中的长记忆问题,这篇详细讨论下。在任何对话中,无论是人与人还是人与机器人之间,回忆过去的信息都至关重要,记忆系统不仅包括以前的消息列表,它还应该是理解和维护一个包含各种实体及其关系信息的动态模型,这篇文章分享下在多轮对话中实现长期记忆保持的 8 种方式,欢迎一起探讨。

如果觉得内容不错,欢迎点个关注,这样我就更有动力发更多内容了~

在基于大模型的 Agent 中,长期记忆的状态维护至关重要,在 OpenAI AI 应用研究主管 Lilian Weng 的博客《基于大模型的 Agent 构成》[1]中,将记忆视为关键的组件之一,下面我将结合 LangChain 中的代码,8 种不同的记忆维护方式在不同场景中的应用。

www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)

基于大模型的Agent构成

1. 获取全量历史对话

一般客服场景

在电信公司的客服聊天机器人场景中,如果用户在对话中先是询问了账单问题,接着又谈到了网络连接问题,ConversationBufferMemory 可以用来记住整个与用户的对话历史,可以帮助 AI 在回答网络问题时还记得账单问题的相关细节,从而提供更连贯的服务。

from langchain.memory import ConversationBufferMemory  
memory = ConversationBufferMemory()  
memory.save_context({"input": "你好"}, {"output": "怎么了"})  
  
variables = memory.load_memory_variables({})  

2. 滑动窗口获取最近部分对话内容

商品咨询场景

在一个电商平台上,如果用户询问关于特定产品的问题(如手机的电池续航时间),然后又问到了配送方式,ConversationBufferWindowMemory 可以帮助 AI 只专注于最近的一两个问题(如配送方式),而不是整个对话历史,以提供更快速和专注的答复。

from langchain.memory import ConversationBufferWindowMemory  
  
# 只保留最后1次互动的记忆  
memory = ConversationBufferWindowMemory(k=1)  

3. 获取历史对话中实体信息

法律咨询场景

在法律咨询的场景中,客户可能会提到特定的案件名称、相关法律条款或个人信息(如“我在去年的交通事故中受了伤,想了解关于赔偿的法律建议”)。ConversationEntityMemory 可以帮助 AI 记住这些关键实体和实体关系细节,从而在整个对话过程中提供更准确、更个性化的法律建议。

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应用全栈开发》的作者是莫尔索 \n AI: 是吗,这个公众号是干嘛的',  
'entities': {'莫尔索': '《LLM应用全栈开发》的作者。'}}  
  

4. 利用知识图谱获取历史对话中的实体及其联系

医疗咨询场景

在医疗咨询中,一个病人可能会描述多个症状和过去的医疗历史(如“我有糖尿病史,最近觉得经常口渴和疲劳”)。ConversationKGMemory 可以构建一个包含病人症状、疾病历史和可能的健康关联的知识图谱,从而帮助 AI 提供更全面和深入的医疗建议。

from langchain.memory import ConversationKGMemory  
from langchain.llms import OpenAI  
llm = 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 程序员. 小李 的笔名 莫尔索.'}  

5. 对历史对话进行阶段性总结摘要

教育辅导场景

在一系列的教育辅导对话中,学生可能会提出不同的数学问题或理解难题(如“我不太理解二次方程的求解方法”)。ConversationSummaryMemory 可以帮助 AI 总结之前的辅导内容和学生的疑问点,以便在随后的辅导中提供更针对性的解释和练习

6. 需要获取最新对话,又要兼顾较早历史对话

技术支持场景

在处理一个长期的技术问题时(如软件故障排查),用户可能会在多次对话中提供不同的错误信息和反馈。ConversationSummaryBufferMemory 可以帮助 AI 保留最近几次交互的详细信息,同时提供历史问题处理的摘要,以便于更有效地识别和解决问题。

7. 回溯最近和最关键的对话信息

金融咨询场景

在金融咨询聊天机器人中,客户可能会提出多个问题,涉及投资、市场动态或个人财务规划(如“我想了解股市最近的趋势以及如何分配我的投资组合”)。ConversationTokenBufferMemory 可以帮助 AI 聚焦于最近和最关键的几个问题,同时避免由于记忆过多而导致的信息混淆。

8. 基于向量检索对话信息

了解最新新闻事件

用户可能会对特定新闻事件提出问题,如“最近的经济峰会有什么重要决策?” VectorStoreRetrieverMemory 能够快速从大量历史新闻数据中检索出与当前问题最相关的信息,即使这些信息在整个对话历史中不是最新的,也能提供及时准确的背景信息和详细报道。

vectorstore = Chroma(embedding_function=OpenAIEmbeddings())  
retriever = vectorstore.as_retriever(search_kwargs=dict(k=1))  
memory = VectorStoreRetrieverMemory(retriever=retriever)  
  
memory.save_context({"input": "我喜欢吃火锅"}, {"output": "听起来很好吃"})  
memory.save_context({"input": "我不喜欢看摔跤比赛"}, {"output": "我也是"})  
  
PROMPT_TEMPLATE = """以下是人类和 AI 之间的友好对话。AI 话语多且提供了许多来自其上下文的具体细节。如果 AI 不知道问题的答案,它会诚实地说不知道。  
  
以前对话的相关片段:  
{history}  
  
(如果不相关,你不需要使用这些信息)  
  
当前对话:  
人类:{input}  
AI:  
"""  
  
prompt = PromptTemplate(input_variables=["history", "input"], template=PROMPT_TEMPLATE)  
conversation_with_summary = ConversationChain(  
    llm=llm,  
    prompt=prompt,  
    memory=memory,  
    verbose=True  
)  
  
print(conversation_with_summary.predict(input="你好,我是莫尔索,你叫什么"))  
print(conversation_with_summary.predict(input="我喜欢的食物是什么?"))  
print(conversation_with_summary.predict(input="我提到了哪些运动?"))  

www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)
www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。

www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。

www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

www.zeeklog.com  - 多轮对话中实现AI长期记忆的8种优化方法(含案例与代码)

Read more

本地多模型切换利器——Llama-Swap全攻略

本地多模型切换利器——Llama-Swap全攻略

运行多个大语言模型(LLM)非常有用: 无论是用于比较模型输出、设置备用方案(当一个模型失败时自动切换)、还是实现行为定制(例如一个模型专注写代码,另一个模型专注技术写作),实践中我们经常以这种方式使用 LLM。 一些应用(如 poe.com)已经提供了多模型运行的平台。但如果你希望完全在本地运行、多省 API 成本,并保证数据隐私,情况就会复杂许多。 问题在于:本地设置通常意味着要处理多个端口、运行不同进程,并且手动切换,不够理想。 这正是 Llama-Swap 要解决的痛点。它是一个超轻量的开源代理服务(仅需一个二进制文件),能够让你轻松在多个本地 LLM 之间切换。简单来说,它会在本地监听 OpenAI 风格的 API 请求,并根据请求的模型名称,自动启动或停止对应的模型服务。客户端无需感知底层切换,使用体验完全透明。 📌 Llama-Swap 工作原理 概念上,Llama-Swap 就像一个智能路由器,

如何利用AI一天写完文献综述?亲测有效的AI写作工具组合大公开!

如何利用AI一天写完文献综述?亲测有效的AI写作工具组合大公开!

谁懂啊家人们!写文献综述简直是学术路上的“拦路虎”——翻不完的中外文献、理不清的研究脉络、改不完的逻辑漏洞,动辄耗上一周甚至一个月,赶due党、毕业生直接被熬到崩溃😭。 直到我亲测了一套AI工具组合,从文献检索、筛选整理,到框架搭建、初稿撰写,再到润色降重、引用规范,全流程AI兜底,竟然真的实现了一天搞定文献综述,还顺利通过导师审核!今天就把压箱底的工具分享给大家,每一款都亲测可用,新手也能直接上手,彻底告别学术内耗~ 重点分享6款核心工具,涵盖中文适配、英文深耕、全流程辅助,其中paperred、毕业之家、豆包、deepseek主打中文场景,另外两款英文品牌(Literature Review Generator、Scite.ai)精准解决外文文献痛点,搭配使用效率直接翻倍,新手闭眼冲不踩雷! 一、核心工具详解(亲测无坑,按需选用) 1. Paperred:新手友好型“文献综述全能助手” 作为入门级学术辅助工具,Paperred简直是本科党、

GitHub Copilot 调用第三方模型API

GitHub Copilot 调用第三方模型API

一、说明 OAI Compatible Provider for Copilot 的作用是:把 Copilot/Copilot Chat 发出的“类似 OpenAI API 的请求”,转发到指定的 OpenAI-Compatible 服务端(例如 ModelScope 推理网关、自建的兼容网关等)。 ⚠️ Warning 登录 GitHub Copilot 的账号一定要是非组织方式开通 pro 会员的,不然无法管理模型。 推荐直接用免费的free账号登录即可。 二、插件安装 在 VS Code 扩展市场安装并启用: * GitHub Copilot * GitHub Copilot Chat * OAI Compatible Provider for Copilot (johnny-zhao.

2026年AI编程工具推荐:从Copilot到Trae,开发者该如何选型?

2026年AI编程工具推荐:从Copilot到Trae,开发者该如何选型?

面对琳琅满目的AI编程工具,字节跳动的Trae正以其本土化优势和工程级代码生成能力,悄然改变着中国开发者的工作流。 “有没有一个能完美适应国内网络环境,理解中文开发需求的AI编程工具?” 当字节跳动推出Trae时,这个问题开始有了清晰答案。与需要科学上网的Cursor、订阅费用昂贵的GitHub Copilot不同,Trae作为原生AI IDE,深度结合了中国开发者的实际工作环境。 一个有趣的现象是,越来越多的中国开发者开始将Trae与VS Code的无缝迁移体验作为选择标准之一。这种“无感切换”正成为本土AI编程工具获取用户的关键策略。 01 核心选型维度 开发者选择AI编程工具时往往陷入功能对比的细节中,而忽略了更本质的匹配度问题。真正影响工作效率的,不是工具宣传的“强大功能”,而是工具与开发者身份、工作场景的契合程度。 对于中国开发者而言,选型维度需要特别增加本土化适配这一项。网络稳定性、中文语境理解、本地支付便利性以及是否符合国内数据安全法规,这些在评估海外工具时常被忽略的因素,实际上决定了工具能否真正融入日常工作流。 不同规模的团队对AI编程工具的需求差异显著