10-workflow-multi-agent 多 Agent 工作流:复杂任务如何拆解和编排
LangChain4j 进阶实战:第 10 篇,多 Agent 工作流:复杂任务如何拆解和编排
前言
单个 Agent 能解决很多问题,但不是所有问题都适合让一个 Agent 一口气完成。
比如用户说:
我下周去杭州出差三天,有客户会议,也有半天城市步行,帮我从衣橱里搭几套衣服。这个任务其实包含很多子任务:
- 提取时间、地点、场景。
- 查询天气。
- 理解会议和步行两个场景的穿搭要求。
- 检索用户衣橱。
- 匹配衣服。
- 组合多套方案。
- 校验衣服 ID 是否真实存在。
- 生成最终解释。
如果全部交给一个 Prompt,容易出现几个问题:
- Prompt 越写越长。
- 模型漏掉步骤。
- 工具调用混乱。
- 输出格式不稳定。
- 失败后无法定位是哪一步出了问题。
这时候就需要 Workflow,把复杂 AI 任务拆成多个步骤,每个步骤交给合适的 Agent。
1. 什么是 AI Workflow
普通 Agent 调用是:
用户输入 -> Agent -> 输出Workflow 是:
用户输入 -> Step 1: 场景分析 Agent -> Step 2: 数据检索 Agent -> Step 3: 方案生成 Agent -> Step 4: 结果校验 Agent -> 最终输出我的理解是:Agent 解决“一个角色如何完成一个任务”,Workflow 解决“多个角色如何协作完成一个流程”。
AI Workflow 和传统工作流不完全一样。传统工作流强调确定性,例如审批、支付、发货;AI Workflow 既有确定性步骤,也有模型生成步骤,所以更要关注上下文传递、结构化输出、失败重试和结果校验。
2. 什么时候需要拆成工作流
不是所有 AI 功能都要上 Workflow。下面这些场景才值得拆:
| 场景 | 是否建议 Workflow | 原因 |
|---|---|---|
| 简单问答 | 不建议 | 一个 Agent 足够 |
| 单文档总结 | 不一定 | 任务边界清晰 |
| 多文档分析 | 建议 | 需要检索、归纳、引用 |
| 穿搭推荐 | 建议 | 需要天气、衣橱、场景、输出校验 |
| 简历优化 | 建议 | 可拆成提取、匹配、改写、评分 |
| 客诉处理 | 建议 | 需要订单、政策、用户画像、处理建议 |
| 自动下单/支付 | 必须谨慎 | 涉及写操作和确认 |
一个简单判断标准:
如果一个 Prompt 里出现了 5 个以上明确步骤,就应该考虑 Workflow。3. 工作流定义怎么设计
最小工作流定义可以是一个 JSON:
{"version":"1.0","name":"穿搭推荐工作流","description":"根据用户衣橱、天气和场景生成穿搭推荐","steps":[{"id":"scene_analyze","name":"场景分析","agentCode":"scene_analyze_agent","order":1},{"id":"clothing_match","name":"服装匹配","agentCode":"clothing_match_agent","order":2},{"id":"outfit_generate","name":"方案生成","agentCode":"outfit_generate_agent","order":3}]}对应 Java 对象:
publicclassWorkflowDefinition{privateStringversion;privateStringname;privateStringdescription;privateList<WorkflowStep>steps;publicList<WorkflowStep>getSortedSteps(){returnsteps.stream().sorted(