評估工程技能:從倉庫上下文和追蹤構建評估
LangChain 發佈了評估工程技能,該技能通過檢查代理的倉庫結構和追蹤記錄,以訪談方式提出評估方案,並生成可執行的 Harbor 格式評估任務。
LangChain 於今日正式發佈“評估工程技能”(Eval Engineering Skill),這是一項旨在幫助編碼代理利用倉庫上下文和代理追蹤構建評估系統的功能。
該技能的核心流程包括:首先檢查代理的結構,包括提示詞、模型、工具、技能和鈎子等;其次,若有追蹤記錄,則從追蹤中挖掘模式,提出需要測試的能力。技能會以訪談形式與用户交互,用户對提案提供反饋並逐步批准每個評估。最終產出為 Harbor 格式的可執行評估。
在環境與任務構建階段,技能首先讀取倉庫,映射代理的表面結構,並識別支撐這些行為的數據和服務(如 API 調用)。用户還可通過 langsmith-cli 等工具將追蹤記錄指向代理,追蹤展示了工具在實際中的表現,包括參數、結果和錯誤。這些觀察到的合約幫助技能在受控環境中復現生產行為。
通過爬取倉庫和追蹤,技能能夠了解哪些能力對代理至關重要,並據此提出評估任務。LangChain 發現,與用户進行訪談比一次性生成能獲得更高的評估接受率。用户可從提議的評估方向中選擇,並給出指導,例如哪些工具和依賴需要實時運行,哪些需要模擬。例如,涉及成本或寫入生產的工具調用可在每次評估調用時模擬而非實際執行。
LangChain 在文檔問答代理 chat-langchain 上測試了該流程。對該代理而言,環境需要一個通過代理搜索工具暴露的數據語料庫,該工具模擬了生產代理的模型。任務包括從真實追蹤中提取的現實文檔問題,以及一個通過標準答案字符串和引用文檔來檢查答案的驗證器。
評估設計是一個迭代過程。實驗表明,雖然代理有時能一次性生成評估,但最佳評估往往來自用户反饋,用户指定哪些能力值得測量。編碼代理和技能提供了一個自然接口,其中編碼了構建良好評估所需的知識,用户可隨時間迭代。
例如,構建驗證器時,第一個版本很少是最終版本。改進的有效方法是運行評估並檢查結果的兩面:代理軌跡(包括消息、工具調用和動作)以及驗證器軌跡(證據、推理和最終分數)。這有助於揭示任務或驗證器設計是否準確測量了關注點,或者是否存在獎勵黑客行為——代理可能走捷徑,如過度引用不相關來源以獲得滿分、聲稱未執行的動作、利用暴露的答案材料、或在不完成任務的情況下滿足代理指標。觀察代理解決問題的軌跡常常能揭示這些失敗的根源。隨後可修訂任務、環境和驗證器並重新運行。
評估採用 Harbor 任務格式,包含三個組件:指令(任務開始時給代理的消息)、環境(Dockerfile,包含設置,如安裝工具或填充文件系統數據)和驗證器(評分代理是否正確完成任務)。這些組件組合為 Harbor 任務目錄結構:evals/<task>/task.toml、instruction.md、environment/ 和 tests/。Harbor 在環境中運行代理,記錄其軌跡、工件、獎勵和錯誤。同一評估可針對不同模型、提示詞、工具和代理版本運行。
持續學習可以視為一個持續的數據挖掘問題,生產數據用於構建評估,從而隨時間改進代理。團隊挖掘追蹤以發現重複的用户請求、錯誤、失敗的工具調用和不正確的狀態變化,這些轉化為評估,以便未來測量和預防相同行為。評估是代理的訓練數據,團隊可通過修改提示詞和工具或微調來適配代理行為。評估提供了固定的目標,用於判斷變更是否改善了預期能力。
容器化評估加速了這一過程。當代理配置變化時,任務和環境保持穩定,構建者可以更換模型、工具、提示詞或完整代理版本,直接比較結果。多種配置可並行運行。可復現的環境對信號至關重要:當評估鏡像了生產中的相關工具、數據、權限、狀態和故障模式時,構建者獲得了一個既穩定又能代表代理實際運行方式的測試平台,無需依賴變化的生產系統或寫入生產狀態。
最終循環為:挖掘追蹤 -> 識別失敗 -> 構建評估 -> 改進代理 -> 重新運行。
評估工程技能現已開源,位於 langchain-ai/langchain-skills 倉庫。用户可在 Codex 或 Claude Code 中安裝該技能,打開待評估代理的倉庫,可選提供一組追蹤記錄,然後使用簡單提示啓動:"使用評估工程技能與我一起創建評估。先檢查代理,提出幾個值得測試的能力,推薦一個,並等待我選擇。"結果將是一個位於 evals/ 下的 Harbor 任務、實際目標運行,以及驗證器是否準確測量了預期行為的審查。
LangChain 表示期待擴展該技能,並構建工具以自動構建評估並自主適配代理。