755 字
约 2 分钟
1
AI Agent 工作流引擎到底是怎么跑起来的
AI Agent 工作流引擎到底是怎么跑起来的
在完成 DSL 的生成和解析之后,真正的问题才开始:
流程已经描述出来了,但它到底怎么一步一步执行?
一个工作流引擎,核心其实就 5 个东西。
1. DSL:描述流程长什么样
DSL 负责定义节点、连线、输入和输出。
例如:
START
↓
LLM
↓
TTS
↓
END
DSL 只负责描述流程,不负责真正执行。
2. WorkflowEngine:决定谁先执行
WorkflowEngine 是整个工作流的调度中心。
它主要负责:
当前执行哪个节点
↓
节点执行完成
↓
判断执行结果
↓
找到下一个节点
↓
继续执行
所以可以简单理解成:
WorkflowEngine 负责控制流程怎么走。
3. NodeExecutor:负责真正干活
不同节点有不同的执行器。
例如:
START
→ StartNodeExecutor
LLM
→ LlmNodeExecutor
TTS
→ TtsNodeExecutor
END
→ EndNodeExecutor
WorkflowEngine 不关心 LLM 怎么调用模型。
它只负责找到对应的 Executor:
NodeExecutor executor = getExecutor(node.getType());
executor.execute(node);
这样以后增加 HTTP、插件、代码节点,只需要增加新的 Executor。
4. VariablePool:负责节点之间传数据
节点之间不会直接互相调用。
例如:
START
↓
LLM
↓
TTS
START 输入:
介绍一下 Java
放入 VariablePool:
start.userInput = "介绍一下 Java"
LLM 执行时读取:
{{start.userInput}}
LLM 输出:
Java 是一种编程语言...
再次存入:
llm.output = "Java 是一种编程语言..."
TTS 再读取:
{{llm.output}}
所以:
VariablePool 就是整个工作流的数据中转站。
5. NodeRunResult:告诉引擎执行结果
节点执行完成后,不能只返回 true 或 false。
还需要告诉 WorkflowEngine:
成功
失败
需要重试
需要中断
走失败分支
因此一般会有:
NodeRunResult
例如:
SUCCESS
ERR_RETRY
ERR_INTERRUPT
ERR_FAIL_CONDITION
WorkflowEngine 根据这个状态决定下一步怎么走。
整个执行流程
把所有东西串起来就是:
DSL
↓
WorkflowEngine
↓
找到 NodeExecutor
↓
从 VariablePool 解析输入
↓
执行节点
↓
得到 NodeRunResult
↓
输出写回 VariablePool
↓
找到下一个节点
↓
继续执行
举个例子:
用户输入
↓
START
↓
LLM
↓
TTS
↓
END
实际运行过程:
用户输入:“介绍 Java”
↓
START 保存输入
↓
LLM 读取输入
↓
生成文本
↓
文本写入 VariablePool
↓
TTS 读取文本
↓
生成音频
↓
END 返回结果
总结
一个 AI 工作流引擎最核心的就是:
DSL
负责描述流程
WorkflowEngine
负责调度流程
NodeExecutor
负责执行节点
VariablePool
负责传递数据
NodeRunResult
负责告诉引擎下一步怎么走
理解这 5 个东西,基本就理解了工作流引擎最核心的执行机制。
AI Agent 工作流引擎到底是怎么跑起来的
http://www.clxhxhhr.top/posts/641/ 评论
0 条
还没有评论,先写一条吧。