jjyaoao 8 месяцев назад
Родитель
Сommit
3f5cd5ea26
1 измененных файлов с 160 добавлено и 160 удалено
  1. 160 160
      docs/chapter12/第十二章 智能体性能评估.md

+ 160 - 160
docs/chapter12/第十二章 智能体性能评估.md

@@ -1,12 +1,12 @@
 # 第十二章 智能体性能评估
 
-在前面的章节中,我们构建了HelloAgents框架的核心功能,实现了多种智能体范式、工具系统、记忆机制和强化学习训练等。在构建智能体系统时,我们还需要解决一个核心问题:**如何客观地评估智能体的性能?** 具体来说,我们需要回答以下问题:
+在前面的章节中,我们构建了HelloAgents框架的核心功能,实现了多种智能体范式、工具系统、记忆机制和强化学习训练等。在构建智能体系统时,我们还需要解决一个核心问题:<strong>如何客观地评估智能体的性能?</strong> 具体来说,我们需要回答以下问题:
 
 1. 智能体是否具备预期的能力?
 2. 在不同任务上的表现如何?
 3. 与其他智能体相比处于什么水平?
 
-本章将为HelloAgents增加**性能评估系统(Evaluation System)**。我们将深入理解智能体评估的理论基础,并实现评估的工具。
+本章将为HelloAgents增加<strong>性能评估系统(Evaluation System)</strong>。我们将深入理解智能体评估的理论基础,并实现评估的工具。
 
 ## 12.1 智能体评估基础
 
@@ -49,58 +49,58 @@ print(f"\n回答:{response}")
 
 与传统软件测试不同,智能体评估面临着独特的挑战。首先是输出的不确定性,同一问题可能有多个正确答案,很难用简单的对错来判断。其次是评估标准的多样性,不同任务需要不同的评估方法,工具调用需要检查函数签名,问答任务需要评估语义相似度。最后是评估成本的高昂,每次评估都需要大量的API调用,成本可能达到数百元甚至更多。
 
-为了应对这些挑战,学术界和工业界提出了多个标准化的**评估基准(Benchmark)**。这些基准提供了统一的数据集、评估指标和评分方法,使我们能够在相同的标准下评估和对比不同的智能体系统。
+为了应对这些挑战,学术界和工业界提出了多个标准化的<strong>评估基准(Benchmark)</strong>。这些基准提供了统一的数据集、评估指标和评分方法,使我们能够在相同的标准下评估和对比不同的智能体系统。
 
 ### 12.1.2 主流评估基准概览
 
 智能体评估领域已经涌现出多个具有影响力的基准测试。下面介绍一些主流的评估基准和指标:
 
-**(1)工具调用能力评估**
+<strong>(1)工具调用能力评估</strong>
 
 工具调用是智能体的核心能力之一。智能体需要理解用户意图,选择合适的工具,并正确构造函数调用。相关的评估基准包括:
 
-- **BFCL (Berkeley Function Calling Leaderboard)**<sup>[1]</sup>:UC Berkeley推出,包含1120+测试样本,涵盖simple、multiple、parallel、irrelevance四个类别,使用AST匹配算法评估,数据集规模适中,社区活跃。
-- **ToolBench**<sup>[2]</sup>:清华大学推出,包含16000+真实API调用场景,覆盖真实世界的复杂工具使用场景。
-- **API-Bank**<sup>[3]</sup>:Microsoft Research推出,包含53个常用API工具,专注于评估智能体对API文档的理解和调用能力。
+- <strong>BFCL (Berkeley Function Calling Leaderboard)</strong><sup>[1]</sup>:UC Berkeley推出,包含1120+测试样本,涵盖simple、multiple、parallel、irrelevance四个类别,使用AST匹配算法评估,数据集规模适中,社区活跃。
+- <strong>ToolBench</strong><sup>[2]</sup>:清华大学推出,包含16000+真实API调用场景,覆盖真实世界的复杂工具使用场景。
+- <strong>API-Bank</strong><sup>[3]</sup>:Microsoft Research推出,包含53个常用API工具,专注于评估智能体对API文档的理解和调用能力。
 
-**(2)通用能力评估**
+<strong>(2)通用能力评估</strong>
 
 评估智能体在真实世界任务中的综合表现,包括多步推理、知识运用、多模态理解等能力:
 
-- **GAIA (General AI Assistants)**<sup>[4]</sup>:Meta AI和Hugging Face联合推出,包含466个真实世界问题,分为Level 1/2/3三个难度级别,评估多步推理、工具使用、文件处理、网页浏览等能力,使用准精确匹配(Quasi Exact Match)算法,任务真实且综合性强。
-- **AgentBench**<sup>[5]</sup>:清华大学推出,包含8个不同领域的任务,全面评估智能体的通用能力。
-- **WebArena**<sup>[6]</sup>:CMU推出,评估智能体在真实网页环境中的任务完成能力和网页交互能力。
+- <strong>GAIA (General AI Assistants)</strong><sup>[4]</sup>:Meta AI和Hugging Face联合推出,包含466个真实世界问题,分为Level 1/2/3三个难度级别,评估多步推理、工具使用、文件处理、网页浏览等能力,使用准精确匹配(Quasi Exact Match)算法,任务真实且综合性强。
+- <strong>AgentBench</strong><sup>[5]</sup>:清华大学推出,包含8个不同领域的任务,全面评估智能体的通用能力。
+- <strong>WebArena</strong><sup>[6]</sup>:CMU推出,评估智能体在真实网页环境中的任务完成能力和网页交互能力。
 
-**(3)多智能体协作评估**
+<strong>(3)多智能体协作评估</strong>
 
 评估多个智能体协同工作的能力:
 
-- **ChatEval**<sup>[7]</sup>:评估多智能体对话系统的质量。
-- **SOTOPIA**<sup>[8]</sup>:评估智能体在社交场景中的互动能力。
-- **自定义协作场景**:根据具体应用场景设计的评估任务。
+- <strong>ChatEval</strong><sup>[7]</sup>:评估多智能体对话系统的质量。
+- <strong>SOTOPIA</strong><sup>[8]</sup>:评估智能体在社交场景中的互动能力。
+- <strong>自定义协作场景</strong>:根据具体应用场景设计的评估任务。
 
-**(4)常用评估指标**
+<strong>(4)常用评估指标</strong>
 
 不同基准使用不同的评估指标,常见的包括:
 
-- **准确性指标**:Accuracy(准确率)、Exact Match(精确匹配)、F1 Score(F1分数),用于衡量答案的正确性。
-- **效率指标**:Response Time(响应时间)、Token Usage(Token使用量),用于衡量执行效率。
-- **鲁棒性指标**:Error Rate(错误率)、Failure Recovery(故障恢复),用于衡量容错能力。
-- **协作指标**:Communication Efficiency(通信效率)、Task Completion(任务完成度),用于衡量协作效果。
+- <strong>准确性指标</strong>:Accuracy(准确率)、Exact Match(精确匹配)、F1 Score(F1分数),用于衡量答案的正确性。
+- <strong>效率指标</strong>:Response Time(响应时间)、Token Usage(Token使用量),用于衡量执行效率。
+- <strong>鲁棒性指标</strong>:Error Rate(错误率)、Failure Recovery(故障恢复),用于衡量容错能力。
+- <strong>协作指标</strong>:Communication Efficiency(通信效率)、Task Completion(任务完成度),用于衡量协作效果。
 
 ### 12.1.3 HelloAgents评估体系设计
 
 考虑到学习曲线和实用性,本章将重点介绍以下评估场景:
 
-1. **BFCL**:评估工具调用能力
+1. <strong>BFCL</strong>:评估工具调用能力
    - 选择理由:数据集规模适中,评估指标清晰,社区活跃
    - 适用场景:评估智能体的函数调用准确性
 
-2. **GAIA**:评估通用AI助手能力
+2. <strong>GAIA</strong>:评估通用AI助手能力
    - 选择理由:任务真实,难度分级,综合性强
    - 适用场景:评估智能体的综合问题解决能力
 
-3. **数据生成质量评估**:评估LLM生成数据质量
+3. <strong>数据生成质量评估</strong>:评估LLM生成数据质量
    - 选择理由:通过这个案例可以完整体验如何使用Agent创造数据,评估数据的完整演示。
    - 适用场景:评估生成的训练数据、测试数据的质量
    - 评估方法:LLM Judge、Win Rate、人工验证
@@ -161,10 +161,10 @@ export HF_TOKEN="your_huggingface_token"     # 用于GAIA数据集(后续也会
 
 BFCL (Berkeley Function Calling Leaderboard) 是由加州大学伯克利分校推出的函数调用能力评估基准<sup>[1]</sup>。在智能体系统中,工具调用(Tool Calling)是核心能力之一。智能体需要完成以下任务:
 
-1. **理解任务需求**:从用户的自然语言描述中提取关键信息
-2. **选择合适工具**:从可用工具集中选择最适合的工具
-3. **构造函数调用**:正确填写函数名和参数
-4. **处理复杂场景**:支持多函数调用、并行调用等高级场景
+1. <strong>理解任务需求</strong>:从用户的自然语言描述中提取关键信息
+2. <strong>选择合适工具</strong>:从可用工具集中选择最适合的工具
+3. <strong>构造函数调用</strong>:正确填写函数名和参数
+4. <strong>处理复杂场景</strong>:支持多函数调用、并行调用等高级场景
 
 BFCL基准包含四个评估类别,难度递增。从最基础的单函数调用(Simple)开始,逐步增加到需要调用多个函数的场景(Multiple),再到需要并行调用多个函数的复杂场景(Parallel),最后是需要判断是否需要调用函数的场景(Irrelevance)。这四个类别覆盖了智能体在实际应用中可能遇到的各种工具调用场景,如表12.1所示:
 
@@ -178,7 +178,7 @@ BFCL的评估流程遵循标准的基准测试流程:首先加载数据集并
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/12-figures/12-2.png" alt="" width="85%"/>
   <p>图 12.2 BFCL评估流程图</p>
 </div>
-**(1)BFCL数据集结构**
+<strong>(1)BFCL数据集结构</strong>
 
 BFCL数据集采用JSON格式,每个测试样本包含以下字段:
 
@@ -213,17 +213,17 @@ BFCL数据集采用JSON格式,每个测试样本包含以下字段:
 }
 ```
 
-**关键字段说明:**
+<strong>关键字段说明:</strong>
 
 - `question`: 用户的自然语言请求
 - `function`: 可用的函数列表(包含函数签名和描述)
 - `ground_truth`: 标准答案(期望的函数调用)
 
-**(2)AST匹配说明**
+<strong>(2)AST匹配说明</strong>
 
-BFCL使用**AST匹配(Abstract Syntax Tree Matching)**作为核心评估算法,因此下文可以了解一下评估的策略。
+BFCL使用<strong>AST匹配(Abstract Syntax Tree Matching)</strong>作为核心评估算法,因此下文可以了解一下评估的策略。
 
-BFCL使用抽象语法树(AST)进行智能匹配,而不是简单的字符串匹配。AST匹配的核心思想是:**将函数调用解析为语法树,然后比较树的结构和节点值**
+BFCL使用抽象语法树(AST)进行智能匹配,而不是简单的字符串匹配。AST匹配的核心思想是:<strong>将函数调用解析为语法树,然后比较树的结构和节点值</strong>
 
 给定预测的函数调用 $P$ 和标准答案 $G$,AST匹配函数定义为:
 
@@ -238,7 +238,7 @@ $$
 
 两个语法树等价需要满足三个核心条件:函数名必须完全一致(精确匹配),参数键值对集合相等(忽略顺序),以及每个参数的值在语义上等价(例如 `2+3` 等价于 `5`)。在具体的匹配过程中,函数名匹配要求字符串精确匹配,例如 `get_weather` 和 `get_temperature` 被视为不同的函数。参数匹配则使用AST进行智能比较,允许参数顺序不同(`f(a=1, b=2)` 等价于 `f(b=2, a=1)`),允许等价表达式(`f(x=2+3)` 等价于 `f(x=5)`),也允许不同的字符串表示(`f(s="hello")` 等价于 `f(s='hello')`)。对于多函数调用的场景,匹配算法要求调用相同数量的函数,每个函数调用都必须匹配,但调用顺序可以不同(使用集合匹配)。
 
-**AST匹配示例:**
+<strong>AST匹配示例:</strong>
 
 ```python
 # 示例1:参数顺序不同(匹配成功)
@@ -262,11 +262,11 @@ $$
 结果: ❌ 匹配失败
 ```
 
-**(3)BFCL评估指标**
+<strong>(3)BFCL评估指标</strong>
 
 BFCL使用以下指标评估智能体性能:
 
-**1. 准确率 (Accuracy)**
+<strong>1. 准确率 (Accuracy)</strong>
 
 准确率是最核心的指标,定义为AST匹配成功的样本比例:
 
@@ -280,7 +280,7 @@ $$
 - $G_i$ 是第 $i$ 个样本的标准答案
 - $\text{AST\_Match}(P_i, G_i) \in \{0, 1\}$ 是AST匹配函数
 
-**2. AST匹配率 (AST Match Rate)**
+<strong>2. AST匹配率 (AST Match Rate)</strong>
 
 与准确率相同,强调使用AST匹配算法:
 
@@ -288,7 +288,7 @@ $$
 \text{AST Match Rate} = \text{Accuracy}
 $$
 
-**3. 分类准确率 (Category-wise Accuracy)**
+<strong>3. 分类准确率 (Category-wise Accuracy)</strong>
 
 对于每个类别 $c \in \{\text{simple}, \text{multiple}, \text{parallel}, \ldots\}$,计算该类别的准确率:
 
@@ -298,7 +298,7 @@ $$
 
 其中 $D_c$ 是类别 $c$ 的样本集合,$|D_c|$ 是该类别的样本数。
 
-**4. 加权准确率 (Weighted Accuracy)**
+<strong>4. 加权准确率 (Weighted Accuracy)</strong>
 
 考虑不同类别的难度权重:
 
@@ -308,7 +308,7 @@ $$
 
 其中 $w_c$ 是类别 $c$ 的权重,满足 $\sum_c w_c = 1$。
 
-**5. 错误率 (Error Rate)**
+<strong>5. 错误率 (Error Rate)</strong>
 
 未能正确调用函数的样本比例:
 
@@ -316,13 +316,13 @@ $$
 \text{Error Rate} = 1 - \text{Accuracy} = \frac{1}{N} \sum_{i=1}^{N} (1 - \text{AST\_Match}(P_i, G_i))
 $$
 
-**指标解释:**
+<strong>指标解释:</strong>
 
-- **Accuracy = 1.0**:所有样本都完全正确
-- **Accuracy = 0.8**:80%的样本正确,20%的样本错误
-- **Accuracy = 0.0**:所有样本都错误
+- <strong>Accuracy = 1.0</strong>:所有样本都完全正确
+- <strong>Accuracy = 0.8</strong>:80%的样本正确,20%的样本错误
+- <strong>Accuracy = 0.0</strong>:所有样本都错误
 
-**分类准确率示例:**
+<strong>分类准确率示例:</strong>
 
 ```python
 # 假设评估结果
@@ -334,7 +334,7 @@ parallel_accuracy = 0.68    # Parallel类别:68%正确
 weighted_accuracy = (0.95 + 0.82 + 0.68) / 3 = 0.817
 ```
 
-**(4)BFCL官方评估工具**
+<strong>(4)BFCL官方评估工具</strong>
 
 BFCL提供官方CLI工具进行评估:
 
@@ -355,7 +355,7 @@ bfcl evaluate \
 
 BFCL数据集可以通过以下方式获取:
 
-**方法1:从官方GitHub仓库克隆(推荐)**
+<strong>方法1:从官方GitHub仓库克隆(推荐)</strong>
 
 这是最可靠的方式,可以获取完整的数据集和ground truth:
 
@@ -375,7 +375,7 @@ ls bfcl_eval/data/possible_answer/
 
 推荐这种方式的原因是:它包含完整的ground truth(标准答案),数据格式与官方评估工具完全一致,可以直接使用官方评估脚本,并且支持BFCL v4最新版本。
 
-**方法2:使用HelloAgents加载官方数据**
+<strong>方法2:使用HelloAgents加载官方数据</strong>
 
 克隆仓库后,使用HelloAgents加载数据:
 
@@ -418,7 +418,7 @@ print(f"支持的类别: {categories}")
 
 现在让我们看看如何在HelloAgents框架中实现BFCL评估。我们提供了三种使用方式:
 
-**方式1:使用BFCLEvaluationTool(推荐)**
+<strong>方式1:使用BFCLEvaluationTool(推荐)</strong>
 
 这是最简单的方式,一行代码完成评估、报告生成和官方评估:
 
@@ -445,7 +445,7 @@ print(f"准确率: {results['overall_accuracy']:.2%}")
 print(f"正确数: {results['correct_samples']}/{results['total_samples']}")
 ```
 
-**运行输出:**
+<strong>运行输出:</strong>
 
 ```
 ============================================================
@@ -511,7 +511,7 @@ Qwen/Qwen3-8B,100.00,100.00
 正确数: 5/5
 ```
 
-**自动生成的Markdown报告:**
+<strong>自动生成的Markdown报告:</strong>
 
 评估完成后,会自动生成一份详细的Markdown报告,包含:
 
@@ -547,7 +547,7 @@ Qwen/Qwen3-8B,100.00,100.00
 - ✅ 表现优秀!智能体在工具调用方面表现出色。
 ```
 
-**方式2:使用一键评估脚本**
+<strong>方式2:使用一键评估脚本</strong>
 
 适合命令行快速评估,在这一章配套的代码案例里,我们提供了`04_run_bfcl_evaluation.py`,支持直接命令行调用测评:
 
@@ -564,7 +564,7 @@ python examples/04_run_bfcl_evaluation.py \
 
 脚本支持三个参数:`--category`指定评估类别(默认simple_python),`--samples`指定评估样本数(默认5,0表示全部),`--model-name`指定模型名称用于BFCL官方评估(默认Qwen/Qwen3-8B)。
 
-**方式3:直接使用Dataset和Evaluator**
+<strong>方式3:直接使用Dataset和Evaluator</strong>
 
 适合需要自定义评估流程的场景:
 
@@ -611,7 +611,7 @@ evaluator.export_to_bfcl_format(
 
 ### 12.2.4 BFCL官方评估工具集成
 
-前面我们学习了如何使用HelloAgents内置的评估功能。实际上,`BFCLEvaluationTool`已经**自动集成了BFCL官方评估工具**,让你能够获得权威的、可对比的评估结果。
+前面我们学习了如何使用HelloAgents内置的评估功能。实际上,`BFCLEvaluationTool`已经<strong>自动集成了BFCL官方评估工具</strong>,让你能够获得权威的、可对比的评估结果。
 
 整个评估流程包括四个步骤:首先从BFCL v4数据集加载测试数据,然后使用HelloAgents运行评估获取智能体的预测结果,接着将结果导出为BFCL官方格式(JSONL),最后使用官方评估脚本计算最终分数。这个流程确保了评估结果与BFCL排行榜完全一致,如图12.3所示:
 
@@ -619,7 +619,7 @@ evaluator.export_to_bfcl_format(
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/12-figures/12-3.png" alt="" width="85%"/>
   <p>图 12.3 Helloagents载入BFCL评估过程</p>
 </div>
-使用`BFCLEvaluationTool`时,官方评估会**自动运行**(默认启用):
+使用`BFCLEvaluationTool`时,官方评估会<strong>自动运行</strong>(默认启用):
 
 ```python
 from hello_agents import SimpleAgent, HelloAgentsLLM
@@ -644,7 +644,7 @@ results = bfcl_tool.run(
 
 工具会自动执行完整的评估流程:首先运行HelloAgents评估获取预测结果,然后将结果导出为BFCL格式并保存到`evaluation_results/bfcl_official/`目录,接着复制结果文件到`result/{model_name}/`目录以符合官方评估工具的要求,随后运行BFCL官方评估命令计算分数,最后显示官方评估结果并生成Markdown格式的评估报告。
 
-**官方评估输出示例:**
+<strong>官方评估输出示例:</strong>
 
 ```
 ============================================================
@@ -712,7 +712,7 @@ print(report)
 
 在前面的小节中,我们学习了如何使用BFCL评估工具。现在让我们深入了解HelloAgents评估系统的核心组件是如何实现的。理解这些实现细节不仅能帮助你更好地使用评估系统,还能让你根据自己的需求进行定制和扩展。
 
-**(1)BFCLDataset:数据集加载器**
+<strong>(1)BFCLDataset:数据集加载器</strong>
 
 BFCLDataset负责加载和管理BFCL数据集:
 
@@ -735,7 +735,7 @@ class BFCLDataset:
 ````
 因为BFCL的数据集就在官方的仓库内,所以这里建议的方式是直接在本地clone一份进行测评。当找不到时才到huggingface进行加载。
 
-**(2)BFCLEvaluator:评估执行器**
+<strong>(2)BFCLEvaluator:评估执行器</strong>
 
 BFCLEvaluator负责执行评估流程。它的核心是`evaluate()`方法,该方法协调整个评估过程:
 
@@ -806,7 +806,7 @@ def _extract_function_calls(self, response: str) -> List[Dict[str, Any]]:
     return calls
 ```
 
-**(3)BFCLMetrics:指标计算器**
+<strong>(3)BFCLMetrics:指标计算器</strong>
 
 BFCLMetrics负责计算各种评估指标:
 
@@ -824,7 +824,7 @@ class BFCLMetrics:
             "category_statistics": self._compute_category_stats(results)
         }
 ````
-**AST匹配的实现**
+<strong>AST匹配的实现</strong>
 
 AST匹配是BFCL评估的核心技术。它比简单的字符串匹配更智能,能够识别语义等价的函数调用:
 
@@ -856,7 +856,7 @@ def _args_to_ast(self, args: Dict[str, Any]) -> ast.AST:
     return tree.body[0].value  # 返回Call节点
 ```
 
-**(4)工具化封装:BFCLEvaluationTool**
+<strong>(4)工具化封装:BFCLEvaluationTool</strong>
 
 最后,我们将这些组件封装成一个Tool,让它可以被智能体直接调用:
 
@@ -896,21 +896,21 @@ class BFCLEvaluationTool(Tool):
 
 通过前面的学习,我们已经掌握了如何使用HelloAgents进行BFCL评估。需要注意的是,我们目前的实现是基于SimpleAgent的简单复现,主要完成了BFCL评估的基础功能。在实际应用中,BFCL基准包含多个难度级别和场景,要在排行榜上获得更高的分数,还需要进一步的优化和扩展。
 
-**(1)当前实现的局限性**
+<strong>(1)当前实现的局限性</strong>
 
 我们当前的SimpleAgent实现主要聚焦于评估流程的搭建,在工具调用能力上还有提升空间。SimpleAgent使用自定义的工具调用格式`[TOOL_CALL:tool_name:parameters]`,这种格式需要LLM主动学习和使用,在复杂场景下的表现可能不如使用原生函数调用(Function Calling)的智能体。此外,我们目前只测试了simple_python等基础类别,对于multiple、parallel、irrelevance等更复杂的场景,还需要针对性的优化。
 
-**(2)提升BFCL分数的方向**
+<strong>(2)提升BFCL分数的方向</strong>
 
 要进一步提升BFCL评估分数,可以从以下几个方向入手。首先是优化智能体的工具调用能力,可以考虑使用支持原生函数调用的LLM(如GPT-4、Claude等),或者改进提示词让LLM更好地理解工具调用格式。其次是扩展工具库,BFCL测试中涉及各种类型的函数,可以根据测试数据集的特点,预先实现常用的工具类型,提高智能体的工具覆盖率。第三是针对不同难度级别设计不同的策略,例如在multiple场景下需要智能体能够规划多步骤的工具调用序列,在parallel场景下需要识别可以并行执行的工具调用,在irrelevance场景下需要判断是否真的需要调用工具。
 
-**(3)实践建议**
+<strong>(3)实践建议</strong>
 
 对于想要在BFCL上取得更好成绩的开发者,建议采用以下实践策略。首先,从simple类别开始,确保基础的单函数调用能够稳定工作,这是后续优化的基础。然后,逐步测试multiple、parallel等更复杂的类别,分析失败案例,找出智能体的薄弱环节。在优化过程中,可以参考BFCL排行榜上的高分模型,学习它们的设计思路和优化技巧。同时,建议使用官方评估工具进行验证,确保优化后的结果与排行榜标准一致。
 
 这里总结一些评估时可以进一步处理的建议:
 
-**1. 渐进式评估**
+<strong>1. 渐进式评估</strong>
 
 从小样本开始,逐步增加样本数:
 
@@ -927,7 +927,7 @@ if results_medium['overall_accuracy'] > 0.8:
     results_full = bfcl_tool.run(agent, category="simple_python", max_samples=0)
 ```
 
-**2. 多类别评估**
+<strong>2. 多类别评估</strong>
 
 评估不同难度的任务:
 
@@ -940,7 +940,7 @@ for category in categories:
     print(f"准确率: {results['overall_accuracy']:.2%}")
 ```
 
-**3. 对比评估**
+<strong>3. 对比评估</strong>
 
 对比不同配置的智能体:
 
@@ -961,20 +961,20 @@ print(f"优化配置准确率: {results2['overall_accuracy']:.2%}")
 
 如果你的评估结果很好,可以考虑提交到BFCL官方排行榜!
 
-**步骤1:准备提交材料**
+<strong>步骤1:准备提交材料</strong>
 
 1. 模型描述文档
 2. 评估结果文件(所有类别)
 3. 模型访问方式(API或开源链接)
 
-**步骤2:提交到GitHub**
+<strong>步骤2:提交到GitHub</strong>
 
 访问BFCL官方仓库,按照说明提交Pull Request:
 
 - 仓库地址:https://github.com/ShishirPatil/gorilla
 - 提交指南:参考`CONTRIBUTING.md`
 
-**步骤3:等待审核**
+<strong>步骤3:等待审核</strong>
 
 BFCL团队会审核你的提交,验证结果的准确性。审核通过后,你的模型将出现在官方排行榜上!
 
@@ -984,17 +984,17 @@ BFCL团队会审核你的提交,验证结果的准确性。审核通过后,
 
 ### 12.3.1 GAIA基准介绍
 
-GAIA (General AI Assistants) 是由Meta AI和Hugging Face联合推出的评估基准,专注于评估AI助手的**通用能力**<sup>[2]</sup>。与BFCL专注于工具调用不同,GAIA评估的是智能体在真实世界任务中的综合表现。
+GAIA (General AI Assistants) 是由Meta AI和Hugging Face联合推出的评估基准,专注于评估AI助手的<strong>通用能力</strong><sup>[2]</sup>。与BFCL专注于工具调用不同,GAIA评估的是智能体在真实世界任务中的综合表现。
 
-GAIA的设计理念是:**真实世界的问题往往需要多种能力的综合运用**。一个优秀的AI助手不仅需要调用工具,还需要:
+GAIA的设计理念是:<strong>真实世界的问题往往需要多种能力的综合运用</strong>。一个优秀的AI助手不仅需要调用工具,还需要:
 
-- **多步推理**:将复杂问题分解为多个子问题
-- **知识运用**:利用内置知识和外部知识库
-- **多模态理解**:处理文本、图片、文件等多种输入
-- **网页浏览**:从互联网获取最新信息
-- **文件操作**:读取和处理各种格式的文件
+- <strong>多步推理</strong>:将复杂问题分解为多个子问题
+- <strong>知识运用</strong>:利用内置知识和外部知识库
+- <strong>多模态理解</strong>:处理文本、图片、文件等多种输入
+- <strong>网页浏览</strong>:从互联网获取最新信息
+- <strong>文件操作</strong>:读取和处理各种格式的文件
 
-**(1)GAIA数据集结构**
+<strong>(1)GAIA数据集结构</strong>
 
 了解GAIA的评估理念后,让我们深入了解GAIA数据集的具体结构。GAIA包含466个精心设计的真实世界问题,这些问题按照复杂度和所需推理步骤分为三个难度级别,从简单的零步推理任务到需要多步复杂推理的困难任务,全面覆盖了智能体在实际应用中可能遇到的各种场景,如表12.3所示:
 
@@ -1025,16 +1025,16 @@ GAIA的设计理念是:**真实世界的问题往往需要多种能力的综
 }
 ```
 
-**关键字段说明:**
+<strong>关键字段说明:</strong>
 - `Question`: 问题描述
 - `Level`: 难度级别(1-3)
 - `Final answer`: 标准答案(可能是数字、文本或文件)
 - `file_name/file_path`: 附件文件(如果有)
 - `Annotator Metadata`: 标注者提供的元数据(推理步骤、所需工具等)
 
-**(2)准精确匹配介绍**
+<strong>(2)准精确匹配介绍</strong>
 
-GAIA使用**准精确匹配(Quasi Exact Match)**评估算法,这是GAIA官方定义的评估标准。该算法的核心思想是:**先对答案进行归一化处理,然后进行精确匹配**
+GAIA使用<strong>准精确匹配(Quasi Exact Match)</strong>评估算法,这是GAIA官方定义的评估标准。该算法的核心思想是:<strong>先对答案进行归一化处理,然后进行精确匹配</strong>
 
 给定预测答案 $A_{\text{pred}}$ 和标准答案 $A_{\text{true}}$,准精确匹配函数定义为:
 
@@ -1049,7 +1049,7 @@ $$
 
 归一化函数根据答案类型应用不同的规则。对于数字类型,需要移除逗号分隔符(`1,000` → `1000`)和单位符号(`$100` → `100`,`50%` → `50`),例如`"$1,234.56"`归一化为`"1234.56"`。对于字符串类型,需要转换为小写(`"Apple"` → `"apple"`)、移除冠词(`"the apple"` → `"apple"`)、移除多余空格(`"hello  world"` → `"hello world"`)和移除末尾标点(`"hello."` → `"hello"`),例如`"The United States"`归一化为`"united states"`。对于列表类型,需要按逗号分隔元素,对每个元素应用字符串归一化,按字母顺序排序后重新连接,例如`"Paris, London, Berlin"`归一化为`"berlin,london,paris"`。
 
-**归一化示例:**
+<strong>归一化示例:</strong>
 
 ```python
 # 数字答案
@@ -1065,11 +1065,11 @@ $$
 归一化后: "berlin, london, paris"
 ```
 
-**(3)GAIA评估指标**
+<strong>(3)GAIA评估指标</strong>
 
 GAIA使用以下指标评估智能体性能:
 
-**1. 精确匹配率 (Exact Match Rate)**
+<strong>1. 精确匹配率 (Exact Match Rate)</strong>
 
 精确匹配率是GAIA的核心指标,定义为准精确匹配成功的样本比例:
 
@@ -1083,7 +1083,7 @@ $$
 - $A_{\text{true},i}$ 是第 $i$ 个样本的标准答案
 - $\text{Quasi\_Exact\_Match}(\cdot, \cdot) \in \{0, 1\}$ 是准精确匹配函数
 
-**2. 分级准确率 (Level-wise Accuracy)**
+<strong>2. 分级准确率 (Level-wise Accuracy)</strong>
 
 对于每个难度级别 $\ell \in \{1, 2, 3\}$,计算该级别的准确率:
 
@@ -1093,7 +1093,7 @@ $$
 
 其中 $D_\ell$ 是难度级别 $\ell$ 的样本集合,$|D_\ell|$ 是该级别的样本数。
 
-**3. 难度递进下降率 (Difficulty Progression Drop Rate)**
+<strong>3. 难度递进下降率 (Difficulty Progression Drop Rate)</strong>
 
 衡量智能体在难度增加时的性能衰减:
 
@@ -1104,7 +1104,7 @@ $$
 - $\text{Drop Rate}_{1 \to 2}$:从Level 1到Level 2的下降率
 - $\text{Drop Rate}_{2 \to 3}$:从Level 2到Level 3的下降率
 
-**4. 平均推理步骤数 (Average Reasoning Steps)**
+<strong>4. 平均推理步骤数 (Average Reasoning Steps)</strong>
 
 评估智能体完成任务所需的平均步骤数:
 
@@ -1114,14 +1114,14 @@ $$
 
 其中 $N_{\text{correct}}$ 是正确回答的样本数,$\text{steps}_i$ 是第 $i$ 个样本的推理步骤数。
 
-**指标解释:**
+<strong>指标解释:</strong>
 
-- **Exact Match Rate = 1.0**:所有样本都完全正确
-- **Exact Match Rate = 0.5**:50%的样本正确,50%的样本错误
-- **Drop Rate = 0.3**:难度增加导致准确率下降30%
-- **Drop Rate = 0.0**:难度增加不影响准确率(理想情况)
+- <strong>Exact Match Rate = 1.0</strong>:所有样本都完全正确
+- <strong>Exact Match Rate = 0.5</strong>:50%的样本正确,50%的样本错误
+- <strong>Drop Rate = 0.3</strong>:难度增加导致准确率下降30%
+- <strong>Drop Rate = 0.0</strong>:难度增加不影响准确率(理想情况)
 
-**评估示例:**
+<strong>评估示例:</strong>
 
 假设我们评估了10个样本,结果可以参考表12.4所示:
 
@@ -1163,15 +1163,15 @@ print(f"Level 1→2 下降率: {drop_rate_1_to_2:.2%}")  # 33.00%
 print(f"Level 2→3 下降率: {drop_rate_2_to_3:.2%}")  # 25.00%
 ```
 
-**结果分析:**
+<strong>结果分析:</strong>
 
-- **整体表现**:70%的精确匹配率,表现良好
-- **难度敏感性**:从Level 1到Level 2下降33%,说明智能体在中等难度任务上有明显衰减
-- **能力边界**:Level 3准确率为50%,说明智能体在复杂任务上仍有提升空间
+- <strong>整体表现</strong>:70%的精确匹配率,表现良好
+- <strong>难度敏感性</strong>:从Level 1到Level 2下降33%,说明智能体在中等难度任务上有明显衰减
+- <strong>能力边界</strong>:Level 3准确率为50%,说明智能体在复杂任务上仍有提升空间
 
 下降率越大,说明智能体在处理复杂任务时的能力衰减越明显。
 
-**(4)GAIA官方系统提示词**
+<strong>(4)GAIA官方系统提示词</strong>
 
 GAIA要求使用特定的系统提示词,确保模型输出符合评估格式:
 
@@ -1191,16 +1191,16 @@ GAIA对答案格式有严格的要求:答案必须以`FINAL ANSWER: [答案]`
 
 ### 12.3.2 获取GAIA数据集
 
-**重要提示**:GAIA是**受限数据集(Gated Dataset)**,需要先在HuggingFace上申请访问权限。
+<strong>重要提示</strong>:GAIA是<strong>受限数据集(Gated Dataset)</strong>,需要先在HuggingFace上申请访问权限。
 
-**步骤1:申请访问权限**
+<strong>步骤1:申请访问权限</strong>
 
 1. 访问 https://huggingface.co/datasets/gaia-benchmark/GAIA
 2. 点击"Request access"按钮
 3. 填写申请表单(通常会在几秒内批准)
 4. 获取你的HuggingFace Token:https://huggingface.co/settings/tokens
 
-**步骤2:配置环境变量**
+<strong>步骤2:配置环境变量</strong>
 
 在`.env`文件中添加你的HuggingFace Token:
 
@@ -1209,7 +1209,7 @@ GAIA对答案格式有严格的要求:答案必须以`FINAL ANSWER: [答案]`
 HF_TOKEN=hf_your_token_here
 ```
 
-**方法1:使用HelloAgents自动下载(推荐)**
+<strong>方法1:使用HelloAgents自动下载(推荐)</strong>
 
 HelloAgents会自动处理GAIA数据集的下载和缓存:
 
@@ -1232,13 +1232,13 @@ print(f"加载了 {len(items)} 个测试样本")
 # 输出: 加载了 53 个测试样本 (Level 1)
 ```
 
-**工作原理**
+<strong>工作原理</strong>
 
 - 首次运行时,使用`snapshot_download`下载整个数据集到`./data/gaia/`
 - 数据集包含114个文件(问题、图片、PDF等材料)
 - 后续使用直接从本地加载,速度很快
 
-**数据集目录结构**
+<strong>数据集目录结构</strong>
 ```
 ./data/gaia/
 ├── 2023/
@@ -1252,7 +1252,7 @@ print(f"加载了 {len(items)} 个测试样本")
 └── README.md
 ```
 
-**方法2:手动下载**
+<strong>方法2:手动下载</strong>
 
 如果你想手动下载数据集:
 
@@ -1272,7 +1272,7 @@ snapshot_download(
 )
 ```
 
-**查看数据集统计**
+<strong>查看数据集统计</strong>
 
 ```python
 # 查看数据集统计
@@ -1287,9 +1287,9 @@ print(f"级别分布: {stats['level_distribution']}")
 
 ### 12.3.3 在HelloAgents中实现GAIA评估
 
-与BFCL类似,我们提供两种评估方式,推荐使用**方式1**
+与BFCL类似,我们提供两种评估方式,推荐使用<strong>方式1</strong>
 
-**方式1:使用GAIAEvaluationTool一键评估**
+<strong>方式1:使用GAIAEvaluationTool一键评估</strong>
 
 这是最简单的方式,自动完成数据集下载、评估执行、结果导出和报告生成:
 
@@ -1334,7 +1334,7 @@ print(f"部分匹配率: {results['partial_match_rate']:.2%}")
 print(f"正确数: {results['exact_matches']}/{results['total_samples']}")
 ```
 
-**运行结果:**
+<strong>运行结果:</strong>
 
 ```
 ============================================================
@@ -1390,9 +1390,9 @@ GAIA一键评估
 
 评估完成后会自动生成三类文件:首先是GAIA格式结果文件(`evaluation_results/gaia_official/gaia_level1_result_*.jsonl`),采用JSONL格式(每行一个JSON对象),可直接用于提交到GAIA排行榜;其次是提交说明文件(`evaluation_results/gaia_official/SUBMISSION_GUIDE_*.md`),包含详细的提交步骤、结果文件格式说明和注意事项;最后是评估报告(`evaluation_reports/gaia_report_*.md`),包含评估结果摘要、详细指标、样本详情和可视化图表。
 
-**注意**:如果你发现生成的评估结果不理想(例如准确率较低),这是正常现象。虽然Level 1是一步推理任务,但仍然需要智能体具备工具调用能力(如搜索引擎、计算器等)才能正确回答问题。我们当前使用的SimpleAgent主要用于演示评估流程,在工具调用能力上还有提升空间。
+<strong>注意</strong>:如果你发现生成的评估结果不理想(例如准确率较低),这是正常现象。虽然Level 1是一步推理任务,但仍然需要智能体具备工具调用能力(如搜索引擎、计算器等)才能正确回答问题。我们当前使用的SimpleAgent主要用于演示评估流程,在工具调用能力上还有提升空间。
 
-**方式2:使用Dataset + Evaluator(灵活定制)**
+<strong>方式2:使用Dataset + Evaluator(灵活定制)</strong>
 
 如果需要更细粒度的控制,可以直接使用底层组件:
 
@@ -1460,7 +1460,7 @@ evaluator.export_to_gaia_format(
 - 💡 建议检查工具使用和多步推理能力。
 ```
 
-**生成的GAIA格式结果(`gaia_level1_result_*.jsonl`):**
+**生成的GAIA格式结果(`gaia_level1_result_*.jsonl`):<strong>
 
 ```json
 {"task_id": "e1fc63a2-da7a-432f-be78-7c4a95598703", "model_answer": "24000", "reasoning_trace": "24000"}
@@ -1471,13 +1471,13 @@ evaluator.export_to_gaia_format(
 
 使用GAIAEvaluationTool运行评估后,会在`evaluation_results/gaia_official/`目录下生成提交所需的文件和详细的提交说明。
 
-1. **GAIA格式结果文件**:`gaia_level1_result_*.jsonl`
+1. </strong>GAIA格式结果文件**:`gaia_level1_result_*.jsonl`
    ```json
    {"task_id": "xxx", "model_answer": "答案", "reasoning_trace": "推理过程"}
    {"task_id": "yyy", "model_answer": "答案", "reasoning_trace": "推理过程"}
    ```
 
-2. **提交说明文件**:`SUBMISSION_GUIDE_*.md`
+2. <strong>提交说明文件</strong>:`SUBMISSION_GUIDE_*.md`
 
 打开自动生成的`SUBMISSION_GUIDE_*.md`文件,里面包含完整的提交指南:
 
@@ -1512,7 +1512,7 @@ with open("evaluation_results/gaia_official/gaia_level1_result_*.jsonl", "r") as
 
 GAIA评估系统的实现与BFCL类似,但针对通用能力评估有一些特殊的设计。
 
-**(1)GAIADataset:支持多模态的数据加载器**
+<strong>(1)GAIADataset:支持多模态的数据加载器</strong>
 
 GAIA数据集的特殊之处在于它包含多模态数据(文本、文件、图片等):
 
@@ -1570,9 +1570,9 @@ class GAIADataset:
 
         return items
 ````
-**(2)GAIAEvaluator:实现GAIA官方评估算法**
+<strong>(2)GAIAEvaluator:实现GAIA官方评估算法</strong>
 
-GAIA的评估使用**准精确匹配(Quasi Exact Match)**算法,需要特殊的答案归一化和匹配逻辑:
+GAIA的评估使用<strong>准精确匹配(Quasi Exact Match)</strong>算法,需要特殊的答案归一化和匹配逻辑:
 
 ````python
 class GAIAEvaluator:
@@ -1736,7 +1736,7 @@ def export_to_gaia_format(
             f.write(json.dumps(entry, ensure_ascii=False) + '\n')
 ```
 
-**(3)GAIAEvaluationTool:一键评估工具**
+<strong>(3)GAIAEvaluationTool:一键评估工具</strong>
 
 GAIAEvaluationTool封装了完整的评估流程,提供一键评估功能:
 
@@ -1842,9 +1842,9 @@ AIME是美国数学协会(MAA)主办的中等难度数学竞赛,介于AMC
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/12-figures/12-5.png" alt="" width="85%"/>
   <p>图 12.5 数据生成质量评估流程图</p>
 </div>
-**(1)LLM Judge评估**
+<strong>(1)LLM Judge评估</strong>
 
-**设计动机**:在数据生成质量评估中,我们需要对大量生成的题目进行快速、一致的质量评估。传统的人工评估虽然准确,但成本高、效率低,难以应对大规模数据生成的需求。LLM Judge通过使用大语言模型作为评委,可以自动化地从多个维度评估生成数据的质量,不仅大幅提升评估效率,还能保持评估标准的一致性。更重要的是,LLM Judge可以提供详细的评分理由和改进建议,帮助我们理解生成数据的优缺点,为后续优化提供方向。
+<strong>设计动机</strong>:在数据生成质量评估中,我们需要对大量生成的题目进行快速、一致的质量评估。传统的人工评估虽然准确,但成本高、效率低,难以应对大规模数据生成的需求。LLM Judge通过使用大语言模型作为评委,可以自动化地从多个维度评估生成数据的质量,不仅大幅提升评估效率,还能保持评估标准的一致性。更重要的是,LLM Judge可以提供详细的评分理由和改进建议,帮助我们理解生成数据的优缺点,为后续优化提供方向。
 
 在我们的实现中,LLM Judge从四个关键维度评估AIME题目的质量:
 
@@ -1855,20 +1855,20 @@ AIME是美国数学协会(MAA)主办的中等难度数学竞赛,介于AMC
 
 有了四个维度的评分后,我们需要将这些评分汇总成整体的评估指标。我们定义了三个关键指标来衡量生成题目的质量水平:
 
-**评估指标**
+<strong>评估指标</strong>
 
-**1. 平均分(Average Score)**:计算所有题目在四个维度上的平均得分,反映生成题目的整体质量水平。
+<strong>1. 平均分(Average Score)</strong>:计算所有题目在四个维度上的平均得分,反映生成题目的整体质量水平。
 $$
 \text{Average Score} = \frac{1}{N} \sum_{i=1}^{N} \frac{\sum_{d=1}^{4} S_{i,d}}{4}
 $$
 
-**2. 及格率(Pass Rate)**:统计平均分达到3.5分及以上的题目比例,反映生成题目的基本质量保障。
+<strong>2. 及格率(Pass Rate)</strong>:统计平均分达到3.5分及以上的题目比例,反映生成题目的基本质量保障。
 
 $$
 \text{Pass Rate} = \frac{|\{i : \text{Score}_i \geq 3.5\}|}{N}
 $$
 
-**3. 优秀率(Excellent Rate)**:统计平均分达到4.5分及以上的题目比例,反映生成题目的高质量占比。
+<strong>3. 优秀率(Excellent Rate)</strong>:统计平均分达到4.5分及以上的题目比例,反映生成题目的高质量占比。
 
 $$
 \text{Excellent Rate} = \frac{|\{i : \text{Score}_i \geq 4.5\}|}{N}
@@ -1881,9 +1881,9 @@ $$
 
 这三个指标从不同角度反映生成质量:平均分给出整体水平,及格率保证基本质量,优秀率衡量高质量产出能力。
 
-**(2)Win Rate评估**
+<strong>(2)Win Rate评估</strong>
 
-**设计动机**:虽然LLM Judge可以提供多维度的绝对评分,但我们还需要一个相对评估指标来衡量生成题目与真题的质量差距。Win Rate评估通过成对对比的方式,让LLM直接判断生成题目和真题哪个更好,这种相对比较比绝对评分更符合人类的判断习惯,也更容易发现生成题目的相对优势和劣势。理想情况下,如果生成题目的质量接近真题,Win Rate应该在50%左右(即生成题目和真题各有50%的胜率)。这个指标简单直观,可以快速判断生成系统的整体质量水平。
+<strong>设计动机</strong>:虽然LLM Judge可以提供多维度的绝对评分,但我们还需要一个相对评估指标来衡量生成题目与真题的质量差距。Win Rate评估通过成对对比的方式,让LLM直接判断生成题目和真题哪个更好,这种相对比较比绝对评分更符合人类的判断习惯,也更容易发现生成题目的相对优势和劣势。理想情况下,如果生成题目的质量接近真题,Win Rate应该在50%左右(即生成题目和真题各有50%的胜率)。这个指标简单直观,可以快速判断生成系统的整体质量水平。
 
 在我们的实现中,Win Rate评估通过以下图12.6所示流程进行评估:
 
@@ -1894,21 +1894,21 @@ $$
 
 在成对对比评估中,每次比较会产生三种可能的结果:生成题目获胜(Win)、真题获胜(Loss)或平局(Tie)。我们通过统计这三种结果的比例来评估生成题目的质量:
 
-**评估指标**
+<strong>评估指标</strong>
 
-**1. 胜率(Win Rate)**:生成题目被判定为更好的比例,反映生成题目相对于真题的优势。
+<strong>1. 胜率(Win Rate)</strong>:生成题目被判定为更好的比例,反映生成题目相对于真题的优势。
 
 $$
 \text{Win Rate} = \frac{\text{Wins}}{\text{Total Comparisons}}
 $$
 
-**2. 败率(Loss Rate)**:真题被判定为更好的比例,反映生成题目相对于真题的劣势。
+<strong>2. 败率(Loss Rate)</strong>:真题被判定为更好的比例,反映生成题目相对于真题的劣势。
 
 $$
 \text{Loss Rate} = \frac{\text{Losses}}{\text{Total Comparisons}}
 $$
 
-**3. 平局率(Tie Rate)**:两者被判定为质量相当的比例,反映生成题目与真题的相似程度。
+<strong>3. 平局率(Tie Rate)</strong>:两者被判定为质量相当的比例,反映生成题目与真题的相似程度。
 
 $$
 \text{Tie Rate} = \frac{\text{Ties}}{\text{Total Comparisons}}
@@ -1916,11 +1916,11 @@ $$
 
 其中,Total Comparisons是总的对比次数,Wins、Losses和Ties分别是生成题目获胜、失败和平局的次数。这三个指标满足:Win Rate + Loss Rate + Tie Rate = 100%。
 
-**理想结果**:Win Rate ≈ 50%(说明生成质量接近真题)。如果Win Rate显著低于50%,说明生成题目质量不如真题,需要优化生成策略;如果Win Rate显著高于50%,可能说明生成题目在某些方面超越了真题,或者评估标准存在偏差。
+<strong>理想结果</strong>:Win Rate ≈ 50%(说明生成质量接近真题)。如果Win Rate显著低于50%,说明生成题目质量不如真题,需要优化生成策略;如果Win Rate显著高于50%,可能说明生成题目在某些方面超越了真题,或者评估标准存在偏差。
 
-**(3)人工验证**
+<strong>(3)人工验证</strong>
 
-**设计动机**:尽管LLM Judge和Win Rate可以自动化评估题目质量,但对于数学题目这种需要严格逻辑推理的内容,人工验证仍然是不可或缺的。特别是在评估答案生成质量时,需要人类专家验证答案的准确性、解答步骤的完整性和数学推理的严密性。此外,人工验证还可以发现自动化评估可能遗漏的问题,如题目的创新性、趣味性等主观因素。为了提高人工验证的效率和体验,我们开发了基于Gradio的Web界面,让验证者可以方便地浏览题目、评分、标注状态和添加评论,大大降低了人工验证的门槛。
+<strong>设计动机</strong>:尽管LLM Judge和Win Rate可以自动化评估题目质量,但对于数学题目这种需要严格逻辑推理的内容,人工验证仍然是不可或缺的。特别是在评估答案生成质量时,需要人类专家验证答案的准确性、解答步骤的完整性和数学推理的严密性。此外,人工验证还可以发现自动化评估可能遗漏的问题,如题目的创新性、趣味性等主观因素。为了提高人工验证的效率和体验,我们开发了基于Gradio的Web界面,让验证者可以方便地浏览题目、评分、标注状态和添加评论,大大降低了人工验证的门槛。
 
 在我们的实现中,人工验证通过以下步骤进行:
 
@@ -2133,10 +2133,10 @@ EVALUATION_PROMPT = """请评估以下AIME数学题目的质量。
 
 请从以下4个维度评分(1-5分):
 
-1. **正确性 (Correctness)**:数学逻辑是否正确,答案是否准确
-2. **清晰度 (Clarity)**:问题表述是否清晰,解答是否易懂
-3. **难度匹配 (Difficulty Match)**:难度是否符合AIME标准(中等偏难)
-4. **完整性 (Completeness)**:解答步骤是否完整,是否包含必要的推理
+1. <strong>正确性 (Correctness)</strong>:数学逻辑是否正确,答案是否准确
+2. <strong>清晰度 (Clarity)</strong>:问题表述是否清晰,解答是否易懂
+3. <strong>难度匹配 (Difficulty Match)</strong>:难度是否符合AIME标准(中等偏难)
+4. <strong>完整性 (Completeness)</strong>:解答步骤是否完整,是否包含必要的推理
 
 请按以下JSON格式输出:
 {
@@ -2156,9 +2156,9 @@ EVALUATION_PROMPT = """请评估以下AIME数学题目的质量。
 
 ## 总体评分
 
-- **平均总分**: 4.2/5.0
-- **通过率**: 85.0% (≥3.5分)
-- **优秀率**: 40.0% (≥4.5分)
+- <strong>平均总分</strong>: 4.2/5.0
+- <strong>通过率</strong>: 85.0% (≥3.5分)
+- <strong>优秀率</strong>: 40.0% (≥4.5分)
 
 ## 各维度评分
 
@@ -2306,9 +2306,9 @@ COMPARISON_PROMPT = """请比较以下两个AIME数学题目的质量,判断
 | AIME真题胜出 | 8次 | 40.0% |
 | 平局 | 3次 | 15.0% |
 
-**Win Rate**: 45.0%
+<strong>Win Rate</strong>: 45.0%
 
-✅ **良好**: 生成数据质量接近参考数据(差距<10%)。
+✅ <strong>良好</strong>: 生成数据质量接近参考数据(差距<10%)。
 ```
 
 ### 12.4.6 人工验证界面
@@ -2570,9 +2570,9 @@ python data_generation/run_complete_evaluation.py 30 3.0
 
 ## 1. 基本信息
 
-- **生成时间**: 2025-01-10 12:00:00
-- **生成题目数量**: 30
-- **参考AIME年份**: 2025
+- <strong>生成时间</strong>: 2025-01-10 12:00:00
+- <strong>生成题目数量</strong>: 30
+- <strong>参考AIME年份</strong>: 2025
 
 ## 2. 数据生成统计
 
@@ -2590,9 +2590,9 @@ python data_generation/run_complete_evaluation.py 30 3.0
 
 ### 总体评分
 
-- **平均总分**: 4.2/5.0
-- **通过率**: 85.0% (≥3.5分)
-- **优秀率**: 40.0% (≥4.5分)
+- <strong>平均总分</strong>: 4.2/5.0
+- <strong>通过率</strong>: 85.0% (≥3.5分)
+- <strong>优秀率</strong>: 40.0% (≥4.5分)
 
 ### 各维度评分
 
@@ -2613,18 +2613,18 @@ python data_generation/run_complete_evaluation.py 30 3.0
 | AIME真题胜出 | 8次 | 40.0% |
 | 平局 | 3次 | 15.0% |
 
-**Win Rate**: 45.0%
+<strong>Win Rate</strong>: 45.0%
 
-✅ **良好**: 生成数据质量接近参考数据(差距<10%)。
+✅ <strong>良好</strong>: 生成数据质量接近参考数据(差距<10%)。
 
 ## 5. 综合结论
 
 基于LLM Judge和Win Rate两种评估方法的结果:
 
-1. **LLM Judge评估**: 生成数据的平均质量为 **4.2/5.0**
-2. **Win Rate评估**: 生成数据相对于AIME 2025真题的胜率为 **45.0%**
+1. <strong>LLM Judge评估</strong>: 生成数据的平均质量为 <strong>4.2/5.0</strong>
+2. <strong>Win Rate评估</strong>: 生成数据相对于AIME 2025真题的胜率为 <strong>45.0%</strong>
 
-✅ **结论**: 生成数据质量**优秀**,达到或超过AIME真题水平。可以用于实际应用。
+✅ <strong>结论</strong>: 生成数据质量<strong>优秀</strong>,达到或超过AIME真题水平。可以用于实际应用。
 
 ## 6. 改进建议
 
@@ -2634,11 +2634,11 @@ python data_generation/run_complete_evaluation.py 30 3.0
 
 ## 7. 下一步行动
 
-1. **人工验证**: 运行 `python data_generation/human_verification_ui.py <data_path>` 进行人工验证
-2. **查看详细结果**:
+1. <strong>人工验证</strong>: 运行 `python data_generation/human_verification_ui.py <data_path>` 进行人工验证
+2. <strong>查看详细结果</strong>:
    - LLM Judge详细报告
    - Win Rate详细报告
-3. **数据使用**: 如果质量满意,可以将生成的数据用于训练或测试
+3. <strong>数据使用</strong>: 如果质量满意,可以将生成的数据用于训练或测试
 ```
 
 基于实际使用经验,总结以下内容:
@@ -2656,19 +2656,19 @@ python data_generation/run_complete_evaluation.py 30 3.0
 
 在本章中,我们为HelloAgents框架构建了一个完整的性能评估系统。让我们回顾一下学到的核心内容:
 
-**(1)评估体系概览**
+<strong>(1)评估体系概览</strong>
 
 我们建立了一个三层评估体系,全面覆盖智能体的不同能力维度。首先是工具调用能力评估(BFCL),专注于评估智能体的函数调用准确性,包含simple、multiple、parallel、irrelevance四个类别,使用AST匹配技术进行精确评估。其次是通用能力评估(GAIA),评估智能体的综合问题解决能力,包含三个难度级别共466个真实世界问题,关注多步推理、工具使用、文件处理等能力。第三是数据生成质量评估(AIME),评估LLM生成数据的质量,使用LLM Judge和Win Rate两种方法,支持人工验证和综合报告生成,确保生成数据达到参考数据的质量标准。
 
-**(2)核心技术要点**
+<strong>(2)核心技术要点</strong>
 
 在技术实现上,我们采用了六个核心技术要点。首先是模块化设计,评估系统采用三层架构:数据层(Dataset负责数据加载和管理)、评估层(Evaluator负责执行评估流程)和指标层(Metrics负责计算各种评估指标)。其次是工具化封装,所有评估功能都封装成Tool,可以被智能体直接调用、集成到工作流中或通过统一接口使用。第三是AST匹配技术,使用抽象语法树匹配函数调用,比简单字符串匹配更智能,能够忽略参数顺序、识别等价表达式和忽略格式差异。第四是多模态支持,GAIA评估支持文本问题、附件文件和图片输入等多模态数据。第五是LLM Judge评估,使用LLM作为评委评估生成数据质量,提供多维度评分(正确性、清晰度、难度匹配、完整性)、自动化评估流程、详细评估报告,并支持自定义评估维度和标准。第六是Win Rate对比评估,通过成对对比评估生成质量(生成数据vs参考数据),由LLM判断哪个更好并计算胜率统计,接近50%表示质量相当。
 
-**(3)扩展方向**
+<strong>(3)扩展方向</strong>
 
 基于本章的评估系统,你可以在四个方向上进行扩展。首先是添加新的评估基准,可以参考BFCL和GAIA的实现模式,实现Dataset、Evaluator、Metrics三个组件,并封装成Tool供使用。其次是自定义评估指标,在Metrics类中添加新的指标计算方法,根据具体应用场景设计指标。第三是集成到CI/CD流程,在代码提交时自动运行评估,设置性能阈值防止性能退化,生成评估报告并归档。第四是扩展数据生成评估,支持更多数据类型(代码、对话、文档等),添加更多评估维度(创新性、多样性等),集成更多参考数据集,支持多模型对比评估。
 
-**恭喜你完成了第十二章的学习!** 🎉
+<strong>恭喜你完成了第十二章的学习!</strong> 🎉
 
 评估是智能体开发的重要环节,它让我们能够:
 
@@ -2678,7 +2678,7 @@ python data_generation/run_complete_evaluation.py 30 3.0
 
 在下一章中,我们将探讨如何将HelloAgents框架应用于实际项目中。
 
-**继续加油!** 💪
+<strong>继续加油!</strong> 💪