很多团队卡在同一个地方:明明直接调大模型也能出结果,为什么别人还要套一层 Agent?反过来也有人一上来就搭 Agent,结果跑了几十步还是答不对。这篇不聊虚的概念,只对比两者的能力边界、控制回路和落地代价,帮你判断手上这个需求到底该用哪种形态。
很多团队卡在同一个地方:明明直接调大模型也能出结果,为什么别人还要套一层 Agent?反过来也有人一上来就搭 Agent,结果跑了几十步还是答不对。这篇不聊虚的概念,只对比两者的能力边界、控制回路和落地代价,帮你判断手上这个需求到底该用哪种形态。
先把一句话摆在前面:通用大模型是「一问一答」,Agent 是「带着目标反复折腾直到有个结果」。差别不在模型多聪明,而在有没有一个能带回新信息、再决定下一步的循环。把这点想清楚,后面所有的成本、延迟、稳定性问题都是它的推论。
一次成稿与多轮推进:能力边界的真实分界
通用大模型是单次输入到输出,能力上限受这一次上下文和这一次推理限制;Agent 是把一次任务拆成多轮,每轮都能带回新信息再决定下一步。前者像闭卷考试,卷子发下来就得写完;后者像开卷查资料,查到什么可以回头改答案。
判断分界看两件事:任务需不需要中途拿外部事实、需不需要根据结果改路线。两样都不需要,说明大模型那一次调用就够,硬套 Agent 只是把简单事做复杂。反过来说,任务本身是开放式的、终点不明确,大模型无论如何也答不完,这不是提示词写得好不好的问题。
不少人以为是提示词没调好,其实是任务形态不匹配。你要模型「帮我找出这份合同里对我们不利的条款并给出修改建议」,它一次答出来的东西往往泛泛而谈,因为它手里没有合同以外的对照信息;这类任务注定要多轮。可以先到 /ai-dict/category/basics 把 Token、上下文这些基础概念对一遍,再判断你的任务是不是被单次上下文卡住。
- 不需要外部事实、不需要改路线:单轮大模型就够了
- 需要一次外部检索、但路线固定:检索加单轮调用
- 需要多轮拿事实、路线要随结果调整:才考虑 Agent
- 终点写不出来的开放任务:单轮大模型基本没戏
- 步骤固定但确定性要求高的任务:写代码,别用模型
控制回路:谁来定下一步
大模型没有回路,它的输出就是终点;Agent 有一个由模型自己或由编排层驱动的回路,负责决定调什么、看什么、要不要继续。回路的关键差异在于「决定权」:模型自己决定下一步,就是自主型 Agent;流程里写死下一步,那更接近工作流,稳定性高但灵活度低。
这两者经常被混为一谈。如果你的流程是「先查订单,再查物流,再生成回复」,每一步都是人写死的,那它是个工作流,模型只是里面某个节点的执行器,出问题好定位。只有当「下一步做什么」真的交给模型判断,你才需要面对自主性带来的全部麻烦。
回路越自主,越要有可观测的中间状态,否则出问题时你只看到一句错答案,看不到是哪一步偏的。实践里至少记录三样东西:每轮调了什么工具、拿回什么结果、模型为什么决定继续。缺了这些,调优全靠猜,可以参考站内关于 agent 止损的那篇的排查思路。
| 形态 | 下一步谁定 | 灵活性 | 稳定性 | 适合场景 |
|---|---|---|---|---|
| 单轮大模型 | 没有下一步 | 低 | 高 | 输入齐全、一次成稿 |
| 固定工作流 | 人写死 | 低 | 高 | 步骤固定、要求确定 |
| 自主 Agent | 模型判断 | 高 | 较低 | 路线不明、要边做边看 |
| 混合形态 | 关键节点人卡 | 中 | 中 | 有副作用、错了代价大 |
哪些活适合交给大模型,哪些非 Agent 不可
把任务按「输入齐不齐」和「路线定不定」两个维度分,基本就能落到具体形态上。适合大模型单独干的:改写压缩、分类打标、单轮问答、格式转换、代码片段生成,输入齐了输出就定了,没有中间状态。
必须上 Agent 的:要先查资料再判断、要跑多次工具才能凑齐信息、要根据上一步结果决定下一步去哪的任务。典型是「帮我排查这个线上问题」——先看日志、再根据日志决定看哪个服务、再看监控,路线是边走边定的。
中间地带最多:需要一次检索就能答的,用检索加单轮调用往往比 Agent 更省更稳。很多团队一上来就上 Agent,其实需求只到「查一次然后回答」,白白多背了回路的复杂度。这部分边界怎么划,可以对照站内关于 RAG 与 Agent 边界那篇。
不适用的情况也要说清:任务本身对确定性要求极高、且步骤固定,那用 Agent 反而引入不确定性,老老实实写代码更合适。财务对账、批量数据清洗这类活,代码的确定性和可复现性是模型给不了的。
成本与延迟:一次调用和十次循环差在哪
大模型的成本大致随输入输出体量线性走;Agent 的成本随轮次放大,轮次一多,成本增长往往不是线性的,因为每轮都要把历史塞回去,历史越长,单轮越贵。这是最容易在预算上翻车的地方。
延迟同理,单次调用的耗时是可预期的,Agent 的耗时取决于它中途调了几个工具、每个工具多慢。用户等一个单轮回答和等一个跑了好几轮的任务,耐心完全不一样,交互设计要跟着变。
- 先定上限给每个任务设一个最大轮次和单任务成本上限,写进代码里,不靠自觉。
- 超限降级触发上限就降级到单轮结果或转人工,而不是让它继续跑,别等月底看账单才发现。
- 记录实际用量每轮记录输入输出体量和工具耗时,跑一周你就有自己的分布,比任何估算都准。
- 按当时数字核对具体单价和用量口径到 /official-api 和 /tools/model-cost-calculator 按当时的数字自己算一遍。
这里要提醒一句:不同服务商的计价方式、缓存策略、工具调用是否单独计费都不一样,别拿别人博客里的结论套自己的场景,一定要去官方页面核对当时的口径。
可靠性差异:错一次和错十次累积
单次调用错了就是错了,重试一次成本可控;Agent 里每一步都有出错概率,多步串联后整体成功率会明显下滑。这是数学问题,不是模型好不好的问题。每一步都做到很高的正确率,串起来也会掉下来。
所以 Agent 更要设计校验点:中间结果能验证就验证,能人工确认的环节就卡一下,别把判断全压给模型。有副作用的操作,比如发消息、改数据、下单,前面一定要有确认环节。
- 中间结果做格式与范围校验,不符合就直接中止
- 有副作用的操作前加人工或规则确认
- 失败重试要有次数上限,且只重试可重试的步骤
- 每轮记录输入输出,便于事后复盘是哪一步偏的
- 把整体成功率拆成单步成功率,找出最弱的那一环
工具调用参数是最常见的失败源,类型不符、多包一层这类问题很集中。这类报错往往有固定套路,排查顺序可以按「先看参数结构、再看类型、最后看必填项」走,站内有专门讲工具调用参数报错的文章可以对照。
幂等性在有副作用的操作上必须提前想好,重试和回滚的成本差很多。一个发消息的操作如果不做去重,重试就会重复打扰用户;一个改数据的操作如果不做幂等,重试就可能写坏数据。这部分思路可以看站内关于 agent 接口幂等的那篇。
一张对照清单:先问六个问题再决定形态
下面六个问题,按顺序问一遍,基本能落到具体形态上。前三个偏技术判断,后三个偏工程代价,别只看前三个就拍板。
| 问题 | 偏向大模型的答案 | 偏向 Agent 的答案 |
|---|---|---|
| 输入一次能凑齐吗 | 能 | 要边查边齐 |
| 中途要拿外部事实吗 | 不要 | 必须拿 |
| 终点能提前写清吗 | 能写清 | 写不清 |
| 错一次代价大吗 | 不大 | 很大,要加确认 |
| 能接受几轮几轮成本 | 一两次 | 多次且可控 |
| 能看住运行过程吗 | 不需要 | 需要,且日志齐全 |
六问里前三个偏向大模型,后三个决定了你要不要真正的自主 Agent。后三个只要有一个答不上来,就说明你的团队还没准备好接一个会自己跑的回路,先把流程收窄成工作流更稳。
注意这里说的「偏向」不是绝对的。比如输入凑不齐但路线固定,那用固定工作流加检索就够了,不必上自主 Agent;终点写不清但错一次代价极大,那也得加人工确认点,不能放飞。
从大模型起步的渐进式升级路线
务实做法是先单轮跑通、再加一次检索、再加一轮工具,每一层都测一遍效果和成本,不达标就不往上加。每加一层都要能回答「不加会怎样」,答不上来说明这层是拍脑袋加的。
- 第一层:单轮跑通用最直接的调用做出能用的结果,测一批固定用例看基线。
- 第二层:加一次检索补上信息缺口,重新跑同一批用例,对比是否真的变好。
- 第三层:加一轮工具在路线还算固定的前提下加一次工具调用,观察成本与失败率变化。
- 第四层:放开路线只有当上面都不够用时,才把下一步决定权交给模型,同时配齐日志和上限。
越往上加,越要配套评测:固定一批用例,每次改动都跑一遍,看是真的变好还是只是感觉变好。没有固定用例的迭代,最后都是靠印象在吵。怎么做回归测试,站内有专门讲提示词版本回归的文章可以参考。
日志要能回答三个问题:这次跑了几轮、每轮做了什么、卡在哪一步。答不上来就没法优化,只能靠猜。所以日志不是加完 Agent 再补的,而是第一版就要设计好的。
先证明单轮不够用,再考虑让它自己跑;先证明它跑得稳,再考虑让它跑得久。
不确定自己该停在哪一层时,把上面六问和当前实测数据放一起对一遍,比看别人的架构图有用。别人跑得通不代表你的任务形态一样,也不代表你的团队有同样的运维能力。
下一步把你手上这个需求对着六问过一遍,然后到站内模型资料库和官方 API 页面核对当前的计价与能力口径,再决定形态。→常见问题
既然 Agent 是大模型加循环,那是不是所有需求最终都该做成 Agent?
不一定。循环带来的是灵活度,代价是成本和不确定性。输入一次能凑齐、输出格式确定的需求,单轮调用更快更稳。只有任务方向需要中途探索、必须靠外部事实推进时才值得上循环,否则是给自己找麻烦。
为什么我的 Agent 看起来比直接问大模型还笨?
多半是回路没设计好:工具描述不清导致选错工具、中间结果没验证就往下走、或者步数太多把上下文冲淡了。先砍轮次、把每步的输入输出打出来看,通常能定位到是哪一步开始偏的,而不是模型本身不行。
判断该用大模型还是 Agent,有没有一个简单的信号?
看你的任务是「问一次就能答」还是「做几步才能成」。需要中途操作外部系统、或者要基于上一步结果改变路线的,就是 Agent 场景;只是把已有材料加工成另一种形式的,单轮调用通常够用。
Agent 成功率和成本怎么平衡,有没有通用的做法?
先给单任务设轮次上限和成本上限,超限就走降级路径,比如返回中间结果或转人工。然后固定一批用例反复测,观察成功率随轮次的变化,找到性价比拐点再定最终配置。
两者能不能混用?比如主要用大模型,个别步骤交给 Agent。
很常见也很合理。把 Agent 当成一个可调用的工具,只在确实需要多步探索的环节放出去,其余环节保持单轮调用,这样既拿到灵活度,又不让整体成本和延迟失控。