数据集与实验
构建带版本的评估数据集,并运行随时间为智能体输出打分的实验。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 和存储细节,与版本匹配
- 程序化评估器
- 自动化规则 —— 自动将进入的轨迹整理进数据集
- 语义整理 —— 按相似度查找要添加的轨迹