如何评估工具调用智能体 - Arize AI
来源: https://arize.com/blog/how-to-evaluate-tool-calling-agents/ 抓取时间: 2026-07-21 16:22:55

如何评估工具调用智能体
发布于 2026 年 3 月 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 - "在日本处理小费的最佳方式是什么?" → 无需工具
评估工作流
整个循环如下:
- 将数据集和提示词上传到 Phoenix(通过设置笔记本完成)
- 在 Phoenix 游乐场中使用助理提示词运行实验
- 从预建模板中添加评估器或编写自己的评估器
- 使用每个示例的解释检查示例级别的失败
- 迭代——更新助理提示词或评估器提示词,重新运行并比较
步骤 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 高级 AI 工程师
- [](//www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Farize.com%2Fblog%2Fhow-to-evaluate-tool-calling-agents%2F&title=How to Evaluate Tool-Calling Agents)
- [](//twitter.com/intent/tweet?url=https%3A%2F%2Farize.com%2Fblog%2Fhow-to-evaluate-tool-calling-agents%2F&text=How to Evaluate Tool-Calling Agents)
- 已复制