你有没有想过,当你优化了智能体的提示词,或者换了一个更强的模型,你怎么知道它真的变好了?
凭感觉?还是碰巧几次对话结果不错?
这正是智能体评估(Agent Evaluation)要解决的问题——用客观的数字指标,代替模糊的主观感受。
带你理解三种主流评估方法:工具调用能力评估(BFCL)、通用能力评估(GAIA),以及数据生成质量评估,并亲手搭建一套完整的评估体系。
一、为什么需要评估?
1.1 没有评估,你在黑暗中飞行
假设你有一个搜索智能体,它能正常工作。但你面临这些问题:
换了新的提示词,它真的更好了吗? 新版模型上线,性能有没有退步? 准备上线,它在各种情况下靠谱吗?
没有评估,这些问题都没有答案。
1.2 智能体评估的三大挑战
| 输出不确定性 | ||
| 评估标准多样 | ||
| 评估成本高昂 |
1.3 三种评估场景
本章构建了覆盖三个维度的评估体系:
| 工具调用能力 | ||
| 通用能力 | ||
| 数据生成质量 |
二、BFCL:工具调用能力评估
2.1 为什么要专门评估工具调用?
智能体的核心能力之一是调用外部工具。这个过程看似简单,实则复杂:
从自然语言中提取用户意图 从工具列表中选出最合适的工具 正确构造函数名和参数 处理多函数调用、并行调用等复杂场景
BFCL(Berkeley Function Calling Leaderboard) 由 UC Berkeley 推出,专门评估这一能力,包含 1120+ 个测试样本,分为四个难度类别:
| Simple | ||
| Multiple | ||
| Parallel | ||
| Irrelevance |
2.2 AST 匹配:比字符串匹配更聪明
BFCL 使用抽象语法树(AST)匹配而不是简单的字符串比较。
为什么?因为以下两个调用在语义上是等价的:
# 预测结果(参数顺序不同)get_weather(city="Beijing", unit="celsius")# 标准答案get_weather(unit="celsius", city="Beijing")字符串比较会判定为错误,但 AST 匹配能正确识别它们等价。
匹配规则:
函数名:必须精确匹配 参数顺序:忽略( f(a=1, b=2)等价于f(b=2, a=1))等价表达式:识别( f(x=2+3)等价于f(x=5))
数学上,准确率定义为:
其中 是预测结果, 是标准答案, 是样本总数。
2.3 BFCL 评估实战
快速开始(推荐方式):
# 安装pip install "hello-agents[evaluation]==0.2.7"pip install "numpy==1.26.4" bfcl-eval# 克隆 BFCL 数据集git clone https://github.com/ShishirPatil/gorilla.git temp_gorillafrom hello_agents import SimpleAgent, HelloAgentsLLMfrom hello_agents.tools import BFCLEvaluationTool# 创建要评估的智能体llm = HelloAgentsLLM()agent = SimpleAgent(name="TestAgent", llm=llm)# 一键评估bfcl_tool = BFCLEvaluationTool()results = bfcl_tool.run( agent=agent, category="simple_python", # 从最基础的开始 max_samples=5)print(f"准确率: {results['overall_accuracy']:.2%}")print(f"正确数: {results['correct_samples']}/{results['total_samples']}")输出结果:
BFCL一键评估配置: 评估类别=simple_python, 样本数量=5步骤1: 运行 HelloAgents 评估...✅ BFCL评估完成 总体准确率: 100.00% simple_python: 100.00% (5/5)步骤3: 运行BFCL官方评估...📊 Model,Overall Acc,simple_python Qwen/Qwen3-8B,100.00,100.00步骤4: 生成评估报告📄 报告已生成: ./evaluation_reports/bfcl_report_*.md评估完成后会自动生成 Markdown 报告,支持直接提交到 BFCL 官方排行榜。
2.4 渐进式评估策略
不要一上来就跑全量数据,建议分步进行:
# 第一步:快速测试(5个样本)results = bfcl_tool.run(agent, category="simple_python", max_samples=5)# 达标后再扩大规模if results['overall_accuracy'] > 0.8: results = bfcl_tool.run(agent, category="simple_python", max_samples=50)不同类别由易到难逐步测试:
categories = ["simple_python", "multiple", "parallel", "irrelevance"]for category in categories: results = bfcl_tool.run(agent, category=category, max_samples=10) print(f"{category}: {results['overall_accuracy']:.2%}")三、GAIA:通用 AI 助手能力评估
3.1 GAIA 评估什么?
工具调用只是智能体能力的一个切面。真实世界的任务更复杂——它要求:
多步推理:把复杂问题拆解成子问题 知识运用:结合内置知识和检索结果 多模态理解:处理文本、图片、文件 网页浏览:获取最新信息
GAIA 由 Meta AI 和 Hugging Face 联合推出,包含 466 个真实世界问题,分三个难度级别:
| Level 1 | ||
| Level 2 | ||
| Level 3 |
3.2 准精确匹配:容忍格式差异
GAIA 使用准精确匹配(Quasi Exact Match)评估答案。核心思想是:先归一化,再匹配。
归一化规则示例:
# 数字:移除逗号和单位"$1,234.56" → "1234.56"# 字符串:小写,移除冠词"The United States" → "united states"# 列表:排序后对比"Paris, London, Berlin" → "berlin,london,paris"这样,"72"、"72.0"、"seventy-two" 等不同写法都能被正确匹配。
3.3 GAIA 评估实战
GAIA 是受限数据集,需要先在 HuggingFace 申请访问权限:
# 设置 HuggingFace Tokenexport HF_TOKEN="hf_your_token_here"from hello_agents import SimpleAgent, HelloAgentsLLMfrom hello_agents.tools import GAIAEvaluationTool# GAIA 官方系统提示词(必须使用)GAIA_SYSTEM_PROMPT = """You are a general AI assistant. I will ask you a question. Report your thoughts, and finish your answer with the following template: FINAL ANSWER: [YOUR FINAL ANSWER].YOUR FINAL ANSWER should be a number OR as few words as possible OR a comma separated list of numbers and/or strings."""# 创建智能体llm = HelloAgentsLLM()agent = SimpleAgent( name="TestAgent", llm=llm, system_prompt=GAIA_SYSTEM_PROMPT # 关键!必须使用官方提示词)# 一键评估gaia_tool = GAIAEvaluationTool()results = gaia_tool.run( agent=agent, level=1, # 从 Level 1 开始 max_samples=5, export_results=True, # 导出结果文件 generate_report=True# 生成评估报告)print(f"精确匹配率: {results['exact_match_rate']:.2%}")print(f"正确数: {results['exact_matches']}/{results['total_samples']}")评估结果支持直接提交到 GAIA 官方排行榜。
3.4 多维度指标解读
GAIA 不只看整体准确率,还会分析难度递进时的性能衰减:
实际案例分析(10 个样本):
# Level 1 准确率: 100%# Level 2 准确率: 67%# Level 3 准确率: 50%# Level 1→2 下降率: 33%(说明中等难度任务有明显衰减)# Level 2→3 下降率: 25%(说明复杂任务还有提升空间)下降率越大,说明智能体在复杂任务上的能力衰减越明显,这是优化的重点方向。
四、数据生成质量评估
4.1 为什么需要评估生成数据?
当你用智能体生成训练数据、测试数据时,一个核心问题是:这些数据质量怎么样?
HelloAgents 以 AIME 数学竞赛题目生成为例,展示了三种互补的评估方法:
| LLM Judge | ||
| Win Rate | ||
| 人工验证 |
4.2 LLM Judge:让 AI 评价 AI
LLM Judge 的核心思想:用一个强模型(如 GPT-4)来评估另一个模型生成的内容。
评估从四个维度打分(1-5 分):
| 正确性 | |
| 清晰度 | |
| 难度匹配 | |
| 完整性 |
三个核心指标:
from hello_agents.tools import LLMJudgeToolllm_judge_tool = LLMJudgeTool(llm=llm)result = llm_judge_tool.run({"generated_data_path": "data_generation/generated_data/aime_generated_*.json","max_samples": 30,"judge_model": "gpt-4o"})# 输出示例# 平均总分: 4.2/5.0# 通过率: 85.0%(≥3.5分)# 优秀率: 40.0%(≥4.5分)4.3 Win Rate:成对对比更直观
Win Rate 通过让 LLM 评判两个题目哪个更好来计算胜率:
生成题目(A) vs AIME 真题(B) → LLM 判断:A 更好 / B 更好 / 平局 → 统计胜率理想目标:Win Rate ≈ 50%(说明生成质量接近真题)
from hello_agents.tools import WinRateToolwin_rate_tool = WinRateTool(llm=llm)result = win_rate_tool.run({"generated_data_path": "...","num_comparisons": 20,"judge_model": "gpt-4o"})# 输出示例# 生成数据胜出: 9次(45.0%)# AIME真题胜出: 8次(40.0%)# 平局: 3次(15.0%)# ✅ 良好:生成数据质量接近参考数据(差距<10%)4.4 人工验证:Gradio 界面
对于数学题目这种需要严格逻辑的内容,自动化评估之后还需要人工抽检。HelloAgents 提供了基于 Gradio 的 Web 验证界面:
# 启动人工验证界面python data_generation/human_verification_ui.py aime_generated_*.json# 浏览器访问http://127.0.0.1:7860验证者可以:
阅读题目、答案、解答过程 从正确性、清晰度、难度匹配、完整性四个维度打分 标注状态:✅ approved / ❌ rejected / 🔄 needs_revision 添加评论
4.5 完整评估流程
from data_generation.run_complete_evaluation import run_complete_evaluation# 一键运行:生成 → LLM Judge → Win Rate → 综合报告results = run_complete_evaluation( num_problems=30, # 生成30道题 delay_seconds=3.0# 每次生成间隔3秒(避免API限速))# 输出文件# ├── generated_data/aime_generated_*.json# ├── evaluation_results/*/llm_judge/# ├── evaluation_results/*/win_rate/# └── evaluation_results/*/comprehensive_report.md五、评估体系设计总结
5.1 三层评估体系
| 工具层 | |||
| 任务层 | |||
| 数据层 |
5.2 核心技术对比
AST 匹配 vs 字符串匹配:
字符串匹配:严格逐字符比较,参数顺序不同就判错 AST 匹配:理解语义,忽略参数顺序和等价表达式
准精确匹配 vs 精确匹配:
精确匹配: "$1,234"≠"1234"(判错)准精确匹配:先归一化再比较,容忍格式差异
LLM Judge vs 规则匹配:
规则匹配:只能判断对错,无法评估质量 LLM Judge:多维度评分,提供改进建议,但有偏见风险
5.3 分层评估策略
生产环境中,建议按三个层次进行评估:
快速评估(日常开发) → 小样本(10-20个)+ 基础指标 → 目标:快速发现明显问题标准评估(版本发布前) → 中等样本(100个)+ 完整指标 → 目标:全面评估性能变化全面评估(重大更新/上线前) → 全量样本 + 多维度分析 → 目标:确保生产可靠性六、小结
智能体评估是构建可靠 AI 系统的关键环节,它让"感觉更好了"变成"准确率提升了 5%"。
HelloAgents 评估体系三要素:
BFCL 评估:工具调用能力的客观基准,AST 匹配算法比字符串匹配更准确 GAIA 评估:通用能力的综合考核,准精确匹配算法兼容格式多样性 数据质量评估:LLM Judge + Win Rate 的双重保障,人工验证兜底
使用建议:
从小样本、简单类别开始,逐步扩展规模 结合绝对评分(LLM Judge)和相对对比(Win Rate) 建立持续评估机制,及时发现性能退步
当你有了完善的评估体系,优化智能体就不再是在黑暗中摸索,而是有数据支撑的科学决策。
参考资料:
HelloAgents GitHub 仓库:https://github.com/datawhalechina/hello-agents Patil et al., Gorilla: Large Language Model Connected with Massive APIs, 2023 Mialon et al., GAIA: a benchmark for General AI Assistants, 2023
夜雨聆风