数据集导出指南

数据集浏览器和自动化脚本共享同一条导出管线:一个流式返回 .eval752.zip 的 FastAPI 端点。 本文概述如何下载归档、筛选如何影响导出内容,以及 UI 如何呈现这一流程。

端点摘要

GET /datasets/{dataset_id}/export

Query paramTypeDescription
run_idstring(可选)附带该数据集某个已完成 run 的元数据、run_config.jsonresults.jsonl
section_idsstring(可重复,可选)仅导出指定 section。要导出多个 section,就传多个 section_ids

响应: 200 OKContent-Type: application/zip,并带有 Content-Disposition: attachment; filename=...eval752.zip

归档中始终包含:

  • manifest.json:生成元数据、section 列表与计数,会尊重筛选条件。
  • meta.json:可选的 description/schema 元数据。
  • sections/*.jsonl:每个导出 section 对应一个 JSONL 文件。
  • assets/...:被导出条目引用的解码后二进制资源。
  • 当提供 run_id 时:run_config.jsonresults.jsonl 与 LightEval config(若可用)。

Section 筛选

  • 后端接受任意数量的 section_ids 参数。若某个 ID 不属于该数据集,会返回 400 Bad Request,避免误配。
  • 筛选会同时影响数据集内容和 run 产物。results.jsonl 只包含已导出 section 内的条目,因此下游工具不会看到悬空引用。
  • 如果不传 section_ids,则导出全部 sections。

示例:

curl -L -o dataset-sections.eval752.zip \
  "http://localhost:8000/datasets/$DATASET_ID/export?section_ids=$SECTION_A&section_ids=$SECTION_B"

Run 选择

传入 run_id 后,服务会把对应 run summary、run_config.json、LightEval config (已去除 API keys)以及 results.jsonl 一并打入归档。 该 run 必须属于该数据集;否则 API 会返回带描述信息的 400

curl -L -o run-packaged.eval752.zip \
  "http://localhost:8000/datasets/$DATASET_ID/export?run_id=$RUN_ID"

你也可以把 run_idsection_ids 组合使用,只导出某些 section,同时保留这些 section 对应的 run 指标。

UI 与 UX 说明

  • 数据集列表仍保留一键 Export 按钮,用于导出完整包。
  • 应用内的 Dataset Explorer 现在提供 Export view 控件,可按用户当前查看的 section 过滤导出。 按钮文案会明确说明:搜索关键字只影响预览,section 筛选才决定导出范围,降低 “所见即所得” 预期带来的误解。
  • Run 详情面板仍然是“附带运行结果导出”的最直接入口。

后续设计应继续保持这一心智模型一致: 筛选 = 结构化子集,run = 行为上下文。

故障排查

SymptomLikely causeResolution
400 Sections do not belong to this dataset某个 section_ids 来自其他数据集,或已过期。先刷新数据集列表,再从 GET /datasets/{id} 中复制当前 IDs。
400 Run belongs to a different dataset选中的 run 实际关联的是另一个数据集。从 Run 详情页发起导出,或核对 URL 中的数据集 ID。
即使传了 run_idresults.jsonl 仍为空当前的 section 筛选把该 run 覆盖的条目全部排除了。移除 section 筛选,或补上相关 sections。