☰
AI Agent 工程实践(46):模型换了,Agent 为什么突然变笨
2026/9/25 20:25:03 网站建设 项目流程

发布时间:2026-09-23
标签:AI Agent|工程实践|模型实验|Model Evaluation


上一篇我说,版本七维里最容易翻车的是 Model。

有人不服:换个更强的模型,怎么可能变差?

于是我做了个实验——把同一个 Agent、同一套工具、同一个数据集,分别跑在三个模型上。

结果出乎所有人意料:最贵的那个模型,不是最好的那个;而"更强"的模型,在"选工具"这件事上,反而更差。

这一篇,我把这个实验完整做给你看。


系列导航

  • 上一篇:AI Agent 工程实践(45):Agent 的版本控制到底控制什么
  • 下一篇:AI Agent 工程实践(47):什么时候应该从 Agent 改回 Workflow

问题背景

这是第五阶段的第十一篇。上一篇建立了七维版本模型,这一篇单独拎出其中最玄的一维——Model——做一次受控实验。

动机很朴素:我们在第 45 篇说过,同一模型名的 API 背后,厂商会静默更新快照,导致 Agent"突然变笨"。但"模型影响"到底有多大?它影响的是哪方面?"更强"的模型就一定更好吗?

这些问题,光靠感觉答不了,只能靠实验。


错误尝试:迷信"更强 = 更好"

我最开始的假设很天真:换更强的模型,Agent 一定会变强。

于是我把 Repo Doctor 从 deepseek-chat 换到一个更大的模型,心想这下能力该涨了吧。结果跑完数据集一看,Success Rate 不升反降。

我第一反应是"数据集错了""代码有 bug"。排查了一圈,代码没动、数据没动,唯一变的就是模型。

这时我才被迫面对一个事实:Agent 的能力不等于模型的能力。模型只是七维里的一维,而"模型强"和"Agent 强"之间,隔着一整套工具、Prompt、Context 的配合。一个在裸聊天里更强的模型,放到 Agent 场景里,未必更会选工具、更守规矩。


关键观察:模型是乘数,不是全部

我把三个模型(代号 A、B、C,一个便宜、一个中档、一个大模型)跑同一份 eval 数据集,得到这张对比表:

指标模型 A(便宜)模型 B(中档)模型 C(大模型)
Success Rate68%78%71%
Tool Accuracy82%79%70%
Answer Accuracy65%75%72%
Latency (avg)5.1s7.8s12.4s
Cost (avg tokens)180032006100

看这张表,有三个反直觉的发现:

  1. 最贵的 C,Success Rate 不是最高的。中档的 B 才是。
  2. 最大的 C,Tool Accuracy 反而最低(70%)。它更爱"自由发挥",常常不按工具描述来,甚至自己编一个工具。
  3. 模型 A 虽便宜,但 Tool Accuracy 最高(82%)。它"听话",但推理深度不够,Answer Accuracy 拉胯。

核心洞察:

Agent 能力 = Model + Prompt + Context + Tools + Rules + Memory + Runtime 的合力,模型只是其中一个乘数。

这个"合力公式",正是这个系列前四阶段所有组件的一次总回收——它们不是孤立的零件,而是共同决定 Agent 上限的乘数。


最终方案:把模型纳入实验,而非信仰

实验的产出,不是"哪个模型最好",而是一套把模型当变量、可量化比较的方法:

选型结论:对 Repo Doctor 来说,模型 B(中档)是当前最优解——综合成功率最高,成本适中。而"上最大的模型"这个直觉,被数据证伪了。


代码或配置示例

模型实验的核心,是"同一套代码,只换模型"的受控对比。关键是隔离变量:

# repo_doctor/experiments/model_ab.py —— 只换模型,其余七维全部锁定 def run_model_experiment(models, eval_dataset): results = {} for model in models: # 关键:Prompt / Rules / Tools / Knowledge / Dataset 全部用同一份 agent = build_agent( model=model, # 唯一变量 prompt=PROMPT_V12, # 锁定 rules=RULES_V7, # 锁定 tools=TOOLS_V4, # 锁定 knowledge=KNOWLEDGE_V2, ) metrics = run_eval(agent, eval_dataset) # 同一把尺子 results[model.name] = metrics print(f"{model.name}: {metrics}") return results # 三个模型跑同一数据集 run_model_experiment( models=[Model("A", "deepseek-chat"), Model("B", "mid-tier-model"), Model("C", "large-model")], eval_dataset=load_eval("eval/"), )

这个实验脚本的精髓就一句:除了 model,其他六个维度全部锁死。否则你根本分不清,分数变化是模型带来的,还是 Prompt 或工具漂移带来的。这也正是第 45 篇 agent.lock 的用武之地。


设计权衡

候选方案优点缺点为什么不选
迷信"更强 = 更好",直接换大模型省事成本高、可能更差被数据证伪
哪个火用哪个跟风和你的任务脱节别人的结论不适用于你
受控模型实验可量化、贴合任务需先有 eval 数据集用数据选型,而非信仰

一个重要的边界提醒:模型实验的结论有时效性。模型 A/B/C 的表现,会因为厂商更新快照而改变。所以这不是"一锤定音",而是一个要定期重跑的流程。这也是为什么第 45 篇强调"模型要钉快照"——不钉,你的实验结论就是空中楼阁。


总结

✅ "换更强模型"的直觉,被受控实验证伪了。
✅ 三个模型跑同一数据集:最贵的不是最好的,最大的 Tool Accuracy 反而最低。
✅ Agent 能力 = Model + Prompt + Context + Tools + Rules + Memory + Runtime 的合力。
✅ 模型实验的精髓:只换模型,其余六维全部锁死。
✅ 铁律:换模型不是升级,是重新做一次验收——因为 Agent 的能力从来不属于某一个模型。


参考资料

  • Anthropic《Building Effective Agents》中"模型选型"的讨论 → 为什么引用:印证了"Agent 能力是合力,模型只是乘数"。
  • LMSys / 各类模型排行榜的方法论 → 为什么引用:理解"受控对比"的实验设计,是模型实验的基础。

系列导航

  • 上一篇:AI Agent 工程实践(45):Agent 的版本控制到底控制什么
  • 下一篇:AI Agent 工程实践(47):什么时候应该从 Agent 改回 Workflow

本文是 [AI Agent 工程实践] 系列的第 46 篇。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询