開始使用
撰寫測試套件
一個測試套件由兩個檔案和一個資料集組成。oloproof init 會為兩者產生骨架,而骨架中附有註解,因為第一次新手引導演練有四次嘗試是卡在一個缺少的字串,而不是缺少的功能。
專案檔案
oloproof.yaml 宣告要量測什麼,以及由什麼來量測。
version: 1
project: example
dataset: data/example.jsonl
system:
name: example-support-bot
version: "1"
callable: app:answer
config: {}
evaluators:
- type: exact_match
criterion: exact_label
field: labelsystem.callable 是受測對象的匯入路徑。criterion 是指標、門檻值和報告在引用這個評估器結果時共用的名稱,因此值得選一個你在閘門中一眼就能認出的詞。
評估器類型
此檔案接受的每一種 type:,依類別列出。被拒絕的欄位會得到該評估器接受的欄位清單作為回應,因此猜錯之後,只要再執行一次就能改對。
| 類別 | 類型 |
|---|---|
| 確定性 | exact_match、contains、regex、json_schema |
| LLM 評審 | rubric_judge、groundedness_judge、citation_support_judge、probability_judge、cascade |
| 模型 | model_classifier |
| 檢索 | hit_rate、recall、mrr、ndcg、citation_validity |
| 代理 | agent_max_steps、agent_tool_called、agent_no_tool_loop、agent_tool_sequence、agent_no_undeclared_tool、agent_constraints_satisfied |
| 多代理 | agent_route、agent_tool_permissions、agent_max_handoffs |
| 預測 | predictive_correct、predictive_precision、predictive_recall、predictive_ranking、predictive_brier、predictive_log_loss、predictive_absolute_error |
使用非 OpenAI 端點的 LLM 評審需要另外兩個欄位:base_url: 與 api_key_env:。金鑰在呼叫時從環境變數讀取,從不儲存。
執行
oloproof run一次執行會跑過每個案例,用每個評估器評判每個案例,並將結果儲存為以內容定址的紀錄。對未變更的系統和未變更的資料集再次執行時,會重複使用已有的結果,這就是為什麼重複執行幾乎不花成本,也不計量。
oloproof plan RUN_ID --run 會回報要讓一條未決定的規則有定論需要付出什麼,並依該次執行實際的花費估價。若改為提供比較 ID,則不需要旗標。
重複量測
只量測一次的案例,只能告訴你一次發生了什麼。replicates: 會對每個案例量測不只一次,並回報有多少案例在相同的量測之間改變了判定。
在信任任何比較之前,這個數字值得先知道:針對一個線上助理,大約每九個觀察到的案例中就有一個在相同的執行之間改變了判定。