Appearance
在大型语言模型(LLMs)的内部机制中,AI 对“系统提示词(System Prompt)”和“用户提示词(User Prompt)”的处理方式有着本质的差异。
这不仅仅是文本拼接的先后顺序问题,而是涉及到模型的底层数据结构、注意力分配、以及对齐训练(Alignment Training)。以下是具体的差异说明:
1. 底层数据格式与特殊标记(Tokens)的隔离
当文本被输入给 AI 时,AI 并不是把它们当成一段连续的普通字符串来阅读。现代对话模型使用了特定的控制标记(Special Tokens) 将不同角色的输入进行物理隔离。
在底层代码中,输入给 AI 的数据通常是结构化的格式(例如 ChatML 格式):
prompt
<|im_start|>system`
`你是一个严谨的科学助手,不能使用生造词。`<|im_end|>
<|im_start|>user`
`给我讲个关于黑洞的笑话。`<|im_end|>处理差异: AI 会在词汇表层面识别出这些“身份标签”。它被训练成知道:带有 system 标签的内容是“底层操作系统的指令”,而带有 user 标签的内容是“外部应用程序的输入”。
2. 注意力机制(Attention)中的权重与优先级
在 AI 生成回答时,其内部的“注意力机制”会实时计算当前生成的词与之前所有上下文的关联度。
系统提示词具有“全局高优先级”: 在模型经过强化学习(RLHF)和指令微调(SFT)后,它的神经网络权重被刻意塑造成高度服从系统提示词。如果用户提示词与系统提示词发生冲突(例如,系统提示词说“只能用中文回答”,用户提示词说“Please answer in English”),对齐良好的 AI 会赋予系统提示词更高的注意力权重,从而拒绝用户的越权请求。
用户提示词作为“当前执行目标”: AI 会将注意力集中在用户提示词上来理解具体的任务需求(如计算、翻译、摘要),但在执行运算时,会时刻受到系统提示词划定的“边界条件”的约束。
3. 上下文窗口中的位置与记忆保持
在多轮对话中,两者在上下文窗口(Context Window)中的管理策略不同:
系统提示词是“常驻锚点”: 无论对话进行到第几轮,系统提示词通常会被固定在输入序列的最顶端(或通过内部机制确保其不被遗忘)。它是整个对话的基调。
用户提示词是“流动数据”: 用户的输入和 AI 的回复会随着对话的推进不断追加。当对话长度超出了模型的最大上下文窗口时,最早的用户提示词可能会被截断或遗忘,但系统提示词绝不会被丢弃。
4. 算力与缓存优化(KV Cache)
从工程和算力角度来看,处理这两种提示词的方式也存在显著的性能差异(特别是在支持“提示词缓存 Prompt Caching”的现代 API 中):
系统提示词常被缓存: 因为系统提示词在一个应用或会话中通常是静态不变的(例如设定一个几十KB的背景知识库或复杂的行为规范),AI 推理引擎(如 vLLM)会在第一次计算后,将系统提示词的注意力状态(Key-Value 向量)缓存在显存中。后续调用无需重复计算,直接复用。
用户提示词实时计算: 用户的每次提问都是动态且未知的,因此每次都需要消耗算力进行实时的前向传播计算。
总结来说:
如果把 AI 想象成一个员工,系统提示词是写入劳动合同的《公司规章制度》和岗位职责(决定了它是谁、底线在哪),而用户提示词则是老板今天早上派发的《每日任务清单》(决定了它现在要做什么)。AI 在底层架构和训练过程中,就被设计为“在不违背规章制度的前提下,去执行任务清单”。

评论区