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 的測試整合!