Skip to content

工作流引擎:给 AI 写 SOP,不是让它即兴发挥

在 Agent 运行时中的位置:Workflow Skill 触发 + 独立 /workflows/run 入口——把多步骤任务画成流程图,让 AI 按图索骥。
主线 → Agent 运行时 §4.4


先搞清楚:工作流是什么?(纯概念)

大模型本身只会做一件事:输入一段话,输出一段话。这叫「一问一答」。

但真实场景很少是「一问一答」能解决的:

  • 「帮我写一份 PRD」→ 要先分析用户故事,再拆功能模块,最后生成完整文档
  • 「推荐 6 个月的米粉」→ 要先查宝宝月龄库,再搜商品,再生成图文卡片

如果只靠一次 LLM 调用,要么编造结果,要么漏步骤。

工作流(Workflow) 就是把多步骤任务画成流程图,每一步交给最合适的角色来干:

用户说「推荐米粉」
  → 第 1 步:LLM 判断意图(用户想买米粉)
  → 第 2 步:Condition 分支(宝宝月龄是 6 个月 → 走辅食流)
  → 第 3 步:HTTP 调商品 API(查库存和价格)
  → 第 4 步:Code 格式化(把 API 返回的 JSON 转成人类可读)
  → 第 5 步:LLM 生成导语文案(「6 个月宝宝推荐这款……」)
  → 返回用户:一张漂亮的商品卡片

类比一下就懂了:

无工作流有工作流
让厨师自己发挥,做什么菜看心情厨房 SOP 贴墙上:接单 → 洗菜 → 切菜 → 炒菜 → 装盘
一次 LLM 调用,一次性赌运气拆成 5 步,每步可换人、可调试、可复用
出错了只能怪大模型哪步出错点哪步看 input/output

专业定义:

工作流 = 将复杂 AI 任务拆解为可视化的节点链,引擎按拓扑序逐个执行,中间可插 LLM、HTTP、条件判断、代码处理。


那在晨悦里,它是怎么玩的?(通俗理解)

晨悦有两套工作流使用方式:

方式一:独立运行(/workflows/run

用户直接调一个工作流接口,传入参数,拿到结果。适合确定性强的任务(比如「根据月龄生成辅食推荐」)。

方式二:Chat 内 Workflow Skill

用户在聊天里说了关键词(如「推荐米粉」),系统自动匹配到对应工作流,跑完把结果注回对话。适合聊天场景的自然触发。

晨悦母婴馆小悦 的「商品推荐」工作流(v2 版,16 节点):

parse_intent(LLM 判断意图)
  → http_trade(调商品 API)
  → code_format(格式化数据)
  → llm_intro(LLM 写导语文案)
  → end_1(返回卡片)

AgentPM 的「需求 → PRD」工作流:

用户故事输入
  → LLM 结构化(拆功能模块)
  → Condition 分支(功能型/文档型?)
  → LLM 生成 PRD 章节
  → End 输出

六大节点,各司其职

工作流画布上可以拖拽以下节点,按顺序连线:

节点干什么典型场景
Start定义入参(用户输入、业务参数)每个工作流必须有一个
LLM调大模型,做意图分类、文案生成「判断用户想干什么」「写一段推荐语」
HTTP调外部 API查商品价格、查库存、查订单
Condition条件分支(true / false 两条路)「是不是 6 个月以上?→ 走辅食流 / 走奶粉流」
Code格式化、计算、转换把 API 返回的 JSON 转成 Markdown
End定义出参,返回给用户每个分支需要一个 End

引擎按拓扑序执行(连线怎么画就怎么跑),单步可查看每个节点的 input/output。

Condition 注意事项

  • 表达式语法:intent == goods_search(单值判断),不是 集合语法
  • 只有 true / false 两条出口,如需三分支请用单 HTTP + Code 路由,或等平台升级

Code 节点规范

  • 不要用 globals(),统一通过 inputs[node_id] 取上游数据
  • 约定输出格式为 result 字段

⚡ 常见误区(工作流不是搭积木)

误区后果正确姿势
一个 LLM 节点包办所有事和不用工作流没区别,照样不稳定每个节点只做一件事,LLM 只负责「理解」,不负责「执行」
Condition 后忘了 False 分支用户走进死胡同,等了 5 秒没回复每条分支都必须有 End 节点
Code 节点写全局变量节点间数据污染,上一个请求的缓存漏到下一个inputs[node_id] 显式传参
把高频固定问题做成工作流「有优惠券吗」也要过 LLM → HTTP → Code,浪费高频固定问题用 Scene Layer1 直接回
不调试就上线某个节点挂了整个工作流卡死每个节点单独跑一次,看 input/output

两个真实案例

晨悦母婴馆小悦 · 商品推荐

流程:parse_intent → http_trade → code_format → llm_intro → end_1
节点数:16(v2)
触发:Chat 内关键词「推荐米粉」「买奶粉」命中 Workflow Skill
关键:HTTP 实时查价格,不在 Code 里硬编码

AgentPM · 需求生成 PRD

流程:用户故事 → LLM 结构化 → Condition 分支 → LLM 生成 → End
触发:用户提交一份需求描述
关键:Condition 决定走「功能型 PRD」还是「文档型 PRD」模板

5 分钟动手

  1. flow-admin → 工作流 → 新建
  2. 拖一个 Start → 拖一个 LLM(写 Prompt:「把下句话翻译成英文」)→ 拖一个 End
  3. 连线:Start → LLM → End
  4. 点「调试」,输入「你好世界」,看输出是不是「Hello World」
  5. 再插入一个 Code 节点,把 LLM 输出转成大写

→ 更多实操:Lab 2 · 工作流


思维导图


相关文档

晨悦 AI 实践手册