Phase 6 · 评测安全与生产

如何评估工具调用智能体 - Arize AI

评测·2026/7/21·9 阅读

如何评估工具调用智能体 - Arize AI

来源: https://arize.com/blog/how-to-evaluate-tool-calling-agents/ 抓取时间: 2026-07-21 16:22:55


如何评估工具调用智能体

发布于 2026 年 3 月 2 日

当你给大语言模型访问工具的权限时,你引入了一个新的失败面——它会以两种不同的方式崩溃:

  1. 模型选择了错误的工具(或者本应直接回答时却调用了工具)。
  2. 模型选择了正确的工具,但调用方式不正确——参数错误、缺失参数或幻觉值。

这些是不同的问题,有不同的解决方案。捕获它们需要分别测量它们。

随着工具使用成为生产大语言模型系统的核心,开发者需要一种系统的方法来测量工具调用行为,了解失败的地方,并快速迭代。

Phoenix 包含两个专门为此设计的预建大语言模型评判评估器——加上 UI 中的完整评估工作流,让你无需编写任何代码即可编写提示词、运行实验、添加评估器和比较结果。

本教程使用旅行助理演示逐步介绍完整的工作流:评估器测量什么,如何验证对齐,以及如何使用结果来改进你的助理提示词和评估器。如果你想跟着一起做,可以在这个笔记本中找到确切的数据集、提示词和代码。

演示:AI 旅行助理

为了具体说明,我们将评估一个可以访问六个工具的旅行规划助理:

工具描述
search_flights搜索给定日期两个城市之间的可用航班
get_weather获取某个位置的当前天气或天气预报
search_hotels按给定日期和客人数量查找城市中的酒店
get_directions获取两个位置之间的旅行方向和估计时间
convert_currency将金额从一种货币转换为另一种货币
search_restaurants按菜系或标准查找某个位置的餐厅

我们的评估数据集有 30 个查询,涵盖三种场景:

模式数量描述
单工具18需要一个工具;测试参数提取、隐式日期、歧义表述
并行(2 个工具)10同时需要两个工具;所有 10 个两工具组合都有代表
无需工具2助理应直接回答的一般旅行知识问题

数据集已标记——每个查询都有预期的工具调用(或者对于无需工具的情况为空列表)。这让我们可以在有或没有真实标签的情况下进行评估。

示例查询:

  • "我需要从成田机场到我在新宿的酒店——最佳交通路线是什么?" → get_directions
  • "我计划 9 月去里斯本旅行——帮我找 8 日到 12 日的酒店,并查看 8 日的天气。" → search_hotels + get_weather
  • "在日本处理小费的最佳方式是什么?" → 无需工具

评估工作流

整个循环如下:

  1. 将数据集和提示词上传到 Phoenix(通过设置笔记本完成)
  2. 在 Phoenix 游乐场中使用助理提示词运行实验
  3. 从预建模板中添加评估器或编写自己的评估器
  4. 使用每个示例的解释检查示例级别的失败
  5. 迭代——更新助理提示词或评估器提示词,重新运行并比较

步骤 2-5 都直接在 Phoenix UI 中进行。

两个预建、无参考的工具评估器

Phoenix 附带两个专门为工具调用设计的大语言模型评判评估器。两者都是无参考的——它们从对话上下文中进行推理,而不是与标记的真实标签进行比较,这意味着你可以在任何工具调用大语言模型上运行它们,无需标记数据集。

https://arize.com/wp-content/uploads/2026/03/add-evaluators.mp4

1. 工具选择评估器

回答: 模型是否选择了正确的工具——或者正确地选择了不使用工具?

评估器查看:

  • 用户查询
  • 可用工具列表
  • 模型的输出,包括任何工具调用

它处理单工具调用、并行工具调用以及不应该调用工具的情况。模板包括格式化逻辑,将结构化实验输出转换为评判器可读的格式——在大多数情况下,你不需要修改它。

返回内容: 正确/不正确标签和解释。

失败示例解释: "模型调用了 search_flights,出发地和目的地正确,但使用了 2023 年的日期而不是当前年份,使选择在上下文中不正确。"

唯一的配置步骤是映射数据集的输入列(例如 input.query),以便模板提取正确的字段。

2. 工具调用评估器

工具选择只是故事的一半。即使选择了正确的工具,参数也可能是错误的。

回答: 工具调用是否正确?

这个评估器检查:

  • 所有必需参数是否都存在?
  • 是否有任何参数是幻觉的或与用户意图不一致?
  • 参数值是否与用户实际所说的匹配?

至关重要的是,它独立于选择来评估调用——当你想区分"错误工具"失败和"正确工具,错误参数"失败时,这是一个有用的分离。

你可以使用填入的示例数据预览模板,以在运行前验证映射。

添加自定义评估器

无参考评估器广泛有用,但如果你有标记数据,你可以走得更远。

我们的旅行助理数据集包含每个查询的预期工具调用。我们不使用简单的字符串匹配代码评估器,而是使用自定义大语言模型评估器,它:

  • 比较实际工具调用与预期工具调用
  • 忽略参数顺序差异
  • 推理语义等价

大语言模型评判器在这里是正确的工具,因为工具调用参数不适合精确匹配——像"CDG 机场"和"戴高乐机场"这样的值在字符串比较无法捕获的方式上是等价的。

自定义评估器提示词要求评判器比较输出工具调用与参考调用,并返回正确或不正确以及解释。

初步结果:解读实验

第一次实验运行后,分数如下:

  • 工具选择: 100%——模型始终选择了正确的工具
  • 工具调用: 较低——某些参数错误或幻觉
  • 与预期匹配: 0.36——只有 36% 的调用与真实标签匹配

36% 的真实标签匹配听起来令人担忧,但每个示例的解释讲述了一个更细致的故事。

https://arize.com/wp-content/uploads/2026/03/explanation-shot.mp4

迭代:失败揭示了什么

评估的真正价值在于失败案例。出现了三种不同的模式。

失败 1:年份错误(提示词问题 → 修复系统提示词)

对于航班搜索查询,评判器标记了不匹配: "预期的工具调用使用 2025 年的日期,但模型调用 search_flights 时使用了 2023 年的日期。"

模型默认使用其训练数据中嵌入的年份,而不是当前年份。修复方法:在系统提示词中添加一行: "对于所有需要日期的搜索,假设当前年份是 2025 年。"

由于基本的工具调用评估器没有捕获年份错误,我们还更新了它的提示词模板以明确检查这一点:添加一行指定日期参数应使用 2025 年。这是一个定制预建模板以强制执行特定用例约束的示例。

失败 2:CDG 机场 vs 巴黎(评估器校准问题 → 放宽评估器)

对于查询"我住在埃菲尔铁塔附近,需要找到去 CDG 机场的路——也找机场附近的酒店",真实标签期望酒店搜索的 city: "巴黎"。模型使用了 city: "CDG 机场"

评判器将其标记为不匹配。但仔细想想:用户明确要求机场附近的酒店。CDG 机场可以说比仅仅巴黎更忠实地解释了请求。

这是一个评估器太严格的情况,而不是模型的问题。正确的修复不是改变助理——而是调整自定义评估器提示词,以允许位置参数中的合理解释等价。

这是一个常见的模式:早期实验结果揭示了你的评估器需要校准的地方,而不仅仅是你的模型需要改进的地方。

失败 3:"本周末"(能力差距 → 添加工具)

对于像"我需要京都本周末的酒店"这样的查询,工具调用评估器将日期参数标记为不正确: "模型在不知道当前日期的情况下为'本周末'假设了具体日期。这是一个无根据的假设。"

模型尝试并没有错——它只是没有它需要的信息。修复不是改变提示词;而是给助理添加一个 get_current_date 工具,这样当用户说"本周末"或"下周五"之类的话时,它可以进行准确的日期计算。这也会修复我们观察到的第一个失败,即大语言模型不知道当前年份。

迭代后:比较实验

更新系统提示词(年份修复)和工具调用评估器(年份检查)后,我们重新运行实验并在 Phoenix 中并排比较结果。

https://arize.com/wp-content/uploads/2026/03/experiment-compare.mp4

发生了什么变化:

  • 与预期匹配 提高了——年份修复解决了最常见的失败案例
  • 工具调用 分数略有下降——但这是预期和正确的。通过使评估器对日期验证更具体,它现在捕获了之前遗漏的案例。下降反映了更好的测量,而不是更差的性能。

并排实验比较使这些变化可见且可解释——你可以准确地看到哪些示例改进了,哪些回归了,以及为什么。

何时定制模板

预建评估器设计为通用的。它们无需修改即可捕获大多数工具调用问题。但高质量系统通常需要了解你领域的评估器。

定制的常见原因:

  • 特定用例约束:例如,"所有日期搜索应使用当前年份"
  • 更宽松的语义等价:允许"CDG 机场"和"戴高乐机场"匹配
  • 更严格的参数验证:要求特定字段格式或值范围

由于内置模板是完全可编辑的,你可以在保留底层结构的同时调整它们。工作流是:复制模板,添加你的约束,然后重新运行。

之前(默认工具调用评估器):评估必需参数是否存在以及值是否基于用户意图。 之后(针对此用例定制):相同的评估,加上:"假设当前年份是 2025 年。将使用不同年份的任何日期参数标记为不正确。"

总结

本教程涵盖了在 Phoenix 中评估工具调用行为的主要构建块:两个预建评估器(工具选择和工具调用),如何在你有标记数据时添加自定义真实标签评估器,以及如何使用结果迭代你的助理提示词和评估器。

预建模板设计为通用起点——它们可以开箱即用地用于大多数工具调用设置,但当你的用例有特定要求时,它们也可以直接定制。

如果你想自己运行或使用它们作为你自己评估设置的起点,这个演示的数据集和提示词可以在这个笔记本中找到。

Elizabeth Hutton Elizabeth Hutton 高级 AI 工程师

注册我们的通讯 《评估者》——了解最新更新和新资源:

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.