简介:本教程面向开发者、架构师与技术负责人,系统讲解企业级AI应用中Workflow与Multi-Agent两种架构的选型方法。通过任务确定性分析、控制权划分原则、六类编排模式与一棵可直接套用的决策树,帮助读者按“业务任务→控制模式→是否Agent”的顺序做出合理架构决策,避免过度设计带来的成本与稳定性风险。
最近一年,企业AI落地圈讨论的重心发生了明显迁移:从“选哪个大模型、要不要上检索增强、提示词怎么写”,变成了“要不要拆成多个Agent、要不要加规划器、路由怎么设计、Agent之间怎么协作”。架构图也越画越热闹:一个总Agent下面挂三个子Agent,每个子Agent再挂一堆工具,工具又通过标准化协议接入外部系统。画在方案里很有气势,但真跑起来,不少团队会撞上同一个尴尬——Agent越多,系统越不稳:Token消耗翻倍、响应变慢、出了问题说不清是哪一层的锅。
本教程要解决的核心问题是:帮助团队建立一套可落地的架构决策方法,在Workflow(工作流)与Multi-Agent(多智能体)之间做出合理选择。读完本文你将获得:
适用读者:负责AI应用落地的后端与平台开发者、系统架构师、技术负责人,以及需要评审AI方案的企业技术决策者。要求读者对大模型的基本调用方式(提示词、工具调用)有初步了解,不要求具备分布式系统开发经验。
Workflow(工作流):代码决定下一步做什么。流程像铺好的路,走到哪一步都是预先定义的;模型只在个别需要“理解”或“生成”的环节出场。
Agent(智能体):模型决定下一步做什么。Agent本质是一个循环:模型观察当前上下文,自主选择调用哪个工具、是否继续、何时结束。
Multi-Agent(多智能体):多个Agent按角色分工协作,通常引入路由、规划、执行、评估、汇总等编排节点。它不是“更高级”的默认选项,而是控制权分散程度最高的形态。
这三种形态的本质区别在于控制权的分配方式:控制权在代码手里,就是Workflow;在模型手里,就是Agent;分散给多个模型实例,就是Multi-Agent。架构选型,本质上是在回答“到底把多少控制权交给模型”。
业界在大量工程实践后形成了一条共识原则:不要一上来就把所有问题Agent化,先从最简单的方案做起,任务确实复杂了,再逐级增加编排能力。
道理听着平常,但现实中很多项目恰好反着来:先定一个目标——“我们要做一个Agent”,然后才回头琢磨这个Agent该干什么。顺序一旦倒置,就会出现“一个调一次模型就能搞定的小任务,被做成路由、规划、执行、评估、汇总八个节点”的过度设计。
比较靠谱的顺序应该是三步:
判断“确定”与“模糊”的标准很简单:这一步要什么输入、调哪个系统、失败了怎么处理,能否事先写清楚?能写清楚的就是确定步骤,交给代码;需要理解自由文本、生成意见、路径无法预先枚举的,才是模糊环节,才让模型出场。
做什么:把目标业务流程逐步骤画出来,对每一步标注四个问题——输入是否固定?调用哪个系统?输出如何校验?失败怎么处理?
为什么:这一步的产出直接决定控制模式。以一个典型的企业审批流程为例:接收申请→解析表单→查询订单→规则判断→生成审批意见→提交结果。这条流程从头到尾每一步都是确定的,第一步做完才轮到第二步,每一步要什么输入、调哪个系统、失败了怎么处理,事先都能写清楚。这种情况下还让Agent每走一步都自己想“下一步该干嘛”,纯属多此一举。
注意点:重点标记模糊环节。例如“读懂一段自由文本的投诉内容”“生成一段审批意见”,这些环节需要语言理解与生成能力,适合让模型出场;而取数、校验、落库等环节应保持代码控制。
做什么:如果整个流程大部分确定、只有少数模糊环节,采用Workflow架构——用代码把流程串起来,模型只作为单个节点的能力提供方。
# Workflow:流程由代码固定,模型只在模糊环节出场def handle_approval(ticket):info = parse_form(ticket) # 确定步骤:代码解析order = query_order(info.order_id) # 确定步骤:调用内部系统if rule_engine.needs_review(order): # 确定步骤:规则判断opinion = llm.generate_review(order) # 模糊环节:模型生成意见return submit_review(opinion)return auto_approve(order)
为什么:模型每次调用都有成本与不确定性,能少用就少用。代码管流程、模型管单点,是兼顾稳定性与成本的务实选择。
做什么:当任务无法用单条固定流程覆盖时,按由简到繁的顺序评估以下模式:
注意点:以上模式中,流程控制权仍主要在代码手里,属于Workflow家族的增强形态。每升一级,复杂度、延迟、成本都会上升,务必确认低一级模式确实满足不了再升级。
做什么:当任务目标明确、但完成路径无法预先枚举时,才考虑让模型接管控制权,进入Agent循环。
# Agent:模型在循环中自主决定下一步def run_agent(task, max_steps=10):context = [task]for step in range(max_steps):action = llm.decide(context, tools) # 模型决定下一步if action.type == "FINISH":return action.resultresult = execute_tool(action) # 执行工具调用context.append(result)return escalate_to_human(context) # 护栏:超限转人工
引入Agent前,逐条核对四个条件:
为什么:四个条件缺一个,Agent的“自主性”就会转化为“不可控性”。
做什么:只有单Agent确实无法覆盖时才考虑Multi-Agent,典型场景是多个领域差异大、子任务天然独立、且可并行推进(如同时分析代码、文档与数据三类资产)。
三条红线:
注意点:如果架构图里出现了“总Agent→子Agent→工具→协议”的多层结构,先自问:每一层是否都在承担不可替代的职责?能不能合并?
做什么:
结果验证标准:新架构相比基线,在评估集准确率上有可量化提升,或延迟/成本至少一项不劣化;否则应回退到更简单的方案。
Q1 任务能否全部用确定性代码完成?├─ 能 → 纯代码/传统服务,不引入模型└─ 否,存在模糊环节Q2 模糊环节是否只有少数几个、流程整体固定?├─ 是 → Workflow(模型仅作单点能力)└─ 否,任务较复杂Q3 阶段固定但可分类或可并行?├─ 可分类 → 路由模式├─ 可并行 → 并行模式└─ 均不可Q4 拆解方式依赖每次输入?├─ 是 → 编排者-工作者(代码仍控制边界)└─ 否Q5 质量要求高且可自动评估?├─ 是 → 评估者-优化者└─ 否Q6 目标明确但路径完全不可枚举?├─ 单领域 → 单Agent(循环+工具+护栏)└─ 多领域且可并行 → Multi-Agent(最后考虑)
使用方法:从Q1开始逐题作答,第一个命中的分支就是当前应选的最简方案。随任务演化定期重走一遍决策树,发现可以降级就果断降级。
问题一:Agent越多,系统越不稳。
原因:控制权过度分散,任何一层的输出抖动都会被下游放大。排查:统计各节点的失败率与重试率,找到失败最集中的层级。解决:将该层及以下的控制权收回代码,降级为Workflow,只保留真正需要自主性的顶层。
问题二:Token成本远超预算。
原因:节点过多导致同一上下文被多次传递;评估循环缺少终止阈值。解决:合并冗余节点、按任务难度分级选模型(简单分类用小模型)、对重复输入做缓存、为所有循环设置步数与预算上限。
问题三:端到端响应慢。
原因:链式串行过长、评估轮次过多。解决:把独立子任务改为并行;对质量达标的产出提前退出循环;对用户可见部分采用流式输出改善体感。
问题四:出错后难以定位是哪一层的锅。
原因:缺少节点级日志与链路标识。解决:为每次请求生成唯一追踪ID贯穿全链路,每个节点落盘输入输出摘要与错误码,支持单节点回放与离线复现。
问题五:Agent陷入死循环或不终止。
原因:终止条件不明确、工具返回结果无法推进任务。解决:设置最大步数与预算熔断;在提示词中明确终止判据;对连续无进展的循环主动介入转人工。
问题六:多Agent各说各话,汇总结果矛盾。
原因:缺少统一裁决层或接口契约不清。解决:增加汇总校验节点,对冲突产出做一致性检查;明确各Agent的职责边界与输出格式。
企业级AI架构选型的核心,从来不是“要不要用Agent”,而是“把多少控制权交给Agent”。本教程给出的决策主线是:先拆解业务任务、绘制确定性地图;再从提示词链、路由、并行、编排者-工作者、评估者-优化者这些Workflow家族的模式中由简到繁地选择;只有当目标明确而路径不可枚举时,才引入自治Agent;Multi-Agent则是最后才考虑、且必须守住数量、契约、收敛三条红线的形态。落地时,以节点级可观测性和评估集回归作为验证手段,用灰度发布控制风险。后续可继续关注的方向包括:编排节点配置化、多Agent协作接口的标准化,以及基于成本与质量联合优化的自动降级策略。