
# 文本生成SFT
以问答对为核心的标注文本数据集，包含明确的指令与标准应答内容。该类型深度适配大模型的有监督指令微调，能够满足对话生成、指令对齐以及特定行业场景定制的模型训练需求。
#### 约束限制
- 从OBS导入：单个文件/压缩包大小不超过20GB；多个文件场景，文件数量不限制，总文件大小不超过20GB。
- 本地导入：单个文件大小不超过1GB，文件数量最多20个。
- 文件编码：所有jsonl格式文件必须采用**UTF-8**编码。
 
#### 格式说明
**文件格式**：jsonl
**格式说明** ：jsonl是一种结构化的轻量级文本文件格式。其核心规则为**文件中的每一行都必须是一个独立、合法且完整的JSON对象**。
**数据集逻辑规范**：为了适配不同开源社区的习惯，该数据类型支持三种主流的逻辑规范：标准格式、Alpaca格式与ShareGPT格式。
#### 标准格式
该规范遵循业界通用的标准，采用消息序列的方式记录对话，具备极高的通用性与兼容性。
**数据格式示例**
为便于展示字段层级关系，已将单行JSONL数据展开。
```
{
  "meta": {
    "conversation_id": "conversation_123",
    "user_id": "user_456",
    "timestamp": "2026-05-29T10:00:00Z",
    "domain": "math_tutoring"
  },
  "messages": [
    {
      "role": "user",
      "content": "请帮我解方程 2x + 5 = 13"
    },
    {
      "role": "assistant",
      "content": "<think>这是一个简单的一元一次方程，我需要将常数项移到右边，然后除以系数。</think>\n好的，我们来解这个方程：2x + 5 = 13，两边减去5得2x = 8，所以x = 4。"
    },
    {
      "role": "user",
      "content": "那如果是 3(x - 2) = 9 呢？"
    },
    {
      "role": "assistant",
      "content": "<think>这次方程含有括号，先要去括号或两边同时除以3。</think>\n可以这样解：两边同时除以3得 x - 2 = 3，所以 x = 5。"
    },
    {
      "role": "user",
      "content": "谢谢，我明白了"
    },
    {
      "role": "assistant",
      "content": "不客气，有问题随时问我！"
    }
  ]
}
```
**字段规范说明**
对JSONL文件中的每一条（每行）数据：
表1字段说明 
| 字段               | 类型     | 是否必填 | 说明                                                             |
|:---|:---|:---|:---|
| messages         | List   | 是    | 对话历史列表，按时间顺序包含多轮角色交互对象。                                        |
| messages.role    | String | 是    | 发送消息的角色身份。仅支持：system（人设/系统提示词）、user（用户输入）、assistant（模型回复）中的一个。 |
| messages.content | String | 是    | 具体的对话文本内容。如果包含模型思考过程，可以使用\<think\>...\</think\>标签对进行包裹。        |
| meta             | -      | 否    | 拓展元数据字段。                                                       |
   
#### Alpaca格式
该规范起源于Stanford Alpaca社区项目，将单次交互或包含历史的多轮对话拆分为明确的指令（instruction）、补充上下文（input）和标准输出（output），结构扁平，便于阅读与快速微调。
**数据格式示例**
为便于展示字段层级关系，已将单行JSONL数据展开。
```
{
  "system": "你是一名精通初等数学的AI助教",
  "instruction": "请帮我解方程 2x + 5 = 13",
  "input": "",
  "output": "<think>这是一个简单的一元一次方程，我需要将常数项移到右边，然后除以系数。</think>\n好的，我们来解这个方程：2x + 5 = 13，两边减去5得2x = 8，所以x = 4。",
  "history": [
    [
      "你好，你能帮我辅导数学吗？",
      "当然可以，请随时提出你的数学问题。"
    ]
  ]
}
```
**字段规范说明**
对于JSONL文件中的每一条（每行）数据：
表2字段说明 
| 字段          | 类型                                                         | 是否必填 | 说明                                                                                  |
|:---|:---|:---|:---|
| system      | String                                                     | 否    | 系统提示词，用于显式定义模型在此次对话中扮演的角色人设。                                                        |
| instruction | String                                                     | 是    | 用户发出的具体任务指令或核心问题。                                                                   |
| input       | String                                                     | 是    | 任务所需的补充背景信息或输入上下文（若无可传入空字符串 ""）。                                                    |
| output      | String  | 是    | 大模型针对该指令的标准期望回答。允许包含由 \<think\>...\</think\> 标签包裹的思维链推理过程。                          |
| history     | List                                                       | 否    | 历史对话记录，采用二维列表结构 \[\[q1, a1\], \[q2, a2\], ...\]。每个元素为长度固定为2的列表，分别代表历史轮次中的用户提问与模型回复。 |
   
#### ShareGPT格式
该规范广泛应用于多种开源框架，通过一个集中的对话列表（conversations）来线性复现人类与AI之间的多轮交替演进过程，结构紧凑且极易拓展。
**数据格式示例**
为便于展示字段层级关系，已将单行JSONL数据展开。
```
{
  "system_prompt": "角色名称：数学辅导专家",
  "conversations": [
    {
      "from": "human",
      "value": "请帮我解方程 2x + 5 = 13"
    },
    {
      "from": "gpt",
      "value": "<think>移项、化简、求解。</think>\n解方程得2x = 8，解得x = 4。"
    }
  ]
}
```
**字段规范说明**
对于JSONL文件中的每一条（每行） 数据：
| 字段                  | 类型     | 是否必填 | 说明           |
|:---|:---|:---|:---|
| conversations       | List   | 是    | 多轮对话内容有序列表。  |
| conversations.from  | String | 是    | 标识当前话语的发言方。  |
| conversations.value | String | 是    | 当前轮次的文本对话内容。 |
   
