AI News HubLIVE
站内改写2 分鐘閱讀

評估深度代理:我們的經驗教訓

學習評估深度代理的5種模式:定製測試、單步驗證、完整回合、多輪模擬和環境設置。

在過去的一個月裏,LangChain 在深度代理框架上發佈了四個應用:DeepAgents CLI(編碼代理)、LangSmith Assist(應用內助手)、個人郵件助手(從用户交互中學習)以及 Agent Builder(無代碼代理構建平台)。構建和發佈這些代理意味着需要為每個代理添加評估,在此過程中我們學到了很多。本文將深入探討評估深度代理的幾種模式。

深度代理需要為每個數據點定製測試邏輯。傳統的 LLM 評估是直接的:構建數據集、編寫評估器、運行應用並評分。但深度代理打破了這一假設。你需要測試的不只是最終消息,每個數據點的成功標準可能更具體,涉及對代理軌跡和狀態的特定斷言。例如,一個日曆調度代理被要求記住“不要在上午9點前安排會議”,你需要斷言它調用了編輯 memories.md 文件的工具,最終消息確認了記憶更新,且文件內容確實包含相關信息。我們可以使用 LangSmith 的 Pytest 集成來為每個測試案例編寫不同的斷言。

單步評估既有效又高效。在深度代理的評估中,大約一半的測試案例是單步評估,即 LLM 在特定輸入後立即做出的決定。這對於驗證代理在特定場景中是否調用了正確的工具和參數特別有用,例如:是否調用了正確的搜索會議時間的工具?是否查看了正確的目錄內容?是否更新了記憶?迴歸問題通常發生在單個決策點而不是整個執行序列中。利用 LangGraph 的流式能力,可以在單次工具調用後中斷代理以檢查輸出,從而在不影響完整序列的情況下及早發現問題。

完整代理回合提供了完整的視圖。單步評估是“單元測試”,而完整回合則展示代理端到端行動的全景。它允許你測試多種行為:軌跡(確保某個工具被調用)、最終響應(對於開放式任務如編碼和研究,最終輸出質量比路徑更重要)以及其他狀態(如代理創建的文件)。完整回合讓你看到代理執行的全貌,LangSmith 可以以追蹤形式顯示完整回合,包括延遲和令牌使用等高級指標,以及每個模型調用或工具調用的具體步驟。

跨多輪運行代理模擬完整的用户交互。某些場景需要測試多輪對話,但若代理偏離預期路徑,後續硬編碼的輸入可能無效。我們通過在 Pytest 和 Vitest 測試中添加條件邏輯來解決:運行第一輪後檢查輸出,若符合預期則繼續下一輪,否則提前失敗。這種方法使我們能夠在無需模擬每個分支的情況下運行多輪評估。若想單獨測試第二或第三輪,只需從該點開始設置測試,並提供適當的初始狀態。

設置正確的評估環境至關重要。深度代理是有狀態的,通常需要更復雜的環境來評估。與簡單的 LLM 評估(環境有限且通常無狀態)不同,深度代理每次評估運行都需要一個乾淨、新鮮的環境,以確保結果可復現。編碼代理就是一個典型例子:Harbor 提供了在專用 Docker 容器或沙箱中運行的 TerminalBench 評估環境;對於 DeepAgents CLI,我們採用輕量級方法:為每個測試案例創建臨時目錄並在其中運行代理。關鍵點是:深度代理評估需要每次測試重置環境,否則評估會變得不穩定且難以復現。

提示:模擬你的 API 請求。LangSmith Assist 需要連接真實的 LangSmith API,針對實時服務運行評估可能既慢又昂貴。取而代之,將 HTTP 請求記錄到文件系統,然後在測試執行期間重放。對於 Python,vcr 效果很好;對於 JS,我們通過 Hono 應用代理 fetch 請求。模擬或重放 API 請求使深度代理評估更快、更易調試,尤其是當代理嚴重依賴外部系統狀態時。

上述技術是我們為深度代理應用編寫測試套件時常見的模式。你可能只需要這些模式中的一部分,因此評估框架的靈活性很重要。如果你正在構建深度代理並開始評估,請查看 LangSmith 的測試集成!