用 DeepSeek 或腾讯元宝时你或许察觉过:同一条要求,写进系统提示就比对话中途随口交代更管用。这种「更算数」的感觉有真实机制支撑,核心是位置、训练与注意力三件事叠加。
先看位置。系统提示排在整段输入的最前面,位于所有用户消息之前。模型处理序列时,每生成一个词块都要回头参考前文,开头的指令如同挂在显眼处的任务牌,参与每一次生成的条件计算;对话中途的要求则混在长长的人类发言里,权重被稀释。位置越靠前,覆盖的生成步数越多,影响力自然更持久。
训练时就被教过听系统的话
第二层来自训练。大模型在对齐阶段见过海量「系统设定优先、用户要求跟随」的对话样本,产品方也把系统提示当作放置规则、风格和禁用项的主要容器。久而久之,模型形成了先读设定再答话的习惯:设定里写明输出语言、格式与边界时,模型会主动把后续回答往这个框里放。这并非玄学,是训练分布留下的倾向。
第三层是注意力的分工。系统提示通常短而稳定,关键词密度高;用户消息往往冗长,还夹着大量待处理材料。注意力机制天然会被简洁、稳定、与任务直接相关的文本吸引,系统提示恰好三样俱全。
一个对照实验可以自己在家做:把「回答时先列要点再展开」分别放进系统提示和最后一条用户消息,其余不变,连续问十个问题。放在系统区的那组,十个回答大多保持同样结构;放在消息里的那组,三五轮之后格式就开始松动。位置对持续性的影响,比单次效果更明显。
| 位置 | 影响力 | 适合放什么 |
|---|---|---|
| 系统提示 | 覆盖每一步生成 | 输出语言、格式规范、固定人设 |
| 对话中途 | 权重被稀释 | 临时的小调整 |
| 消息区 | 不承担规则约束 | 待处理的材料 |
它的效力也有边界
系统提示优先级高,不代表用户消息可以随意糊弄。当系统与用户要求正面相撞,多数模型倾向跟随系统,可一旦用户指令更具体、更靠近生成位置,模型仍可能倒向用户。这就是为什么重要的规则要写进系统、临时的小调整放在对话里——各归各位,冲突才少。遇到两边都不让步的场面,参考指令冲突一篇的处理思路。
怎么把重要要求放进系统提示
三条经验。一,放稳定的:输出语言、格式规范、固定人设,这类长期不变的要求放系统区回报最高,放对话里每轮都要重复;二,写短句:一条一行,比大段陈述执行得更准;三,别把材料塞进系统提示,材料属于消息区,混放会削弱规则区的辨识度。改完立刻用一个边界用例验证,比如你禁用了某个格式,就故意诱导一次,看它守不守得住。
系统提示放什么自查
- 语言、格式、人设等稳定要求进系统区了吗?
- 每条规则是否独立成行、动词开头?
- 材料是否还留在消息区?
- 是否做过边界用例验证?
规则写完当天就验证一次,比事后排查快得多。
系统提示与分隔符是天生一对,用分隔符把规则区包起来辨识度更高;系统区里也常放角色设定,两者叠加风格更稳。输出长度这类要求放系统区时执行方式的差异,见回答长度一篇;示例先后带来的倾向变化与系统区的作用相互独立,可对照示例顺序一篇阅读。
关于系统提示的三个常问问题
- 系统提示有长度上限吗?:不同产品上限不同,通常几千字可用,但写短更有效,规则密度比篇幅重要。与其写长篇大论,不如提炼成十条短规则。
- 用户消息能推翻系统提示吗?:偶尔能,尤其用户要求更具体时;重要规则别指望一次冲突测试通过就高枕无忧。
- 系统提示对所有模型效果一样吗?:不一样,不同模型的训练数据不同,对系统区指令的服从度有差异,换模型要重新验证。


