深入VAKRA:智能体的推理、工具使用与失败模式

Hugging Face:Blog(RSS)·2026-04-15 20:07·136天前
AI 导读

IBM Research在Hugging Face发布的博客详细剖析了其智能体框架VAKRA的核心机制。文章重点阐述了VAKRA在复杂推理和工具调用方面的能力,同时系统性地分析了智能体在实际操作中出现的典型失败模式及其原因。该研究旨在通过深入理解智能体的行为逻辑与局限,推动更可靠、鲁棒的自主智能系统发展。

Hugging Face:Blog(RSS)
精选
71AI 编辑部评分,满分 100

深入VAKRA:智能体的推理、工具使用与失败模式

2026-04-15 20:07· 136天前
AI 导读

IBM Research在Hugging Face发布的博客详细剖析了其智能体框架VAKRA的核心机制。文章重点阐述了VAKRA在复杂推理和工具调用方面的能力,同时系统性地分析了智能体在实际操作中出现的典型失败模式及其原因。该研究旨在通过深入理解智能体的行为逻辑与局限,推动更可靠、鲁棒的自主智能系统发展。

推荐理由

VAKRA 不只是另一个 agent benchmark,它把真实企业环境的 API 链、多跳推理和工具使用策略糅合到一起,目前模型普遍翻车,失败模式分析对做 agent 的团队是一份很好的诊断清单。

正文 · AI 翻译

我们近期推出了 VAKRA,这是一个基于工具、可执行的基准测试,用于评估 AI 智能体在企业级环境中进行推理和行动的能力。

与测试单一技能的传统基准不同,VAKRA 衡量的是跨 API 和文档的组合推理能力,它利用完整的执行轨迹来评估智能体能否可靠地完成多步骤工作流。

VAKRA 提供了一个可执行环境,智能体在其中与超过 8000 个本地托管的 API 进行交互,这些 API 背后是覆盖 62 个领域的真实数据库,同时还配有与领域对齐的文档集合。任务可能需要 3 到 7 步的推理链,在自然语言工具使用约束下,将结构化 API 交互与非结构化检索结合起来。

如下所示,模型在 VAKRA 上的表现不佳——在这篇博客中,我们提供了关于 VAKRA 中任务的额外数据集细节,并分析了我们在不同任务上观察到的失败模式。


任务描述

如下所示,VAKRA 基准测试包含四个任务,每个任务测试不同的能力集。

图 1:VAKRA 基准测试中各项能力的代表性示例

能力 1:使用商业智能 API 进行 API 链式调用

该能力包含覆盖 54 个领域的 2077 个测试实例,需要使用来自 SLOT-BIRD 和 SEL-BIRD 集合中的工具(Elder 等人,2026 年)。与 Elder 等人的设置相比,SLOT-BIRD 和 SEL-BIRD 中的工具范围通过纳入更多领域而得到了扩展。每个领域仅限于一个工具集合,任务涉及链式调用 1 到 12 次工具以得出最终答案。

{
  "query": "Which football team has a build-up play speed of 31, build-up plan dribbling of 53, and build-up play passing of 32?",
  "tool_calls":[
      {
        "name": "get_data",
        "arguments":{"tool_universe_id="486ea46224d1-aeb8037c5e78"},
        "label": "retrieved_data_1"
      },
      {
        "name": "select_data_equal_to",
        "arguments":{"data_label":"retrieved_data_1","key_name":"play_speed","value":31},
        "label": "FILTERED_DF_0"
      },
      {
        "name": "select_data_equal_to",
        "arguments":{"data_label":"FILTERED_DF_0","key_name":"play_dribble","value":53},
        "label": "FILTERED_DF_1"
      },
      {
        "name": "select_data_equal_to",
        "arguments":{"data_label":"FILTERED_DF_1","key_name":"play_passing","value":32},
        "label": "FILTERED_DF_2"
      },
      {"name":{get_team_name},"arguments":{"data_label":"FILTERED_DF_2","n":1}}}],
  "answer": "FC Barcelona"
}

图 2:来自 SEL-BIRD 集合的数据样本

如上所示,每个实例都有一个关联的 JSON 数据源,答案必须从中推导得出。支持此任务的 MCP 服务器包含一个名为 `get_data(tool_universe_id=id)` 的特殊工具,该工具必须在每个实例开始时调用。此工具会初始化数据源,返回数据的轻量级预览(见下方图 3),并将完整数据集存储在服务器端,以避免大量数据传输。这防止了通过 MCP 协议低效传输大数据。该调用还会根据 `tool_universe_id` 配置 MCP 服务器,以暴露相应的工具集,并将数据源与该实例的特定领域数据库对齐。

SLOT-BIRD 集合提供了一组共 7 个用于通用数据操作(例如过滤、排序)的全局工具,其灵感来源于 Tableau 和 Google Analytics 等系统。SEL-BIRD 集合在此基础上进行了扩展,引入了更专门的工具:其中一些工具与 SLOT-BIRD 共享,而另一些则是通过将分类参数扁平化为独立函数而衍生出来的(例如,带有参数 `ascending: bool = False` 的 `sort_data` 变成了 `sort_data_ascending` 和 `sort_data_descending`)。此外,SLOT-BIRD 中的通用 `retrieve_data` 函数被替换为特定于查询的 getter 函数。给定实例数据中的每个键都有一个关联的 `get` 函数(`get_KEY_NAME`),平均每个实例有 4 个 get 函数。

{
  "handle": "retrieved_data_1",
  "num_records": 2,
  "key_details": [
    {"name": "team_name", "dtype": "str", "first_3_values": ["FC Barcelona", "Manchester City"]},
    {"name": "play_speed", "dtype": "int32", "first_3_values": [31, 40]},
    {"name": "play_dribble", "dtype": "int32", "first_3_values": [53, 30]},
    {"name": "play_passing", "dtype": "int32", "first_3_values": [32, 16]}
  ]}

图 3:从 `get_data` 函数获取的数据预览


能力 2:使用仪表盘 API 进行工具选择

此能力包含横跨 17 个领域的 1,597 个实例,需要使用来自扩展后的 REST-BIRD 集合(Elder 等人)中的工具。这些工具采用端点式接口,提供高度具体、与查询对齐的端点,封装了大部分计算逻辑。它们作为运行在 FastAPI 服务器中的 REST API 提供服务,该服务器由 MCP 服务器封装。此任务需要从特定领域的工具集中选择正确的 API(如图 1 示例所示)。每个领域包含最少 6 个、最多 328 个工具(平均 116 个工具)。与上一个任务类似,`get_data` 工具会配置 MCP 服务器,使其仅暴露相关的领域特定 API。

OpenAI API 规范将工具列表输入的最大长度限制为 128 个工具。这一限制要求使用该 API 的智能体构建者通过精简机制直接管理工具列表的长度。在我们仓库中的基线智能体中,一个简单的精简功能即可应对这一挑战。


能力 3:基于仪表盘 API 的多跳推理

基准测试的“能力 3”部分包含来自 38 个学科领域的 869 个测试实例。这些实例再次依赖 REST-BIRD API 集合,但在挑战中增加了多跳推理(参见图 1 中的示例)。多跳问题需要提取并组合多条支撑证据才能得出答案。该部分的实例需要 1 到 5 次逻辑跳转才能回答一个查询。测试数据集中查询的问题类型分布如下方图 4 所示。

图 4:能力 3(多跳)的 API 跳转类型分布,以及能力 4(多跳多源推理)的混合跳转类型分布

能力 4:多跳、多源推理与策略遵循

能力 4 包含来自 41 个领域的 644 个实例,同样基于 REST-BIRD API 集合构建。上方的图 4 展示了无策略测试查询的混合跳转分布。该部分包含最复杂的查询,具有以下特征:

多源:该部分为每个领域增加了文档索引。此能力中的查询可能需要同时从这些文档索引和 API 调用中获取信息。与能力 3 类似,该任务也包含多跳查询。所需的信息源在每一跳级别上应用,例如,一个问题可能涉及三次逻辑跳转,其来源依次为:API - RAG(文档检索)- API。为确保推理正确,在数据生成过程中对来源进行了去污染处理,即给定一跳所需的信息仅在一个来源中可用。例如,如果某一跳需要通过 API 来回答,则文档索引会通过移除可能包含回答问题所需信息的文档来构建。

多轮对话:数据集的这一部分还向场景中加入了多轮对话。每个实例都是一个包含多轮交互的对话。数据以上下文-回复对的形式发布,其中上下文编码了当前的对话历史,而智能体仅负责回答当前轮次的问题。

工具使用策略:这些实例中的一部分包含了智能体需要遵循的工具使用策略。这些策略以纯文本指令的形式呈现,规定了智能体允许访问的知识来源以及在何种情况下可以访问。例如:

If a user's query pertains to Technology & Software, which is/are about Topics focusing on codebases,
software platforms, applications, and user interactions in tech, make sure you try answering them by
only using document retrievers. Do not use other types of tools.

项目仓库中的基线智能体通过在提示词中简单添加以下内容来强制遵守这些策略:“你是一个可以访问工具的有用助手。\n 工具使用约束:{additional_instructions}。”当然,智能体构建者可以自由选择任何约束执行机制。


评估框架

VAKRA 在工具环境中评估智能体,其成功与否取决于执行连贯的多步骤工作流的能力以及答案的正确性。我们引入了一个以执行为中心的评估框架,该框架不仅评估最终输出,还评估完整的工具执行轨迹,包括工具调用、输入和中间结果。

评估指标

VAKRA 评估器针对每个样本处理两个关键输入:预测的最终回复和相应的工具调用轨迹。预测轨迹中的工具调用在与真实情况相同的环境中执行,以验证中间工具输出。

评估遵循一个瀑布式流程(图 6),其中后续阶段取决于前一个阶段的成功:

  • 对于能力 4 的任务,首先通过编程方式验证策略遵守情况(此步骤不适用于其他能力)。
  • 然后,将预测的工具调用序列与真实序列进行比较。
  • 只有轨迹有效的样本才会进入最终回复评估阶段。

图 6:瀑布式评估流程

工具序列对比 由于存在可执行环境,智能体可以探索环境,有时会通过调用一组与我们识别出的不同的 API 来返回答案。为了支持替代但有效的工具调用和推理路径,正确性评估是通过执行每个预测的工具,并将工具响应集与真实标注的响应集进行比较来完成的(而不是强制执行严格的步骤级匹配)。

具体来说,我们首先执行程序化检查,验证预测的工具响应是否包含了真实标注工具响应中的所有信息。在涉及部分匹配、语义等价或表示方式差异(例如顺序、聚合或格式)的情况下,此检查可能无法得出明确结论。在这种情况下,我们采用基于大语言模型的二次评估,该方法改编自 CRAG 框架(Yang 等人,2024),以确定预测的轨迹是否检索到了所有必要信息,即使存在结构差异。此步骤使用一个改编后的提示词,来判断预测的轨迹是否捕获了所有必要信息,即使是通过不同的工具调用序列获得的。

最终响应评估 对于通过上一检查的轨迹,最终响应将使用基于大语言模型的评判器进行评估。此步骤确保响应(i)基于预测的工具输出,并且(ii)在事实上与真实标注答案保持一致,同时考虑到措辞或结构上的潜在差异。

这种设计确保智能体不仅因生成正确答案而获得奖励,也因其通过有效且完整的推理过程获得答案而获得奖励。

评分

每项能力权重相同,以得出最终的排行榜分数

$$ \text{排行榜分数} = \frac{1}{4} \sum_{n = 1}^{4} \text{能力}_{n} $$

排行榜分数 = 1/4 * (能力1 + 能力2 + 能力3 + 能力4)

为了获得能力分数,对于能力 1 到 3,每项能力内的每个样本权重相同。

$$ \text{能力}_{1 - 3} = \frac{\text{正确查询数}}{\text{总查询数}} $$

能力 1−3 = #总查询数 / #正确查询数

对于能力 4,我们对异构查询赋予更高权重:

$$ \text{能力}_{4} = \frac{# \text{ 正确多源查询} \times 2 + # \text{ 正确仅 API 或仅 RAG 查询}}{# \text{ 总多源查询} \times 2 + # \text{ 总仅 API 或仅 RAG 查询}} $$

能力 4 = #总多源查询 × 2 + #总仅 API 或仅 RAG 查询 / #正确多源查询 × 2 + #正确仅 API 或仅 RAG 查询


错误分析

现在我们针对 VAKRA 的四项能力进行详细的错误分析。为便于分析,我们采用分阶段错误分类法,将每次失败归因于首次出现问题的环节。具体来说,我们按顺序评估:(i) 是否选择了正确的工具,(ii) 是否提供了必需的参数且无遗漏或幻觉,(iii) 参数值是否正确,以及 (iv) 最终回答是否准确且基于工具输出。

失败阶段隔离

由于单个样本可能在不同步骤出现多个错误,我们按顺序将每个实例归类到最早失败的阶段(例如,工具选择错误优先于参数错误)。这避免了重复计数,并使错误类别可被解释为数据集中互不相交的部分。虽然可能存在更细粒度的指标(例如,工具使用上的精确率/召回率)(Elder 等人,2026),但我们发现这种表述方式能提供一种简单且可解释的智能体失败分解。

基准测试的这一部分中的实例需要选择并排序多个工具以完成单个任务。我们在此能力中有 2077 个样本。这对所有模型都具有挑战性,但 GPT-OSS-120B 在该基准测试的这一部分表现最佳。

  • GPT-OSS-120B 以较大优势超越了其他模型,这主要归功于其对工具模式(tool schemas)有更好的理解。
  • 基准测试这一部分涉及的工具包含大量参数,其中许多是可选的,而与其他模型相比,GPT-OSS-120B 在正确选择要填充的参数方面表现尤为稳健。
  • 总体而言,在正确完成所有工具调用后合成正确答案,在这一部分基准测试中挑战性较低,这很可能是因为工具调用顺序使得工具选择问题比仪表盘 API 能力更不容易通过猜测来解决。

图 7:SEL-BIRD 与 SLOT-BIRD 错误类型分析

商业智能(BI)API 能力包含两组 API,分别来自 SLOT-BIRD 和 SEL-BIRD 工具集合。该基准测试的 SEL 部分有 600 个样本,而 SLOT 部分有 1477 个样本。这两个集合被归入 BI API 能力之下,但特征略有不同。SLOT-BIRD 集合包含数量较少但通用性较强的工具,每个工具需要填充大量参数值;而 SEL-BIRD 集合则包含更多工具,但每个工具的参数较少。这种侧重点反映在模型使用这两个工具集合时产生的相对错误上。

  • 在使用 SLOT-BIRD 时,除 GPT-OSS-120b 之外的所有模型在正确生成工具参数名称方面都出现了大量错误。这很大程度上是 GPT-OSS-120b 在该基准测试部分整体表现如此出色的原因。
  • 由于需要填充的参数较少,同样的模型在使用 SEL-BIRD 工具集合时几乎未出现此类错误,但它们在正确选择工具方面犯了更多错误,这反映出从更大(且动态)的工具集中进行选择的难度增加了。
  • 如上所示,在工具选择能力的 1597 个样本中,Gemini-3-flash-preview 在所有错误类别上的表现均优于其他受测模型。
  • 正如预期的那样,由于仪表盘 API 实例要求模型从大量工具选项中进行选择,但每个工具只需要少量参数,因此在工具选择和参数值选择方面出现了大量错误。
  • 在模型幻觉或跳过必需参数方面似乎问题不大。然而,即使所有工具调用都正确执行,模型(尤其是 Gemini-3-flash-preview 和 Claude-Sonnet-4-5)仍然难以从工具响应中综合出正确答案,图表右侧的大幅下降趋势就证明了这一点。

多跳推理:跳数深度对模型性能的影响

图 8:不同模型按跳数深度的准确率对比

多跳推理要求模型成功回答多个隐式关联的问题,每个问题都需要选择并调用正确的 API,从而增加了原始任务的难度。正如预期,所有模型在仅需单次逻辑跳转的问题上表现最佳,而在 2 跳问题上的性能出现下降,在 3 跳及以上问题上性能进一步退化。

多跳多源推理:混合跳数对模型性能的影响

图 9:按交互类型(API、文档检索器、混合)划分的模型准确率

数据集的最后一部分除了其他部分中的工具/API 来源外,还包含了文档来源。这导致实例需要单次或多次 API 调用、单次或多次文档搜索,或者 API 调用与文档搜索的某种组合。

  • 与之前一样,需要单次 API 调用(1 跳 API)的实例与需要多次 API 调用(2 跳 API)的实例在性能上存在显著差异,而加入文档检索器则使任务更具挑战性(RAG 跳数和混合跳数)。
  • 有趣的是,我们发现对于需要单次文档检索器调用(1 跳 RAG)的问题,GPT-OSS-120B 试图直接从参数知识中返回答案,但当问题似乎需要多跳时,它则会回答问题。我们推测,由于 1 跳 RAG 的问题高度集中于维基百科实体,模型跳过了工具调用(我们在 1 跳 API 中未发现此问题,因为后端数据库特定的实体/事实可能更频繁地出现在问题中)。
  • 有趣的是,Gemini-3-flash-preview 在 2 跳 API-RAG 上的性能相比其他混合跳数模式有显著提升。这很可能是因为 Gemini-3-flash-preview 在仪表盘 API(工具选择能力)上表现相对较强,因此,一旦通过工具调用确定了正确的中间答案,检索查询的成功率也会更高。

策略对模型性能的影响

图 10:按策略类型划分的模型准确率

策略在多跳、多源推理的基础上增加了额外的难度层。当策略与回答问题所需的来源一致时,即它们不影响模型回答问题所需的工具列表,我们称之为“答案无需更新”——如图 10 所示,除 Granite-4.0-h-Small-32B 外,所有模型在限制访问最相关信息源的策略约束下(即“策略更新了答案”),性能都出现了明显下降。

总体而言,我们发现模型要么违反约束,要么未能检索到足够的信息,有时它们理解了策略但无法正确回答问题,或者表现出之前分析过的某种失败模式。

总的来说,工具使用受策略约束的环境表明,虽然模型能够对工具和来源进行推理,但它们难以将外部约束纳入这种推理中——而这往往是实现可靠现实世界部署的关键要求。


结论

VAKRA 揭示了表面工具能力与稳健的端到端智能体可靠性之间的关键差距。尽管现代模型越来越能够选择 API 并执行孤立的工具调用,但 VAKRA 表明,仅凭这些能力不足以应对现实世界的部署。在实践中,当模型需要在执行约束下进行组合推理时——涉及 API、文档、对话上下文和策略要求——它们往往会崩溃。

试试 VAKRA——你的智能体在哪里崩溃?

认为你的智能体很可靠?那就来测试一下。

在 VAKRA 上运行它,看看它在哪个环节崩溃——是工具选择、多跳推理,还是策略约束。

  • ⭐ 提交到排行榜:https://github.com/IBM/vakra?tab=readme-ov-file#submitting-to-the-live-leaderboard
  • 📦 探索数据集:https://huggingface.co/datasets/ibm-research/VAKRA
  • 🛠️ 查看代码:https://github.com/IBM/vakra

👉 试试看,并告诉我们你的智能体学到了什么

来源:Hugging Face:Blog(RSS)· huggingface.co