主题
第 7 章 · Prompt 的构成与信息编排
欢迎来到第二部。
第一部结束时,我们说过:真正的高手,从不对着黑盒念咒。 现在,黑盒已经被彻底拆开了—— 你知道模型是一台在词表概率分布上做加权混合与查表计算的机器, 知道它的知识焊死在预训练的 FFN 里,礼貌与规矩来自后天的微调与对齐, 也知道它的短期工作记忆被锁在上下文窗口里,受制于冷酷的 U 型注意力曲线。
从这一章起,我们不再拆解机器本身,而是开始回答那个真正的问题:
知道了这一切之后,我们对模型说的话,到底应该怎么写、怎么摆?
第二部的六章,讲的全部是放之四海而皆准的通用法则—— 不依赖任何特定软件,也不绑定任何单一模型。 无论你面对的是 GPT-6 Astra、Claude Opus 5.5、Gemini 4 Argon,还是 DeepSeek-V4 与本地开源模型, 无论你用它写代码、审文档、做分析还是搞创作,这些底层规律都同样成立。
而这六章的起点,是一个大多数日常使用者从未留心过的事实。
章节概要
- 冰山之下:你敲进输入框的那句话,只是模型实际收到的完整文档里的一小角
- 雕刻条件概率:从"预测下一个词"的数学本质,推导出提示词起效的三条根本推论
- 完整 Prompt 的五大构件:系统指令、参考资料、对话历史、当前请求、输出引导各自的职责与误用陷阱
- 信息编排四法则:把 U 型注意力曲线,直接翻译成摆放信息的四条铁律
- 提示词不是代码:为什么"绝对禁止"从来不是硬约束,以及像实验科学一样迭代提示词的方法
一、你发的那句话,不是模型收到的全部
请回想一下你平时使用任何一个 AI 聊天产品时的情景。
你打开对话框,在底部的输入栏里敲下一行字,比如:
帮我把这段会议记录改得正式一点。
按下回车,几秒钟后,模型开始往外吐字。 在你的直觉感知里,你和模型之间刚刚发生的交互再简单不过—— 你递过去一句话,它还回来一段回答。
但如果你能站在服务器中间,截获这一秒钟真正发往底层大语言模型的数据包, 你看到的绝对不是那短短十三个字,而是一份动辄数千甚至上万 token 的庞大文档。
在你刚敲下的那句话前面,至少已经整整齐齐地排着以下几样东西:
- 一段你从未谋面的系统提示词(System Prompt):产品开发者事先写好的"最高宪法"。它详细规定了这个助手叫什么名字、由哪家公司研发、今天的真实日期是几月几号、遇到哪些话题必须拒绝、回答问题时应该保持怎样的语气与排版习惯。在主流商业产品里,光这一段幕后指令就常有两三千字。
- 你的个人偏好与跨对话记忆(Memory):产品在后台悄悄为你建立的档案——比如「该用户是一名后端工程师,偏好直接给出代码,讨厌冗长的寒暄」。
- 外部检索回来的参考资料(Retrieved Context):如果你开启了联网搜索或上传了附件,系统会先把搜出来的网页片段或文档切片塞进这里。
- 当前对话的全部历史记录(Chat History):由于模型本身是无状态的,前面聊过的二十轮一问一答,这一秒必须一字不落地重新抄送一遍。
- 最后,才是你刚刚敲下的那句:「帮我把这段会议记录改得正式一点。」
这五样东西拼在一起,合成了一整卷长长的文本,一次性推进了模型的上下文窗口。
所以,在进入第二部之前,我们必须先把 Prompt(提示词) 这个词的定义彻底立正:
Prompt 不是"你在输入框里打出的那句话",而是一次请求中被送进模型上下文窗口的全部文字的总和。
你亲手敲下的那句话,只是整份 Prompt 最末尾的一小截;在很多复杂应用里,它甚至只占不到 5% 的篇幅。
换上这张全景图,平时困扰你的许多怪现象就有了直接解释:
- 同样一个问题,在新对话第 1 轮问,和在老对话第 80 轮末尾问,回答质量往往天差地别:表面上看是同一个问题,但送进模型的 Prompt 根本不是同一份——第 80 轮的那份包裹里,已经塞满了前 79 轮的数万字历史,你的问题早就被淹没了。
- 调用同一个底层模型,换一家套壳产品或换一套前端配置,感觉像换了一个脑子:模型还是那个模型,但各家在幕后替你拼上去的第 1、2、5 层内容截然不同。
术语的演进:从"提示词工程"到"上下文工程"
正因为"你打的那句话"只是冰山露出水面的一角,从 2025 年起,AI 工业界越来越多地使用上下文工程(Context Engineering)这个词,来取代早年略显狭隘的"提示词工程(Prompt Engineering)"。
前 OpenAI 与特斯拉 AI 负责人 Andrej Karpathy 以及 Anthropic 的工程团队都曾公开强调这一转变:许多人一听到"提示词",脑子里想到的就是怎么在一句话里遣词造句、怎么想出一句神奇的咒语;但真正决定大模型输出上限的,是如何设计、筛选并排布送进上下文窗口里的整套信息生态。
本指南沿用了读者更熟悉的"提示词工程"作为书名,但请你从现在起,始终用"上下文工程"的眼光来看待它:你手里管理的是一整个上下文窗口,而不是一句话。
二、雕刻概率:提示词到底为什么有效
大语言模型从头到尾只会做一件事——根据当前上下文窗口里已经出现的所有文字,计算下一个词出现的概率分布。
在概率论里,这叫做条件概率:当前窗口里的全部内容,就是决定下一个词概率的"前提条件"。 这意味着,你放进上下文窗口里的每一个词、每一个标点、每一段格式,都在直接改写这道概率计算题的前提条件——把原本只有 1% 概率的词推高到 80%,把原本占 50% 概率的平庸套话压低到 0.1%。
提示词在数学上到底是什么?(条件概率公式)
如果把整件事写成一行公式,大语言模型的单步输出就是计算如下条件概率分布:
竖线
提示词工程的全部大厦,都建立在这一条原理之上。 顺着它往下推,可以直接得出三条根本推论——第二部后面所有章节的具体技巧,全都是这三条推论在不同维度的展开。
推论一:模型不"服从"命令,它只"延续"文本
这是初学者最难扭转、却也最关键的一个认知弯道。
当你在 Prompt 里写下「请用表格总结以下内容」时, 模型内部并没有一个叫"服从人类命令"的硬件开关被啪地按下了。 真实发生的事情是:在它的预训练与微调语料里,"当上文出现『请用表格总结』时,下文紧接着出现 Markdown 表格符号 |---|",是一种概率极高的文本延续模式。
换句话说,你的指令之所以有效,是因为它把"照着指令做"变成了概率最高的那条续写路径。
这个区别看似咬文嚼字,在实战中却决定了成败:
写提示词的本质,不是下达行政命令,而是为你期望的输出收集并堆叠"证据"。
一条干巴巴的指令,只是一份证据; 如果你除了下指令,还把上下文的语气、专业词汇、排版结构、乃至参考示例全都往同一个方向对齐,那就是把五六份强有力的证据叠在了一起,共同把概率分布推向你想要的结果。
反过来,如果你在最后一行下了一条孤零零的命令:「请用极其精炼的语言回答,绝不废话」, 但在这条命令前面的几千字里,你自己写的背景说明和历史记录全都啰里啰嗦、套话连篇—— 那么"前面几千字的啰嗦文风"就是一份体重巨大的反向证据,它会轻而易举地压倒你最后那句单薄的命令。模型看完了整份窗口,觉得"继续按啰嗦的风格往下接龙"才是更自然的延续。
这也顺便解释了为什么各家官方指南都极力推荐一个简单技巧:给你的硬性指令附上一句"为什么"。 Anthropic 的工程文档里举过一个真实案例:
- 只写「绝不要在回答中使用省略号(
...)」,模型经常犯规; - 改成「你的回答接下来会被直接送进文字转语音(TTS)引擎朗读,而语音引擎无法读出省略号,会导致机械卡顿,因此绝不要使用省略号」,模型的遵循率立刻大幅跃升。
因为在人类写下的真实技术文档里,"带着严密因果解释的规范"后面,往往跟着严格遵守规范的正文;而"给出真实场景的理由",还能帮模型顺着逻辑把你没明说的边界情况(比如同样不利于语音朗读的特殊符号)一并照顾到。理由,就是一份高纯度的证据。
推论二:一切都算数——包括你不想算数的部分
条件概率是冷酷无情的:它不会揣摩你的主观心意,分辨不出"哪段话是你认真写的规则,哪段话是你随手粘进来的脏东西"。 只要进了上下文窗口,每一个 token 都会在每一层 attention 里堂而皇之地参与相关性计算。
这意味着,许多你根本没当回事的细节,正在暗中把模型的概率分布往沟里带:
- 错别字与语病在算数:当你的输入里满是错字、标点混乱、中英混杂的半截句子时,这串 token 在模型的 FFN 键值表里点亮的是"互联网低质量论坛回帖"的分布区域——那片区域里长出来的回答,天然就更粗糙、更随意、更容易出错。
- 你的暴躁情绪与失败历史在算数:几乎每个人都踩过这样一个坑——模型第 1 次答错了,你生气地回一句「不对!谁让你这么写的?重来!」,模型第 2 次道歉后换了个方式又答错了,你更火了,继续骂它……连骂五轮之后,你绝望地发现模型彻底傻了,开始翻来覆去地说车轱辘话。 原因在于,到了第 6 轮,上下文窗口里已经塞满了五份错误的回答范例和五轮充满敌意的争吵文本。模型每一秒都在重读这五份错误范例,在它们的强大引力下,想写出正确回答简直难如登天。
这种现象叫做上下文污染(Context Pollution)。 当一轮对话已经滑向错误的方向时,最聪明的做法从来不是在污染池里继续追加骂声,而是直接回退并编辑上一条消息(或干脆重开一个新窗口)——把坏证据从物理上彻底抹掉,永远比写十句"忘掉你刚才说的错话"管用百倍。
同理,这也揭示了为什么负面指令("不要做 X")天生比正面指令脆弱得多。 当你写下「请写一段森林描写,但绝对不要提到棕熊」时,「棕熊」这两个字已经作为强信号写进了窗口,在 attention 层里把「爪子」「咆哮」「冬眠」等一系列关联词的权重纷纷唤醒。因此这里有一条实用铁律:你不想让模型往哪边想,就尽量不要把那个词写进窗口。
推论三:信息会互相稀释,多写不等于更受控
很多人在写复杂提示词时会有一种"安全感焦虑": 生怕模型漏掉某种情况,于是把能想到的所有注意事项、补充说明、免责条款、七八种边缘假设全堆进 Prompt 里,越写越长,最后攒出一份几千字的"万全法典"。
结果一跑起来,模型反而连最核心的第一条要求都开始频频忘掉。
由于 attention 的所有权重加起来永远等于 100%,这是一个严格的零和博弈。Anthropic 的研究团队把这件事精辟地称为注意力预算(Attention Budget): 你的窗口里每多塞进 100 个无关紧要的 token,原本属于核心指令的那笔注意力预算,就会被硬生生分薄一截。
落到写作上,这就凝结成了提示词工程最核心的克制之道:
提示词追求的从来不是"信息量",而是"信噪比"。
写完一份长 Prompt 后,最体现功力的操作不是"我还能再往里补点什么规则",而是拿着手术刀审视每一段话: 如果把这一段删掉,模型的输出并不会变差,那就立刻删掉它。 用最少的、信号最强的 token 集合,去锁定最确定的概率分布,这才是高手的手艺。
三、完整 Prompt 的解剖:五大构件
理解了三条推论,现在我们把第一节里那份完整的长文档拆散在桌面上。 无论你使用的是哪家大模型、构建的是哪类应用,一份结构成熟的 Prompt,在逻辑上都可以拆解为五大基本构件:
| 构件名称 | 在窗口中扮演的角色 | 典型承载内容 | 最常见的误用陷阱 |
|---|---|---|---|
| 1. 系统指令 | 全局宪法 | 身份定位、核心任务准则、文风基调、全局禁令 | 把只在某一轮生效的临时要求或大段背景资料塞进系统指令 |
| 2. 参考资料 | 开卷考试材料 | 检索出的文档片段、事实清单、数据表格、背景设定条目 | 不做筛选地把整本无关资料一股脑倒进窗口,引发严重稀释 |
| 3. 对话历史 | 短期记忆轨迹 | 此前各轮的真实问答记录(或经压缩后的历史摘要) | 留存大量报错、争吵或格式崩坏的旧回复,造成上下文污染 |
| 4. 当前请求 | 本轮触发扳机 | 用户在本回合最新发出的问题、动作或具体指令 | 默认"十轮前说过的要求模型一定还记得",不在本轮做必要重申 |
| 5. 输出引导 | 落笔轨道 | 输出格式模板、少样本示例(Few-Shot)、回答开头的预填充 | 格式要求与前面的示例自相矛盾,让模型无所适从 |
我们逐个看清它们的脾气:
系统指令(System Instructions) 是整份文档的定海神针。 它通常固定在窗口的最顶端,在对话截断时享有"免死金牌"。 正因为它位置最尊贵,它只应该存放从对话第 1 秒到最后 1 秒都恒定不变的全局法则。千万不要把它当成杂物间——如果连几十条琐碎的临时数据都往系统指令里塞,整部"宪法"的威严就会被稀释殆尽。
参考资料(Reference Context) 是对抗模型幻觉的头号武器。 模型参数里的知识自训练结束那天起就停滞了,而且冷门事实在参数里本就模糊。把准确的外部资料直接放进窗口,相当于把"闭卷背诵"改成了"开卷抄写"。管好它的唯一秘诀就是按需供给——只放和当前这一轮问题直接相关的那几段。
对话历史(Conversation History) 是整份 Prompt 里唯一一个随时间自动膨胀、且有一半内容出自模型自己之口的构件。 这里藏着一个极易被忽视的强大机制:模型的自我模仿惯性。 如果在前五轮历史里,模型的回答都是每段两百字、带小标题的格式,那么到了第六轮,哪怕你改了系统指令让它不要写小标题,它依然有极大概率继续写小标题——因为那五轮历史就在它眼前摆着,构成了五份连续的强示范。管好历史记录的干净程度,往往比抠系统提示词的字眼更重要。
当前请求(Current Input) 则是天然的"破局者"。 因为它排在整份长文档的末尾附近,天然坐享近因效应(Recency Effect)。当对话已经进行了几十轮、最顶端的系统指令已经被隔开了几万个 token 时,顺手在当前请求里附上一句关键要求重申,往往能起到四两拨千斤的效果。
输出引导(Output Guidance / Prefill) 是直接贴在模型嘴边的模具。 它不仅包括"请按以下 JSON 结构输出"的声明,还包括给出一两个标准回答样本,甚至直接替模型写好回答的第一个词(比如替它写好左大括号 { 或特定的起始标签)。一旦开头第一个词被焊死,后面的自回归生成就只能顺着这根轨道往下滑。
四、编排四法则:把对的信息放在对的位置
理清了五大构件各自的职责,接下来就是最核心的工程问题: 这些构件,应该按什么顺序摆放在窗口的什么位置。
由于长上下文的注意力呈现两头高、中间低的 U 型分布——模型对最顶端(首因效应)和最末端(近因效应)最为敏感,而对正中央(中部迷失谷底)最迟钝—— 我们排布一份 Prompt 的全部智慧,就可以浓缩为四条直接对应 U 型分布的编排法则:
法则一:长效的全局规则,锚定最顶端
身份定义、核心行为准则、全文统一的文风与安全边界—— 凡是需要贯穿始终、给整场交互定调的规则,一律放在 Prompt 的最开头,完整吃满首因效应与注意力汇聚点的红利。
法则二:即时的硬性约束,紧贴最末端(重要指令首尾夹击)
"输出必须为合法的 JSON"、"字数严格控制在 300 字以内"、"必须使用中文回答"—— 这类一旦违背就会导致本轮结果直接作废的硬性格式与边界约束,绝对不能只写在遥远的开头,而必须放在整份 Prompt 的最末尾,紧贴着模型即将生成第一个 token 的位置。
如果某一条规则实在太重要,同时又有大段资料或长历史隔在中间,最稳妥的做法是首尾夹击(Sandwich Technique,三明治编排法): 在最顶端的系统指令里立一次规矩,等中间放完了几万字的资料和历史,在最末尾的当前请求里再简短有力地重申一遍。OpenAI 在其官方长上下文指南中专门验证过这一策略:对于长窗口任务,在资料前后同时声明核心指令,遵循率远高于只在单侧声明。
法则三:大块参考资料放前部,具体问题与操作指令放资料之后
当你需要在 Prompt 里塞进一篇几千乃至几万字的参考文档时,千万注意文档与问题/指令的先后顺序:
- 错误排法:先写一段长长的审阅指令和十条检查标准,然后贴上三万字的文档,最后两手一摊让模型开始回答。 后果:当模型读完那三万字文档准备下笔时,你开头写的那十条检查标准已经被远远甩在了三万字之前,精准掉进中部迷失的陷阱里。
- 正确排法:先用一句话简单交代背景,接着先把那三万字的参考文档端上去,等文档全部结束之后,在文档下方紧接着写出你的具体问题与十条检查标准。
Anthropic 的官方工程指南曾公布过一组内部实测数据:在处理多文档与长文本输入时,仅仅把"提问与操作指令"挪到"参考资料"之后,模型在复杂检索与分析任务上的综合得分就最高提升了 30%。
法则四:窗口正中央,只放"经得起模糊阅读"的内容
窗口的中段既然是注意力的低谷区,这里就只适合放那些只需要模型感知到大意和氛围、不需要一字不差背下来的内容——比如早先轮次的对话历史,或者辅助性的背景扩展材料。
反过来,这也给了你一条极其好用的排错自检清单: 每当你写完一份复杂的长 Prompt,发现模型总是对其中某一条要求视而不见时,不要急着去改那条要求的措辞—— 先看一眼那条要求此刻正躺在整份文本的百分之多少的位置上。 如果它正好被上下两大块文本夹在 30%–70% 的肚子里,把它拎出来,挪到最顶上或最底下,问题往往当场解决。
一个实战改造对比:一字不修措辞,纯靠换位救活 Prompt
为了让你直观感受"信息编排"的威力,我们来看一份在日常工作中随处可见的糟糕 Prompt:
【改造前】 你好!我想请你帮我审阅一下我写的科普文章。我平时挺喜欢天文学的,这篇断断续续写了两周,打算发在公众号上。请你特别注意检查一件事:文章里每一个专业术语第一次出现的时候,都必须配有通俗易懂的括号解释,这一点对我非常重要,千万别漏了!文章讲的是黑洞吸积盘,大概有四千字,我直接贴在下面了:
(此处粘贴 4,000 字的黑洞科普文章正文……)
哦对了,顺便帮我看看里面有没有天体物理学上的硬伤或者事实错误,直接列出来就行,不用跟我客气。
这份 Prompt 在实战中十有八九会翻车,原因有三点:
- 开头黄金位被噪音挥霍了:"挺喜欢天文学"、"写了两周"不仅毫无信息量,还会强烈诱导模型开启"社交夸奖模式",先花两百字夸你写得真不容易。
- 核心约束掉进了中部深渊:最重要的"专业术语首次出现必须配解释",被夹在了开头寒暄和四千字长文之间。等模型读完四千字的黑洞吸积盘,这条要求早已被稀释得影儿都没了,模型最后只会记得末尾那句"看看有没有事实错误"。
- 资料与正文没有边界:四千字的文章和上下两头的指令混在一起,模型很容易把文章里的一句话误当成指令,或者把指令当成文章的一部分。
现在,我们不使用任何花哨的修辞技巧,仅仅运用上面讲过的三大推论与编排四法则,对它做一次纯粹的结构重排:
【改造后】 你是一名严谨的天体物理学科普编辑。请审阅下方提供的科普文章初稿。
【待审阅文章开始】 (此处粘贴 4,000 字的黑洞科普文章正文……) 【待审阅文章结束】
请针对上方文章依次完成以下两项审校任务:
- 术语通俗化检查(最高优先级):逐一排查文中出现的所有天文学与物理学专业术语,指出任何"首次出现时未提供通俗解释"的术语及其所在段落,并给出修改建议。
- 事实准确性核查:指出文中存在的任何科学事实错误或概念混淆。
请直接以要点列表形式输出审校结果,省去开场寒暄与客套鼓励。
对比一下前后的变化:
- 删掉了所有关于写作心情的废话,把身份与基调死死钉在第一行(法则一 + 推论三);
- 用清晰的边界标记把四千字的长资料包裹起来,安置在前中部(法则三);
- 把两项具体的操作任务——尤其是原本被埋在前面的术语检查——全部挪到了四千字长文之后,紧贴着模型的落笔处,并直接封死了客套寒暄的后路(法则二 + 法则三)。
没有多发明一个高深词汇,仅仅是做了一次减法与换位,输出的稳定性和遵循度就会产生质的飞跃。
五、校准心态:提示词不是代码,而是实验科学
在第二部开篇的最后,我们还需要帮你拆掉一个很多理工科背景读者最容易掉进去的思维陷阱: 把写提示词,当成写传统程序代码。
当你写下一行 Python 或 C++ 代码时,计算机的世界是确定性的(Deterministic): if x > 0 就是铁律,只要 x 大于零,分支就百分之百会执行;如果语法写错了,编译器会立刻弹出第几行第几列报错,绝不含糊。
于是很多人带着这种习惯来写 Prompt: 他们觉得只要自己在 Prompt 里写下了「【最高指令】绝对禁止输出超过三句话!违者严惩!」,这就应该像代码里的 assert len(lines) <= 3 一样成为不可逾越的物理铁律;一旦模型某次输出了四句话,他们就会抓狂地想:"这模型是不是出 bug 了?为什么连这么简单的判断都不执行?"
请务必在脑海里划清这条界线:提示词不是代码,大语言模型也不是编译器。 它们之间存在着三个本质区别:
- 没有硬约束,只有软权重:代码里的规则是 0 或 1 的逻辑门;而 Prompt 里的每一句「绝对禁止」「必须遵守」,都只是往概率天平上放了一块比较重的砝码。只要上下文其它地方累积的反向砝码比它更重,天平随时会向另一边倾斜。
- 输出天生带有随机性:同一份代码跑一万次,结果分毫不差;而同一份 Prompt 发给模型十次,只要采样温度(Temperature)不为零,每次从概率分布里抽出来的词都可能走向不同的分支。
- 没有语法报错,只有静默偏移:你在 Prompt 里不小心多写了一个歧义词、或者把一段话放错了位置,模型永远不会弹窗提醒你
Warning: 第 3 段指令已被稀释,它只会默不作声地交出一份质量下滑的回答。
正因为这三条特性,真正成熟的提示词工程师,工作方式从来不像"敲代码的程序员",反而像在实验室里做对照实验的科学家:
- 控制变量,一次只改一处:如果你一口气同时改了系统指令的措辞、调整了参考资料的顺序、又换了两个示例,哪怕结果变好了,你也根本不知道是哪一刀起了作用,更不知道另外两刀是不是在帮倒忙。
- 建立固定的测试集(Eval Set):不要每次改完 Prompt 只拿一个顺手的问题试一下就觉得大功告成。准备 5 到 10 个最具代表性(尤其是最容易出错的边缘情况)的测试输入,每次修改 Prompt 后,用这批固定考题跑一轮对比——防止"按下了葫芦浮起了瓢"。
- 先给人类读一遍:这是 Anthropic 在官方文档里反复强调的一条黄金检验标准——当你写完一份复杂的 Prompt,不知道它够不够清晰时,把它发给一位完全不了解背景的同事或朋友,让他严格只凭这页纸上的文字去完成任务。如果连一个正常人类读完都会追问"你这里说的标准到底指哪种?"或者被前后的矛盾要求搞糊涂,那么模型在它面前也一定会困惑。
带上这份实验者的清醒,我们就算真正跨过了第二部的大门。
六、写给下一章
这一章,我们把模型收到的完整包裹拆成了五大构件,并用四条编排法则在上下文窗口里为它们排好了座次。
但为了先看清宏观全貌,有一件至关重要的底层机制被我们故意按下没表: 当系统指令、对话历史、用户请求这几大块文字被拼成一份文档送进模型时,模型是怎么分辨出"哪句话是开发者定的系统宪法、哪句话是用户刚问的问题、哪句话又是模型自己上一轮说过的回答"的?
如果你用过任何大模型的 API,你一定见过那三个熟悉的标签:system、user、assistant。 很多人以为这是三条通道,分别连着模型大脑里的三个不同器官。
下一章,我们就把这套名为 Role(角色/身份层) 的制服脱下来看个究竟—— 你会惊讶地发现,所谓系统特权、所谓身份隔离,拆到底也不过是几个特殊的控制 token;而一旦看穿这层窗户纸,你就能顺手掌握提示词工程里最强悍的一项控制绝技:预填充(Prefill)。
要点回顾
- Prompt 的真正定义:Prompt 不是你敲进输入框的那句话,而是一次请求中被送进上下文窗口的全部文字的总和——包括系统指令、参考资料、对话历史、当前请求与输出引导。
- 条件概率的三条推论:
- 延续而非服从:模型只是在顺着概率最高的模式续写文本,写提示词是在为你期望的输出堆叠"证据"(附上理由能显著增强证据权重);
- 一切皆参与计算:错别字、混乱排版、历史里的报错与争吵都会造成"上下文污染",负面指令也会先把禁忌词引入窗口;
- 注意力预算有限:窗口内信息互相稀释,好提示词追求的是高信噪比,而非冗余堆砌。
- 信息编排四法则:对应 U 型注意力曲线,将长效全局规则放最顶端、即时硬性约束放最末端(关键规则首尾重申)、长篇参考资料置于具体问题之前、窗口中部只放经得起低分辨率阅读的内容。
- 实验科学心态:提示词没有代码的确定性与硬约束,应当通过控制变量、固定测试集与清除上下文污染来科学迭代。
参考文献
- 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 2022). arXiv:2203.02155.