【Code Agent Benchmark】论文分享:TAU-Bench

22 阅读3分钟

论文名称:τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains

论文链接:arxiv.org/abs/2406.12…

机构:Sierra

Github 链接:github.com/sierra-rese…

简介

相比于Swe-bench而言,大家可能对TAU-bench并不是很熟悉,但2月份Claude 3.7发布的时候,Anthropic官方就曾用过TAU-bench来展示Claude As Agent的效果,说明这个benchmark还是得到了官方的认可,值得介绍一下。

TAU-bench是Sierra团队推出的评估 AI Agent在复杂的现实任务中与用户和工具交互的能力,主要是设计了两个垂直领域的场景评测:

  • Retail(零售场景):构建模拟零售环境,含数据库、API 工具和政策规则,让Agent处理订单、退换货等任务,测试其遵循规则、信息处理和任务执行能力。
  • Airline(航空场景):创建航班数据库、API 工具和复杂政策,Agent处理航班预订等任务,评测其应对复杂规则和多跳推理的能力。

这两个场景的任务都足够复杂,其中会有Agent与用户的多轮对话,也会有使用工具获取信息、解决问题的环节,所以比较适合用来评估一个Agent运行所需要的推理、指令遵循、长下文理解、工具调用等能力。

为什么跟AI Coding强相关呢?因为这些任务所要用到的工具跟代码强相关,算是一个AI Coding Agent近似实战的测试环境。

数据构造

TAU-Bench的数据构造采用模块化方式,以零售场景的case为例,具体如下:

  • JSON数据库:如图2a,数据库采用JSON格式,存储任务相关数据,如订单信息等,对Agent和用户隐藏,Agent通过API工具间接访问。
  • Python API工具:如图2b,用Python实现,用于对数据库进行读、写操作,其函数形式为tool_name(**kwargs),执行动作时数据库状态转移是确定性的。
  • Markdown域策略:如图2c,以Markdown格式描述,解释域数据库、任务流程和限制条件,部分限制在API中实现为检查,部分需Agent根据策略遵循。
  • JSON任务实例:如图2d,包含用于用户模拟的指令和真实数据库写操作的注释,指令设定用户身份、意图和偏好,保证在域策略下只有一个可能结果。

使用方法

准备工作

确定测试场景(零售或航空等),明确对应领域的数据库、API工具和政策规则 。将领域政策告知Agent,让其知晓规则,并将用户的指令给到Agent设定用户身份、意图等 。

交互过程

  • 用户指令下达:模拟用户向Agent提出任务指令,如在航空场景中更改最近的预订航班目的地
  • Agent操作:Agent依据接收到的指令和领域政策,调用API工具与数据库交互。例如在航空场景中,先调用get_reservation_details获取预订详情,再根据规则判断能否更改,如需取消则调用cancel_reservation
  • 多轮交互:过程中Agent与模拟用户可能有多轮对话,确认需求、反馈操作情况等 。

结果评估

对话结束后,将数据库最终状态与标注的目标状态对比 ,使用如pass^k等指标评估Agent行为的可靠性、一致性,判断其任务完成情况 。

评价指标

pass^1

顾名思义,不赘述了。

pass^k

因为Agent真正使用时,比如让它去订机票、处理退换货,如果执行失败会让人有很大的挫败感,所以它的成功率稳定性很重要,这个benchmark定义了pass^k的指标,也就是对一个测试case连续执行k次,每次都成功,才能算任务成功。

总结

TAU-Bench 也是用来评估LLM As Agent的能力,并将其限定在了代码->航空/零售领域,任务设计上比较接近生活中的实际问题,是一个比较不错的benchmark。