AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Dify 保姆级教程之:零代码打造个性化记忆助手
发布日期:2024-11-22 06:16:43 浏览次数: 1949 来源:猴哥的AI知识库





无奈本地配置环境略显繁琐,对小白不是特别友好。

有没有可能在 Dify 上搭建一个类似的智能体,实现大模型长期记忆

琢磨之余,发现 Dify 的官方案例中就有一款类似的智能体。

今日分享,把搭建过程拆解后分享出来,希望对有类似需求的你,有所启发。

参考上篇教程,相信你已完成 Dify 本地安装,若资源有限,也可使用官方的在线体验地址。

1. 官方案例

在 Dify 首页,第一个 Tab,官方内置了众多搭建好的智能体案例:

其中,有一个个性化记忆助手的智能体,点击添加到工作区

在自己的工作室,可以看到这个智能体已复制进来:

点进来,就可以看到所有的编排逻辑,然后可根据自己需求进行修改:

1. 了解会话变量

Dify 中内置了一个全局变量 -- 会话变量,在右上角:

这个会话变量具体有什么用?

和多轮对话的内容一样,它也可以作为 LLM 的上下文,不过它的自定义程度更高。

比如在本文的智能体中,就定义了memory这样的会话变量,用来存储需要大模型记忆的信息。

问题来了:memory是怎么发挥作用的?

下面我们一起去探一探。

2. 智能体拆解

step 1 信息过滤: 判断用户输入中是否需要记忆的信息:

从上面的提示词,可以看出,这个节点上大模型只需输出 Yes 或 No,所以下个节点应该是条件判断。

step 2 条件判断:根据上一步大模型输出的 Yes 或 No,分别路由到不同的分支,如果有需要记忆的信息,则执行上方提取记忆的分支,否则走下面的分支。

step 3 提取记忆:通过大模型的角色设定,从用户输入中提取出值得记忆的信息。

在提示词中,指定了提取的三种类型记忆:

"facts": [],
"preferences": [],
"memories": []

step 4 存储记忆:这一步是代码节点,通过编写简单的 Python 代码,将上一步的记忆信息,保存到一开始定义的会话变量 - memory中。

step 5 根据记忆回复:把会话变量 - memory转换成字符串,也就是下图中的{x}result,放到角色提示词中,让大模型根据记忆,进行答复。

至此,基于对话内容中有需要缓存的记忆,上方提取记忆的分支就搞定了。

如果step 2判断为 No,则直接基于已有记忆进行答复,也即下方分支,流程图如下:

3. 效果展示

我在和它进行了几轮对话之后,点开右上角的会话变量,可以发现memory中已经缓存了多条事实类的记忆

完美!

真的完美么?

相比直接把多条聊天记录作为上下文,这种方式要优雅很多,且极大减少了 Token 消耗量。

不过,个人认为至少还有两点缺陷:

  • 随着记忆内容的增多,每次对话,把所有记忆内容都作为上下文,会显得十分冗余,这里可以结合 RAG 来做;
  • 每次都从单论对话中提取记忆,缺乏足够的上下文,容易导致记忆内容的断章取义,理想的方式应该从多轮对话中提取有价值的信息;



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询