ReAct处理
链式串行react思考→ 调用工具→ 得到结果→ 再继续下一步推理。这种方式实现简单,但问题也很明显:整个流程是串行的,一个节点慢,后面全部都会被阻塞,而且复杂任务下效率会越来越低。我们的Agent Workflow 是动态图结构,而不是固定链路核心思路是:把任务拆成很多节点,每个节点代表一次...
字数: 609 | 语雀原文
链式串行react
思考 → 调用工具 → 得到结果 → 再继续下一步推理。
这种方式实现简单,但问题也很明显:整个流程是串行的,一个节点慢,后面全部都会被阻塞,而且复杂任务下效率会越来越低。
我们的Agent Workflow 是动态图结构,而不是固定链路
核心思路是: 把任务拆成很多节点,每个节点代表一次推理、工具调用或者数据处理,然后通过依赖关系组成任务图。
例如: 搜索完成后, 才能做信息总结;
代码生成完成后, 才能进入测试节点。
这样节点之间就形成了依赖关系。
在调度上,我会使用拓扑排序管理执行顺序,通过入度和出度控制节点依赖。
当某个节点的入度为 0,就说明它依赖的数据已经全部准备完成,可以立即执行。
这样最大的好处是: 原本串行等待的步骤,可以并行运行。
比如: 搜索资料、 读取记忆、 拉取网页,
这些其实互相没有依赖,就没必要一个一个执行。
竞速机制
如果多个节点属于同性质任务,比如: 多个搜索源、 多个小模型、 多个检索策略,
系统会并行执行,谁先返回就优先采用结果。
这样做有几个原因:
第一,AI 系统本身具有不确定性。 不同模型、不同工具的响应时间波动很大,串行执行会被最慢节点拖死。
第二,并行能显著降低整体任务耗时。 原本几十秒的链路,可以压缩到几秒。
第三,可以提升系统稳定性。 即使某个节点失败,其它节点仍然可以继续返回结果,避免整个任务直接中断。
第四,后面更容易扩展多 Agent 协作。 因为本质上,多 Agent 也是图结构调度问题,而不是简单对话。
ReAct 从‘链式调用’升级成‘可调度、可并行、可恢复的任务图 Runtime’。