AI Agent 工程实践(18):Agent 如何做 Benchmark?
发布时间2026-07-12标签AI AgentLLMBenchmark质量评测工程实践系列导航上一篇AI Agent 工程实践17Agent 为什么需要可观测性Observability下一篇 AI Agent 工程实践19从 Demo 到生产环境——AI Agent 的工程 Checklist本文是 [AI Agent 工程实践] 系列的第 18 篇第二季 · 工程实现。上周我改了一行 Prompt——把请详细回答改成了请简洁回答。感觉上Agent 回答变快了。优化成功我在 commit message 里写道。三天后我发现这行改动让代码审查任务的漏检率从 12% 涨到了 28%——Agent 变简洁了但也跳过了关键检查项。感觉好了和真的好了差了一个 Benchmark。我说的是 Benchmark Agent不是 Benchmark 模型。前者回答改完之后 Agent 变好了吗后者回答哪个模型分高。你改了一行 PromptAgent 变好了还是变差了——没有 Benchmark你永远不知道。本文你将学到✓ Benchmark Agent 和 Benchmark 模型的本质区别——前者是持续交付后者是选型✓ Agent Benchmark 的核心链路Task → Expected → Result → Score✓ 四个关键指标Success Rate / Cost / Time / Tool Calls✓ 如何把 Benchmark 做成 CI/CD——每次改动自动跑、自动对比适合阅读✓ 经常调 Prompt / Rule / Tool、但靠感觉判断效果的人✓ 想让 Agent 的质量像代码一样可回归测试的人✓ 不知道Agent 改完是变好还是变坏的人问题背景99% 的 Benchmark 文章在讲同一件事哪个模型更好。MMLU 几分、HumanEval 几分、这个榜那个榜。但 Agent 开发者真正需要的不是选模型时的决策依据——模型选完之后问题才刚开始。你每天在做的操作是改了core/00-must.md的一条规则加了一个新的 heavy 文件调整了 Router 的 priority 配置换了一个 Tool 的实现每次改动后Agent 是变好了还是变坏了这个问题MMLU 回答不了HumanEval 也回答不了。因为它们在测裸模型不是在测你的 Agent 这个具体系统。Benchmark Agent 不是做一次是每次改动后都做——这才是真正的 CI/CD for Agent。它回答的不是GPT-5 比 GPT-4 好多少而是你今天的 commit 让 Agent 的质量涨了还是跌了。错误尝试第一次靠感觉判断质量改完 Prompt自己跑几个 case觉得好像不错就上线。结果很多退化是统计意义上才可见的——成功率从 92% 降到 88%跑 5 个 case 根本看不出来跑 50 个才能发现。感觉是 Benchmark 的敌人——感觉好的时候往往指标在变差。第二次只测最终输出对错搭了一套自动评测给 Agent 一个任务比对输出是否和预期一致。对就是对错就是错。结果Agent 的输出对了但多了 3 次不必要的 Tool 调用延迟从 5 秒变成了 18 秒token 消耗翻了一倍。用户不会告诉你答案对了但太慢了——他们直接不用了。只看 Success Rate 的 Benchmark和只看血压的心脏检查一样——漏了一半的指标。两次尝试指向同一个教训Benchmark 需要多维度 回归对比 统计显著。不是跑 5 个 case 看看而是每次改动后对同一组标准任务跑分、和历史版本对比、多维指标综合判断。关键观察我把Agent 上线后退化的 case做了根因追溯退化类型改动操作单看 Success Rate 能发现吗占比成功率下降改了一条 Rule✅ 能30%延迟暴涨加了一个 Tool 调用❌ 不能Success 反升25%成本翻倍改了 Router 配置❌ 不能25%Tool 调用冗余改了 Planner❌ 不能20%pie title Agent 退化的可检测性只看 Success Rate Success Rate 能发现 : 30 延迟暴涨Success Rate 看不出 : 25 成本翻倍Success Rate 看不出 : 25 Tool 冗余Success Rate 看不出 : 20你改了一行 PromptAgent 变好了还是变差了——没有 Benchmark你永远不知道。70% 的质量退化Success Rate 看不出来。你需要四维指标同时跑——少一维就有一个盲区。最终方案Agent Benchmark 四维体系核心链路Task → Expected → Result → ScoreBenchmark 的本质就是标准任务 预期输出 多维评分 回归对比。少任何一环就是盲测。四个指标的全部含义指标测什么为什么不能只看它怎么算Success Rate输出是否正确覆盖不了效率和成本退化正确数 / 总任务数CostToken 消耗单独看没意义——便宜的废品还是废品input_tokens × 单价 output_tokens × 单价Time端到端延迟快没用的答案也是没用从 Task 进入到 Result 输出的总耗时Tool Calls调用效率答案对了但调了 10 次 Tool是浪费任务完成用的 Tool 调用次数四维不是四个独立的分数是综合评判。我的产出公式是综合分 Success Rate × 0.5 (1 - Cost/预算) × 0.2 (1 - Time/阈值) × 0.2 (1 - ToolCalls/上限) × 0.1Success Rate 占 50% 权重答案对不对最重要但 Cost / Time / Tool Calls 各占其余 50%——一个慢到不可接受的 Agent和答错的 Agent 一样不能用。Benchmark 作为 CI/CD真正的价值不在测一次在每次改动都测、每次和历史对比def benchmark_regression(agent_v2, test_suite, baseline): 每次 commit 后自动跑和历史版本对比 v2_scores run_benchmark(agent_v2, test_suite) report { success_rate: (v2_scores.sr, baseline.sr, v2_scores.sr - baseline.sr), cost: (v2_scores.cost, baseline.cost, v2_scores.cost - baseline.cost), time: (v2_scores.time, baseline.time, v2_scores.time - baseline.time), tool_calls: (v2_scores.tc, baseline.tc, v2_scores.tc - baseline.tc), } # 如果任一指标退化超过阈值CI 报红 degraded any(delta -THRESHOLD for _, _, delta in report.values()) return FAIL if degraded else PASSAgent 的 CI/CD 不是代码能跑就行是质量没跌就行。架构图 / 流程图Benchmark 驱动的 Agent 迭代闭环关键不是上线前手动测一下——是每次 commit 自动跑、自动对比、退化自动阻止。这和第 04 篇 Review 闭环、第 15 篇 RAG Evaluate 闭环是同一种思想反馈系统必须自动化靠人做不了。代码或配置示例标准 Benchmark 任务集定义# benchmark/suite.yaml tasks: - id: code_review_01 task: 审查这段 Python 代码的安全性 expected: must_contain: [SQL 注入风险, 建议使用参数化查询] must_not_contain: [看起来不错, 没有明显问题] - id: db_query_01 task: 查询 user_id42 的订单状态 expected: must_return: shipped max_tool_calls: 2 - id: report_gen_01 task: 根据过去 10 条订单生成周报 expected: must_contain: [总订单数, 完成率] max_time_ms: 8000Benchmark 执行引擎def run_benchmark(agent, suite: list) - BenchmarkScore: results [] for test in suite: start now() result agent.run(test.task) # Trace 自动记录17 篇 elapsed (now() - start).ms # 四维评分 sr 1.0 if evaluate(result, test.expected) else 0.0 cost result.total_tokens * TOKEN_PRICE tc result.tool_calls_count results.append({sr: sr, cost: cost, time: elapsed, tc: tc}) # 汇总所有任务的各维度取平均值 return BenchmarkScore( srnp.mean([r[sr] for r in results]), costnp.mean([r[cost] for r in results]), timenp.mean([r[time] for r in results]), tcnp.mean([r[tc] for r in results]), )和 17 篇的 Trace 无缝衔接每跑一次 Benchmark 都是一次完整的 Trace 记录。Benchmark 不只产出一个分数还产出了每次运行的完整调用链——分数跌了Trace 告诉你哪个 Span 出了变化。设计权衡候选方案优点缺点为什么不选靠感觉评测零成本完全不可靠感觉骗人只看 Success Rate简单直观漏 70% 的退化效率/成本退化看不见人工评测每次手测最准不可持续规模一大人就崩自动 Benchmark CI 回归持续可对比、多维覆盖需维护标准任务集选择理由唯一把质量变成可量化、可自动化的工程实践的方案Benchmark 的任务集需要持续维护。标准任务集不是写完一次永远不变——新功能上线要加新 case过时的 case 要淘汰。这本身也是一个治理问题和第 15 篇 RAG 知识治理同源测试集本身也有生命周期。总结✅ Benchmark Agent ≠ Benchmark 模型——前者是持续交付的 CI/CD后者是选型依据。✅ 核心链路Task → Expected → Result → Score → 和历史 baseline 回归对比。✅ 四维指标缺一不可——Success Rate / Cost / Time / Tool Calls。只看 SR 会漏掉 70% 的退化。✅ Benchmark 必须做成 CI/CD——每次 commit 自动跑、自动对比、退化自动阻止合并。✅ 测试集本身也需要治理——新 case 持续加、旧 case 淘汰更新。参考资料第 17 篇Agent Observability→ Trace 是 Benchmark 的数据源每次 Run 生成完整 Trace第 15 篇RAG 知识治理→ 测试集的治理与知识治理同构第 04 篇Review 闭环→ Benchmark 是 Review 的量化工具RAGAS / LangSmith Evaluation→ Agent 自动评测的工程参考实现ML CI/CD (MLOps)→ 模型回归测试的最佳实践Agent Benchmark CI 的思想来源系列导航上一篇AI Agent 工程实践17Agent 为什么需要可观测性Observability下一篇 AI Agent 工程实践19从 Demo 到生产环境——AI Agent 的工程 Checklist本文是 [AI Agent 工程实践] 系列的第 18 篇第二季 · 工程实现。

相关新闻

Unity C#命名规范全解析:从基础规则到团队协作实践

Unity C#命名规范全解析:从基础规则到团队协作实践

1. 项目概述:为什么Unity C#命名规范如此重要? 在Unity开发社区里混迹了十几年,我见过太多因为命名混乱而“烂尾”或者后期维护成本飙升的项目。一个看似简单的变量名、函数名或者类名,往往在项目规模膨胀到几十万行代码时&#x…

2026/7/25 13:09:25阅读更多 →
都以为菜市场大妈最不需要AI,但有个卖菜的大哥用AI把隔壁摊干趴了

都以为菜市场大妈最不需要AI,但有个卖菜的大哥用AI把隔壁摊干趴了

都以为菜市场的大妈大爷最不需要AI——卖菜还用AI?称个白菜还得查个数据库?但咱就是说,我见过一个卖菜的大哥,用AI把隔壁摊干趴了,还搞起了社区配送。今儿就唠唠这事儿。 他叫老刘,50岁,在菜市场…

2026/7/25 13:09:25阅读更多 →
企业级大模型落地:4种模式与实战解析

企业级大模型落地:4种模式与实战解析

1. 项目概述作为一名在AI领域摸爬滚打多年的技术老兵,我亲眼见证了从传统机器学习到如今大模型技术的演进历程。最近两年,企业级AI应用正在经历一场前所未有的范式转移 - 从"小模型定制训练"的传统模式,逐步转向基于大模型的智能化…

2026/7/25 13:09:25阅读更多 →
FPGA-FOC:突破传统MCU性能瓶颈的硬件级电机控制方案

FPGA-FOC:突破传统MCU性能瓶颈的硬件级电机控制方案

FPGA-FOC:突破传统MCU性能瓶颈的硬件级电机控制方案 【免费下载链接】FPGA-FOC An FPGA-based Field Oriented Control (FOC) for driving BLDC/PMSM motor. 基于FPGA的FOC控制器,用于驱动BLDC/PMSM电机。 项目地址: https://gitcode.com/gh_mirrors/f…

2026/7/25 14:39:40阅读更多 →
TI处理器LVDS接口CBUFF FIFO配置详解:从寄存器到高速数据传输实战

TI处理器LVDS接口CBUFF FIFO配置详解:从寄存器到高速数据传输实战

1. LVDS接口与CBUFF FIFO:高速数据传输的基石在嵌入式系统,尤其是图像传感器、雷达前端或高速数据采集卡的设计中,数据从模数转换器(ADC)或图像传感器阵列到处理器之间的传输,是一条对速度和可靠性要求都极…

2026/7/25 14:39:40阅读更多 →
大模型训练卡顿元凶曝光!注意力矩阵爆炸的3层根因分析(附实时监控脚本)

大模型训练卡顿元凶曝光!注意力矩阵爆炸的3层根因分析(附实时监控脚本)

更多请点击: https://kaifayun.com 第一章:注意力机制为何让大模型训练“卡住”? 注意力机制虽赋予大模型强大的上下文建模能力,却在训练过程中频繁引发显存爆炸、梯度异常与计算瓶颈,导致训练进程突然停滞甚至 OOM&a…

2026/7/25 14:39:40阅读更多 →
终极ROS2控制Unitree GO2机器人完整指南:5步快速上手教程

终极ROS2控制Unitree GO2机器人完整指南:5步快速上手教程

终极ROS2控制Unitree GO2机器人完整指南:5步快速上手教程 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk go2_ros2_sdk是一个专为Unitree GO2 AIR/PRO/…

2026/7/25 14:39:40阅读更多 →
如何快速创建专业建筑模型:Blender Building Tools完整指南

如何快速创建专业建筑模型:Blender Building Tools完整指南

如何快速创建专业建筑模型:Blender Building Tools完整指南 【免费下载链接】building_tools Building generation addon for blender 项目地址: https://gitcode.com/gh_mirrors/bu/building_tools 还在为Blender中繁琐的建筑建模而烦恼吗?Build…

2026/7/25 14:39:40阅读更多 →
Unity热更新革命:HybridCLR环境搭建与实战指南

Unity热更新革命:HybridCLR环境搭建与实战指南

1. 项目概述:为什么需要HybridCLR? 在Unity游戏开发,尤其是移动端和需要热更新的项目中,我们经常会遇到一个核心痛点:代码逻辑的更新必须依赖应用商店的审核流程。想象一下,你刚上线一个游戏,发…

2026/7/25 14:37:39阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 1:01:14阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 1:01:14阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/25 1:01:14阅读更多 →
突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:01:16阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:01:16阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:01:16阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/24 23:01:03阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →