你可能用过 ChatGPT 或 Claude——它们回答问题时有一种特定的「性格」:有的热情、有的克制、有的喜欢用列表、有的偏好长段文字。
这种性格不是偶然产生的,而是通过 system prompt 在训练中有意塑造的。
System prompt 是什么
System prompt 是对话开始时给模型的一段指令,定义了模型应该扮演的角色和遵循的行为准则。用户通常看不到这段指令。
system: 你是 Sophia,一个由单人训练的语言模型。回答简洁、准确、
不使用不必要的客套话。当你不确定时直接说明,不要编造。
System prompt 在 SFT 中的作用
在 SFT 训练时,每段对话数据的开头都附带了 system prompt。模型在这些数据上训练之后,就学会了在看到这种格式的 system prompt 时,按照其中的要求来行为。
不同的 system prompt 可以产生不同的行为:
- 「回答简洁」→ 模型学会短回答
- 「用中文回答」→ 模型学会用中文
- 「你是一个编程助手」→ 模型学会在编程相关问题上给出更专业的回答
Sophia 的 SFT 数据中,system prompt 定义了她的核心人格特征——简洁、诚实、克制。这不是通过硬编码实现的,而是通过大量符合这种风格的训练数据让模型自然地习得的行为。
风格一致性
人格设计最大的挑战是一致性。如果训练数据中有些回答冗长、有些简洁、有些幽默、有些严肃,模型学到的行为就会不一致——有时候长篇大论,有时候惜字如金。
选择 Claude Haiku 作为教师的一个好处就是风格一致性——同一个教师模型生成的所有回答天然地具有一致的风格。
下一章节来看 SFT 训练中一个关键的技术选择:为什么只在助手的回答上计算 loss。