AI知识库

53AI知识库

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


dify变量赋值使用心得体会
发布日期:2024-08-28 14:13:59 浏览次数: 2040 来源:提示日记


 自从dify更新到0.7版本之后,就新增了两个重要功能:会话变量、变量赋值。我也琢磨了比较长的时间,决定写写关于这两个功能的使用心得。


01


会话变量是什么?


dify官方说明是:

会话变量允许应用开发者在同一个 Chatflow 会话内,指定需要被临时存储的特定信息,并确保在当前工作流内的多轮对话内都能够引用该信息,如上下文、上传至对话框的文件(即将上线)、 用户在对话过程中所输入的偏好信息等。好比为 LLM 提供一个可以被随时查看的“备忘录”,避免因 LLM 记忆出错而导致的信息偏差。

如图所示,这个就是会话变量。


如果你想快速了解会话变量,你可以粗暴地理解为,这是为整个workflow预设全局变量。你要预设的变量可以是如下的几种类型:

是不是很熟悉,这几乎是dify能支持的所有变量类型


这个全局变量,你几乎可以在其他任何节点进行调用,并且容许你通过另外一个功能“变量赋值”节点,对会话变量的值进行二次加工。这个下文会细说。


请注意,如果你设置了一个会话变量,它的值可以为空。请注意一个小细节,这个为空指的是你留空不填。它默认类型是string类型,如果你填写的是null,它会将null理解成一个字符串了。所以你要留意变量类型的选择。


至于为什么需要在工作流中用到会话变量这个功能,如果你第一次使用,你可以理解为:如果你的工作流需要临时记忆某些关键数据,如:记录状态的数据、记录动作的数据等等。你都可以用到它。


这个临时存储的意义,就在于你不需要外挂一个数据库,而是直接在dify的工作流中存储数据,实现根据数据影响工作流的走向。


如果你是一个编程老手,你会很明显地发现,会话变量其实是“数据库”、“列表”等传统存储方式的“简化”版数据存储能力。即便你要存储一个多字段的数据,你也可以将数组加工成数组对象的形式存进去。当然,你只存储一个字段也是可以的。


如果你将数据加工成了数组,你可以在“变量赋值”节点中,将新产生的数据追加到变量中,说白了就是对数组的追加。


如果你要存储的数据只是一个具体的字段值,那你就不能使用追加的方式,只能使用覆盖。追加只适用于数组格式。



02


变量赋值又是什么?


变量赋值在dify中不是一个功能,而是一个具体的节点。这个节点只能控制会话变量。也就是说,当你有会话变量的时候,这个节点才能发挥作用,不然它没法发挥作用。所以这个节点是一个专用节点。


dify官方说明是:

通过变量赋值节点,你可以将会话过程中的上下文、上传至对话框的文件(即将上线)、用户所输入的偏好信息等写入至会话变量,并在后续对话中引用已存储的信息导向不同的处理流程或者进行回复。

下图示例:



03


案例实操


 假设我设置了一个会话变量叫:now_time(次数),默认值:20,number类型。此时,我想通过工作流的某个逻辑,让这个num值从20变成19.那要怎么做呢?

这个不难,我写一个实操案例给你参考下。

首先我们肯定要在“变量赋值”节点之前,接入一个代码节点(本文演示代码节点示例),这个代码节点如下所示:

def main(nowtime:int) -> int:data = nowtime - 1return {"result": data}

代码解释:

定义了一个名为 main 的函数,其接受一个参数 nowtime,这个参数的类型为整数 (int),并且该函数也返回一个整数 (int)。

怎么样?是不是用起来其实也很简单。

好了, 既然逻辑咱们都搞清楚了,那么你是不是想到了很多应用场景?例如,你要不要尝试用这些新功能,基于dify做一个回合制文字游戏了呢?回头你可以试试。

本次教程就讲这么多吧,其实都是很简单的东西,用两次就熟悉了。以上示例仅供参考,旨在帮助dify新手玩家快速上手。


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

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

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

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询