資料集與實驗
構建帶版本的評估資料集,並執行隨時間為智慧體輸出打分的實驗。Potato 的評估基座 —— 檔案或 SQLite 儲存、帶標籤的版本、資料切分、SFT/DPO 匯出,以及帶回退差值的實驗並排對比。
資料集與實驗是 Potato 的評估基座:帶版本的評估示例集合,以及用程式化評估器為其打分的實驗執行。 二者結合,讓 Potato 從"標註一次"變成"持續評估":整理一個測試集、執行評估器,並跨提示詞或模型版本跟蹤分數。
啟用
yaml
datasets:
enabled: true
storage: file # "file" (default, git-diffable JSONL) | "sqlite"資料集
資料集是一個有名字的示例集合(id、inputs、可選的 reference_outputs、metadata、split)。每次新增/更新/刪除都會建立一個新的不可變版本(v0001、v0002……);版本可以打標籤(例如 prod),讀取時用 as_of(latest、某個標籤或版本 id)固定到某個版本。
有三種整理示例的方式:
- 來自當前任務 —— 匯入已載入實例將任務的實例轉成示例。
- 僅來自已攝入的軌跡 —— 匯入已攝入軌跡(webhook / LangSmith / Langfuse)。
- 以人工標註為參考 —— 將每個方案的多數人工標籤聚合進每個示例的
reference_outputs。
實驗
一次實驗會對某個資料集版本執行評估器,並記錄逐示例結果和聚合分數。在總覽頁面選擇資料集和評估器後點擊執行,或呼叫 POST /datasets/api/experiments/run。選擇兩個或更多實驗並點選對比,即可並排檢視聚合分數,並附有相對基線的差值,讓回退一目瞭然。
LLM 評審類評估器會呼叫你配置的 AI 端點,在大數據集上可能耗時較長。
匯出為微調資料
任何資料集版本都可以匯出為用於微調的 JSONL:
- SFT ——
{"prompt": <inputs>, "completion": <reference_outputs>} - DPO ——
{"prompt": <inputs>, "chosen": <reference_outputs>, "rejected": <metadata.rejected | outputs>}
bash
curl -OJ "http://localhost:8000/datasets/api/datasets/agent-eval-v1/export?format=sft"API
所有端點都需要管理員認證(X-API-Key 請求頭或管理員會話)。
| 方法 | 路徑 | 用途 |
|---|---|---|
| POST | /datasets/api/datasets | 建立資料集 |
| POST | /datasets/api/datasets/<name>/examples | 新增示例(生成新版本) |
| POST | /datasets/api/datasets/<name>/tag | 給版本打標籤 |
| GET | /datasets/api/datasets/<name>/export?format=sft|dpo | 匯出 JSONL |
| POST | /datasets/api/experiments/run | 執行實驗 |
| GET | /datasets/api/experiments | 列出實驗 |
評估管理 API(/admin/eval/...)用於檢視和控制這些任務的標註過程:資料集/實驗狀態、逐實例標註進度、已攝入軌跡計數,以及分配的暫停/恢復。
相關內容
- Read the Docs 上的完整參考 —— 完整的 API 和儲存細節,與版本匹配
- 程式化評估器
- 自動化規則 —— 自動將進入的軌跡整理進資料集
- 語義整理 —— 按相似度查詢要新增的軌跡