跳到主要内容

提示工程 — 不动参数,把能力「问」出来

这一章讲三件事: 一个好提示的内部结构(四要素、四原则——一份能带走的实战清单); 上下文学习(ICL):示例怎么选、怎么排,以及它为什么不动参数也能「学会」; 思维链(CoT):基本形、增强招、树与图的扩展,和一场还没打完的机制之争。 主走查: 拿原书的网球算术题,看同一道题在三种问法下被怎么解开。

1. 一个提示的四个零件,和一道题的三种问法

微调一次要花掉几台服务器(第 06、07 章的账),而提示—— 就是你发给模型的那段话——改起来不要钱。提示工程就是把这段话当工程对象来设计。 原书把一个提示拆成四个要素1:

要素干什么书里的例子
任务描述说清要干什么、输出什么格式「你是程序员,补全这段代码」;找不到答案就答「无法找到」
输入数据题目本身;结构化数据要转成文本(表格线性化、图转代码)学生成绩表转成「学号 姓名 分数」的文本行
上下文信息外挂的参考资料、示例检索来的文档;几个「问题+答案」示例
提示策略怎么问的技巧「Let's think step by step」;「你是这个领域的专家」;拆成多轮

主走查:一道题的三种问法

拿原书反复使用的算术题(例 10.3/10.5,数字都是书里的),看四个零件怎么组装出三种完全不同的问法2:

题目:「Roger 有 5 个网球,又买了 2 罐,每罐 3 个。现在有几个?」(答案 11)

问法 ① 裸问:直接把题目丢过去。模型直接给答案。
—— 简单题行;题一难,它「脱口而出」就容易错。

问法 ② 给示例(ICL):先给一道带答案的样例题,再给真题——
「Question: Roger has 5 tennis balls... Answer: 11.
Question: 袋子里有 16 个球,一半是高尔夫球,其中一半是蓝色。
蓝色高尔夫球有几个?」
模型照示例的格式回答。示例教的不是答案,是「这任务长什么样」。

问法 ③ 给思维链示例(CoT):示例的答案里带中间过程——
「Answer: Let's think step by step. 先有 5 个,2 罐 × 3 = 6 个,
5 + 6 = 11,所以答案是 11。」
模型学着把中间步骤也写出来:16 的一半是 8,8 的一半是 4,答案是 4。
图说:同一道题,①靠直觉,②靠模仿格式,③把推理过程显式摊开。
③就是第 02 章「逐步推理」那种涌现能力的调用方式。

2. 四条设计原则(实战清单)

原书从各家实践里汇总了四条原则,每条配了一串操作建议,我们挑出最顶用的3:

  1. 任务目标说清说细:多说「该做什么」,少说「别做什么」; 限制输出长度用「Question: Short Answer:」这类格式后缀; 选择题就约束输出空间;排序任务别让它重写全文,给选项编上 ABCD 让它只输出排好的编号;
  2. 拆成子任务:复杂任务写明中间步骤编号;有个「单提示版树思考」咒语值得一记—— 「想象三位专家各自写一步,互相传看,谁发现自己错了就退出」; 让它下结论前先自查(「检查一下上面的解法对不对」);
  3. 给示例:少样本——只给几个例子,与「一个例子都不给」的零样本相对; 示例的顺序影响很大,问题放开头还是结尾也有影响; 实在没有示例,让模型自己生成一批再用;
  4. 用模型喜欢的格式:###、三引号、XML 标签划重点; 英文指令普遍更好,非英语任务可以先翻译再问; 数学题用 python 代码风格的提示更有效。

3. 自动优化:把「写提示」也变成任务

手写提示费经验,而模型对措辞又敏感,所以「自动找好提示」本身也成了一个研究方向。 离散提示(自然语言写的)有四条优化路线4: 梯度法(AutoPrompt:把提示位填上 [MASK],按梯度逐位替换成最好的词—— 要跑大量前向反向,慢);强化学习法(把「生成提示」当成 RL 任务,按任务成绩给奖励); 编辑法(预定义一批编辑操作——改任务描述、增删示例、换标签说法—— 迭代修改并小规模评测;只有 API、拿不到内部状态时,这是唯一可行的路); LLM 法(让一个模型当「提示工程师」:生成一批候选提示,目标模型挨个打分, 高分的留下再繁衍——要带历史记录防局部最优)。 连续提示(直接优化一串向量)就是第 07 章的前缀微调、提示微调那条线, 还有迁移学习(迁移学习:把在 A 任务上学到的东西搬到 B 任务)的玩法——在多个源任务上学好提示, 再按相关性加权组合给新任务用5

4. ICL:示例的三套讲究与两种机制解释

上下文学习(ICL,第 01 章介绍的涌现能力)是提示工程的核心武器: 给几个示例,不动参数就会做新任务。它的效果由示例的三个属性决定6:

  • 怎么选:按语义相似度选(用嵌入模型把候选示例和考题都变成向量, 挑最像的 k 个邻居)通常胜过随机选;但只挑「最像的」会让示例集趋同, 所以要掺多样性——用 MMR/DPP 这类「既要相关又要互不相同」的算法; 还可以让大模型给候选示例打分,甚至训一个分类器专挑好示例;
  • 怎么排版:模板从简到繁有三档——只有输入输出、加任务描述、加思维链(§1 的三种问法); 模板也能让模型自动生成:手工写一小批种子模板,让模型给新任务仿写;
  • 怎么排序:模型对示例顺序敏感(位置偏差),常偏好靠后的内容; 把与考题最像的示例放在最后。没有测试集时,可以用模型预测分布的 (第 11 章讲过:分布越集中熵越低)来评估哪个顺序好——熵低者胜7

它为什么有用? 两种机制解释,原书并列给出8。表里两个词先说掉:梯度下降(训练时「顺着让损失变小的方向挪参数」的标准做法,这里只是类比)。

另一个是决策树(一种老派的规则分类器)。

解释主张证据
任务识别示例只是帮模型「认出」这是预训练里学过的任务,然后调用旧知识小模型(350M)只有这个水平
任务学习模型能从示例里学到预训练没见过的新映射——前向计算里隐式地做了一次「模拟的梯度下降(训练时「顺着让损失变小的方向挪参数」的标准做法,这里只是类比)」,甚至能模拟决策树(一种老派的规则分类器)foo/bar 实验

foo/bar 实验是这场争论的关键证据:把示例里的真实标签换成无关符号 (情感分析——判断一段文本是好评还是差评——的「正面/负面」换成「foo/bar」),模型没法再靠「认出任务」, 只能从示例里学全新的「什么样的文本叫 foo」。结果:大模型成绩掉得很少—— 它真能从示例里学新映射;小模型掉得多,它只会识别9。 训练侧也有结论:专门用「按示例预测」的元任务(MetaICL)训过的模型 ICL 更强; 预训练数据里多域混合、长程依赖丰富的,ICL 也更强10

5. CoT:把中间步骤写出来,再谈树与图

思维链(CoT)把提示从「输入→输出」改成「输入→中间步骤→输出」。 零示例时一句咒语就能触发:「Let's think step by step」 (或「Take a deep breath and work on this problem step by step」)11。 三条增强路线12:

  • 示例更复杂、更多样:挑步骤多、题干长的题做示例;或用 k-means (一种聚类(把样本按相似度自动分成 k 堆)算法)从每堆里挑一道代表题。 反直觉的一点:模型生成的示例思维链里有错也没关系,多样性本身就能摊薄错误的影响;

  • 生成更稳:自洽性(第 09 章幻觉检测里的老熟人——同题采多条推理路径, 答案投票,多数胜出);或训练验证器:DIVERSE 练了两个裁判, 全路径裁判看「整条链 + 最终答案」打分,逐步裁判看每一步是否与正确路径重合;

  • 结构更宽:链不够用就扩成树和图。思维树(ToT)允许每一步分多个叉, 给每个节点打「通向答案的置信分」,低分早剪枝——原书用 24 点游戏演示: 普通 CoT 走错了只能从头再来,树可以回溯换枝;思维图(GoT)更进一步, 任意节点可以互连——长数组排序演示里,它把数组分四组各自排、再归并, 子节点之间能交换中间结果13

6. 机制之争:CoT 真正起作用的,可能不是「推理」

CoT 为什么有效,原书摆了三组研究,结论一个比一个反直觉14:

  • 起源:训练数据里埋着「重叠的变量簇」——两个从不共现的概念, 也能通过一串中间变量关联起来;贝叶斯(以「按证据更新信念」著称的概率学派)网络 (一种表示变量依赖关系的概率模型)实验里, 不给中间变量时模型的条件概率预测偏差很大,给了就大幅下降—— 思维链有效,可能因为数据本身就是「链式关联」的;
  • 扰动实验(最狠):把 CoT 示例拆成「符号」(题目里的数与实体)与「模式」 (公式与句式),分别做手脚。结果:公式写错几乎不影响成绩; 真正影响成绩的是「与问题相关、逻辑上连贯」。研究者的解读是—— CoT 里的符号与模式主要用来传达任务意图,而不是提供正确推理; CoT 是一种「把任务意图表达得更清楚」的增强版 ICL;
  • 旁证:根本不给 CoT 提示,只在生成时保留那些「自己写出推理过程」的候选, 正确率也更高——中间步骤本身确实在帮忙,不只是格式安慰剂。

原书的态度是摆证据不下定论:CoT 的机制解释仍是开放问题。 这个「不确定」本身就是第 16 章(开放问题)的素材。

判断(我们的,不是书里的): 「公式写错不影响成绩」是全书提示部分最值得记住的实验。 它和第 02 章「涌现可能是尺子画出来的」是同一类警告: 我们以为机制是 A(模型在推理),实验说效果可能来自 B(任务意图被说清了)。 用 CoT 的正确姿势因此是:别迷信「步骤正确性」, 而要保证示例「与问题相关、前后连贯」——这是实验真正支持的东西。 如果错,会错在: 如果后续研究证明在数学等强逻辑任务上, 步骤正确性确实显著影响成绩(而不只是相关性),那「任务意图说」就高估了自己—— 目前(本书成书时)扰动实验的证据站在「相关性」一边。

7. 作者的判断与证据

  • 实验证据: foo/bar 实验9、MetaICL10、扰动实验14、24 点与长数组排序演示13, 均有原论文;
  • 作者汇总的实践清单: 四原则与操作建议是原书从 OpenAI 文档与各论文里汇编的, 属于经验集而非实验结论3;
  • 明确标为开放问题: CoT 的机制解释,原书只摆三组研究,没有下结论14

8. 边界与局限

  • 提示工程的全部技巧都假设「能力已在模型里」——它只是唤醒,不能注入 (与第 07 章指令微调同一条边界);
  • 示例选择/顺序的收益因任务与模型而异,原书的方法多为启发式,没有通用最优解;
  • 扰动实验主要在数学与常识任务上做,代码、多模态任务上「公式对错无关」是否成立未知;
  • ToT/GoT 的多分支搜索成本数倍于普通 CoT,原书未给「何时值得上树」的量化判据;
  • 本章(及原书对应章节)写于长 CoT 模型(o1/R1)爆发前夜—— 「让模型自己想久一点」内化为模型能力后,手工提示工程的一部分技巧会被吸进训练里(第 14 章)。

9. 可带走的

  1. 提示四要素:任务描述、输入数据、上下文信息、提示策略——写好提示是四件事不是一件事;
  2. 原则:说清目标(多说该做什么)、拆子任务、给示例、用模型喜欢的格式(###、英文、代码风);
  3. 只有 API 时用编辑法自动优化;「让 LLM 当提示工程师」已是成熟路线;
  4. ICL 三讲究:选(相似+多样)、排(最像的放最后)、评(没测试集就看熵);
  5. 两种机制:小模型只会「识别旧任务」,大模型真能「学新映射」(foo/bar 实验);
  6. CoT 咒语:「Let's think step by step」;示例要复杂多样,有错也不怕;
  7. 自洽性:多条路径投票;验证器:全路径与逐步两种裁判;
  8. ToT 可回溯剪枝(24 点),GoT 任意互连(分组排序归并);
  9. 公式写错几乎不影响成绩——CoT 主要在传达任务意图;用 CoT 求「相关且连贯」,别迷信步骤正确;
  10. 提示工程的边界:它唤醒能力,不注入能力。

10. 原文地图

主题原书章原文位置
提示四要素10.1.1text/55-ch10-01-10-1-basic-prompt.txt:11(搜「four key elements」)
任务描述与输入数据例子10.1.1text/55-ch10-01-10-1-basic-prompt.txt:17(搜「Unable to find the answer」) · text/55-ch10-01-10-1-basic-prompt.txt:29(搜「Zhang San」)
上下文与策略10.1.1text/55-ch10-01-10-1-basic-prompt.txt:41(搜「task demonstrations」) · text/55-ch10-01-10-1-basic-prompt.txt:55(搜「think step by step」)
四条设计原则与建议10.1.1text/55-ch10-01-10-1-basic-prompt.txt:75(搜「Clearly express the task goal」) · text/55-ch10-01-10-1-basic-prompt.txt:109(搜「three different experts」) · text/55-ch10-01-10-1-basic-prompt.txt:99(搜「indicators」)
模型友好格式10.1.1text/55-ch10-01-10-1-basic-prompt.txt:137(搜「XML tags」) · text/55-ch10-01-10-1-basic-prompt.txt:151(搜「python」)
离散优化四法10.1.2text/55-ch10-01-10-1-basic-prompt.txt:161(搜「AutoPrompt」) · text/55-ch10-01-10-1-basic-prompt.txt:165(搜「API-only」) · text/55-ch10-01-10-1-basic-prompt.txt:167(搜「Monte Carlo」)
连续优化与迁移10.1.2text/55-ch10-01-10-1-basic-prompt.txt:173(搜「Prefix-tuning」) · text/55-ch10-01-10-1-basic-prompt.txt:175(搜「transfer learning」)
ICL 定义与公式10.2.1text/56-ch10-02-10-2-in-context-learning.txt:11(搜「formatting function」)
示例选择三法10.2.2text/56-ch10-02-10-2-in-context-learning.txt:25(搜「k-nearest neighbors」) · text/56-ch10-02-10-2-in-context-learning.txt:27(搜「determinantal point process」)
示例格式三档与自动生成10.2.2text/56-ch10-02-10-2-in-context-learning.txt:47(搜「Answer: 11」) · text/56-ch10-02-10-2-in-context-learning.txt:103(搜「seed set」)
顺序与熵评估10.2.2text/56-ch10-02-10-2-in-context-learning.txt:109(搜「semantic similarity」) · text/56-ch10-02-10-2-in-context-learning.txt:111(搜「entropy」)
训练侧影响(MetaICL/数据)10.2.3text/56-ch10-02-10-2-in-context-learning.txt:121(搜「MetaICL」) · text/56-ch10-02-10-2-in-context-learning.txt:123(搜「long-tail words」)
识别 vs 学习与 foo/bar10.2.3text/56-ch10-02-10-2-in-context-learning.txt:127(搜「task recognition and task learning」) · text/56-ch10-02-10-2-in-context-learning.txt:133(搜「foo/bar」)
CoT 基本形与咒语10.3.1text/57-ch10-03-10-3-chain-of-thought-prompting.txt:7(搜「Take a deep breath」)
复杂化/多样化示例10.3.2text/57-ch10-03-10-3-chain-of-thought-prompting.txt:19(搜「Complicated CoT」) · text/57-ch10-03-10-3-chain-of-thought-prompting.txt:21(搜「k-means」)
自洽性与 DIVERSE10.3.2text/57-ch10-03-10-3-chain-of-thought-prompting.txt:27(搜「self-consistency」) · text/57-ch10-03-10-3-chain-of-thought-prompting.txt:29(搜「DIVERSE」)
ToT 与 GoT10.3.2text/57-ch10-03-10-3-chain-of-thought-prompting.txt:35(搜「24-point game」) · text/57-ch10-03-10-3-chain-of-thought-prompting.txt:39(搜「four groups」)
CoT 机制三研究10.3.3text/57-ch10-03-10-3-chain-of-thought-prompting.txt:49(搜「overlapping」) · text/57-ch10-03-10-3-chain-of-thought-prompting.txt:51(搜「symbols and patterns」)

Footnotes

  1. 出处:「10.1.1 Key Elements」第 11 段(text/55-ch10-01-10-1-basic-prompt.txt:11,搜「four key elements」);各例见第 17-29 段。

  2. 出处:例 10.3 第 47-51 段(text/55-ch10-01-10-1-basic-prompt.txt:47,搜「tennis balls」)与例 10.5 第 41-67 段(text/56-ch10-02-10-2-in-context-learning.txt:47,搜「Answer: 11」;text/56-ch10-02-10-2-in-context-learning.txt:63,搜「think step by step」)。

  3. 出处:「10.1.1 Design Principles」第 75-151 段(text/55-ch10-01-10-1-basic-prompt.txt:75,搜「Clearly express the task goal」;text/55-ch10-01-10-1-basic-prompt.txt:109,搜「three different experts」;text/55-ch10-01-10-1-basic-prompt.txt:137,搜「XML tags」)。 2

  4. 出处:「10.1.2 Discrete Prompt Optimization」第 161-167 段(text/55-ch10-01-10-1-basic-prompt.txt:161,搜「AutoPrompt」;text/55-ch10-01-10-1-basic-prompt.txt:165,搜「API-only」;text/55-ch10-01-10-1-basic-prompt.txt:167,搜「Monte Carlo」)。

  5. 出处:「10.1.2 Continuous Prompt Optimization」第 173-175 段(text/55-ch10-01-10-1-basic-prompt.txt:173,搜「Prefix-tuning」;text/55-ch10-01-10-1-basic-prompt.txt:175,搜「transfer learning」)。

  6. 出处:「10.2.2 Demonstration Selection」第 25-29 段(text/56-ch10-02-10-2-in-context-learning.txt:25,搜「k-nearest neighbors」;text/56-ch10-02-10-2-in-context-learning.txt:27,搜「determinantal point process」;text/56-ch10-02-10-2-in-context-learning.txt:29,搜「classifier」)。

  7. 出处:「10.2.2 Demonstration Order」第 109-111 段(text/56-ch10-02-10-2-in-context-learning.txt:109,搜「semantic similarity」;text/56-ch10-02-10-2-in-context-learning.txt:111,搜「entropy」)。

  8. 出处:「10.2.3 The Underlying Working Mechanism of ICL」第 127-131 段(text/56-ch10-02-10-2-in-context-learning.txt:127,搜「task recognition and task learning」)。

  9. 出处:「10.2.3 The Underlying Working Mechanism of ICL」第 133 段(text/56-ch10-02-10-2-in-context-learning.txt:133,搜「foo/bar」)。 2

  10. 出处:「10.2.3 The Impact of the Training Phase on ICL Ability」第 121-123 段(text/56-ch10-02-10-2-in-context-learning.txt:121,搜「MetaICL」;text/56-ch10-02-10-2-in-context-learning.txt:123,搜「long-tail words」)。 2

  11. 出处:「10.3.1 Basic Form of CoT Prompting」第 7 段(text/57-ch10-03-10-3-chain-of-thought-prompting.txt:7,搜「Take a deep breath」)。

  12. 出处:「10.3.2 Enhancement Strategies for CoT Prompting」第 19-29 段(text/57-ch10-03-10-3-chain-of-thought-prompting.txt:19,搜「Complicated CoT」;text/57-ch10-03-10-3-chain-of-thought-prompting.txt:21,搜「k-means」;text/57-ch10-03-10-3-chain-of-thought-prompting.txt:27,搜「self-consistency」;text/57-ch10-03-10-3-chain-of-thought-prompting.txt:29,搜「DIVERSE」)。

  13. 出处:「10.3.2 Extended Reasoning Structures」第 35-39 段(text/57-ch10-03-10-3-chain-of-thought-prompting.txt:35,搜「24-point game」;text/57-ch10-03-10-3-chain-of-thought-prompting.txt:39,搜「four groups」)。 2

  14. 出处:「10.3.3 Further Discussion on CoT」第 49-51 段(text/57-ch10-03-10-3-chain-of-thought-prompting.txt:49,搜「overlapping」;text/57-ch10-03-10-3-chain-of-thought-prompting.txt:51,搜「symbols and patterns」)。 2 3