试用了几个小时的 Dify,感觉有点用不明白
- 内容介绍
- 文章标签
- 相关推荐
最近有搭一个方便给纯外行人用的工作流的需求,然后就想到了早有耳闻的 Dify
然后就是感觉非常的束手束脚,用不明白,很多地方我不确定到底是设计故意为止还是我的操作有问题,想问问有经验的佬友。
一、输出为啥只能选变量不能自定义文本,分支中判断输入不符合我就想直接 return 一个 string 作为错误提示提前结束,但是似乎并不让我自定义文本输出
image1235×495 35.6 KB
针对这个问题我在文档中发现了似乎有一个叫答案的节点能满足这个需求,但是添加节点的菜单里并没有找到这个节点
image303×132 3.33 KB
二、怎么才能做到类似于封装函数的操作,我真的希望能封装起来让整体布局看起来舒服一些而不是一大堆节点摆在一起(
三、怎么在中途创建自定义变量,我目前发现的创建非文本变量的方法只有在用户输入那提前创建隐藏变量,但这样直接就成全局变量了,假如30个节点只有第29个要用这些变量,那中途节点选择变量的时候就会感觉非常恶心
暂时先想到这么多,看看佬友们如何锐评一下
网友解答:--【壹】--:
- 似乎是需要发布为一个工具后才能这么操作,有点太麻烦,对我的简单使用场景得不偿失,我只是想把部分节点折叠成一个输入和一个输出看着舒服点,发布成工具的话还是放弃了吧
- 使用 url 的话应该怎么通过 python 读进来并输出到 dify 变量,似乎还是用得不太明白
--【贰】--:
chatflow 和 workflow 里面的东西不一样的,他应该设计的是 workflow 做固定结构化的数据处理,所以全都要用变量。我现在用的都是 chatflow 没那么多限制,但是里面没有触发器,只能对话触发。
二是可以把 workflow 发布到工具里面,然后在别的工作流里面引用工具,相当于封装。
三我是直接在会话变量里面定义一个聚合object,把所有变量都塞到这个object里面去,操作都用脚本代码操作里面的变量,取值直接用模板转换的 jinja2 模板取变量值。
--【叁】--:
哦还有一个很难受的点就是我发现我没法debug了,刚开始用还可以测试运行的,现在只有点测试运行100%出现这种情况,但是先发布再运行又是正常的
image395×237 5.15 KB
--【肆】--:
- 确实有效,是个好方法
- 至少我没找到
- 对于文本还好,但想要一个文件作变量值似乎就不好操作了
--【伍】--:
- 这个你在前面加一个普通的空节点,里面写Python代码,起个变量赋予这个变量对应的字符串值就好。至于为啥这样设计,估计是为了方便引用,纯文本的话通过前面这种方式就能实现了。 再不济你可以定义一个全局变量
- 我记得是有一个可以引用其他的独立的chatflow/workflow的节点
- 参考1,不过具体得你看是咋使用这个变量的
--【陆】--:
最近做的一个问答类的小程序也用了Dify,只能说过程十分酸爽
--【柒】--:
OK,晚点我试试
--【捌】--:
我觉得还是langflow和flowise比dify好用
--【玖】--:
不能直接把文件作为变量,文件上传上去每个文件都会变成一个对应的json对象,里面包含文件信息和url,最多把这个json或者url取出来赋值到变量里面。
如果后面的节点连着开始输入的节点,直接取 userinput.files 变量就行了;如果要存到自定义变量里,就要自己处理这个文件json内容。
--【拾】--:
试试fastgpt,我感觉这个好用点
--【拾壹】--:
- 可能是工具节点,你试试看
- 文件的话得看你咋用这个文件,你同样用Python代码把这个文件读进来也是可以的。这个文件得看你是咋给的,URL?还是说直接让用户上传文件
--【拾贰】--:
chatflow里确实找到直接输出的节点了,但是我还是没弄明白怎么做到变量,聚合的object似乎还是只能塞一些传统类型?我想要的变量是一些文件,比如图片或者xlsx表格之类的
最近有搭一个方便给纯外行人用的工作流的需求,然后就想到了早有耳闻的 Dify
然后就是感觉非常的束手束脚,用不明白,很多地方我不确定到底是设计故意为止还是我的操作有问题,想问问有经验的佬友。
一、输出为啥只能选变量不能自定义文本,分支中判断输入不符合我就想直接 return 一个 string 作为错误提示提前结束,但是似乎并不让我自定义文本输出
image1235×495 35.6 KB
针对这个问题我在文档中发现了似乎有一个叫答案的节点能满足这个需求,但是添加节点的菜单里并没有找到这个节点
image303×132 3.33 KB
二、怎么才能做到类似于封装函数的操作,我真的希望能封装起来让整体布局看起来舒服一些而不是一大堆节点摆在一起(
三、怎么在中途创建自定义变量,我目前发现的创建非文本变量的方法只有在用户输入那提前创建隐藏变量,但这样直接就成全局变量了,假如30个节点只有第29个要用这些变量,那中途节点选择变量的时候就会感觉非常恶心
暂时先想到这么多,看看佬友们如何锐评一下
网友解答:--【壹】--:
- 似乎是需要发布为一个工具后才能这么操作,有点太麻烦,对我的简单使用场景得不偿失,我只是想把部分节点折叠成一个输入和一个输出看着舒服点,发布成工具的话还是放弃了吧
- 使用 url 的话应该怎么通过 python 读进来并输出到 dify 变量,似乎还是用得不太明白
--【贰】--:
chatflow 和 workflow 里面的东西不一样的,他应该设计的是 workflow 做固定结构化的数据处理,所以全都要用变量。我现在用的都是 chatflow 没那么多限制,但是里面没有触发器,只能对话触发。
二是可以把 workflow 发布到工具里面,然后在别的工作流里面引用工具,相当于封装。
三我是直接在会话变量里面定义一个聚合object,把所有变量都塞到这个object里面去,操作都用脚本代码操作里面的变量,取值直接用模板转换的 jinja2 模板取变量值。
--【叁】--:
哦还有一个很难受的点就是我发现我没法debug了,刚开始用还可以测试运行的,现在只有点测试运行100%出现这种情况,但是先发布再运行又是正常的
image395×237 5.15 KB
--【肆】--:
- 确实有效,是个好方法
- 至少我没找到
- 对于文本还好,但想要一个文件作变量值似乎就不好操作了
--【伍】--:
- 这个你在前面加一个普通的空节点,里面写Python代码,起个变量赋予这个变量对应的字符串值就好。至于为啥这样设计,估计是为了方便引用,纯文本的话通过前面这种方式就能实现了。 再不济你可以定义一个全局变量
- 我记得是有一个可以引用其他的独立的chatflow/workflow的节点
- 参考1,不过具体得你看是咋使用这个变量的
--【陆】--:
最近做的一个问答类的小程序也用了Dify,只能说过程十分酸爽
--【柒】--:
OK,晚点我试试
--【捌】--:
我觉得还是langflow和flowise比dify好用
--【玖】--:
不能直接把文件作为变量,文件上传上去每个文件都会变成一个对应的json对象,里面包含文件信息和url,最多把这个json或者url取出来赋值到变量里面。
如果后面的节点连着开始输入的节点,直接取 userinput.files 变量就行了;如果要存到自定义变量里,就要自己处理这个文件json内容。
--【拾】--:
试试fastgpt,我感觉这个好用点
--【拾壹】--:
- 可能是工具节点,你试试看
- 文件的话得看你咋用这个文件,你同样用Python代码把这个文件读进来也是可以的。这个文件得看你是咋给的,URL?还是说直接让用户上传文件
--【拾贰】--:
chatflow里确实找到直接输出的节点了,但是我还是没弄明白怎么做到变量,聚合的object似乎还是只能塞一些传统类型?我想要的变量是一些文件,比如图片或者xlsx表格之类的

