“你是一名严苛的论文审稿人。”
只是在问题前多写了这样一句话,模型就可能不再急着赞同你,而是开始追问实验设计、证据来源和结论边界。它没有联网下载一套审稿知识,也没有在这几秒钟里重新训练;模型参数与上一秒完全相同,表现却像换了一种工作方式。
提示词工程最令人着迷、也最容易被说成玄学的地方就在这里:为什么一句自然语言,可以改变一个拥有数十亿参数的模型?
一种常见解释是,我们在“教模型怎么做”。但如果一句话就足以教会一项复杂能力,那么训练似乎反而显得多余。另一种解释是,某些神奇措辞可以操纵模型;可同一句“你是专家”,换一个模型、任务或上下文,效果常常就消失了。
要理解提示词为什么有效,顺序应该反过来:先问模型经历了什么样的训练,再问这段文字在调用什么。
这是 Agent 系列的第一篇。这里暂时不讨论如何组织庞大的上下文,也不讨论工具、记忆与运行循环如何组成 Harness。我们只解决最早、也最基础的一层:提示词不会创造能力,它为模型已经学到的许多可能行为提供一个索引,并引导当前生成进入其中一条轨迹。
能力先于提示词存在
大语言模型最初面对的任务看起来极其单调:读入一段文字,预测下一个词。
但训练文本并不单调。论文会先提出问题,再给证据;教程会把复杂操作拆成步骤;小说人物会维持身份与语气;问答、代码、辩论、审稿意见和数学推导,各自都有相对稳定的延续方式。为了持续预测这些文本,模型不能只记住单词频率,还必须把“什么内容通常接在什么条件之后”压进参数。
因此,预训练得到的并不是一个只会回答问题的统一人格,而是一大片有条件的行为可能性:解释、翻译、模仿文体、补全代码、延续论证、执行文本中暗含的输入输出映射。它们不是像插件一样整齐存放,也不一定可靠;它们只是分布在同一组权重里的生成倾向。
GPT-3 论文展示了这个现象的早期规模化版本:不给模型更新参数,只在输入中放入任务说明或少量示例,它就能执行翻译、问答、词语变换等不同任务。这里发生的是前向计算,而不是针对每个任务重新微调。
这正是“隐藏能力”更准确的含义。隐藏不是指模型里藏着一个完整的小程序,只等一句咒语开启;而是说,同一组参数允许许多不同的输入输出关系,默认生成只显露其中一部分。提示词改变条件,另一种行为才变得更可能。
但仅靠预训练,模型并不天然知道用户写下的每句话都应该被当作指令。网页里既有命令,也有引用、反例、广告和角色台词。理解语言,与稳定服从语言描述的任务,不是同一件事。
后训练把自然语言变成控制接口
今天我们觉得“请总结这段话”理应得到摘要,是因为模型后来又见过大量“指令—回答”形式的数据。
FLAN 的指令微调研究把许多任务改写成自然语言指令后共同训练,结果不仅改善了训练任务,也改善了未见任务类型上的零样本表现。InstructGPT又使用人工示范和回答偏好继续训练模型:先让模型模仿理想回答,再让它更倾向于生成人类偏好的结果。
两类训练共同改变了一件关键的事:自然语言不再只是要续写的内容,也成为调节行为的控制信号。
可以把训练过程想成在塑造两层东西:
- 预训练扩展“模型可能会做什么”。它从海量文本中获得知识、表达方式、任务结构和推理痕迹。
- 后训练改善“用户怎样把这些行为叫出来”。它让指令、示例、拒绝、工具调用和逐步思考等形式,稳定地对应到某类输出。
这也解释了为什么同一套提示词技巧不可能跨模型永远有效。提示词是接口,训练数据定义了接口背后连接着什么。如果模型从未形成某种能力,再精巧的提示也只能让它更流畅地暴露缺口;如果后训练已经把某种行为做成稳定入口,过去需要几十行的咒语可能只剩一个开关。
提示词工程的上限,首先由训练决定。
提示词改变的不是参数,而是这一次计算
推理时,模型可以被粗略写成一个条件分布:
P(下一个词 | 当前上下文)
当上下文从“解释这个结论”变成“像审稿人一样检查这个结论”,条件变了,后续每一层的中间表示、注意力分配与候选词概率也会随之改变。参数仍然固定,但参数参与的这一次计算不同了。
这比“某个词点亮某个神经元”更准确。真实模型中的概念和行为通常分布在许多层、许多注意力头与特征方向上,很少存在一个可以单独命名的“审稿人神经元”。不过,“提示词提供索引”也不只是修辞。Function Vectors 研究在多种上下文学习任务中发现,少量注意力头可以传递对任务输入输出关系的紧凑表示;对这些中间表示做因果干预,能够触发相应任务行为。
这不证明所有提示词都通过同一种回路工作,却支持了一个更克制的判断:模型可以在中间激活中形成“当前要执行什么任务”的表示,而上下文决定这种表示如何出现。
预训练文本
- 论文审稿意见
- 教程与推导
- 输入输出示例
- 论证与反例
后训练数据
- 指令 → 回答
- 回答偏好比较
- 格式与工具示范
固定权重中的行为可能
审稿判断证据意识模式补全输出格式问题拆解中间状态任务映射不确定性自我检查语言流畅
概念示意:训练材料塑造行为可能性,不代表某个模型的真实数据配方。
潜在行为云权重固定
审稿判断领域先验证据意识模式补全语气输出格式问题拆解中间状态任务映射不确定性自我检查批判判断语言流畅
一段完整提示词
你是一名。请参考“”的格式,,并在回答后。
训练数据固定权重中的行为可能当前激活输出倾向
当前更可能:检查主张 → 组织证据 → 展开步骤 → 核对反例
四段提示词同时生效:角色带来判断标准,格式约束输出结构,中间步骤保留推理状态,反例检查约束结论边界。
图中最重要的不是哪些词亮了,而是上方那句“权重固定”。选择角色、示例、逐步推理或反例检查时,同一批能力特征重新组合,随后产生不同的生成轨迹。图里的词是解释用的行为维度,不是真实参数截图;但它保留了提示词工程最关键的因果方向:
训练塑造可用的行为,提示词选择当前的行为,生成过程让这种选择持续产生后果。
所谓经典范式,只是在提供不同强度的索引
提示词工程里有许多看似独立的技巧。把它们放回“选择行为模式”的框架,它们的差别就不再神秘。
角色不是能力增益,而是任务先验
“你是一名专家”很弱,因为它没有说明专家在此刻应该注意什么。模型可能只学到更肯定的口吻。
“你是一名审稿人,检查证据是否支撑主张,并区分致命缺陷与可修正问题”更有用,因为角色被展开成了判断标准、注意对象和输出动作。它为任务提供了相关先验:先找主张,再找证据,最后判断缺口。
角色扮演有效时,通常不是模型突然拥有了更多知识,而是原本分散的知识与行为被放进了更合适的组合。角色不相关时,它也可能只增加套话,甚至让模型用更自信的语气犯错。
示例比要求更接近模型的原始训练方式
一句“把情绪分成正面和负面”仍然留下了标签格式、边界案例和回答长度等歧义。给出两三个“输入—输出”示例,相当于直接在上下文中制造一段待续写的局部规律。
这就是上下文学习最直观的一面:模型不必先把规则完整说出来,也可以从已经出现的模式继续。示例的价值不只是解释任务,还在于把可能的输出空间压缩到更窄的区域。
因此,示例是否代表真实边界,往往比示例数量更重要。错误或互相矛盾的示例,同样会被忠实地当作模式。
明确标准,是把抽象偏好变成可观察动作
“写得更好”不是一个清晰的生成方向。“删掉不能改变结论理解的例子”“每个主张给出证据或标明推测”则把偏好转化成模型能在文本中执行和检查的动作。
有效提示词经常显得更具体,并不是因为模型喜欢长句,而是因为具体条件减少了可接受续写之间的歧义。长度本身不产生控制力;信号密度才产生。
分解与检查,是让一种模式持续得更久
复杂任务常常不是缺少单个知识点,而是一次生成要同时维持太多约束。先提取主张,再核对证据,最后组织回答,相当于把一个容易中途漂移的行为模式拆成几个可重新定位的阶段。
“先计划”“寻找反例”“写完后按标准复查”都属于这一类。它们不仅告诉模型最终要什么,也规定中间应当如何处理已有信息。我的 Agent 笔记把这部分称为 Cognitive Control:它不补充新的世界事实,而是改变关注点、抽象层级、推理方向和行动倾向。
这几种范式可以统一为三个问题:
- 这段提示是否清楚地指向模型训练中已经存在的行为?
- 上下文是否给出了足够明确的任务映射与判断标准?
- 生成轨迹是否有空间维持中间状态,并在偏离后重新定位?
提示词技巧的价值,不在于记住固定句式,而在于诊断这三个问题缺了哪一个。
CoT 为什么有效,又为什么后来变成了“推理模式”
CoT 是这个框架最有代表性的例子。
早期做法不是改变模型,而是在提示中展示带有中间步骤的解答。Chain-of-Thought Prompting发现,在足够大的模型上,少量逐步推理示例可以显著改善算术、常识和符号推理任务。随后,“Let’s think step by step”又表明,有时一句触发语就能让模型从直接作答切换到生成推理过程。
用“索引”解释,这像是在说:不要立即进入“答案”这种文本,而要进入“问题—中间变换—答案”这种文本。模型训练中已经见过推导、证明、教程和计算过程;提示词让这些生成模式在当前问题上占据更高概率。
但中间文字的作用不只是表演解释。自回归模型每生成一步,都会把这一步重新放进后续上下文。分解出的子问题、算出的局部结果和发现的矛盾,因而能成为下一步计算的输入。一次很难完成的变换,被展开成多次连续的变换。
这更接近你直觉里的“持续调出不同能力并累积起来”,但需要去掉“轮流启用一组参数”的字面理解:参数始终共同参与计算,累积的是上下文中的中间状态;每个新状态又会引导下一次不同的激活与生成。
CoT 也有明显边界。模型可能写出流畅但错误的步骤;简单问题会被无谓拉长;如果模型没有相关能力或缺少事实,增加推理文字不会自动补齐它们。推理轨迹有价值,不等于轨迹越长越好。
今天的推理模型因此已经不只是“普通模型外面包一条 CoT 提示”。训练开始直接奖励有效的分解、检查、回退和修正策略,让模型学会怎样使用更长的推理过程。OpenAI 对 o1 的说明把这种变化分成训练时的强化学习与测试时的思考时间;关于测试时计算扩展的研究也表明,额外计算是否有效取决于题目难度、搜索方式与验证机制,并不是均匀地多生成一些词就会变好。
所以,从 CoT 到推理模式发生了两次迁移:
- 一开始,人用提示词找到训练中已有但不稳定的逐步推理轨迹。
- 后来,这些交互轨迹反过来进入后训练,变成模型更稳定的行为策略;运行系统再决定给它多少测试时计算,以及如何搜索和验证。
昨天的提示词技巧,可能成为今天的训练数据,再成为明天的模型接口。提示词工程会不断把自己的成功消耗掉:一旦某种调用方式被训练成稳定能力,工程重点就会向下一层移动。
提示词工程设计的是入口,不是能力本身
现在可以回答开头的问题了。
“你是一名严苛的论文审稿人”之所以可能有效,不是因为模型相信自己真的获得了身份,也不是因为这句话向参数里写入了审稿知识。训练已经让模型具备审稿文本、论证结构、证据判断与角色对话等行为倾向;后训练又让它更愿意把用户的话解释成任务。角色提示把这些分散的倾向组织成当前生成的入口。
这也给提示词工程划出了一条清楚的边界:
- 它能选择和组合已有能力,不能保证创造训练中不存在的能力。
- 它能改变模型处理信息的方式,不能补回根本没有进入上下文的事实。
- 它能要求模型检查自己,不能凭空提供独立证据。
- 它能描述一个行动,不能替代真正执行行动的环境与接口。
因此,优秀的提示词工程不是寻找一句跨模型通用的咒语,而是理解训练赋予了模型什么入口,再用尽可能清晰的信号把任务送到正确入口。
可当任务从一次回答延长到几十步时,只有入口还不够。模型需要持续获得正确的知识、目标、观察和反馈;同一句提示也会被更长的上下文稀释、冲突或劫持。那时,问题就从“怎样调出一种行为”变成了“怎样让正确的信息持续覆盖当前决策”。
这会是下一篇的主题:上下文工程。