FastGPT icon indicating copy to clipboard operation
FastGPT copied to clipboard

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

Open dcsunny opened this issue 2 months ago • 59 comments

工作流改进

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

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

image

dcsunny avatar Apr 07 '24 07:04 dcsunny

存在几个问题

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

c121914yu avatar Apr 08 '24 14:04 c121914yu

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

c121914yu avatar Apr 09 '24 15:04 c121914yu

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

关于新工作流两个重点。

执行时机

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

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

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

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

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

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

关于输入

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

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

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

关于第二个问题

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

c121914yu avatar Apr 10 '24 11:04 c121914yu

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

mxr612 avatar Apr 11 '24 09:04 mxr612

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

lijiajun1997 avatar Apr 14 '24 05:04 lijiajun1997

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

bincooo avatar Apr 14 '24 17:04 bincooo

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

lijiajun1997 avatar Apr 14 '24 17:04 lijiajun1997

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

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

c121914yu avatar Apr 16 '24 15:04 c121914yu

是的 但是不可控上传的文档到底有多长 是一次性给文本给gpt还是走RAG

李嘉俊 @.***

 

------------------ 原始邮件 ------------------ 发件人: "labring/FastGPT" @.>; 发送时间: 2024年4月16日(星期二) 晚上11:42 @.>; @.@.>; 主题: Re: [labring/FastGPT] 工作流重构方案(4月执行,旧版工作流问题不再回复) (Issue #1140)

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

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

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

lijiajun1997 avatar Apr 16 '24 15:04 lijiajun1997

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

sumingcheng avatar Apr 18 '24 09:04 sumingcheng

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

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

c121914yu avatar Apr 18 '24 11:04 c121914yu

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

HaishengLiang avatar Apr 19 '24 10:04 HaishengLiang

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

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

c121914yu avatar Apr 19 '24 10:04 c121914yu

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

hellolixy avatar Apr 19 '24 13:04 hellolixy

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

lijiajun1997 avatar Apr 19 '24 13:04 lijiajun1997

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

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

c121914yu avatar Apr 19 '24 13:04 c121914yu

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

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

c121914yu avatar Apr 19 '24 13:04 c121914yu

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

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

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

hellolixy avatar Apr 19 '24 14:04 hellolixy

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

ifkd111 avatar Apr 22 '24 11:04 ifkd111

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

nightzjp avatar Apr 25 '24 10:04 nightzjp

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

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

lijiajun1997 avatar Apr 25 '24 10:04 lijiajun1997

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

bincooo avatar Apr 26 '24 05:04 bincooo

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

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

c121914yu avatar Apr 26 '24 05:04 c121914yu

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

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

bincooo avatar Apr 28 '24 08:04 bincooo

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

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

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

c121914yu avatar Apr 28 '24 15:04 c121914yu

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

lijiajun1997 avatar Apr 30 '24 05:04 lijiajun1997

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

tool没有设置回答

c121914yu avatar Apr 30 '24 05:04 c121914yu

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

tool没有设置回答 如何调用tool输出的回答?

lijiajun1997 avatar Apr 30 '24 05:04 lijiajun1997

ool没有设置回答 如何调用tool输出的回答?

没法调用。现在节点的输出基本是用以前的,这个版本没有新增太多输出东西,只是改了交互。 迟点统一加下。

c121914yu avatar Apr 30 '24 05:04 c121914yu

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

tool没有设置回答 如何调用tool输出的回答?

另一种折中方案: Screenshot 2024-04-30 at 09 05 26

获取系统时间 > TOOL CACHE 缓存结果 > AI 对话前置 读取最后一次缓存的TOOL CACHE > AI 输出

使用redis实现每一次执行链依托一个临时uuid挂载全局变量,执行完后清理


题外话,@c121914yu 大佬啥时候能让body不限于application/json?每次更新我都要改一下js😭

bincooo avatar Apr 30 '24 06:04 bincooo