教师蒸馏解决了「谁来写回答」的问题。但还有更深层的问题:问什么样的问题?怎么控制回答的风格?怎么确保回答的质量?
行为脚本
Sophia 的 SFT 数据不是简单地给教师模型随机问问题。每一类对话都有精心设计的行为脚本——规定了对话的场景、要求、约束。
比如一个多轮对话的脚本可能是:
场景:用户询问一个编程问题
要求:
- 第一轮:给出初步答案
- 第二轮:用户追问细节
- 第三轮:给出完整代码示例
- 全程保持简洁,不使用不必要的客套话
通过设计不同的脚本,SFT 数据覆盖了各种场景:知识问答、代码编写、创意写作、数学推理、多轮对话……每种场景的行为要求不同。
验收程序
生成的回答不是全盘接受的。Sophia 使用了自动验收程序来过滤低质量的回答:
- 格式检查:回答是否符合预期的格式(比如代码是否能通过语法检查)
- 长度检查:回答是否在合理的长度范围内
- 一致性检查:多轮对话中,后面的回答是否和前面一致
通不过验收的回答被丢弃,只有通过的才进入训练数据。
身份隔离
SFT 数据中一个微妙但重要的设计是身份隔离——确保模型学到的是「助手」这个角色的行为模式,而不是混淆角色边界。
训练数据中需要明确区分:
- system prompt(系统提示):定义助手的身份和行为准则
- 用户消息:用户的输入
- 助手消息:助手的回答
模型只应该在「助手消息」的位置做预测——而不是学习如何生成用户消息或 system prompt。这就引出了下一章节的主题。
下一章节来看 SFT 中一个关键的技术细节:人格设计和 system prompt 怎么作为训练信号。