乐于分享
好东西不私藏

AI教程第36期:给AI助手装上"记忆"——Dify多轮对话与会话变量实战

AI教程第36期:给AI助手装上"记忆"——Dify多轮对话与会话变量实战

为什么AI助手需要"记忆"

上一期,我们用Dify工作流把AI接入了企业微信,做出了一个"会办事"的机器人。但很多朋友会发现一个问题:机器人每次都是"翻脸不认人",你上一句说过的话,它下一句就忘了。

比如你说"帮我查一下张三的订单",它查出来了;接着你说"那他的联系方式呢",机器人却一脸茫然——因为它根本不知道"他"指的是张三。

这就是"多轮对话记忆"要解决的问题。让AI记住上下文,是它从"工具"变成"助手"的关键一步。这一期,我们就用Dify的会话变量和上下文功能,给机器人装上"记忆"。

Dify里的记忆机制

Dify内置了多种记忆机制,核心是"会话变量"(Conversation Variables)。会话变量可以在一轮对话的多个节点之间、乃至多轮对话之间,保存和传递数据。

在Dify工作流中,你可以通过"变量赋值"节点,把用户的关键信息(比如名字、订单号、偏好)存进会话变量。之后任何节点,都能用 {{#变量名#}} 的格式读取这些信息。

【举个例子:当用户第一次说"我是张三"时,用一个变量赋值节点,把"张三"存进会话变量user_name。之后用户再说"查我的订单",系统就能自动识别"我"是张三,而不用用户重复自报家门。】

Dify还支持"记忆"功能(Memory),可以在应用设置里开启,让模型自动从历史对话中提取和保留关键信息。这相当于给AI装了一个"自动记笔记"的功能。

实战:做一个"记得住你"的助手

我们用上一期的"办公助手"工作流为基础,加上记忆功能。目标是:让助手记住用户的名字和部门,后续对话能自动带上这些信息。

第一步,在工作流开头,加一个"变量赋值"节点,从用户输入中提取名字和部门。这里可以结合一个LLM节点做信息抽取,把结果存进会话变量。

第二步,在"意图识别"节点之前,把会话变量里的用户信息,拼进提示词里。比如:"当前用户是{{#user_name#}},来自{{#user_dept#}}部门。"这样,后续所有节点都能"看到"用户是谁。

第三步,在需要调用接口的节点(比如查订单),把会话变量里的名字作为参数传进去,实现"记住用户"的个性化查询。

第四步,开启Dify应用的"记忆"功能,设置记忆窗口长度(比如保留最近10轮对话)。这样,即使用户没有显式说名字,模型也能从历史对话里推断出上下文。

会话变量的高级用法

会话变量不只是存名字这么简单,它能做更多事情。

一是"状态跟踪"。比如做一个审批流程,用会话变量记录当前审批到了哪一步,避免用户重复提交或流程错乱。

二是"偏好学习"。记录用户的常用选项、语言偏好、格式偏好等,让AI的回复越来越"懂你"。

三是"数据缓存"。把查询过的结果存进会话变量,下次问同样的问题时直接返回,节省时间和成本。

【一个实用技巧:用会话变量做一个"临时购物车"。用户说"加一个苹果到购物车",就把"苹果"追加进会话变量cart;说"结账",就读取cart里的所有商品。这比每次都调数据库要轻量得多。】

需要注意的是,会话变量的值有大小限制,不适合存储大量数据。真正的业务数据,还是应该存在数据库里,会话变量只做"临时状态"和"上下文"的传递。

记忆功能的边界与优化

记忆虽好,也有边界。过长的记忆窗口,会消耗大量Token,增加成本和延迟;过短的窗口,又容易"忘事"。需要根据场景权衡。

一个常见的优化思路,是"摘要式记忆":不保留完整的对话原文,而是用一个LLM节点定期把历史对话"压缩"成摘要,只保留关键信息。这样既省Token,又保留了核心上下文。

另一个思路是"分级记忆":把频繁使用的信息(比如用户名字、部门)存进会话变量长期保留,把临时性的信息(比如某次查询的参数)只保留在当前会话。

在隐私和安全方面,记忆功能要谨慎使用。涉及用户敏感信息(如手机号、身份证号、订单金额)时,要确保数据的存储和传输合规,必要时做脱敏处理。

回顾这一路,从Ollama本地跑模型,到Open WebUI、Dify、RAGFlow,再到工作流、企业微信、多轮记忆,你已经掌握了搭建一个"既会办事、又记得住你"的企业AI助手的完整能力。下一期,我们聊聊如何给这套系统加上"安全护栏"和"权限管理",让AI在关键时刻不犯错、不乱说。

在实战中,还有一个常见的问题:会话变量在跨节点引用时,类型要匹配。比如你把"订单号"存成了数字,但下游节点期望的是字符串,就会报错。建议在变量赋值时明确类型,避免隐式转换带来的坑。

最后,测试是检验记忆效果的最好方式。多轮连续对话,反复确认AI是否真的"记住"了关键信息,是上线前必不可少的步骤。

记忆与检索增强(RAG)的配合

很多朋友会把"多轮记忆"和之前讲过的"RAG知识库检索"混淆。这里有必要澄清两者的区别和配合关系。

多轮记忆,解决的是"这次对话里,用户说过什么"的问题,它关注的是短期、会话级的上下文。而RAG知识库,解决的是"公司有什么资料、历史知识"的问题,它关注的是长期、企业级的知识沉淀。

一个优秀的AI助手,往往需要两者配合:用RAG检索企业知识库,回答"标准问题";用会话记忆记住用户的个性化信息,回答"上下文相关问题"。

【举个例子:用户问"我们的退货政策是什么",这需要RAG检索公司制度文档;用户接着说"那我上个月买的那台显示器能退吗",这就需要会话记忆记住"上个月买了显示器"这个上下文,再结合RAG的政策答案给出个性化回复。】

在Dify里,你可以同时配置"知识库检索"节点和"会话变量",让两者协同工作。检索节点负责从企业文档里找答案,会话变量负责记住用户的状态和上下文,两者互补,缺一不可。

总结与下期预告

这一期,我们给AI助手装上了"记忆":通过会话变量保存用户信息、通过记忆功能保留历史上下文、通过摘要式记忆优化Token消耗,让机器人从"翻脸不认人"变得"记得住你"。

至此,你已经掌握了搭建企业AI助手的完整拼图:本地模型(Ollama)、对话界面(Open WebUI)、应用编排(Dify)、知识检索(RAGFlow)、多轮记忆(会话变量)、渠道接入(企业微信)。

把这些能力组合起来,你就能搭建出一个"既懂业务、又记得住人、还能直接在企业微信里用"的专属AI助手。这在当下的企业降本增效浪潮中,具有非常现实的落地价值。

下一期,我们聊聊一个容易被忽视、却至关重要的话题:AI助手的安全护栏与权限管理。如何防止AI"胡说八道"、泄露敏感信息、被恶意诱导?如何在企业场景里安全地使用大模型?敬请期待。

回顾这一路,从最基础的Ollama安装,到如今的多轮记忆与安全思考,你已经走过了一条完整的AI应用落地之路。这条路没有捷径,但每一步都算数。

- 完 -

本文由AI生成,数据来源于公开市场信息