B2 · Tool Use · 测试用例

对应框架维度:B2 Tool Use 状态:初稿 最后更新:2026-04-07


工具说明

当前 agent 接入 49 个工具,分为以下类别:

Built-in (12个)

垂直领域工具 (37个)

关键特性

  1. 地域互斥:中国大陆必须用高德(maps_*),海外必须用 Google Maps,混用会失败
  2. 依赖链:部分工具需要先查询 ID 再使用(如 beike_lookup_city_id → beike_search_resale_housing)
  3. 搜索→详情模式:社交媒体工具需要先搜索拿 ID,再查详情/评论

用例规范

每条用例包含以下字段:

字段 说明
ID 格式:B2-{维度缩写}-{序号}
维度 所属评测维度
难度 简单 / 中等 / 困难
输入 用户消息 + 上下文
期望行为 agent 应该调用哪些工具、参数是什么、执行顺序如何
判定标准 Pass / Fail 的明确条件
评分方式 自动 / LLM-judge
Skill 配置 Group A (无 skill) / Group B (有 skill,列出相关 skill)

一、工具选择准确率(TS: Tool Selection)

是否选了正确的工具(可能有多个合理选项)。

B2-TS-01单一工具明确场景
  • 难度简单
  • 输入
    • 用户消息:查一下明天北京飞成都的机票,一个人
    • 上下文:当前日期为 2026-04-07
  • 期望行为
    • 调用 search_flights
    • 参数:出发地(北京)、目的地(成都)、日期(明天,即当前日期+1天)、人数(1)
    • 不应调用 web_search 或其他工具
  • 判定标准
    • Pass:调用了 search_flights 且参数正确
    • Fail:调用了 web_search / 未调用任何工具 / 参数缺失
  • 评分方式:自动(检查工具名称和参数)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [flight_booking_skill]
B2-TS-02专用工具优于通用工具
  • 难度简单
  • 输入
    • 用户消息:北京明天天气怎么样
    • 上下文:无
  • 期望行为
    • 调用 maps_weather(专用天气查询工具)
    • 参数:city(北京)
    • 不应调用 web_search(虽然也能查到,但专用工具更准确)
  • 判定标准
    • Pass:调用了 maps_weather
    • Fail:调用了 web_search 而非专用工具
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [weather_query_skill]
B2-TS-03地域工具选择(国内)
  • 难度中等
  • 输入
    • 用户消息:帮我查一下从北京南站到首都机场怎么走
    • 上下文:无
  • 期望行为
    • 识别出这是中国大陆境内的导航需求
    • 调用 maps_direction_transit_integrated_by_address(高德地图公共交通路线)
    • 不应调用 Google Maps 相关工具(在中国不可用)
  • 判定标准
    • Pass:调用了高德地图的导航工具(maps_direction_*)
    • Fail:调用了 Google Maps 工具 / 调用了 web_search
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [navigation_skill]
B2-TS-04地域工具选择(海外)
  • 难度中等
  • 输入
    • 用户消息:从东京站到浅草寺怎么走
    • 上下文:无
  • 期望行为
    • 识别出这是日本境内的导航需求(海外)
    • 调用 compute_google_maps_routes
    • 不应调用高德地图工具(在海外不可用)
  • 判定标准
    • Pass:调用了 Google Maps 路线规划工具
    • Fail:调用了高德地图工具 / 调用了 web_search
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [navigation_skill]
B2-TS-05多工具可选,需选最佳
  • 难度困难
  • 输入
    • 用户消息:想买个 iPhone 16,帮我看看淘宝上哪家店性价比高
    • 上下文:无
  • 期望行为
    • 主要工具:taobao_search_products 搜索 iPhone 16
    • 次要工具:可能需要 taobao_get_product_reviews 查看评论
    • 不应调用 web_search(淘宝专用工具更精准)
    • 不应调用微博/知乎搜索(用户明确说了淘宝)
  • 判定标准
    • Pass:调用了 taobao_search_products 且未调用无关工具
    • Fail:调用了 web_search 作为主要工具 / 调用了无关的社交媒体平台
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-TS-06错误工具选择(负面 case)
  • 难度中等
  • 输入
    • 用户消息:帮我查一下北京朝阳区二手房,100 平左右,预算 500 万
    • 上下文:无
  • 期望行为
    • 应该调用 beike 系列工具(beike_lookup_city_id + beike_search_resale_housing
    • 不应调用 web_search(专用房产工具有结构化数据)
    • 不应调用 maps_text_search(那是查 POI 的,不是查房源)
  • 判定标准
    • Pass:调用了 beike 相关工具
    • Fail:调用了 web_search 或 maps 相关工具
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [house_hunting_skill]

二、参数构造准确率(PC: Parameter Construction)

参数是否完整、类型正确、值合理。

B2-PC-01必填参数完整性
  • 难度简单
  • 输入
    • 用户消息:搜一下 AirPods Pro 2
    • 上下文:无
  • 期望行为
    • 调用 taobao_search_products
    • 参数:keyword: "AirPods Pro 2"
    • 其他可选参数(排序、价格区间)可以不填
  • 判定标准
    • Pass:调用了工具且 keyword 参数正确
    • Fail:缺少 keyword 参数 / keyword 为空
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-PC-02时间参数推断
  • 难度中等
  • 输入
    • 用户消息:查下周五北京到上海的机票
    • 上下文:当前日期为 2026-04-07(周一)
  • 期望行为
    • 调用 search_flights
    • 参数中的日期应该是下周五对应的日期(由当前上下文日期推算)
    • 不应询问用户具体日期
  • 判定标准
    • Pass:日期参数为当前上下文日期起下周五对应的日期
    • Fail:日期错误 / 缺少日期参数 / 反问用户日期
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [flight_booking_skill]
B2-PC-03参数类型转换(城市名→ID)
  • 难度困难
  • 输入
    • 用户消息:北京朝阳区有哪些二手房
    • 上下文:无
  • 期望行为
    • 第一步:调用 beike_lookup_city_id,参数 city_name: "北京"
    • 第二步:调用 beike_search_resale_housing,参数 city_id: <从第一步获得>, district: "朝阳区"
    • 不应直接用 "北京" 作为 city_id 调用搜索(类型错误)
  • 判定标准
    • Pass:正确执行了两步调用,city_id 来自 lookup 结果
    • Fail:跳过 lookup 直接搜索 / city_id 参数错误
  • 评分方式:自动(检查调用链)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [house_hunting_skill]
B2-PC-04枚举参数选择
  • 难度中等
  • 输入
    • 用户消息:搜一下淘宝上的机械键盘,按销量排序
    • 上下文:无
  • 期望行为
    • 调用 taobao_search_products
    • 参数:keyword: "机械键盘", sort: "sale" 或类似的销量排序枚举值
    • 不应使用错误的 sort 值(如 "sales_count" 如果 API 不支持)
  • 判定标准
    • Pass:keyword 正确且 sort 参数符合 API 规范
    • Fail:缺少 sort 参数 / sort 值错误
  • 评分方式:自动(检查参数值是否在允许枚举范围内)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-PC-05可选参数合理性
  • 难度中等
  • 输入
    • 用户消息:搜一下三居室的二手房,朝阳区,预算 600 万左右
    • 上下文:已知 city_id 为 110000(北京)
  • 期望行为
    • 调用 beike_search_resale_housing
    • 必填参数:city_id: 110000, district: "朝阳区"
    • 可选参数应合理填写:room_num: 3, price_min: 500, price_max: 700("600 万左右"理解为 500-700 万区间合理)
    • 不应忽略明确提到的筛选条件
  • 判定标准
    • Pass:包含了户型(3 居)和价格区间参数,区间合理
    • Fail:遗漏了户型或价格筛选 / 价格区间不合理(如 600-600)
  • 评分方式:自动 + LLM-judge(判断价格区间是否合理)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [house_hunting_skill]
B2-PC-06参数推断错误(负面 case)
  • 难度困难
  • 输入
    • 用户消息:查一下去曼谷的机票
    • 上下文:无
  • 期望行为
    • 缺少关键参数:出发地、日期
    • 不应自行假设出发地(如默认北京)或日期(如默认明天)
    • 应该询问用户补充信息
  • 判定标准
    • Pass:未调用 search_flights / 询问了出发地和日期
    • Fail:自行假设参数调用了工具
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [flight_booking_skill]
B2-PC-07多轮参数累积
  • 难度中等
  • 输入
    • 对话历史:
      用户:帮我查机票
      Agent:好的,请问您的出发地、目的地和出发日期是?
      用户:上海到东京
      Agent:好的,请问什么时候出发?
      用户:下周五
      
    • 用户消息:(即「下周五」)
    • 上下文:当前日期为 2026-04-07(周一)
  • 期望行为
    • 此时已收集到:出发地(上海)、目的地(东京)、日期(下周五对应的日期)
    • 应立即调用 search_flights,参数包含三轮累积的信息
    • 不应再追问其他信息(如人数可默认为 1)
  • 判定标准
    • Pass:调用了 search_flights,三个参数都正确(上海、东京、下周五对应的日期)
    • Fail:遗漏了之前轮次的参数 / 继续追问已有信息
  • 评分方式:自动(检查工具调用和参数)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [flight_booking_skill]
B2-PC-08多轮参数修正
  • 难度中等
  • 输入
    • messages 注入(执行用):
      [
        {"role": "user", "content": "查一下北京到成都的机票,5 月 1 号"},
        {"role": "assistant", "content": [
          {"type": "text", "text": "好的,为您查询 5 月 1 日北京到成都的机票。"},
          {"type": "tool_use", "id": "toolu_pc08_01", "name": "search_flights", "input": {"origin": "北京", "destination": "成都", "date": "2026-05-01", "passengers": 1}}
        ]},
        {"role": "user", "content": [
          {"type": "tool_result", "tool_use_id": "toolu_pc08_01", "content": "{\"total\": 3, \"flights\": [{\"flight_no\": \"CA4101\", \"airline\": \"中国国际航空\", \"departure_airport\": \"北京首都\", \"arrival_airport\": \"成都天府\", \"departure_time\": \"07:30\", \"arrival_time\": \"10:10\", \"price_cny\": 680}, {\"flight_no\": \"MU5455\", \"airline\": \"中国东方航空\", \"departure_airport\": \"北京首都\", \"arrival_airport\": \"成都双流\", \"departure_time\": \"10:00\", \"arrival_time\": \"12:40\", \"price_cny\": 620}, {\"flight_no\": \"3U8523\", \"airline\": \"四川航空\", \"departure_airport\": \"北京首都\", \"arrival_airport\": \"成都天府\", \"departure_time\": \"14:30\", \"arrival_time\": \"17:05\", \"price_cny\": 550}]}"}
        ]},
        {"role": "assistant", "content": "查询结果如下:\n- CA4101:北京首都 → 成都天府,07:30 → 10:10,价格 ¥680,中国国际航空\n- MU5455:北京首都 → 成都双流,10:00 → 12:40,价格 ¥620,中国东方航空\n- 3U8523:北京首都 → 成都天府,14:30 → 17:05,价格 ¥550,四川航空\n\n请问您要预订哪个航班?"},
        {"role": "user", "content": "不对,我说的是 5 月 10 号"}
      ]
      
  • 期望行为
    • 识别出用户在修正日期参数
    • 使用新日期(5 月 10 号)重新调用 search_flights
    • 保留其他参数(北京、成都)
  • 判定标准
    • Pass:重新调用了 search_flights,日期改为 5 月 10 号,出发地目的地不变
    • Fail:没有重新调用 / 日期仍是 5 月 1 号 / 出发地目的地也被修改了
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [flight_booking_skill]

三、工具链编排(TC: Tool Chaining)

多工具有先后依赖时,顺序和条件是否正确。

B2-TC-01两步依赖(查询 ID → 使用 ID)
  • 难度中等
  • 输入
    • 用户消息:上海有哪些好的二手房小区
    • 上下文:无
  • 期望行为
    • 第一步:beike_lookup_city_id, 参数 city_name: "上海",获得 city_id
    • 第二步:beike_search_communities, 参数 city_id: <第一步结果>
    • 顺序不可颠倒
  • 判定标准
    • Pass:两步顺序正确,第二步使用了第一步的输出
    • Fail:顺序错误 / 跳过第一步 / 第二步未使用第一步的 city_id
  • 评分方式:自动(检查调用 trace)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [house_hunting_skill]
B2-TC-02搜索 → 详情链
  • 难度中等
  • 输入
    • 用户消息:索尼 WH-1000XM5 耳机用户评价怎么样
    • 上下文:无
  • 期望行为
    • 第一步:taobao_search_products, 关键词 "索尼 WH-1000XM5"
    • 第二步:从搜索结果中选一个 product_id
    • 第三步:taobao_get_product_reviews, 参数 product_id: <第二步选择的 ID>
    • 不应跳过搜索直接查评论(因为没有 product_id)
  • 判定标准
    • Pass:三步顺序正确,最终调用了 get_reviews
    • Fail:跳过搜索直接查评论 / 未调用 get_reviews
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-TC-03并行执行(无依赖)
  • 难度中等
  • 输入
    • 用户消息:帮我查下周从北京去成都的机票和酒店
    • 上下文:当前日期为 2026-04-07
  • 期望行为
    • 并行调用(或顺序调用但两者无依赖):
      • search_flights:北京 → 成都
      • search_hotels:成都
    • 两个工具可以同时执行,不应等一个完成再执行另一个
  • 判定标准
    • Pass:两个工具都被调用,机票和酒店信息都出现在输出中
    • Fail:只调用了其中一个 / 两者有不必要的串行依赖
  • 评分方式:自动(检查是否都调用)+ 性能(如果框架支持并行,检查是否并行执行)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [travel_planning_skill]
B2-TC-04三步以上复杂链
  • 难度困难
  • 输入
    • 用户消息:知乎上关于冰岛旅行的攻略问答,找一篇高赞的,看看详细内容
    • 上下文:无
  • 期望行为
    • 第一步:zhihu_search, 关键词 "冰岛旅行攻略"
    • 第二步:从搜索结果中选择点赞数或关注度最高的问答
    • 第三步:zhihu_get_article_detail, 获取完整回答内容
  • 判定标准
    • Pass:至少三步(搜索 → 选择 → 查详情),最终输出了回答内容
    • Fail:跳过了任何必需步骤 / 未能找到高赞问答
  • 评分方式:自动 + LLM-judge(判断是否选了高赞内容)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [social_media_research_skill]
B2-TC-05条件分支执行
  • 难度困难
  • 输入
    • 用户消息:帮我查一下朝阳公园附近的川菜馆,如果有外卖就更好了
    • 上下文:用户在北京
  • 期望行为
    • 第一步:maps_text_searchmaps_around_search,搜索朝阳公园附近的川菜馆
    • 第二步(条件):如果工具支持筛选外卖,在搜索时加条件;如果不支持,在结果中注明哪些有外卖
    • 不应因为「外卖」这个次要需求而放弃主要需求(查川菜馆)
  • 判定标准
    • Pass:查询了川菜馆,对外卖做了处理(筛选或标注)
    • Fail:因为外卖条件导致查询失败 / 完全忽略了外卖需求
  • 评分方式:LLM-judge
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [local_services_skill]
B2-TC-06多轮工具链(搜索→用户选择→查详情)
  • 难度困难
  • 输入
    • messages 注入(执行用):
      [
        {"role": "user", "content": "淘宝搜一下 AirPods Pro"},
        {"role": "assistant", "content": [
          {"type": "text", "text": "好的,为您在淘宝搜索 AirPods Pro。"},
          {"type": "tool_use", "id": "toolu_tc06_01", "name": "taobao_search_products", "input": {"keyword": "AirPods Pro"}}
        ]},
        {"role": "user", "content": [
          {"type": "tool_result", "tool_use_id": "toolu_tc06_01", "content": "{\"total\": 5, \"items\": [{\"product_id\": \"789012345678\", \"title\": \"【官方正品】Apple AirPods Pro 2代(USB-C)主动降噪无线蓝牙耳机\", \"price\": 1799, \"sales\": 32451, \"shop\": \"Apple官方旗舰店\"}, {\"product_id\": \"234567890123\", \"title\": \"Apple AirPods Pro (第二代) 闪电接口版 蓝牙耳机 原装正品\", \"price\": 1699, \"sales\": 18932, \"shop\": \"数码优品旗舰店\"}, {\"product_id\": \"345678901234\", \"title\": \"苹果AirPods Pro 2 支持MagSafe充电 降噪耳机 国行正品\", \"price\": 1749, \"sales\": 9876, \"shop\": \"苹果授权专卖店\"}, {\"product_id\": \"456789012345\", \"title\": \"AirPods Pro 二代 入耳式主动降噪 蓝牙5.3 适配iPhone15\", \"price\": 1650, \"sales\": 5421, \"shop\": \"数码配件专营店\"}, {\"product_id\": \"567890123456\", \"title\": \"【苹果专卖】AirPods Pro 第2代 H2芯片 降噪耳机 USB-C版\", \"price\": 1799, \"sales\": 2103, \"shop\": \"苹果专卖旗舰店\"}]}"}
        ]},
        {"role": "assistant", "content": "为您找到以下商品:\n1. 【官方正品】Apple AirPods Pro 2代(USB-C)主动降噪无线蓝牙耳机 - ¥1,799 - 销量 32,451 - product_id: 789012345678\n2. Apple AirPods Pro (第二代) 闪电接口版 蓝牙耳机 原装正品 - ¥1,699 - 销量 18,932 - product_id: 234567890123\n3. 苹果AirPods Pro 2 支持MagSafe充电 降噪耳机 国行正品 - ¥1,749 - 销量 9,876 - product_id: 345678901234\n4. AirPods Pro 二代 入耳式主动降噪 蓝牙5.3 适配iPhone15 - ¥1,650 - 销量 5,421 - product_id: 456789012345\n5. 【苹果专卖】AirPods Pro 第2代 H2芯片 降噪耳机 USB-C版 - ¥1,799 - 销量 2,103 - product_id: 567890123456\n\n请问您对哪款感兴趣?"},
        {"role": "user", "content": "第二个看起来不错,详细说说"}
      ]
      
  • 期望行为
    • 识别出用户指代的是搜索结果中的第二个商品(product_id: 234567890123)
    • 提取第二个商品的 product_id
    • 调用 taobao_get_product_detail,参数为该 product_id
  • 判定标准
    • Pass:调用了 taobao_get_product_detail,product_id 是第二个商品的 ID
    • Fail:未调用详情工具 / 使用了错误的 product_id / 重新搜索了一遍
  • 评分方式:自动(检查工具调用和 ID 匹配)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-TC-07工具结果引导的工具切换
  • 难度困难
  • 输入
    • messages 注入(执行用):
      [
        {"role": "user", "content": "北京朝阳区有哪些二手房"},
        {"role": "assistant", "content": [
          {"type": "text", "text": "好的,为您搜索北京朝阳区的二手房源。"},
          {"type": "tool_use", "id": "toolu_tc07_01", "name": "beike_lookup_city_id", "input": {"city_name": "北京"}}
        ]},
        {"role": "user", "content": [
          {"type": "tool_result", "tool_use_id": "toolu_tc07_01", "content": "{\"city_id\": 110000, \"city_name\": \"北京\", \"province\": \"北京市\"}"}
        ]},
        {"role": "assistant", "content": [
          {"type": "tool_use", "id": "toolu_tc07_02", "name": "beike_search_resale_housing", "input": {"city_id": 110000, "district": "朝阳区"}}
        ]},
        {"role": "user", "content": [
          {"type": "tool_result", "tool_use_id": "toolu_tc07_02", "content": "{\"total\": 5, \"listings\": [{\"listing_id\": \"bj_ch_001\", \"community_name\": \"望京花园小区\", \"address\": \"朝阳区望京街道望京西路34号\", \"bedrooms\": 3, \"living_rooms\": 2, \"area_sqm\": 128, \"total_price_wan\": 680, \"unit_price\": 53125}, {\"listing_id\": \"bj_ch_002\", \"community_name\": \"雅秀小区\", \"address\": \"朝阳区工体北路3号\", \"bedrooms\": 2, \"living_rooms\": 1, \"area_sqm\": 89, \"total_price_wan\": 520, \"unit_price\": 58427}, {\"listing_id\": \"bj_ch_003\", \"community_name\": \"建外SOHO东区\", \"address\": \"朝阳区建国门外大街39号\", \"bedrooms\": 2, \"living_rooms\": 2, \"area_sqm\": 108, \"total_price_wan\": 760, \"unit_price\": 70370}, {\"listing_id\": \"bj_ch_004\", \"community_name\": \"远洋天地\", \"address\": \"朝阳区光华路9号\", \"bedrooms\": 3, \"living_rooms\": 2, \"area_sqm\": 135, \"total_price_wan\": 890, \"unit_price\": 65926}, {\"listing_id\": \"bj_ch_005\", \"community_name\": \"丽都花园\", \"address\": \"朝阳区酒仙桥路6号\", \"bedrooms\": 4, \"living_rooms\": 2, \"area_sqm\": 160, \"total_price_wan\": 980, \"unit_price\": 61250}]}"}
        ]},
        {"role": "assistant", "content": "为您找到以下房源:\n1. 望京SOHO周边·望京花园小区 - 3室2厅 - 128㎡ - 总价 680万 - 朝阳区望京街道望京西路34号\n2. 三里屯·雅秀小区 - 2室1厅 - 89㎡ - 总价 520万 - 朝阳区工体北路3号\n3. 国贸·建外SOHO东区 - 2室2厅 - 108㎡ - 总价 760万 - 朝阳区建国门外大街39号\n4. CBD·远洋天地 - 3室2厅 - 135㎡ - 总价 890万 - 朝阳区光华路9号\n5. 酒仙桥·丽都花园 - 4室2厅 - 160㎡ - 总价 980万 - 朝阳区酒仙桥路6号\n\n以上房源供您参考,如需了解详情请告知。"},
        {"role": "user", "content": "第一套的小区周边有什么餐厅"}
      ]
      
  • 期望行为
    • 从房源结果中提取第一套的小区名称(望京花园小区)或地址(朝阳区望京街道望京西路34号)
    • 调用 maps_text_searchmaps_around_search,搜索该小区周边的餐厅
    • 不应重新搜索房源
  • 判定标准
    • Pass:调用了地图搜索工具,搜索位置与第一套房源的小区对应
    • Fail:重新调用了房源搜索 / 地图搜索位置错误 / 未调用地图工具
  • 评分方式:自动 + LLM-judge(判断位置是否匹配)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [house_hunting_skill, local_services_skill]

四、工具失败恢复(FR: Failure Recovery)

工具返回错误时,是否有合理的重试/降级策略。

B2-FR-01搜索无结果降级
  • 难度中等
  • 输入
    • 用户消息:淘宝上有没有 2026 款的特斯拉 Model Y
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "taobao_search_products",
        "inject_tool_result": {
          "is_error": false,
          "content": "{\"total\": 0, \"items\": [], \"message\": \"未找到相关商品\"}"
        }
      }
      
  • 期望行为
    • 识别出专用工具搜索失败
    • 降级到 web_search,扩大搜索范围(可能在官网或其他电商平台)
    • 或者告知用户淘宝上搜索不到,建议其他渠道
  • 判定标准
    • Pass:尝试了降级搜索或给出了合理的替代建议
    • Fail:返回「搜索不到」就结束,不做任何尝试
  • 评分方式:LLM-judge
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-FR-02参数错误重试
  • 难度中等
  • 输入
    • 用户消息:查一下广州到北京的机票
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "search_flights",
        "inject_tool_result": {
          "is_error": true,
          "content": "{\"error\": \"MISSING_REQUIRED_PARAMETER\", \"message\": \"缺少必填参数:date(出发日期)。请提供格式为 YYYY-MM-DD 的出发日期后重试。\", \"required_fields\": [\"origin\", \"destination\", \"date\"]}"
        }
      }
      
  • 期望行为
    • 识别出缺少日期参数
    • 询问用户日期或使用合理默认值(如明天)重试
    • 不应直接放弃或把错误抛给用户
  • 判定标准
    • Pass:询问了日期或使用默认值重试成功
    • Fail:返回错误信息就结束 / 没有重试
  • 评分方式:自动(检查是否有第二次调用)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [flight_booking_skill]
B2-FR-03工具不可用切换备选
  • 难度困难
  • 输入
    • 用户消息:帮我查一下故宫明天的天气
    • 上下文:当前日期为 2026-04-07
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "maps_weather",
        "inject_tool_result": {
          "is_error": true,
          "content": "{\"error\": \"INVALID_CITY_PARAMETER\", \"message\": \"城市参数错误:'故宫' 不是有效的城市名称。请传入标准城市名(如:北京、上海、广州)或城市行政区划代码。\", \"param\": \"city\"}"
        }
      }
      
  • 期望行为
    • 识别出「故宫」是北京的一个地点,不是城市
    • 修正参数为 city: "北京" 重试
    • 或者调用 maps_text_search 先定位故宫所在城市,再查天气
  • 判定标准
    • Pass:通过修正参数或切换策略最终查到了北京天气
    • Fail:返回错误就放弃 / 坚持用「故宫」作为城市参数反复失败
  • 评分方式:自动 + LLM-judge
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [weather_query_skill]
B2-FR-04部分失败的优雅处理
  • 难度困难
  • 输入
    • 用户消息:帮我查一下从上海去巴厘岛的机票和当地天气
    • 工具模拟配置(执行用):
      {
        "type": "tool_mock",
        "mocked_calls": [
          {
            "tool": "search_flights",
            "inject_result": {
              "is_error": false,
              "content": "{\"flights\": [{\"flight_no\": \"MU5707\", \"departure\": \"上海浦东 PVG\", \"arrival\": \"巴厘岛 DPS\", \"dep_time\": \"09:30\", \"arr_time\": \"15:45\", \"duration\": \"6h15m\", \"price_cny\": 2180, \"airline\": \"中国东方航空\"}, {\"flight_no\": \"CZ6033\", \"departure\": \"上海浦东 PVG\", \"arrival\": \"巴厘岛 DPS\", \"dep_time\": \"23:55\", \"arr_time\": \"06:20+1\", \"duration\": \"6h25m\", \"price_cny\": 1950, \"airline\": \"中国南方航空\"}]}"
            }
          },
          {
            "tool": "maps_weather",
            "inject_result": {
              "is_error": true,
              "content": "Error: Location 'Bali, Indonesia' is outside the supported geographic coverage area of this weather service. Only mainland China locations are currently supported."
            }
          }
        ]
      }
      
  • 期望行为
    • 输出机票信息(成功的部分)
    • 对于天气,降级到 web_searchcompute_google_maps_routes(可能能查到当地天气)
    • 不应因为天气查询失败就不返回机票信息
  • 判定标准
    • Pass:输出了机票信息,对天气做了降级尝试或说明无法查询
    • Fail:因为天气失败导致整体任务失败 / 只返回成功的部分不说明失败的部分
  • 评分方式:LLM-judge
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [travel_planning_skill]
B2-FR-05多轮错误恢复
  • 难度困难
  • 输入
    • messages 注入(执行用):
      [
        {"role": "user", "content": "查一下去曼谷的机票"},
        {"role": "assistant", "content": "好的,请问您的出发地和出发日期?"},
        {"role": "user", "content": "北京出发,5 月 1 号"},
        {"role": "assistant", "content": [
          {"type": "text", "text": "好的,为您查询 5 月 1 日北京到曼谷的机票。"},
          {"type": "tool_use", "id": "toolu_fr05_01", "name": "search_flights", "input": {"origin": "北京", "destination": "曼谷", "date": "2026-05-01", "passengers": 1}}
        ]},
        {"role": "user", "content": [
          {"type": "tool_result", "tool_use_id": "toolu_fr05_01", "content": "{\"total\": 0, \"flights\": [], \"message\": \"该日期暂无可用航班,可能为节假日售罄或航司停飞,建议查询相邻日期。\"}"}
        ]},
        {"role": "assistant", "content": "抱歉,5 月 1 号北京到曼谷暂时没有查到可用航班,可能是劳动节假期已售罄。您可以考虑查询其他日期。"},
        {"role": "user", "content": "那 5 月 2 号呢"}
      ]
      
  • 期望行为
    • 识别出用户在修改日期参数重试
    • 保留出发地(北京)和目的地(曼谷)
    • 使用新日期(5 月 2 号)重新调用 search_flights
    • 不应重新询问出发地
  • 判定标准
    • Pass:重新调用了 search_flights,日期改为 5 月 2 号,出发地和目的地保持不变
    • Fail:重新询问了出发地 / 未重新调用工具 / 参数错误
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [flight_booking_skill]

五、工具冗余调用(RC: Redundant Calls)

是否存在不必要的重复调用(效率指标)。

B2-RC-01重复调用相同工具
  • 难度简单
  • 输入
    • 用户消息:查一下北京明天天气
  • 期望行为
    • 只应调用一次 maps_weather
    • 不应无故重复调用
  • 判定标准
    • Pass:该工具只被调用一次
    • Fail:调用了 2 次及以上且参数相同
  • 评分方式:自动(检查调用 trace)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [weather_query_skill]
B2-RC-02过度查询详情
  • 难度中等
  • 输入
    • 用户消息:淘宝上 iPhone 16 大概多少钱
  • 期望行为
    • 搜索结果中通常已包含价格信息
    • 不需要逐个查详情,直接从搜索结果提取价格即可
    • 如果需要详情,最多查 1-2 个代表性商品
  • 判定标准
    • Pass:未调用 get_product_detail 或只调用了 1-2 次
    • Fail:调用了 5 次以上 get_product_detail(过度查询)
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-RC-03不必要的工具链
  • 难度中等
  • 输入
    • 用户消息:帮我看看微博热搜第一是什么
  • 期望行为
    • 热搜榜接口返回的数据通常已包含标题
    • 用户只问「是什么」,不需要查详情(除非用户明确要求看内容)
    • 直接返回第一名的标题即可
  • 判定标准
    • Pass:只调用了 weibo_get_hot_search,未调用 get_post_detail
    • Fail:不必要地调用了 get_post_detail
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [social_media_skill]
B2-RC-04已有信息的重复获取
  • 难度困难
  • 输入
    • messages 注入(执行用):
      [
        {"role": "user", "content": "查一下北京明天天气"},
        {"role": "assistant", "content": [
          {"type": "text", "text": "好的,为您查询北京明天(2026-04-08)的天气。"},
          {"type": "tool_use", "id": "toolu_rc04_01", "name": "maps_weather", "input": {"city": "北京", "date": "2026-04-08"}}
        ]},
        {"role": "user", "content": [
          {"type": "tool_result", "tool_use_id": "toolu_rc04_01", "content": "{\"city\": \"北京\", \"date\": \"2026-04-08\", \"weather\": \"晴\", \"temperature_min\": 15, \"temperature_max\": 25, \"wind\": \"东南风3级\", \"humidity\": \"40%\"}"}
        ]},
        {"role": "assistant", "content": "北京明天(4月8日)天气晴朗,气温 15~25°C,东南风3级,湿度40%,适合外出。"},
        {"role": "user", "content": "那后天呢"}
      ]
      
  • 期望行为
    • 直接调用 maps_weather 查询后天的天气(不应重新查询明天)
    • 不应重新查询明天的天气(已经有结果了)
  • 判定标准
    • Pass:只调用了一次 maps_weather,查询后天
    • Fail:重新查询了明天的天气
  • 评分方式:自动
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [weather_query_skill]
B2-RC-05渐进式筛选(避免重复调用)
  • 难度困难
  • 输入
    • messages 注入(执行用):
      [
        {"role": "user", "content": "推荐几款笔记本电脑"},
        {"role": "assistant", "content": [
          {"type": "text", "text": "好的,为您搜索热门笔记本电脑。"},
          {"type": "tool_use", "id": "toolu_rc05_01", "name": "taobao_search_products", "input": {"keyword": "笔记本电脑", "sort": "sale"}}
        ]},
        {"role": "user", "content": [
          {"type": "tool_result", "tool_use_id": "toolu_rc05_01", "content": "{\"total\": 8, \"items\": [{\"product_id\": \"tb_nb_001\", \"title\": \"联想小新 Pro 14 2025款\", \"specs\": \"14英寸 2.8K OLED / i5-13500H / 16GB / 512GB\", \"price\": 4999, \"sales\": 45231, \"weight_kg\": 1.46}, {\"product_id\": \"tb_nb_002\", \"title\": \"苹果 MacBook Air 13 M3 芯片\", \"specs\": \"13.6英寸 Liquid Retina / 8核CPU / 8GB / 256GB\", \"price\": 8499, \"sales\": 38764, \"weight_kg\": 1.24}, {\"product_id\": \"tb_nb_003\", \"title\": \"华为 MateBook D 16 2024款\", \"specs\": \"16英寸 2K / i5-12450H / 16GB / 512GB\", \"price\": 4299, \"sales\": 32105, \"weight_kg\": 1.68}, {\"product_id\": \"tb_nb_004\", \"title\": \"戴尔 XPS 13 Plus\", \"specs\": \"13.4英寸 OLED / i7-1360P / 16GB / 512GB\", \"price\": 10999, \"sales\": 12843, \"weight_kg\": 1.24}, {\"product_id\": \"tb_nb_005\", \"title\": \"华硕 灵耀 X13\", \"specs\": \"13.3英寸 2.8K OLED / R7-7745HX / 16GB / 512GB\", \"price\": 6999, \"sales\": 9876, \"weight_kg\": 1.38}, {\"product_id\": \"tb_nb_006\", \"title\": \"惠普 战66 五代 14\", \"specs\": \"14英寸 2K IPS / i5-1335U / 16GB / 512GB\", \"price\": 3799, \"sales\": 28934, \"weight_kg\": 1.49}, {\"product_id\": \"tb_nb_007\", \"title\": \"ThinkPad X1 Carbon Gen 11\", \"specs\": \"14英寸 2.8K OLED / i7-1365U / 16GB / 1TB\", \"price\": 12999, \"sales\": 7654, \"weight_kg\": 1.12}, {\"product_id\": \"tb_nb_008\", \"title\": \"小米 Book Pro 14 2024款\", \"specs\": \"14英寸 2.8K OLED / i7-13700H / 32GB / 1TB\", \"price\": 6299, \"sales\": 15432, \"weight_kg\": 1.4}]}"}
        ]},
        {"role": "assistant", "content": "为您推荐以下热销笔记本电脑:\n1. 联想小新 Pro 14 2025款 - 14英寸 2.8K OLED 屏 - i5-13500H / 16GB / 512GB - ¥4,999 - 重量 1.46kg\n2. 苹果 MacBook Air 13 M3 芯片 - 13.6英寸 Liquid Retina - 8核CPU/10核GPU / 8GB / 256GB - ¥8,499 - 重量 1.24kg\n3. 华为 MateBook D 16 2024款 - 16英寸 2K 全面屏 - i5-12450H / 16GB / 512GB - ¥4,299 - 重量 1.68kg\n4. 戴尔 XPS 13 Plus - 13.4英寸 OLED - i7-1360P / 16GB / 512GB - ¥10,999 - 重量 1.24kg\n5. 华硕 灵耀 X13 - 13.3英寸 2.8K OLED - R7-7745HX / 16GB / 512GB - ¥6,999 - 重量 1.38kg\n6. 惠普 战66 五代 14 - 14英寸 2K IPS - i5-1335U / 16GB / 512GB - ¥3,799 - 重量 1.49kg\n7. ThinkPad X1 Carbon Gen 11 - 14英寸 2.8K OLED - i7-1365U / 16GB / 1TB - ¥12,999 - 重量 1.12kg\n8. 小米 Book Pro 14 2024款 - 14英寸 2.8K OLED - i7-13700H / 32GB / 1TB - ¥6,299 - 重量 1.4kg\n\n以上均为销量较高的热门机型,请问您更关注哪方面?"},
        {"role": "user", "content": "有没有轻薄一点的"}
      ]
      
  • 期望行为
    • 从之前返回的 8 款笔记本中筛选出轻薄的型号
    • 不应重新调用搜索工具(已有结果可用)
    • 或者如果第一次结果不包含重量信息,才重新调用时加筛选条件
  • 判定标准
    • Pass:未重新调用搜索工具,从已有结果中筛选;或明确说明需要重新搜索才能获得重量信息
    • Fail:无条件重新调用了搜索工具
  • 评分方式:自动(检查是否有第二次搜索调用)+ LLM-judge
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [product_recommendation_skill]

六、多模态工具使用(MM: Multimodal Tool Use)

用户通过图片等多模态输入时,agent 能否选择正确的工具并构造参数。

B2-MM-01图片搜索工具选择
  • 难度简单
  • 输入
    • 用户消息:[上传商品图片] 帮我找这个在淘宝上哪里买
    • 图片: (一双红色 Nike 运动鞋侧面照)
    • 上下文:无
  • 期望行为
    • 直接分析图片识别商品(Nike 跑鞋),调用淘宝搜索工具查询购买渠道
    • 图片搜索或基于识别结果的文字搜索均可接受
  • 判定标准
    • Pass:调用了淘宝搜索工具(图片搜索或文字搜索均可),未要求用户手动描述
    • Fail:要求用户先文字描述商品特征才搜索 / 未调用任何搜索工具
  • 评分方式:自动(检查是否调用搜索工具)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-MM-02图片信息提取参数构造
  • 难度中等
  • 输入
    • 用户消息:[上传价格标签照片] 这个价格正常吗
    • 图片: (商品价格标签特写,标签上显示价格 ¥299)
    • 上下文:无
  • 期望行为
    • 直接读取图片中的价格信息(299 元)
    • 将读取到的价格作为参数,搜索该商品判断价格是否正常
  • 判定标准
    • Pass:正确读取了价格,并用于后续搜索
    • Fail:未读取价格直接给出主观判断 / 读取价格错误
  • 评分方式:自动(检查提取的价格)+ LLM-judge
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true
B2-MM-03图片 + 文字的工具选择
  • 难度中等
  • 输入
    • 用户消息:[上传地图截图] 从这里到故宫怎么走
    • 图片: (北京王府井大街地图截图,图中可见「王府井」路牌和周边街道名称)
    • 上下文:无
  • 期望行为
    • 直接读取截图中的位置信息(识别为王府井)
    • 调用导航工具(maps_direction_*),起点为王府井,终点为故宫
  • 判定标准
    • Pass:调用了导航工具,且起点正确匹配图片中的位置(王府井)
    • Fail:调用了错误的工具类型(如图片搜索)/ 起点位置识别错误
  • 评分方式:自动(检查工具类型 + 起点参数)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true
B2-MM-04多模态工具链
  • 难度困难
  • 输入
    • 用户消息:[上传商品图片] 这个在淘宝上多少钱,评价怎么样
    • 图片: (索尼 WH-1000XM5 头戴式降噪耳机产品图,黑色,正面视角)
    • 上下文:无
  • 期望行为
    • 第一步:直接识别图片商品(索尼 WH-1000XM5),通过搜索获取商品 ID
    • 第二步:taobao_get_product_detail 获取价格
    • 第三步:taobao_get_product_reviews 获取评价
  • 判定标准
    • Pass:三步都完成,最终输出了价格和评价
    • Fail:未识别商品,直接编造价格和评价(未调用工具)
  • 评分方式:自动(检查工具链)
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true, active_skills: [shopping_assistant_skill]
B2-MM-05图片质量不足时的降级
  • 难度困难
  • 输入
    • 用户消息:[上传模糊的商品照片] 这个是什么,在哪买
    • 图片: (极度模糊、过曝的照片,难以辨别商品细节)
    • 上下文:无
  • 期望行为
    • 直接分析图片,发现图片过于模糊无法识别商品
    • 降级策略:说明图片不清晰,主动询问用户能否提供更清晰的照片,或描述商品关键特征辅助搜索
    • 不应放弃任务或假装能识别出具体商品
  • 判定标准
    • Pass:说明了图片无法识别,提供了至少一种降级方案(重拍 / 描述特征)
    • Fail:声称识别出了具体商品(编造)/ 直接放弃不给任何帮助
  • 评分方式:LLM-judge
  • Skill 配置
    • Group A: skill_enabled: false
    • Group B: skill_enabled: true

评测执行说明

总用例数

维度 代号 用例数
工具选择准确率 TS 6
参数构造准确率 PC 8
工具链编排 TC 7
工具失败恢复 FR 5
工具冗余调用 RC 5
多模态工具使用 MM 5
合计 36

难度分布

难度 数量
简单 6
中等 15
困难 10

对话轮次分布

类型 数量
单轮 24
多轮(2-4 轮) 7

评分方式分布

方式 数量 说明
自动 17 可程序化验证(工具名称、参数、调用次数、trace)
LLM-judge 5 需要语义理解(降级策略合理性、选择合理性)
自动 + LLM-judge 3 部分自动检查,部分需语义判断

工具覆盖范围

工具类别 涉及 case 数
旅行类 (机票/酒店) 8
电商类 (淘宝) 6
地图导航类 (高德/Google Maps) 6
房产类 (贝壳) 4
社交媒体类 (微博/知乎) 3
通用 (web_search/weather) 5

双组评测标准

通过门槛

组别 维度通过线 说明
Group A(无 Skill) 各维度 ≥ 70% 验证 agent 基础工具使用能力
Group B(有 Skill) ≥ Group A 分数(delta ≥ 0 为硬门槛) Skill 不应降低工具使用准确率

失败定性规则

Group A 失败                 → agent 工具使用能力不足,修模型/prompt
Group B 失败 且 Group A 通过 → Skill 干扰了工具选择或参数构造(如强制流程覆盖了正确调用),修 Skill
Group A 和 Group B 都失败    → agent 问题

B2 特有规则:Skill 相关工具的 Group B 应更高

当 Skill 的执行流程明确规定了工具调用方式时(例如 flight-selection skill 规定「必须先搜 ±1 天」),Group B 在对应 case 上应该高于 Group A——因为 Skill 给了明确的调用规范,按图索骥比凭空猜测更应该做对。

工具类型 Group A 期望 Group B 期望
通用工具(天气/搜索) ≥ 70% ≥ Group A
Skill 显式规定的工具调用 ≥ 70% ≥ 85%(Skill 提供了明确规范,应更高)

B2-RC 维度例外:冗余调用允许 Group B 略多

原因:Skill 的执行流程(如 ±1 天多次搜索、Draft Proposal 确认)天然比无 Skill 时调用更多工具,这是有价值的额外步骤,不是真正的冗余。

skill_impact_delta 汇总

目标:
  TS / PC / TC / FR / MM:delta ≥ 0
  RC(冗余调用):delta 允许 ≤ +20%(Skill 流程合理增加调用次数)

红线:
  TS(工具选择)delta < -10% → Skill 干扰了工具选择,必须修复
  PC(参数构造)delta < -10% → Skill 破坏了参数构造,必须修复

后续迭代方向