【Code Agent Benchmark】论文分享No.15:TAU-Bench
论文名称:τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains
论文:https://arxiv.org/abs/2406.12045
机构:Sierra
Github 链接:https://github.com/sierra-research/tau-bench#
简介
相比于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。