OpenEnv 實踐:在真實世界環境中評估工具使用代理
OpenEnv 實踐:在真實世界環境中評估工具使用代理
OpenEnv 是 Meta 和 Hugging Face 的一個開源框架,旨在透過標準化代理與真實環境互動的方式來應對此挑戰。作為此協作的一部分,Turing 貢獻了一個生產級的日曆管理環境,以研究在真實約束(例如存取控制、時間推理和多代理協調)下的工具使用代理。
在這篇文章中,我們將探討 OpenEnv 在實踐中如何運作、為什麼日曆可以作為真實世界代理評估的強大基準,以及我們的發現揭示了當前工具使用代理的哪些局限性。
什麼是 OpenEnv?
OpenEnv 是一個用於針對真實系統而非模擬評估 AI 代理的框架。它提供了一種標準化的方式,將代理連接到真實的工具和工作流程,同時保留一致且可靠評估所需的結構。
OpenEnv 使用類似 OpenAI Gymnasium 的 gym 導向 API(reset、step、action、observations)。此外,OpenEnv 使用標準的 MCP 工具呼叫介面連接到 envs,該介面在跨領域和從模擬到生產環境提供一致的介面。
這些環境在多個動作中保持狀態——實現長程推理——並且可以直接連接到真實的 API 和工具,例如瀏覽器、程式碼儲存庫或日曆。這將評估從「這能在受控演示中工作嗎?」轉移到「這能在現實世界中可靠地運作嗎?」
日曆 Gym:生產級基準
日曆系統具有欺騙性的複雜性。雖然安排會議看起來很簡單,但真實世界的日曆管理要求代理對時間、權限、多個使用者和不完整資訊進行推理——通常跨多個相關步驟。這些屬性使日曆成為在受控模擬之外評估工具使用代理的強大測試平台。
為了將 OpenEnv 植根於這種真實、要求嚴苛的用例中,Turing 建立了一個生產級的日曆管理環境,稱為日曆 Gym。它不是抽象地模擬排程,而是讓代理接觸到它們在真實日曆系統中面臨的相同約束:跨使用者和日曆的存取控制列表、對其他使用者狀態的有限可見性,以及必須按正確順序鏈接動作的多步驟工作流程。代理與一組豐富的日曆操作互動——從列出日曆到修改事件和權限——並且必須處理失敗的動作、不正確的假設和遺失的權限。每個會話都在隔離的環境中運行,從而可以可靠地比較各個運行。
以下是如何使用日曆 Gym 的程式碼範例。我們探索環境、發現可用工具、列出日曆、建立事件並列印結果。
以下是您呼叫 ListToolsAction 時日曆 Gym 傳回的摘錄。每個條目都包含工具名稱以及輸入架構(工具接受哪些參數)。
我們學到了什麼
在日曆 Gym 中評估代理揭示了一致的模式,這些模式在多個領域中都很常見。雖然代理通常在個別的遊戲式動作中表現良好,但隨著任務變得更長、更模糊且更受限制,可靠性會降低。
多步驟推理是主要瓶頸。代理很難在較長的工作流程中正確地鏈接動作,這表明基準需要測試跨多個相關步驟的持續推理——而不僅僅是單個工具呼叫。
模糊性會顯著降低效能。代理在具有明確日曆識別碼的任務上取得了接近 90% 的成功率,但當使用自然語言描述來表達相同的任務時,成功率下降到大約 40%。在代理迴圈中建立更強大的查找和驗證——而不是依賴 LLM 在沒有幫助的情況下解析引用——似乎至關重要。
正確的工具選擇是不夠的。在失敗的互動中,超過一半的錯誤源於格式錯誤的工具參數或不正確的排序,即使選擇了正確的工具。可靠的代理行為不僅取決於工具選擇,還取決於執行品質和結構化回饋——環境設計很重要。
這些挑戰並非排程和日曆所獨有。它們反映了每當代理在不斷變化的系統中長時間運作時出現的更廣泛的局限性,並且它們指向一起測試權限、部分可觀察性和多步驟工作流程的評估框架。
展望未來
OpenEnv 為在真實條件下測試代理提供了基礎,而日曆 Gym 演示了看似簡單的領域如何浮現出推理、模糊性解析和工具使用方面的深刻挑戰。透過在失敗可衡量且約束真實的環境中評估代理,我們可以更清楚地了解建立在生產中可靠運作的代理需要什麼。
要更深入地了解日曆 Gym 的設計、基準測試方法和量化結果,請瀏覽 Turing 網站上的完整技術文章。要探索日曆 Gym 的克隆,請瀏覽日曆 Gym 空間。
附錄:工具使用中的常見錯誤案例
在實踐中,工具整合很少以戲劇性的方式失敗;它們以小的、可預測的方式失敗。將 MCP 工具連接到真實的 API(例如日曆操作)時,我們遇到了一些重複出現的問題。
在野外發現的特定錯誤案例
以下是我們在生產中看到的三種常見故障模式,以及代表性的錯誤有效負載和緩解策略。這些範例不僅說明了可能發生的錯誤,還說明了結構化錯誤如何幫助代理優雅地恢復。
代理呼叫有效的工具(例如 events_insert),但參數與宣告的 JSON 架構不符。
我們可以透過在您的提示中提供一個正確的 'events_insert' 呼叫的規範範例來緩解此問題。傳回結構化的驗證錯誤,以便模型可以修復和重試,而不是靜默失敗。
工具呼叫在語法上是正確的,但 API 由於權限不足而拒絕它。
我們可以透過清楚地記錄所需的 OAuth 範圍來緩解此問題。傳回結構化的、可操作的補救步驟,以便代理可以引導使用者,而不是重試相同的失敗呼叫。
清楚地記錄所需的 OAuth 範圍。傳回結構化的、可操作的補救步驟,以便代理可以引導使用者,而不是重試相同的失敗呼叫。
事件被 API 拒絕,或在意外的時間建立。
我們可以透過使用具有明確時區偏移量的 RFC3339(例如 2026-02-11T09:30:00-05:00)來標準化此問題。在您的文件中至少包含一個正確的日期時間範例,以錨定模型行為並減少修復重試。
我們部落格的更多文章
一起建立開放代理生態系統:介紹 OpenEnv
開放回應:您需要知道的
社群
·
註冊或
登入以發表評論