HelloAgents 第十二章:智能体性能评估实战——BFCL、GAIA 与数据生成质量评估全流程
【免费下载链接】hello-agents📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/datawhalechina/hello-agents
本文是《从零开始构建智能体》(HelloAgents)第十二章《智能体性能评估》的实战指南,围绕仓库 code/chapter12 目录下 9 个示例脚本展开。你将掌握 BFCL 工具调用评估、GAIA 通用能力评估,以及 LLM Judge / Win Rate 数据生成质量评估三大场景的完整操作流程,并理解每个评估背后的底层组件与最佳实践,能够直接复制代码为自己的智能体建立可量化的评估体系。
1. 为什么需要智能体评估:从基础示例说起
在 HelloAgents 框架中,我们已经拥有了具备推理与工具调用能力的SimpleAgent。例如 01_basic_agent_example.py 展示了这样一段典型用法:
from hello_agents import SimpleAgent, HelloAgentsLLM from hello_agents.tools import SearchTool llm = HelloAgentsLLM() system_prompt = """你是一个AI助手,可以使用搜索工具来获取最新信息。 当需要搜索信息时,请使用以下格式: [TOOL_CALL:search:搜索关键词] 例如: - [TOOL_CALL:search:最新AI新闻] - [TOOL_CALL:search:Python编程教程] 请在回答问题前先使用搜索工具获取最新信息。""" agent = SimpleAgent(name="AI助手", llm=llm, system_prompt=system_prompt) agent.add_tool(SearchTool()) response = agent.run("最新的AI技术发展趋势是什么?") print(f"\n回答:{response}")这个智能体可以正常工作,但我们立刻面临三个核心问题:
- 当优化 Prompt 或更换 LLM 模型后,如何判断效果是否真的变好?
- 在不同任务上,智能体的表现究竟如何?
- 与其它智能体相比,它处于什么水平?
这些问题无法靠肉眼观察解决,必须借助系统化的评估(Evaluation):用统一的测试数据集、统一的评分算法,把智能体能力量化为具体指标。与传统软件测试不同,智能体评估面临三个独特挑战:
- 输出不确定性:同一问题可能有多个正确答法,无法简单地用对/错判定;
- 评估标准多样性:工具调用要检查函数签名是否正确,问答任务要评估语义相似度,需要不同的评估方法;
- 评估成本高:每次评估都要消耗大量 LLM API 调用。
为此,学术界与工业界提出了多个标准化Benchmark,提供统一的数据集、指标与评分方法。HelloAgents 第十二章从中选择了三个最契合学习与实战的场景:
| 评估场景 | 评估对象 | 典型 Benchmark / 方法 |
|---|---|---|
| 工具调用能力 | 函数调用准确率 | BFCL(Berkeley Function Calling Leaderboard) |
| 通用 AI 助手能力 | 多步推理、工具使用、问题求解 | GAIA(General AI Assistants) |
| 数据生成质量 | 生成题目的质量 | LLM Judge、Win Rate、人工验证 |
仓库 code/chapter12 中的 9 个示例脚本正是围绕这三类场景组织的,对应关系如下表:
| 文件名 | 对应章节 | 说明 |
|---|---|---|
| 01_basic_agent_example.py | 12.1.1 | 基础智能体示例,说明为何需要评估 |
| 02_bfcl_quick_start.py | 12.2.5 | BFCL 快速开始(一键评估) |
| 03_bfcl_custom_evaluation.py | 12.2.5 | BFCL 自定义评估(底层组件) |
| 04_run_bfcl_evaluation.py | 12.2.9 | BFCL 评估最佳实践 |
| 05_gaia_quick_start.py | 12.3.5 | GAIA 快速开始(一键评估) |
| 06_gaia_best_practices.py | 12.3.9 | GAIA 评估最佳实践 |
| 07_data_generation_complete_flow.py | 12.4.6 | 数据生成完整评估流程 |
| 08_data_generation_llm_judge.py | 12.4.3 | LLM Judge 评估 |
| 09_data_generation_win_rate.py | 12.4.4 | Win Rate 评估 |
2. 环境准备:三步完成评估前置条件
在运行任何评估示例之前,需要完成三项准备工作。
2.1 安装 HelloAgents 评估组件
pip install hello-agents[evaluation]==0.2.3[evaluation]是 extras 依赖标记,会一并安装评估所需的 BFCL / GAIA 工具组件。如果开发环境下已经克隆了框架源码,也可以用可编辑模式安装:
cd ../HelloAgents pip install -e .2.2 设置环境变量
# OpenAI API Key(用于 GPT-4o,也是默认评估/生成模型) export OPENAI_API_KEY="your_openai_api_key" # HuggingFace Token(用于 GAIA 数据集鉴权下载) export HF_TOKEN="your_huggingface_token"两个变量的职责不同:OPENAI_API_KEY驱动评估过程中的 LLM 调用(GPT-4o),HF_TOKEN则用于从 HuggingFace 拉取 GAIA 受限数据集。
2.3 下载 BFCL 数据集(可选)
BFCL 数据集首次运行时通常会自动下载;如果下载失败或需要离线准备,可手动克隆官方仓库:
cd ../HelloAgents git clone https://github.com/ShishirPatil/gorilla.git temp_gorilla克隆后,BFCL 测试数据位于temp_gorilla/berkeley-function-call-leaderboard/bfcl_eval/data目录(03_bfcl_custom_evaluation.py 中的BFCLDataset默认路径即指向此处)。
3. BFCL 评估:衡量智能体工具调用能力
BFCL(Berkeley Function Calling Leaderboard)由加州大学伯克利分校推出,包含 1120+ 测试样本,覆盖简单、多重、并行、无关调用等类别,采用 AST(抽象语法树)匹配算法判断函数调用是否准确。它是衡量智能体"会不会正确调用工具"的主流基准。
3.1 方式一:一行代码完成一键评估
02_bfcl_quick_start.py 展示了最简用法——通过BFCLEvaluationTool的run()方法,自动完成数据加载、评估、报告生成与官方评估:
from hello_agents import SimpleAgent, HelloAgentsLLM from 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 # 评估样本数(0 表示全部) ) print(f"准确率: {results['overall_accuracy']:.2%}") print(f"正确数: {results['correct_samples']}/{results['total_samples']}")运行输出大致如下:
============================================================ BFCL一键评估 ============================================================ 配置: 智能体: TestAgent 类别: simple_python 样本数: 5 评估进度: 100%|██████████| 5/5 [00:15<00:00, 3.12s/样本] ✅ 评估完成 总样本数: 5 正确样本数: 5 准确率: 100.00% 准确率: 100.00% 正确数: 5/5关键参数说明:
category:BFCL 的评估类别,例如simple_python、multiple、parallel、irrelevance等;max_samples:抽取的样本数,设为0表示使用全部样本;用于快速验证时通常设为 5~10。
3.2 方式二:用底层组件实现自定义评估流程
当默认的一键评估无法满足定制需求时,03_bfcl_custom_evaluation.py 展示了如何拆解评估流水线,直接使用BFCLDataset与BFCLEvaluator两个底层组件:
from hello_agents import SimpleAgent, HelloAgentsLLM from hello_agents.evaluation import BFCLDataset, BFCLEvaluator llm = HelloAgentsLLM() agent = SimpleAgent(name="TestAgent", llm=llm) # 1. 加载数据集 dataset = BFCLDataset( bfcl_data_dir="./temp_gorilla/berkeley-function-call-leaderboard/bfcl_eval/data", category="simple_python" ) data = dataset.load() print(f"✅ 加载了 {len(data)} 个测试样本") # 2. 创建评估器 evaluator = BFCLEvaluator(dataset=dataset, category="simple_python") # 3. 运行评估(只评估 5 个样本) results = evaluator.evaluate(agent=agent, max_samples=5) # 4. 查看结果 print(f"总样本数: {results['total_samples']}") print(f"正确样本数: {results['correct_samples']}") print(f"准确率: {results['overall_accuracy']:.2%}") # 5. 查看每个样本的详细结果 for detail in results['detailed_results']: print(f"样本 {detail['sample_id']}:") print(f" 问题: {detail['question'][:50]}...") print(f" 预测: {detail['predicted']}") print(f" 正确答案: {detail['expected']}") print(f" 结果: {'✅ 正确' if detail['success'] else '❌ 错误'}") # 6. 导出结果 evaluator.export_results(results, output_file="./evaluation_results/bfcl_custom_result.json")自定义流程的价值在于:你可以逐样本检查预测与标准答案,定位具体是哪些函数调用出错;评估结果会导出为 JSON 文件,便于后续统计分析。
3.3 最佳实践:一键评估脚本的五步流水线
04_run_bfcl_evaluation.py 是 BFCL 评估的完整落地脚本,它将整个评估过程串成五步:
- 自动检查和准备 BFCL 数据;
- 运行 HelloAgents 评估;
- 导出 BFCL 格式结果;
- 调用 BFCL 官方评估工具;
- 展示评估结果。
脚本支持三个命令行参数:
python 04_run_bfcl_evaluation.py \ --category simple_python \ # 评估类别(默认:simple_python) --samples 5 \ # 样本数量(默认:5,设为 0 表示全部) --model-name Qwen/Qwen3-8B # 模型名称(默认:Qwen/Qwen3-8B,必须是 BFCL 支持的模型)脚本中值得关注的两个实现细节:
(1)函数调用系统提示词。脚本内置了一段FUNCTION_CALLING_SYSTEM_PROMPT,要求智能体输出"纯 JSON 数组"格式的函数调用结果,例如:
用户问题:查询北京的天气 可用函数:get_weather(city: str) 正确输出:[{"name": "get_weather", "arguments": {"city": "北京"}}]同时在创建SimpleAgent时设置enable_tool_calling=False,让评估聚焦于"函数调用文本是否正确生成"这一核心能力。
(2)与官方评估工具的对接。脚本将 HelloAgents 的评估结果导出为 BFCL 官方格式文件BFCL_v4_{category}_result.json,复制到 BFCL 约定的结果目录(注意官方工具会把模型名中的/替换为_),然后调用官方 CLI 完成最终评分:
bfcl evaluate --model Qwen/Qwen3-8B --test-category simple_python --partial-eval如果环境中未安装bfcl命令,脚本会提示先执行pip install bfcl-eval。官方评估完成后,评分会写入score/data_non_live.csv与score/{model_name}/non_live/BFCL_v4_{category}_score.json,脚本会自动读取并打印最终准确率。这个脚本体现了 BFCL 评估的四种最佳实践:渐进式评估(先小样本再全量)、多类别评估、对比评估(更换模型/提示词对比)与错误分析。
4. GAIA 评估:衡量智能体通用问题求解能力
GAIA(General AI Assistants)由 Meta AI 与 Hugging Face 联合推出,包含 466 个贴近真实世界的问题,按难度分为 Level 1/2/3 三级,考察多步推理、工具使用、文件处理、网页浏览等综合能力,采用 Quasi Exact Match 算法评分。它是衡量"通用 AI 助手"能力的代表性基准。
4.1 申请数据集访问权限(重要前置步骤)
GAIA 是受限数据集,无法直接下载,需要先申请访问权限:
- 访问 HuggingFace 数据集页面
gaia-benchmark/GAIA; - 点击 "Request Access" 申请访问权限;
- 等待审核通过(通常 1~2 天);
- 审核通过后设置
HF_TOKEN环境变量。
不完成这步,GAIAEvaluationTool在加载数据时会因权限不足而失败。
4.2 快速开始:一行代码完成 GAIA 评估
05_gaia_quick_start.py 展示了 GAIA 评估的最简用法。与 BFCL 不同,GAIA 对系统提示词有严格要求——必须使用 GAIA 官方系统提示词,否则答案格式不符会严重影响评分:
import os from hello_agents import SimpleAgent, HelloAgentsLLM from 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. If you are asked for a number, don't use comma to write your number neither use units such as $ or percent sign unless specified otherwise. If you are asked for a string, don't use articles, neither abbreviations (e.g. for cities), and write the digits in plain text unless specified otherwise. If you are asked for a comma separated list, apply the above rules depending of whether the element to be put in the list is a number or a string.""" # 创建智能体(必须使用 GAIA 官方系统提示词) llm = HelloAgentsLLM() agent = SimpleAgent( name="TestAgent", llm=llm, system_prompt=GAIA_SYSTEM_PROMPT ) # 创建 GAIA 评估工具 gaia_tool = GAIAEvaluationTool() # 运行评估 results = gaia_tool.run( agent=agent, level=1, # 评估级别(1=简单,2=中等,3=困难) max_samples=2, # 评估样本数(0 表示全部) export_results=True, # 导出结果到 GAIA 官方格式 generate_report=True # 生成详细报告 ) print(f"精确匹配率: {results['exact_match_rate']:.2%}") print(f"部分匹配率: {results['partial_match_rate']:.2%}") print(f"正确数: {results['correct_samples']}/{results['total_samples']}")运行输出大致如下:
============================================================ GAIA一键评估 ============================================================ 配置: 智能体: TestAgent 级别: Level 1 样本数: 2 ✅ GAIA数据集加载完成 数据源: gaia-benchmark/GAIA 分割: validation 级别: 1 样本数: 2 评估进度: 100%|██████████| 2/2 [00:10<00:00, 5.23s/样本] ✅ 评估完成 总样本数: 2 正确样本数: 2 精确匹配率: 100.00% 部分匹配率: 100.00% ✅ 结果已导出到 ./evaluation_results/gaia_submission.json ✅ 报告已生成到 ./evaluation_results/gaia_report.md 评估结果: 精确匹配率: 100.00% 部分匹配率: 100.00% 正确数: 2/2GAIA 评估结果有两个核心指标,注意区分:
- 精确匹配率(exact_match_rate):答案与标准答案完全一致的样本占比,是主指标;
- 部分匹配率(partial_match_rate):答案部分命中的样本占比,用于参考。
同时脚本支持export_results导出官方提交格式(gaia_submission.json)与generate_report生成详细报告(gaia_report.md),便于后续提交官方榜单或人工复盘。
4.3 最佳实践:分级评估、小样本测试与结果解读
06_gaia_best_practices.py 把 GAIA 评估沉淀为三条可复用的最佳实践。
最佳实践 1:分级评估(由易到难递进)
GAIA 的 Level 1/2/3 难度递增,评估时应遵循"先简单后困难"的阶梯式策略——只有低级别表现达标,才继续评估更高级别:
# 第一步:评估 Level 1(简单任务) results_l1 = gaia_tool.run(agent, level=1, max_samples=10) # 第二步:如果 Level 1 表现良好,评估 Level 2 if results_l1['exact_match_rate'] > 0.6: results_l2 = gaia_tool.run(agent, level=2, max_samples=10) # 第三步:如果 Level 2 表现良好,评估 Level 3 if results_l2['exact_match_rate'] > 0.4: results_l3 = gaia_tool.run(agent, level=3, max_samples=10)这种策略能快速暴露智能体的能力边界:Level 1 都达不到 60% 时,投入更多成本评估 Level 3 意义不大。
最佳实践 2:小样本快速测试
在完整评估前,先用每个级别 2 个样本做冒烟测试,几秒钟即可判断评估链路是否通畅、提示词是否生效:
for level in [1, 2, 3]: results = gaia_tool.run(agent, level=level, max_samples=2) print(f"快速测试 Level {level}: 精确匹配率 {results['exact_match_rate']:.2%}")最佳实践 3:结果解读与难度递进分析
脚本内置了分级的达标阈值与改进建议,帮助开发者把指标转化为行动项:
| 级别 | 优秀 | 良好 | 不达标时的改进建议 |
|---|---|---|---|
| Level 1 | ≥ 60% | ≥ 40% | 检查系统提示词是否包含 GAIA 官方格式要求、检查答案提取逻辑、更换更强的 LLM |
| Level 2 | ≥ 40% | ≥ 20% | 增强多步推理能力、增加工具使用能力、优化推理链构建 |
| Level 3 | ≥ 20% | ≥ 10% | 增强复杂推理、长上下文处理、工具链组合使用 |
此外,脚本还会做难度递进分析:正常情况下Level 1 > Level 2 > Level 3,若出现反超(如 Level 2 ≥ Level 1),则提示可能存在数据集偏差或智能体特性问题,需要进一步排查。
5. 数据生成质量评估:LLM Judge 与 Win Rate
第三个评估场景聚焦"智能体生成数据"的质量——这在为模型构造训练/测试数据时尤为关键。本仓库以生成 AIME 数学竞赛题目为例,将评估任务交给 LLM 自身(LLM Judge)与对比打分(Win Rate),并保留人工验证环节。相关的完整工具链位于 code/chapter12/data_generation 目录,包含aime_generator.py(题目生成器)、run_complete_evaluation.py(完整流程入口)、step1_generate_only.py/step2_evaluate_only.py(分步执行)以及human_verification_ui.py(人工验证界面)。
5.1 LLM Judge:从四个维度打分
08_data_generation_llm_judge.py 演示了如何让 LLM 充当裁判,从四个维度为生成的题目打分(每题 1~5 分):
- 正确性(Correctness):题目和答案是否正确;
- 清晰度(Clarity):题目表述是否清晰;
- 难度匹配(Difficulty Match):难度是否符合 AIME 水平;
- 完整性(Completeness):题目信息是否完整。
核心代码如下:
from hello_agents import HelloAgentsLLM from hello_agents.evaluation import LLMJudge llm = HelloAgentsLLM(model_name="gpt-4o") judge = LLMJudge(llm=llm) # 评估单道题目 result = judge.evaluate_single(problem) print(f"正确性: {result['correctness']}/5") print(f"清晰度: {result['clarity']}/5") print(f"难度匹配: {result['difficulty_match']}/5") print(f"完整性: {result['completeness']}/5") print(f"平均分: {result['average_score']:.2f}/5") print(f"评语: {result['feedback']}")每道题除了分数,还会得到一段 LLM 生成的英文评语,例如对一道难度的反馈:"The problem is correct and clear, but the difficulty is slightly below AIME level. Consider adding more complexity."
脚本会汇总全部题目的平均分,并按阈值给出质量结论:
- 总体平均 ≥ 4.0:✅ 优秀,题目质量很高,可直接使用;
- 3.0 ≤ 平均 < 4.0:⚠️ 良好,质量可用,建议人工审核;
- 2.0 ≤ 平均 < 3.0:⚠️ 一般,需要大幅改进;
- 平均 < 2.0:❌ 较差,需要重新生成。
示例中的预期输出为:
平均分: 正确性: 5.00/5 清晰度: 4.50/5 难度匹配: 4.00/5 完整性: 5.00/5 总体平均: 4.62/5 质量评估: ✅ 优秀 - 题目质量很高,可以直接使用5.2 Win Rate:与真题对战来衡量相对质量
LLM Judge 是"绝对打分",而 09_data_generation_win_rate.py 演示的 Win Rate 是"相对对战"——让评估模型在"生成的题目 vs AIME 真题"之间二选一并说明理由,统计生成题目的胜率:
from hello_agents import HelloAgentsLLM from hello_agents.evaluation import WinRateEvaluator, AIDataset # 加载参考数据集(AIME 真题) dataset = AIDataset() reference_problems = dataset.load() # 示例中加载了 963 道真题 # 创建 Win Rate 评估器 llm = HelloAgentsLLM(model_name="gpt-4o") evaluator = WinRateEvaluator(llm=llm, reference_problems=reference_problems) # 运行评估:进行 20 次对比 results = evaluator.evaluate( generated_problems=generated_problems, num_comparisons=20 ) print(f"Win Rate: {results['win_rate']:.2%}") print(f"Tie Rate: {results['tie_rate']:.2%}") print(f"Loss Rate: {results['loss_rate']:.2%}")Win Rate 的结果解读有一条黄金基准:
- Win Rate ≈ 50%:生成质量与真题相当(理想情况);
- Win Rate > 50%:生成质量"优于"真题(需警惕评估偏差);
- Win Rate < 50%:生成质量低于真题,需要改进。
质量评估阈值如下:
| Win Rate 区间 | 结论 |
|---|---|
| 45% ~ 55% | ✅ 优秀,生成质量接近 AIME 真题水平 |
| 35% ~ 45% | ⚠️ 良好,质量可用但略低于真题 |
| 25% ~ 35% | ⚠️ 一般,需要改进 |
| < 25% | ❌ 较差,需要大幅改进 |
此外,每次对比都保留result(generated / reference / tie)与reason(理由),可以深入分析"生成题目在哪些维度上不敌真题"。示例预期输出为:
Win Rate: 45.00% Tie Rate: 10.00% Loss Rate: 45.00% 质量评估: ✅ 优秀 - 生成质量接近AIME真题水平5.3 完整评估流程:生成 → 自动评估 → 人工验证
07_data_generation_complete_flow.py 将上述环节串成端到端流水线,一条命令完成"生成 → LLM Judge → Win Rate → 人工验证":
python 07_data_generation_complete_flow.py 30 3.0参数说明:
30:生成 30 道题目;3.0:每道题之间的延迟秒数(用于避免 LLM 速率限制)。
脚本内部调用 run_complete_evaluation.py 的main(num_problems, delay_seconds),完整流程包括:
- 生成 AIME 题目:以 963 道参考题为样本,使用 GPT-4o 生成新题,产物保存到
data_generation/generated_data/aime_problems_*.json,并附带generation_report_*.md报告; - LLM Judge 评估:对生成题做四维度打分;
- Win Rate 评估:与 AIME 2025 真题(963 道)进行约 20 次对战对比;
- 人工验证:启动本地 Gradio 界面(
http://127.0.0.1:7860),人工对自动评估结论做最终把关。
预期输出示例:
✅ 已加载 963 道参考题目 🎯 开始生成AIME题目 目标数量: 30 生成模型: gpt-4o 延迟设置: 3.0秒/题 生成AIME题目: 100%|██████████| 30/30 [02:30<00:00, 5.01s/题] ✅ 生成完成 成功: 30/30 保存位置: ./data_generation/generated_data/aime_problems_20241211_143022.json ========== LLM Judge评估 ========== ✅ LLM Judge评估完成 平均分: 3.5/5.0 评估维度: - 正确性: 3.8/5.0 - 清晰度: 3.6/5.0 - 难度匹配: 3.4/5.0 - 完整性: 3.2/5.0 ========== Win Rate评估 ========== ✅ Win Rate评估完成 Win Rate: 45.0% Tie Rate: 10.0% Loss Rate: 45.0% ========== 人工验证 ========== 🎯 启动人工验证界面 访问地址: http://127.0.0.1:7860 📊 评估总结: 生成数量: 30道题目 LLM Judge平均分: 3.5/5.0 Win Rate: 45.0% 建议: 生成质量接近AIME真题水平仓库 code/chapter12/data_generation/evaluation_results 目录下还保留了完整的运行产物示例:llm_judge/与win_rate/两个子目录分别存放评分 JSON 与 Markdown 报告,以及汇总三者的comprehensive_report.md,可以作为你本地运行后输出格式的参照。
6. 学习路径:初学者与进阶两条路线
初学者路径(先建立整体认知)
- 运行 01_basic_agent_example.py,理解"为什么需要评估";
- 学习 BFCL 评估:运行 02_bfcl_quick_start.py(快速开始)→ 04_run_bfcl_evaluation.py(最佳实践);
- 学习 GAIA 评估:运行 05_gaia_quick_start.py(快速开始)→ 06_gaia_best_practices.py(最佳实践)。
进阶路径(深入定制与数据评估)
- 自定义评估流程:阅读并改造 03_bfcl_custom_evaluation.py,理解
BFCLDataset/BFCLEvaluator底层组件; - 数据生成评估:运行 08_data_generation_llm_judge.py(LLM Judge)→ 09_data_generation_win_rate.py(Win Rate)→ 07_data_generation_complete_flow.py(完整流程)。
7. 常见问题排查
Q1:运行示例时提示找不到模块?
请确认已安装 HelloAgents 评估组件,或在开发目录下执行:
cd ../HelloAgents pip install -e .Q2:BFCL 评估提示找不到数据集?
首次运行会自动下载数据集,请确保网络连接正常。若下载失败,可手动克隆仓库后重试(数据路径见第 2.3 节)。
Q3:GAIA 评估提示没有访问权限?
GAIA 是受限数据集,请依次完成:在 HuggingFace 数据集页面点击 "Request Access" → 等待审核通过(通常 1~2 天)→ 设置HF_TOKEN环境变量。
Q4:评估速度太慢?
可以通过减少样本数快速验证:
# BFCL 评估 results = bfcl_tool.run(agent, category="simple_python", max_samples=5) # GAIA 评估 results = gaia_tool.run(agent, level=1, max_samples=2) # 数据生成评估:只生成 10 道题目 python 07_data_generation_complete_flow.py 10 3.0Q5:如何估算评估成本?
评估成本主要来自 LLM API 调用,以下为参考量级(价格会随模型与供应商浮动):
- BFCL 评估:每个样本约 1 次 API 调用,成本约 0.01~0.02 元/样本,完整评估(约 400 样本)约 4~8 元;
- GAIA 评估:每个样本约 1~5 次 API 调用(取决于任务复杂度),成本约 0.05~0.20 元/样本,完整评估(466 样本)约 23~93 元;
- 数据生成评估:生成约 0.05 元/题,LLM Judge 约 0.02 元/题,Win Rate 约 0.02 元/对比,生成 30 道题目总计约 2~3 元。
因此在正式全量评估前,务必先用max_samples做小样本冒烟测试。
8. 小结
通过第十二章的 9 个示例脚本,你可以在 HelloAgents 框架上建立一套覆盖"工具调用能力(BFCL)→ 通用求解能力(GAIA)→ 数据生成质量(LLM Judge / Win Rate)"的三层评估体系:
- BFCL用一行
BFCLEvaluationTool.run()快速量化函数调用准确率,用BFCLDataset+BFCLEvaluator实现自定义评估,用04_run_bfcl_evaluation.py对接官方评估工具完成端到端流水线; - GAIA强调"官方提示词 + 受限数据集授权 + 分级递进评估",以精确/部分匹配率为双指标,附赠一套可直接套用的达标阈值与改进建议;
- 数据生成评估展示了"绝对打分(LLM Judge)+ 相对对战(Win Rate)+ 人工验证"三位一体的质量把关方案。
这套方法论不局限于本仓库示例:无论你的智能体是用于检索问答、工具调用还是数据生产,都可以按同样的思路搭建专属评估基线,让每一次 Prompt 优化、模型替换都有数据可依。
【免费下载链接】hello-agents📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/datawhalechina/hello-agents
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考