
一、你需要准备什么
一个目录,里面放:
my_product/
├── dataset_infos.json ← 本文件(按本文档填写)
├── data.csv ← 数据文件(或 data.jsonl / data.xlsx)
└── datas/ ← 图像、视频等文件放在子目录里
├── img_001.jpg
└── clip_001.avi在 CSV 中用相对路径引用即可(如 datas/img_001.jpg)。如果文件很多,可以打成 zip 包。
二、dataset_infos.json 怎么写
2.1 完整模板
json
{
"columns": [ ... ],
"data_config": {
"data_type": ["…"],
"format": "csv",
"encoding": "UTF-8",
"delimiter": ",",
"has_header": true,
"data_files": {
"prod": { "index_file": "data.csv" }
}
}
}产品数据 key 固定为 "prod",只有一份数据文件。
2.2 columns 填写
columns 是一个数组,你的数据有多少列就写多少条。每条描述一列:
| 要填的 | 写什么 | 示例 |
|---|---|---|
| field_name_en | CSV 列名(JSONL 则写 JSON 键名) | "review" |
| type | 这列存的数据类型 | "string" / "int" / "float" / "date" |
| field_name_cn | 中文名 | "影评文本" |
| description | 这列是什么、值的含义 | "negative=负面, positive=正面" |
| example_value | 一个样例值 | "positive" |
| pattern | type=date 时写日期格式,其他写 "" | "yyyy-MM-dd" |
| is_primary_key | 是否唯一标识一行 | true / false |
| nullable | 是否允许为空 | true / false |
| role | 这列的数据角色(见下表) | "text" / "label" ... |
| label_values | 仅标注列且为枚举值时填写 | ["negative", "positive"] |
role 说明:
| 如果你的列是…… | 写 role |
|---|---|
| 样本唯一 ID | id |
| 文本内容(影评、问题等) | text |
| 图像文件路径 | image |
| 音频文件路径 | audio |
| 视频文件路径 | video |
| 标注/真值 | label(必填) |
| 普通数据字段(表格类,年龄、性别……) | 不写 |
label_values 怎么填:
| 标注类型 | 写不写 | 示例 |
|---|---|---|
| 枚举标签 | 写,顺序 = 输出顺序 | [0, 1] 或 ["negative", "positive"] |
| 连续值(房价、分数……) | 不写 | |
| 自由文本(参考回答、摘要……) | 不写 |
label_values 填写的值和顺序应与模型方约定一致。
2.3 data_config 填写
| 字段 | 写什么 |
|---|---|
| data_type | 数组。单模态:["text"] / ["image"] / ["video"] / ["audio"] / ["structured"]。多模态:["text", "image"] |
| format | "csv" / "excel" / "jsonl" |
| encoding | 文件编码,通常 "UTF-8" |
| delimiter | csv 的分隔符(jsonl/excel 不写) |
| has_header | csv/excel 是否有表头(jsonl 不写) |
| data_files | 声明数据文件,key 固定为 "prod" |
data_files.prod 的可选字段:
| 字段 | 说明 |
|---|---|
| index_file | 数据文件名 |
| archive | (可选)图像/视频等文件打包成的 zip |
jsonc
// 普通情况
"data_files": {
"prod": { "index_file": "data.csv" }
}
// 带 zip 压缩包
"data_files": {
"prod": { "index_file": "labels.csv", "archive": "datas.zip" }
}有 archive 时文件路径列的值写 zip 内部路径。没有 archive 时路径相对于 dataset 根目录。
data_type 和 role 要对应:data_type 里列了什么类型,columns 里就要有对应的 role 列。
三、常见例子
文本分类(IMDB 影评 — product)
my_product/
├── dataset_infos.json
└── data.csv ← 列:review_col, sentiment_coljson
{
"columns": [
{ "field_name_en": "review_col", "type": "string", "field_name_cn": "影评文本",
"description": "IMDB 影评原文", "example_value": "This movie was great...",
"pattern": "", "is_primary_key": false, "nullable": false,
"role": "text" },
{ "field_name_en": "sentiment_col", "type": "string", "field_name_cn": "情感标签",
"description": "negative=负面, positive=正面",
"example_value": "positive", "pattern": "", "is_primary_key": false, "nullable": false,
"role": "label", "label_values": ["negative", "positive"] }
],
"data_config": {
"data_type": ["text"], "format": "csv", "encoding": "UTF-8",
"delimiter": ",", "has_header": true,
"data_files": {
"prod": { "index_file": "data.csv" }
}
}
}列名叫什么就在 field_name_en 里声明什么。
图像分类(X 光肺炎 — product)
my_product/
├── dataset_infos.json
├── data.csv ← 列:Image_Path, Pneumonia_Target
└── images/ ← 图像文件json
{
"columns": [
{ "field_name_en": "Image_Path", "type": "string", "field_name_cn": "图像路径",
"description": "X 光图像文件路径", "example_value": "images/person1.jpeg",
"pattern": "", "is_primary_key": false, "nullable": false,
"role": "image" },
{ "field_name_en": "Pneumonia_Target", "type": "int", "field_name_cn": "肺炎标签",
"description": "1=患病, 0=正常", "example_value": "1",
"pattern": "", "is_primary_key": false, "nullable": false,
"role": "label", "label_values": [0, 1] }
],
"data_config": {
"data_type": ["image"], "format": "csv", "encoding": "UTF-8",
"delimiter": ",", "has_header": true,
"data_files": {
"prod": { "index_file": "data.csv" }
}
}
}图像 + zip 打包(product)
my_product/
├── dataset_infos.json
├── labels.csv ← Image_Path 列写 zip 内部路径
└── datas.zip ← 所有图片json
{
"columns": [
{ "field_name_en": "Image_Path", "type": "string", "field_name_cn": "图像路径",
"description": "zip 内部路径", "example_value": "img_001.jpg",
"pattern": "", "is_primary_key": false, "nullable": false,
"role": "image" },
{ "field_name_en": "label", "type": "int", "field_name_cn": "类别",
"description": "图像类别标签", "example_value": "1",
"pattern": "", "is_primary_key": false, "nullable": false,
"role": "label", "label_values": [0, 1] }
],
"data_config": {
"data_type": ["image"], "format": "csv", "encoding": "UTF-8",
"delimiter": ",", "has_header": true,
"data_files": {
"prod": { "index_file": "labels.csv", "archive": "datas.zip" }
}
}
}表格分类(客户转化 — product)
my_product/
├── dataset_infos.json
└── data.csv ← 列:id, age, gender, ..., is_convertjson
{
"columns": [
{ "field_name_en": "id", "type": "int", "field_name_cn": "客户ID",
"description": "唯一标识", "example_value": "5001",
"pattern": "", "is_primary_key": true, "nullable": false,
"role": "id" },
{ "field_name_en": "age", "type": "int", "field_name_cn": "年龄",
"description": "客户年龄", "example_value": "42",
"pattern": "", "is_primary_key": false, "nullable": true },
{ "field_name_en": "is_convert", "type": "int", "field_name_cn": "是否转化",
"description": "1=转化, 0=未转化", "example_value": "0",
"pattern": "", "is_primary_key": false, "nullable": false,
"role": "label", "label_values": [0, 1] }
],
"data_config": {
"data_type": ["structured"], "format": "csv", "encoding": "UTF-8",
"delimiter": ",", "has_header": true,
"data_files": {
"prod": { "index_file": "data.csv" }
}
}
}LLM 对话(JSONL — product)
my_product/
├── dataset_infos.json
└── data.jsonl ← 每行 {"instruction": "...", "output": "..."}json
{
"columns": [
{ "field_name_en": "instruction", "type": "string", "field_name_cn": "用户问题",
"description": "用户输入的问诊问题", "example_value": "我最近总是头痛...",
"pattern": "", "is_primary_key": false, "nullable": false,
"role": "text" },
{ "field_name_en": "output", "type": "string", "field_name_cn": "参考回答",
"description": "医生的参考回答", "example_value": "根据您的描述...",
"pattern": "", "is_primary_key": false, "nullable": false,
"role": "label" }
],
"data_config": {
"data_type": ["text"], "format": "jsonl", "encoding": "UTF-8",
"data_files": {
"prod": { "index_file": "data.jsonl" }
}
}
}四、常见问题
Q1:data_files 里 key 永远用 "prod" 吗?
对,产品数据固定用 "prod"。
Q2:data_type 和 role 什么关系?
data_type 声明数据集包含哪些类型(数组),role 标记每列的角色。两者要对应。
Q3:哪些列必须写 role?
标注列必写 "label"。文本/图像/视频/音频类数据的入参列("text" / "image" / "video" / "audio")也要写。表格类普通字段不写。
Q4:列名可以和模型方的不一样吗?
你的 CSV 列名叫什么就在 field_name_en 写什么。平台通过 role 自动对应。
Q5:我的数据是 Excel 格式怎么写?
format 写 "excel",不填 delimiter,其余一样。
Q6:JSONL 要注意什么?
format 写 "jsonl",不填 delimiter 和 has_header。每行一个 JSON 对象,键名对应 field_name_en。