微信扫码
与创始人交个朋友
我要投稿
无奈本地配置环境略显繁琐,对小白不是特别友好。
有没有可能在 Dify 上搭建一个类似的智能体,实现大模型长期记忆
?
琢磨之余,发现 Dify 的官方案例中就有一款类似的智能体。
今日分享,把搭建过程拆解后分享出来,希望对有类似需求的你,有所启发。
参考上篇教程,相信你已完成 Dify 本地安装,若资源有限,也可使用官方的在线体验地址。
在 Dify 首页,第一个 Tab,官方内置了众多搭建好的智能体案例:
其中,有一个个性化记忆助手
的智能体,点击添加到工作区
:
在自己的工作室
,可以看到这个智能体已复制进来:
点进来,就可以看到所有的编排逻辑,然后可根据自己需求进行修改:
Dify 中内置了一个全局变量 -- 会话变量
,在右上角:
这个会话变量
具体有什么用?
和多轮对话的内容一样,它也可以作为 LLM 的上下文,不过它的自定义程度更高。
比如在本文的智能体中,就定义了memory
这样的会话变量
,用来存储需要大模型记忆的信息。
问题来了:memory
是怎么发挥作用的?
下面我们一起去探一探。
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
,则直接基于已有记忆进行答复,也即下方分支,流程图如下:
我在和它进行了几轮对话之后,点开右上角的会话变量
,可以发现memory
中已经缓存了多条事实类的记忆
:
完美!
真的完美么?
相比直接把多条聊天记录作为上下文
,这种方式要优雅很多,且极大减少了 Token 消耗量。
不过,个人认为至少还有两点缺陷:
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-04-25
2024-04-24
2024-07-20
2024-07-16
2024-05-08
2024-05-07
2024-05-09
2024-06-21
2024-04-25
2024-08-06