主题
第 7 章 · Prompt 的构成与信息编排
欢迎来到第二部。
第一部结束时,我们说过:优秀的交互者,从不对着黑盒念咒。 现在黑盒已经拆完了——你知道模型是一台在概率分布上做计算的机器, 知道它的注意力如何分配、记忆如何见顶、家族如何分化。
从这一章起,我们不再谈论机器本身,而是开始回答那个真正的问题:
知道了这一切之后,话到底应该怎么说?
第二部的六章,讲的全部是通用法则—— 不依赖任何特定软件,不绑定任何特定模型。 无论你面对的是 GPT-5.6、Claude Fable 5,还是本地部署的开源模型, 无论你用它写代码、查资料还是创作故事,这些法则都同样成立。
而这六章的起点,是一个大多数人从来没有想过的事实。
章节概要
- 你发的那句话,不是模型收到的全部——完整 prompt 是一份由多方拼装的文档
- 提示词为什么有效:从"预测下一个词"的原理,推导出写提示词的三条根本推论
- 完整 prompt 的五大构件:系统指令、参考资料、对话历史、当前请求、输出引导
- 编排四法则:基于 U 型注意力曲线,决定每类信息该放在窗口的什么位置
- 提示词不是代码:为什么"绝对禁止"从来不是硬约束,以及正确的迭代心态
一、你发的那句话,不是模型收到的全部
请回想你上一次使用 ChatGPT 或者其它 AI 助手的情景。
你在输入框里打了一句话,比如:
帮我把这段话改得正式一点。
然后模型开始回答。在你的感知里,你和模型之间传递的就是这一句话。
但如果你能截获真正发往模型的数据,你会看到一份远比这句话庞大的文档。在你那句话的前面,起码还排着这些东西:
- 一段你从未见过的系统提示词——它规定了这个助手叫什么名字、由谁开发、今天是几月几号、什么话不能说、回答该用什么格式。在主流的商业助手里,这段文字动辄数千 token。
- 你在设置里填过的自定义指令,以及产品替你记下的用户记忆——"用户是一名程序员,偏好简洁回答"。
- 如果你开了联网或知识库功能,还有一批检索回来的资料。
- 你们这场对话的全部历史记录——模型是无状态的,每一轮都要把历史从头再读一遍。
- 最后,才是你刚刚敲下的那句话。
这份完整的文档,才是模型真正意义上的 prompt。
所以让我们在这里把定义立正:
Prompt 不是"你打的那句话",而是一次请求中被送进上下文窗口的全部文字。
你那句话只是其中的一小段,有时甚至是占比最小的一段。
这个视角一旦建立,很多现象立刻就有了解释。为什么同一个问题,在新对话里问和在长对话末尾问,答案质量天差地别?因为 prompt 根本不是同一份。为什么你换了一个 AI 产品,同样的模型表现却不一样?因为每家产品拼进去的系统提示词和附加内容不同。
术语的演变:从提示词工程到上下文工程
正因为"你打的那句话"只是冰山一角,从 2025 年起,业界越来越多地用上下文工程,即 Context Engineering,来取代"提示词工程"这个叫法。前 OpenAI 与特斯拉的研究者 Andrej Karpathy 曾公开表态支持这个新词——因为真正决定输出质量的,是"往上下文窗口里装什么、怎么装"这整件事,而不只是措辞的技巧。
本书仍然沿用"提示词工程"这个更通行的名字,但你应该始终按"上下文工程"来理解它:你管理的是整个窗口,不是一句话。
二、雕刻概率:提示词到底为什么有效
上一章的结尾说,我们要开始学习"雕刻概率"。这不是修辞——这是提示词工程在数学上的准确描述。
回忆第 3 章的结论:模型做的唯一一件事,是根据目前窗口里的所有 token,计算下一个 token 的概率分布。
这意味着,你写进窗口的每一个字,都是这个概率计算的条件。提示词工程的全部原理,就浓缩在这一句话里。从它出发,可以推出三条根本推论——后面五章的所有技巧,都是这三条推论的展开。
推论一:模型不"服从"命令,它"延续"文本
当你写下"请用表格总结"时,模型并没有一个服从指令的开关被按下。真实发生的事情是:在它读过的海量训练数据里——尤其是第 4 章讲过的 SFT 阶段——"请求 + 执行"是一种极高概率的文本模式。你的指令之所以有效,是因为它让"照做"成为了概率最高的延续。
这个区别看起来像哲学游戏,实践上却处处生效。它意味着:
写提示词,本质上是在为你想要的输出制造"证据"。
指令是一种证据,示例是一种证据,语气、格式、用词的讲究全都是证据。证据越充分、越指向同一个方向,你想要的输出概率就越高。反过来,一条孤零零的命令,如果和上下文里其它所有信号相矛盾,它就只是一份弱证据——模型完全可能"不听话",因为在它的分布里,别的延续概率更高。
这也解释了各家官方指南共同推荐的一个技巧:给指令附上理由。Anthropic 的文档里有一个经典对比——"绝不要使用省略号"效果平平,改成"你的回答会被语音引擎朗读,而省略号无法发音,所以不要使用省略号"之后,遵循率显著提高。理由本身就是一份高质量的证据,而且模型能从理由中泛化出你没有明说的其它要求。
推论二:一切都算数——包括你不想算数的部分
条件概率不挑食。你写进窗口的所有东西都在参与计算,不管你主观上想不想让它起作用。
错别字在起作用——它把分布往"随意、低质量文本"的方向拖。 排版混乱在起作用——它暗示这是一份不讲究的文档,而不讲究的文档后面往往跟着不讲究的内容。 你的情绪也在起作用——一个经典的恶性循环是:模型答错了,你回一句"不对!重写!",它又错了,你火气更大……几轮下来输出质量不升反降。原因之一是,此时窗口里已经堆满了失败的范例和争吵的语气,每一轮生成都在这堆坏证据的条件下进行。这种现象可以称为上下文污染——有时候,开一个新对话比继续纠正更有效,因为那是唯一能真正清空坏证据的办法。
同样的机制,还解释了负面指令的天生弱势。当你写下"不要提到大象"时,"大象"这个词已经进入了窗口,堂而皇之地参与后续每一次概率计算,而否定词的语义力量远比你以为的微弱——这在学界有专门的研究,被称为否定盲区。所以各家指南在这一点上的建议完全一致:尽量把"不要做 X"改写成"要做 Y"。这个话题会在第 11 章正式展开。
推论三:信息会互相稀释,多写不等于更受控
物理层面的原因你已经知道:注意力是按权重瓜分的,窗口里的内容越多,每一段能分到的注意力就越少。
落到写作层面,就是一条朴素的纪律:提示词追求的不是信息量,而是信噪比。每多写一段与任务无关的背景、每多加一条"以防万一"的说明,都在向下摊薄那些真正重要的指令的权重。写提示词时最有价值的操作往往不是"再补充一点",而是"删掉这段"。
Anthropic 的工程团队给这件事起了一个精确的名字:注意力预算。窗口里的每一个 token 都在消耗这份预算。他们对整个上下文工程的总结也因此只有一句话——寻找那个最小的高信号 token 集合,让它最大化你想要的结果出现的概率。
三、完整 prompt 的解剖:五大构件
现在把本章开头那份"庞大的文档"正式拆开。无论哪家产品、哪种应用,一份完整的 prompt 基本都由五类构件组成:
| 构件 | 职责 | 典型内容 |
|---|---|---|
| 系统指令 | 全局法律 | 身份设定、行为规范、语气要求、禁则 |
| 参考资料 | 开卷材料 | 检索结果、文档、数据、知识库条目 |
| 对话历史 | 已发生的一切 | 之前的每一轮问答 |
| 当前请求 | 本轮的新输入 | 你刚刚发出的内容 |
| 输出引导 | 收笔的方向 | 格式要求、示例、回答的开头 |
逐个看一遍。
系统指令是整份 prompt 的宪法层。它定义"你是谁、你该怎么表现",而且它在上下文清理时享有特权,永远不会被截断掉。它适合承载长期稳定、全局生效的信息。它最常见的误用,是被塞进大量与"全局行为"无关的临时细节——那些细节应该出现在别处。
参考资料是模型的开卷考试材料。模型的参数知识固化于训练截止的那一刻,而且会产生幻觉;把可靠的资料直接放进窗口,是对抗这两个问题最直接的手段。它的典型误用是"一股脑全倒进去"——稀释定律会立刻惩罚你。
对话历史是唯一一个不由你逐字控制、却持续膨胀的构件。它是记忆的来源,也是上下文污染的主要来源。要意识到:历史里模型自己说过的每一句话,也会成为它后续输出的证据——它会模仿自己,好习惯和坏习惯都会自我强化。
当前请求没什么神秘的,但有一个位置优势值得记住:它天然处于整份 prompt 的末尾附近,是近因效应的最大受益者。这就是为什么"把要求和问题本身写在一起"几乎总是好过"要求在十轮之前说过了"。
输出引导是最容易被忽略的一类。它不描述任务,而是直接塑造回答的形状:给出格式模板、给出示例,甚至直接替模型写好回答的第一句。最后这种手段叫 prefill,曾长期是格式控制里最强力的一招,但如今在部分闭源模型上已经开始退场。它的原理、用法与现状,正是下一章 role 系统要讲的内容。
四、编排四法则:把对的信息放在对的位置
五大构件确定了"放什么",接下来是"放在哪"。
第 5 章结尾说过,写提示词的人本质上是一名案板规划师。那里给出了 U 型注意力曲线:开头被反复注视,结尾紧贴生成位置,中间是黑洞。现在把它落成四条可以直接执行的法则。
法则一:稳定的全局规则,放开头。 身份、原则、语气、禁则——这些"从第一个字管到最后一个字"的信息,放在 prompt 的最前部,吃满首因效应。这也正是所有产品把系统指令放在最顶端的原因。
法则二:即时的强制要求,放末尾。 "必须输出 JSON""不超过 200 字""用中文回答"——这类一次性的硬约束,写在整份 prompt 的最后,紧贴模型的下笔处,吃满近因效应。如果一条约束特别重要,开头交代过之后在末尾再重申一遍,两头夹击,是完全正当的手段——OpenAI 的官方指南直接印证了这一点:靠近末尾的指令优先级更高,长上下文中的关键指令应当首尾各放一份。
法则三:大块资料放前部,问题和指令放在资料之后。 当你需要塞入长文档时,把文档放在 prompt 的前部,把"你要对这份文档做什么"放在文档之后。Anthropic 的官方文档明确给过这条建议:对于长资料输入,把问题放在资料后面而不是前面,在他们的内部评测中最多能带来三成的质量提升。原因不难理解——指令若在资料之前,读完几万 token 的资料后它早已沉入"中部";指令在资料之后,则始终占据 U 型曲线的右端。
要诚实地说明:各家在细节上并不完全一致。Anthropic 主张问题放在资料之后;OpenAI 则建议指令在资料前后各放一份,只放一份时放在资料之前。但两家的共识清晰可见——谁也不许把关键指令埋进长资料的中间。遇到这类分歧,用本章第五节的办法在你自己的任务上测一测,让实验替权威说话。
法则四:中间只放"经得起模糊阅读"的内容。 U 型曲线的中部注定只能得到低分辨率的注意力,这个位置不适合放任何"一字不能错"的信息。适合放在这里的,是对话历史这类"大意对了就行"的内容。反过来说:检查你的 prompt 时,专门看一眼正中间那一段——如果那里躺着一条关键约束,把它捞出来,移到两端去。
一条来自官方文档的黄金法则
Anthropic 建议:写完 prompt 之后,把它拿给一位完全不了解这个任务的同事,让他照着执行一遍。如果他会困惑,模型就会困惑。模型很聪明,但它是一位对你的语境一无所知的新员工——清晰,永远排在一切技巧之前。
一个改造示例
看一份典型的"问题不在措辞、全在编排"的 prompt:
你好!我想请你帮我看看我写的科普文章。我平时挺喜欢写作的,这篇写了两周。请注意所有专业术语第一次出现时必须给出通俗解释,这一点非常重要。文章是关于黑洞的,大概三千字,我贴在下面了。【此处省略三千字】哦对了,帮我看看有没有事实错误,语气不用太客气。
按四法则改造:
你是一名严格的科普编辑。请审阅下面这篇约三千字的黑洞科普文章。
【三千字文章,用分隔符包住】
请完成两件事:
- 指出所有事实错误;
- 检查每个专业术语首次出现时是否给出了通俗解释——这是本次审阅的重点。
直接指出问题,不必客套。
改动了什么?寒暄和"写了两周"的背景被删掉了——它们是纯噪音,甚至会诱导模型客气地夸你。最重要的术语要求,原本埋在三千字之前的中部,现在移到了资料之后、全文末尾。文章本身按法则三放在前部。任务被压缩成清晰的清单,贴着模型的下笔处。
一个字的措辞技巧都没有用到,仅仅是删减与换位。这就是编排的力量。
五、常见误区:把提示词当成代码
第二部开篇的最后,需要校准一个心态。很多刚入门的人把提示词当成代码来写——以为它像程序一样,写对了就必然执行,出错了就一定是"语法"问题。这个心智模型会持续地误导你。
提示词和代码有三个根本不同:
它不是确定性的。同一份 prompt 发两次,结果可以不同——模型输出的是分布,最终的文字要经过采样,这是第 9 章的主题。
它没有硬约束。代码里的条件判断是铁律,提示词里的"绝对禁止"只是一份权重很高的证据。推论一已经解释过:只要上下文里出现了更强的反向证据,任何禁令都可能被突破。这不是模型的 bug,这是概率机器的本性。
它对微小改动极其敏感,却又没有报错信息。改一个词、换一处标点,分布就悄悄移动了,而你不会收到任何警告。
由此得出的工作方式,更接近实验科学而不是编程:一次只改一处,否则你不知道是哪个改动起了作用;保留每个版本,方便回退;固定几个测试问题,每次大改后都跑一遍,防止修好了这里、坏掉了那里。
这不是本书独创的洁癖。Google 的官方提示词白皮书专门建议用表格记录每一次迭代的版本、参数与结果;Anthropic 的文档更是把"先建立成功标准和评估方法"列为做提示词工程的前置条件。业界最好的实践者,都在像做实验一样写提示词。
把这个心态带上,后面五章的所有技巧才能真正为你所用。
六、写给下一章
这一章我们把完整的 prompt 拆成了五大构件,又用四条法则决定了它们的位置。
但还有一个问题被刻意跳过了:这五类文字送进模型时,并不是简单地首尾相接拼成一大段。它们各自穿着不同的"制服"——有的标着 system,有的标着 user,有的标着 assistant。
这套 role 系统是每个用过 API 的人都见过、却很少有人真正理解的东西。系统提示词的"特权"从何而来?它真的不可违抗吗?为什么替模型写好回答的开头,是最强的格式控制手段?
下一章,我们把这层制服脱下来看——你会发现,所谓 role,也不过是几个特殊的 token。
要点回顾
- Prompt 是被送进上下文窗口的全部文字,你打的那句话只是其中一段——所以现代的说法是"上下文工程"
- 提示词的三条根本推论:模型不服从而是延续,所以要制造证据;一切内容都参与计算,警惕上下文污染;信息互相稀释,追求信噪比而非信息量
- 五大构件:系统指令管全局,参考资料供开卷,对话历史会自我强化,当前请求坐享末位优势,输出引导直接塑造回答的形状
- 编排四法则:全局规则放开头;强制要求放末尾,重要的两头重申;大块资料在前、指令在资料之后;中部只放经得起模糊阅读的内容
- 提示词不是代码:没有确定性、没有硬约束、没有报错——用实验科学的方式迭代它
参考文献
- Liu, N. F., Lin, K., Hewitt, J., Paranjape, A., Bevilacqua, M., Petroni, F., & Liang, P. (2024). Lost in the Middle: How Language Models Use Long Contexts. Transactions of the Association for Computational Linguistics, 12, 157–173. arXiv:2307.03172.
- Anthropic. (2025). Effective Context Engineering for AI Agents. Anthropic Engineering Blog.
- Anthropic. Prompting Best Practices. Claude Platform Documentation.
- OpenAI. (2025). GPT-4.1 Prompting Guide. OpenAI Cookbook.
- Boonstra, L. (2024). Prompt Engineering. Google Whitepaper.
- Negation: A Pink Elephant in the Large Language Models' Room? (2025). arXiv:2503.22395.
- Ouyang, L., Wu, J., Jiang, X., et al. (2022). Training language models to follow instructions with human feedback. In Advances in Neural Information Processing Systems (NeurIPS). arXiv:2203.02155.