近年来,大型语言模型 (LLM) 的能力呈爆炸式增长,但它们仍有一个关键的局限性: 它们受限于其训练数据。为了解决现实世界的问题——比如查询天气、检索数据库或执行复杂的数学运算——LLM 需要使用外部工具。
训练模型使用工具 (API) 通常需要海量包含指令及其对应 API 调用的数据。由于人工创建这些数据的成本高昂,研究人员严重依赖由其他 LLM (如 GPT-4) 生成的合成数据 。
但问题也随之而来: 如果老师教错了怎么办?
如果用于训练这些模型的合成数据包含错误,生成的模型就会学习这些错误。在一篇题为 “Quality Matters: Evaluating Synthetic Data for Tool-Using LLMs” 的引人入胜的研究论文中,来自亚马逊和以色列理工学院的研究人员调查了这一问题。他们提出了严格的数据质量评估方法,并展示了一个反直觉的发现: 在一个微小且高质量的数据集上进行训练,其效果往往优于在一个庞大但未经验证的数据集上进行训练。
在这篇文章中,我们将剖析他们的方法论、用于衡量质量的具体指标,以及这对工具使用型 AI 未来的影响。

背景: 工具使用型 LLM 与合成数据
在深入探讨解决方案之前,我们需要了解相关的生态系统。一个使用工具的 LLM 通常在一个循环中运行:
- 用户指令: 用户提出问题 (例如,“里斯本的天气怎么样?”) 。
- 规划/API 调用: 模型从提供的列表中选择一个工具,并生成 API 调用 (例如,
get_weather(city='Lisbon')) 。 - 响应: 模型接收 API 输出并生成最终的自然语言回答。
为了训练这些模型,研究人员创建了像 ToolBench 和 ToolAlpaca 这样的基准测试。例如,ToolBench 规模巨大,包含源自真实世界 API 的 125,000 个训练实例。ToolAlpaca 规模较小,但使用了合成文档。

如上表 1 所示,这些数据集在规模和复杂性上各不相同。然而,它们有一个共同特点: 它们是使用 LLM (如 ChatGPT) 构建的,用于生成指令和解决方案。这篇论文的研究人员认为,如果缺乏系统的质量检查,这些数据集可能充满噪声,从而阻碍模型的学习过程。
方法一: 内在质量评估
作者提出的第一种方法是内在评估 (Intrinsic Evaluation) 。 这涉及定义具体的、人类可理解的标准来衡量数据点的“好坏”,然后根据这些标准对数据进行评估。
研究人员将一个训练实例分解为两部分: 指令 (用户说的话) 和 API 调用序列 (模型应该做的事) 。
1. 指令属性 (Instruction Properties)
只有清晰且可执行的指令才对训练有用。作者指出了合成指令中的三个主要陷阱:
- 特异性 (Specificity) : 指令是否包含所有必要的参数?如果 API 需要城市名称,但用户只问“天气怎么样?”,模型在不产生幻觉的情况下无法生成有效的 API 调用。
- 连贯性 (Coherence) : 这些请求放在一起有意义吗?合成数据经常将不相关的任务混合在一起 (例如,“检查我的邮件,并计算 5 的平方根”) 。
- 可解性 (Solvability) : 可用工具能否真正解决用户的问题?
下表 2 提供了标准数据集中发现的此类错误的极佳示例。

2. API 调用序列属性 (API-Call Sequence Properties)
即使指令是完美的,教师 LLM 生成的“地面实况” (Ground Truth) 解决方案也可能是错的。这里的标准是:
- 参数对齐 (Parameter Alignment) : 这至关重要。API 调用中的参数必须与指令中的信息相匹配。如果指令说“搜索披萨”,但合成的 API 调用是
search(query='burgers'),模型就会学会幻觉出参数。 - 充分性 (Sufficiency) : 调用序列是否真正解决了问题?
- 最小性 (Minimality) : 是否存在多余的调用? (例如,调用一次就足够了,却调用了同一个 API 两次) 。

自动化评估
人工检查 125,000 个数据点是不可能的。作者通过使用 ChatGPT 作为裁判来自动化这一过程。然而,他们发现简单地问“这具体吗?” (直接提问) 往往会失败。
相反,他们将这些主观问题转化为客观任务。对于特异性 , 他们将其转化为提取任务 。 他们要求评估模型从文本中提取参数。如果模型对必需参数返回 #missing,该实例就会被标记为不具体。

同样,对于连贯性 , 他们使用了“下一句预测”风格的任务来查看请求的流程是否符合逻辑 (图 7) 。

当前数据集的判决
利用这些自动化指标,研究人员审计了 ToolBench 和 ToolAlpaca 数据集。结果令人担忧。

如表 5 所示, ToolBench 的噪声非常大。 近 48% 的训练实例在 API 调用序列中包含错误,33.6% 存在参数对齐问题。这意味着对于三分之一的训练数据,模型正被教导使用错误的参数。ToolAlpaca 的表现稍好,这可能归因于其较小的规模和更简单的结构,但仍然包含显著的错误。
方法二: 上下文评估 (ICE)
内在评估要求我们要定义严格的规则。但有时,一个数据点可能在技术上违反了规则,但对学习仍然有用。为了捕捉这一点,作者提出了第二种模型驱动的指标,称为上下文评估 (In-Context Evaluation, ICE) 。
这个想法依赖于上下文学习的概念。如果一个训练示例具有“教育意义”,那么在提示词中将其作为少样本 (few-shot) 示例使用,应该能帮助 LLM 解决其他类似问题。
ICE 如何工作
- 取一个训练实例 \(x\) (指令 + API 调用) 。
- 取一组单独的“测试”查询。
- 提示一个模型 (如 LLaMA) 去解决这些测试查询。
- 关键在于 , 将实例 \(x\) 作为演示 (“单样本”示例) 包含在提示词中。
- \(x\) 的 ICE 分数是模型以 \(x\) 为向导时在测试集上达到的准确率。

如果模型在测试集上表现良好,这意味着实例 \(x\) 是一个好老师。如果模型失败,实例 \(x\) 可能包含令人困惑的逻辑或错误。
ICE 分数分布
当将 ICE 应用于数据集时,结果反映了内在评估的结果。ToolAlpaca (质量较高) 显示出较高的 ICE 分数。ToolBench 则显示出大量实例的分数接近于零——表明很大一部分数据集对模型几乎没有提供教育价值。

“少即是多”实验
研究人员有一个假设: 如果我们过滤掉内在指标和 ICE 识别出的坏数据,我们能否用更少的数据训练出更好的模型?
他们使用不同的数据子集微调了 LLaMA-7B (针对 ToolBench) 和 Vicuna-7B (针对 ToolAlpaca) :
- 原始数据: 完整、充满噪声的数据集。
- 随机数据: 随机选择的一小部分数据 (用于测试规模是否有影响) 。
- 高内在质量: 仅包含通过人类定义标准的数据。
- 高 ICE: 仅包含具有高 ICE 分数的数据。
结果
外在评估 (在全新任务上测试最终模型) 有力地证实了这一假设。
在 ToolBench 实验中,原始模型是在大约 73,000 个实例上训练的。研究人员仅在 10,000 个高质量实例 (通过内在过滤选出) 上训练了一个新模型。
- 原始模型 (73k 数据点) : ~45% 通过率
- 过滤后的模型 (10k 数据点) : ~54% 通过率
在仅 14% 的数据规模上训练的模型,其性能超出了原始模型近 10 个百分点。 这从经验上证明了低质量数据会主动损害模型学习工具使用能力。
我们可以通过图 4 可视化这种规模效应。请注意,“High Intrinsic” (绿色) 和“High ICE” (橙色) 线是如何持续优于随机采样 (蓝色) 的。

结论与启示
这篇论文是 LLM 训练“大数据”时代的一记警钟,尤其是对于像工具使用这样的专业任务。
对于学生和从业者来说,主要收获如下:
- 合成数据是一把双刃剑: 虽然它解决了数据稀缺问题,但也引入了噪声。如果不进行过滤,这种噪声会限制模型的性能上限。
- 定义你的指标: 你无法改进你无法衡量的东西。定义像“特异性”和“参数对齐”这样的概念,可以进行有针对性的数据清洗。
- 教育价值 (ICE) : 有时,评估数据的最佳方法是看它是否真正教会了模型。ICE 提供了一种纯粹的数据驱动方法来评估质量,而无需编写复杂的规则。
- 质量 > 数量: 仅仅通过确保训练数据的干净,你可以节省大量的计算资源 (训练 10k vs 73k 示例) 并获得更好的结果。
随着我们迈向更自主的 AI 代理,这些代理的可靠性将严重依赖于它们所消费数据的可靠性。这项工作为确保这种“饮食”尽可能健康提供了一份蓝图。
](https://deep-paper.org/en/paper/2409.16341/images/cover.png)