Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

工作流重构方案(4月执行,旧版工作流问题不再回复) #1140

Closed
dcsunny opened this issue Apr 7, 2024 · 65 comments
Closed
Labels
feature New feature or request

Comments

@dcsunny
Copy link

dcsunny commented Apr 7, 2024

工作流改进

工作流在使用过程中,在体验比较差,比较难理解,在体验不少产品中,豆包的工作流设计体验比较好。比较好的点

  1. 入口只是给出input参数可以去其他地方配置
  2. 每个模块没有这么多的链接线

image

@dcsunny dcsunny added the feature New feature or request label Apr 7, 2024
@c121914yu
Copy link
Collaborator

存在几个问题

  1. 无法递归调用。
  2. 同一个参数,无法从不同的上一个流程获取(分类时候经常用),导致需要增加多个相同的模块。
  3. 无法精准控制执行时机。

@c121914yu
Copy link
Collaborator

详细看了看 n8n,感觉可以解决这几个问题。

@c121914yu
Copy link
Collaborator

c121914yu commented Apr 10, 2024

提上日程,这两周重构一遍。

关于新工作流两个重点。

执行时机

每个节点增加一个sources字段,是一个数组,用于记录从哪些节点传递过来。

每个节点增加一个targets,是一个数组。用于记录输出的下一步节点。

runtime前初始化每个source的状态为waiting。

每个节点运行成功后,根据targets去更新对应nodeId的source,更改其状态为running。

除了waiting和running外,还需一个skipping的状态,表示跳过该节点以及它后面仅有一个sorce的节点

当一个节点所有的source的状态不为waiting的时候会执行。

关于输入

整体交互与coze类似,通过递归获取前面所有节点的输出值。但coze的输入选择也很难用,所以会找找有没有更合适的交互。

比较困难的是同时支持引用和输入的变量,例如: 提示词输入。
第二种比较困难的是特殊的交互。例如: 知识库选择,应用选择。

每个节点的动态input,都通过nodeId和outputId去其他的节点获取输出值。具体赋值时机则是在节点运行前。

关于第二个问题

一个变量无法获取多个来源的值。
可以通过挂载到全局变量来解决。

@c121914yu c121914yu pinned this issue Apr 10, 2024
@c121914yu c121914yu changed the title 工作流改进 工作流重构方案 Apr 10, 2024
@mxr612
Copy link

mxr612 commented Apr 11, 2024

能不能手写啊QwQ写图形化编程真的血压升高。

@c121914yu c121914yu changed the title 工作流重构方案 工作流重构方案(4月执行,旧版工作流问题不再回复) Apr 12, 2024
@lijiajun1997
Copy link

重构的时候能否顺便把chat with pdf的功能实现了,理论上是能在重构中解决的。
方案是在上传PDF后,在临时的知识库中导入这个文件,然后在编排中把这个文件作为被选择的知识库。
对于总结和提问两种问题进行分流,总结需要遍历每个chunk,如果超过模型上限可以分步执行,提问用向量检索就好。

@bincooo
Copy link

bincooo commented Apr 14, 2024

可以在工作流中创建全局变量嘛

@lijiajun1997
Copy link

tool调用多个工具或者执行多步骤的时候可能会超过token,可以考虑分开执行,再汇总。

@c121914yu
Copy link
Collaborator

重构的时候能否顺便把chat with pdf的功能实现了,理论上是能在重构中解决的。 方案是在上传PDF后,在临时的知识库中导入这个文件,然后在编排中把这个文件作为被选择的知识库。 对于总结和提问两种问题进行分流,总结需要遍历每个chunk,如果超过模型上限可以分步执行,提问用向量检索就好。

直接用长上下文模型解决岂不是更好。

@lijiajun1997
Copy link

lijiajun1997 commented Apr 16, 2024 via email

@sumingcheng
Copy link

请问流重构什么时候上线,项目部署在内网给大家体验后,领导觉得连线太多比较复杂。所以想问下时间~

@c121914yu
Copy link
Collaborator

请问流重构什么时候上线,项目部署在内网给大家体验后,领导觉得连线太多比较复杂。所以想问下时间~

预计下周发布 preview,51 假期后发布正式版

@HaishengLiang
Copy link

需要类似coze的代码执行能力, 这个可以加吗?
还是说通过plugin 自己扩展?

@c121914yu
Copy link
Collaborator

c121914yu commented Apr 19, 2024

需要类似coze的代码执行能力, 这个可以加吗?
还是说通过plugin 自己扩展?

有 js 脚本执行器。
复杂代码通过 laf 或者 http 扩展。

@hellolixy
Copy link

ui上面可以优化下吗?单个组件平铺在画布上,很占空间。我看dify设计的挺简洁的

@lijiajun1997
Copy link

工具插件是否可以有输出模块,需要设计一个复杂的决策链,需要调用多轮递归。

@c121914yu
Copy link
Collaborator

ui上面可以优化下吗?单个组件平铺在画布上,很占空间。我看dify设计的挺简洁的

没感觉,感觉很难操作,想改个都找不到。

@c121914yu
Copy link
Collaborator

工具插件是否可以有输出模块,需要设计一个复杂的决策链,需要调用多轮递归。

有。而且可以四向连接,递归更容易连线。

@hellolixy
Copy link

ui上面可以优化下吗?单个组件平铺在画布上,很占空间。我看dify设计的挺简洁的

没感觉,感觉很难操作,想改个都找不到。

我是觉得现在的组件占用的空间太多了,一个屏幕放不下几个组件就满了

@ifkd111
Copy link

ifkd111 commented Apr 22, 2024

本地部署时,时钟不生效。另外,能不能把语音输入直接整合进去

@nightzjp
Copy link

通过API调用的时候,可否支持语音,图片,PDF等

@lijiajun1997
Copy link

本地部署时,时钟不生效。另外,能不能把语音输入直接整合进去

我本地部署时钟是有效的。语音输入也需要模型去计算的,除非找一个免费的API。

@bincooo
Copy link

bincooo commented Apr 26, 2024

release里新工作流页面配色感觉怪怪的,是截图的问题吗

@c121914yu
Copy link
Collaborator

release里新工作流页面配色感觉怪怪的,是截图的问题吗

嗯,这电脑不知道为啥都会偏蓝

@bincooo
Copy link

bincooo commented Apr 28, 2024

新版本的组件分叉容易,合叉没有旧版的方便

我上面的记录里有提到挂载到全局变量,这个要怎么做?

@c121914yu
Copy link
Collaborator

新版本的组件分叉容易,合叉没有旧版的方便

我上面的记录里有提到挂载到全局变量,这个要怎么做?

需要等变更更新这个节点做完才行

@lijiajun1997
Copy link

4.8 版本没有办法对于tool回答的内容作为变量进行引用。 还是无法递归调用。
image

@bincooo
Copy link

bincooo commented May 3, 2024

额,提的问题比较频繁,勿恼。
插件流程编排里,插件输出只有一个不可避免的需要并线;
在并线时一个变量无法接受多个来源,这是个难解决的问题,那是否可以不并线了,定义多个插件输出node给不同分支连接?
Screenshot 2024-05-03 at 20 20 55
不然的话,只能接受多个参数用脚本判断了。这样处理不太合适,需要一些开发成本,不够简约。

这种情况是设计通过挂载全局变量解决。 输入节点选择全局变量作为引用,其他地方直接更新全局变量。

有没有示例,不会用。。。

@c121914yu
Copy link
Collaborator

文本加工输出无结果是我的问题吗?

image

看看日志是不是有报错

@Cheyenne1025
Copy link

文本加工输出无结果是我的问题吗?
image

看看日志是不是有报错

没有报错,在两个环境都尝试了。

本地:
dacf6e782d46d0642ce3e90acb016d72

服务器:
e1f15531741bd865d102ca5448a40a3b

@c121914yu
Copy link
Collaborator

额,提的问题比较频繁,勿恼。
插件流程编排里,插件输出只有一个不可避免的需要并线;
在并线时一个变量无法接受多个来源,这是个难解决的问题,那是否可以不并线了,定义多个插件输出node给不同分支连接?
Screenshot 2024-05-03 at 20 20 55
不然的话,只能接受多个参数用脚本判断了。这样处理不太合适,需要一些开发成本,不够简约。

这种情况是设计通过挂载全局变量解决。 输入节点选择全局变量作为引用,其他地方直接更新全局变量。

有没有示例,不会用。。。

还没能,,就是上次和你说的,需要一个更新变量节点

@c121914yu
Copy link
Collaborator

文本加工输出无结果是我的问题吗?
image

看看日志是不是有报错

没有报错,在两个环境都尝试了。

本地:
dacf6e782d46d0642ce3e90acb016d72

服务器:
e1f15531741bd865d102ca5448a40a3b

那就奇怪了,你看看获取时间插件能不能用,它就是这么实现的。

@Cheyenne1025
Copy link

文本加工输出无结果是我的问题吗?
image

看看日志是不是有报错

没有报错,在两个环境都尝试了。
本地:
dacf6e782d46d0642ce3e90acb016d72
服务器:
e1f15531741bd865d102ca5448a40a3b

那就奇怪了,你看看获取时间插件能不能用,它就是这么实现的。

......

2a82d301e3db1d035c9c8a3affcb5f56 f91ed475484d52415e1b02a1a7b30ab4 16b9cbbe388445f6c92845d09502b62f e82d912d00ae1cfcc42a52b514593ac8

@bincooo
Copy link

bincooo commented May 3, 2024

额,提的问题比较频繁,勿恼。
插件流程编排里,插件输出只有一个不可避免的需要并线;
在并线时一个变量无法接受多个来源,这是个难解决的问题,那是否可以不并线了,定义多个插件输出node给不同分支连接?
Screenshot 2024-05-03 at 20 20 55
不然的话,只能接受多个参数用脚本判断了。这样处理不太合适,需要一些开发成本,不够简约。

这种情况是设计通过挂载全局变量解决。 输入节点选择全局变量作为引用,其他地方直接更新全局变量。

有没有示例,不会用。。。

还没能,,就是上次和你说的,需要一个更新变量节点

哦,想起来了

@Cheyenne1025
Copy link

文本加工输出无结果是我的问题吗?
image

看看日志是不是有报错

没有报错,在两个环境都尝试了。
本地:
dacf6e782d46d0642ce3e90acb016d72
服务器:
e1f15531741bd865d102ca5448a40a3b

那就奇怪了,你看看获取时间插件能不能用,它就是这么实现的。

......

2a82d301e3db1d035c9c8a3affcb5f56 f91ed475484d52415e1b02a1a7b30ab4 16b9cbbe388445f6c92845d09502b62f e82d912d00ae1cfcc42a52b514593ac8


刚交叉测试了一下,插件编排逻辑在应用中直接被调用是可用的,但是一旦进入插件内部进行单步调试 输出的值永远都是空

@bincooo
Copy link

bincooo commented May 3, 2024

版本: preview4
1.当判断器接收Boolean时无论true/false只走ELSE。
2.指定回复组件无法使用全局变量(经测试,貌似没有组件能使用全局变量)。

Screenshot 2024-05-04 at 00 53 31 Screenshot 2024-05-04 at 00 52 34 Screenshot 2024-05-06 at 19 03 42 Screenshot 2024-05-06 at 19 04 32

@c121914yu
Copy link
Collaborator

文本加工输出无结果是我的问题吗?
image

看看日志是不是有报错

没有报错,在两个环境都尝试了。
本地:
dacf6e782d46d0642ce3e90acb016d72
服务器:
e1f15531741bd865d102ca5448a40a3b

那就奇怪了,你看看获取时间插件能不能用,它就是这么实现的。

......
2a82d301e3db1d035c9c8a3affcb5f56 f91ed475484d52415e1b02a1a7b30ab4 16b9cbbe388445f6c92845d09502b62f e82d912d00ae1cfcc42a52b514593ac8

刚交叉测试了一下,插件编排逻辑在应用中直接被调用是可用的,但是一旦进入插件内部进行单步调试 输出的值永远都是空

确实是,已修复

@c121914yu
Copy link
Collaborator

版本: preview4 1.当判断器接收Boolean时无论true/false只走ELSE。 2.指定回复组件无法使用全局变量(经测试,貌似没有组件能使用全局变量)。

Screenshot 2024-05-04 at 00 53 31 Screenshot 2024-05-04 at 00 52 34 Screenshot 2024-05-06 at 19 03 42 Screenshot 2024-05-06 at 19 04 32

已支持变量更新

@bincooo
Copy link

bincooo commented May 7, 2024

已支持变量更新

更新了,发现新的问题
定义的全局变量在测试侧边抽屉窗口和聊天页面,切换页面或者关闭抽屉窗口后变量丢失,无法继续对话。
Screenshot 2024-05-08 at 02 51 14

@c121914yu
Copy link
Collaborator

已支持变量更新

更新了,发现新的问题
定义的全局变量在测试侧边抽屉窗口和聊天页面,切换页面或者关闭抽屉窗口后变量丢失,无法继续对话。
Screenshot 2024-05-08 at 02 51 14

我去,我测测,测了简易模式,没注意其他的

@lijiajun1997
Copy link

image
4.7版本可以这样递归调用AI,4.8的方案是啥,输入问题只能选择一个变量?怎么循环?

@lijiajun1997
Copy link

image 4.7版本可以这样递归调用AI,4.8的方案是啥,输入问题只能选择一个变量?怎么循环?

感觉每个模块的输入参数应该改成多选。

@c121914yu
Copy link
Collaborator

image
4.7版本可以这样递归调用AI,4.8的方案是啥,输入问题只能选择一个变量?怎么循环?

挂载到全局变量

@lijiajun1997
Copy link

有没有可能搞个计数器模块,触发的话全局变量+1?比较多的场景要使用:比如前几轮对话收集信息,第X轮整理加工和输出。或者上面的循环,累计x次终止。

@lijiajun1997
Copy link

image
image

4.8 alpha 复制出来的文本加工,图标不一样 执行到这一步的时候报错

@c121914yu
Copy link
Collaborator

制出来的文本

#1399 修复它

@nightzjp
Copy link

nightzjp commented May 9, 2024

工作流改进

工作流在使用过程中,在体验比较差,比较难理解,在体验不少产品中,豆包的工作流设计体验比较好。比较好的点

  1. 入口只是给出input参数可以去其他地方配置
  2. 每个模块没有这么多的链接线

image

这是哪一个模型平台啊,我看豆包还没开放,

@HaishengLiang
Copy link

4.8发布了 没看到JS沙盒 啥时候开放?

@c121914yu
Copy link
Collaborator

4.8发布了 没看到JS沙盒 啥时候开放?

下个月吧,目前都用laf写,暂时没有沙盒需求。

@bincooo
Copy link

bincooo commented May 14, 2024

4.8发布了 没看到JS沙盒 啥时候开放?

着急用可以试试这个 前置准备

@c121914yu
Copy link
Collaborator

c121914yu commented May 14, 2024

4.8发布了 没看到JS沙盒 啥时候开放?

着急用可以试试这个 前置准备

之前是计划用 isolate-vm 这个运行库,但是它无法在arm中编译,提了issue还没回~ 看错误像是 python 安装不上去。。 大佬有啥想法么?或者其他推荐库。

@bincooo
Copy link

bincooo commented May 14, 2024

之前是计划用 isolate-vm 这个运行库,但是它无法在arm中编译,提了issue还没回~ 看错误像是 python 安装不上去。。 大佬有啥想法么?或者其他推荐库。

没,我随意搞的。很多安全问题都不考虑,能用则用的心态😅

@bincooo
Copy link

bincooo commented May 14, 2024

插件编辑里字段无法设置默认值,每次保存都会清空
Screenshot 2024-05-14 at 11 22 33

@BUJIDAOVS
Copy link

难用的一批,判断器还不如原来正则呢,复杂一点的逻辑得配置一年

@c121914yu
Copy link
Collaborator

插件编辑里字段无法设置默认值,每次保存都会清空 Screenshot 2024-05-14 at 11 22 33

#1492 修复下它

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet
Development

No branches or pull requests