Skip to content

数据集与实验

构建带版本的评估数据集,并运行随时间为智能体输出打分的实验。Potato 的评估基座 —— 文件或 SQLite 存储、带标签的版本、数据切分、SFT/DPO 导出,以及带回退差值的实验并排对比。

数据集与实验是 Potato 的评估基座:带版本的评估示例集合,以及用程序化评估器为其打分的实验运行。 二者结合,让 Potato 从"标注一次"变成"持续评估":整理一个测试集、运行评估器,并跨提示词或模型版本跟踪分数。

启用

yaml
datasets:
  enabled: true
  storage: file   # "file" (default, git-diffable JSONL) | "sqlite"

数据集

数据集是一个有名字的示例集合(idinputs、可选的 reference_outputsmetadatasplit)。每次添加/更新/删除都会创建一个新的不可变版本v0001v0002……);版本可以打标签(例如 prod),读取时用 as_oflatest、某个标签或版本 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/...)用于查看和控制这些任务的标注过程:数据集/实验状态、逐实例标注进度、已摄入轨迹计数,以及分配的暂停/恢复。

相关内容