論文名稱:τ-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。