程式化評估器
用 Potato 不依賴 Flask 的評估器庫自動為智慧體軌跡和文本輸出打分 —— 確定性軌跡匹配、工具使用正確性、無參考的 LLM 評審(LLM-as-judge),以及啟發式方法(精確匹配、編輯距離、JSON、嵌入向量)。
Potato 附帶一個輕依賴的評估器庫,可自動為智慧體軌跡和文本輸出打分:這些確定性檢查和 LLM 評審檢查是對人工標註的補充。同一批評估器可以在實驗、自動化引擎和 CI 外掛中執行,也可以獨立使用。
每個評估器都返回一個歸一化的結果 —— score(約定為 0.0–1.0,越高越好)、value、comment 和 metadata —— 因此確定性、啟發式和 LLM 評審類評估器可以互換。軌跡可以以 OpenAI 風格的訊息列表、Potato 規範的 conversation 輪次或 CanonicalTrace 形式傳入;歸一化是自動的。
軌跡匹配(確定性)
將智慧體的工具呼叫序列與參考序列進行比較。
from potato.evaluators import TrajectoryMatchEvaluator
ev = TrajectoryMatchEvaluator(
mode="unordered", # strict | unordered | subset | superset
tool_args_match_mode="subset", # exact | ignore | subset | superset
tool_args_match_overrides={"search": "ignore"},
)
result = ev.evaluate(outputs=agent_trace, reference_outputs=gold_trace)mode | 通過條件 |
|---|---|
strict | 工具呼叫完全相同,順序一致 |
unordered | 工具呼叫的多重集相同,順序不限 |
subset | 智慧體只調用了出現在參考中的工具 |
superset | 智慧體至少呼叫了參考中的全部工具(允許額外呼叫) |
參數比較可獨立配置(exact / ignore / subset / superset),並支援按工具覆蓋。
工具使用正確性
from potato.evaluators import ToolUseEvaluator, ToolCallAccuracyEvaluator
# Did the agent call a specific tool (optionally with expected args)?
ToolUseEvaluator(expected_tool="submit", expected_args={"id": 1}).evaluate(outputs=trace)
# What fraction of reference tool calls did the agent reproduce? (partial credit)
ToolCallAccuracyEvaluator(args_match_mode="exact").evaluate(outputs=trace, reference_outputs=gold)LLM 評審(無參考)
在沒有黃金參考的情況下為軌跡的品質打分,因為有效的智慧體路徑往往不止一條。它複用 Potato 其餘部分使用的同一份 ai_support 端點配置(OpenAI、Anthropic、Ollama、vLLM 等)。
from potato.evaluators import LLMTrajectoryJudge
judge = LLMTrajectoryJudge(config=task_config, continuous=True) # 0.0–1.0 score
result = judge.evaluate(outputs=agent_trace, inputs=task_prompt)啟發式 / 程式碼評估器
ExactMatch、Contains、RegexMatch、EditDistance、JSONValid、JSONSchemaMatch,以及 EmbeddingDistance(惰性匯入 ML 依賴,或注入一個嵌入函式)。匯入該庫本身絕不會引入 ML 棧。
圖軌跡評估(LangGraph)
對於 LangGraph 的節點/轉移評估,Potato 通過一個惰性介面卡複用 MIT 許可的 agentevals 包 —— 只在需要時安裝即可。
以宣告式方式配置評估器
一個登錄檔將名稱對映到評估器,使它們可以在 YAML 中配置(供實驗執行器和自動化引擎使用):
from potato.evaluators import build_evaluator, list_evaluators
ev = build_evaluator("trajectory_match", {"mode": "unordered"})
result = ev.evaluate(outputs=trace, reference_outputs=gold)相關內容
- Read the Docs 上的完整參考 —— 每個評估器及其選項,與版本匹配
- 資料集與實驗 —— 對資料集執行評估器並長期跟蹤分數
- CI 評估 —— 用評估器分數把關構建
- 軌跡評估 —— 與之對應的人工環節