第 10 章 · 提示词工程
网上关于"提示词"的说法,十条里大概有七条是错的。"Few-shot 就是给三五个例子"——错,提出这个词的那篇论文写的是 10 到 100 个;"让 AI 扮演专家能提升准确率"——学术基准测了 162 种角色、2410 道事实题,平均收益不显著;"深呼吸,一步步想"是某位提示词大师悟出的咒语——不是,那是 Google DeepMind 让一个模型当优化器自动搜出来的字符串,而且换个模型就不灵了。这一章不教你背咒语。它要做的是把每一条流传最广的技巧摊在原始论文和官方文档面前,逐条核对:哪些是有测量支撑的,哪些是特定条件下才成立的,哪些纯粹是被抄了三年的传说。学完你会发现,提示词工程真正的内核朴素得让人失望——把话说清楚,把例子给对,把该分离的东西分离开。
周一早上,你们组来了个新人。名校毕业、脑子极快、什么都学得会——但他今天是第一天,公司里的事他一件都不知道。
你走过去说:"帮我把那个东西整理一下,发给他们。"
他会怎么办?他不知道"那个东西"是哪份文件,不知道"整理"是要排版还是要做摘要,不知道"他们"是客户还是隔壁组,不知道要写成邮件还是表格,也不知道什么时候要。他要么愣在那儿问你五个问题,要么凭猜测干出一个完全不是你想要的东西——而后者更常见,因为新人往往不敢多问。
换个说法试试:"这是三月份的销售数据表(附件)。请按大区分组,算出每个大区的环比增幅,做成一张四列的表格:大区、二月额、三月额、环比。表格下面写三句话点评增幅最大和最小的大区。最后整体贴在邮件正文里,不要用附件——收件人是华东区的王总,他手机上看。今天下班前给我。"
同一个人,同样的能力,两次产出的差距能有十倍。差的不是他的智商,是你交代任务的清晰度。Anthropic 官方文档把这件事写成了一条黄金法则:把你的提示词拿给一个完全不了解这个任务的同事看,如果他会困惑,模型也会困惑。
本章要回答什么
提示词工程这个词有点吓人,好像是一门需要天赋的黑魔法。其实它要回答的问题特别具体,而且每一个都能用实验数据检验:
- 一条好提示词由哪几块拼成?——业界公认的骨架是四块:任务、上下文、约束、格式。看起来平淡无奇,但绝大多数失败案例都能定位到其中某一块的缺失。这一节还要处理一个反常识的事实:"让 AI 扮演资深专家"这个流传最广的技巧,在客观事实类任务上的平均收益并不显著——而厂商官方文档至今仍在推荐它。这两个信源并不能被简单地判定谁对谁错,本章要做的是把分歧原原本本摆出来。
- 给例子到底有多管用,该给几个?——"Few-shot"这个词来自 GPT-3 那篇论文,而那篇论文里的 few-shot 通常是 10 到 100 个示例,跟今天工程实践里说的"3 到 5 个"完全是两码事。搞混这两者会让你在读论文时和做产品时都判断失误。这一节还要讲论文自己诚实列出的失效清单——few-shot 不是万灵药,在几类任务上它甚至帮不上忙。
- 为什么让它"写出过程"就能算对题?——思维链(Chain-of-Thought)的核心数字是可以放心引用的:只加一句"Let's think step by step",MultiArith 数据集从 17.7% 直接跳到 78.7%。而"深呼吸,一步步想"这个更火的版本,来历远比传闻精彩:它是 Google DeepMind 用一个 LLM 当优化器自动搜出来的,得分 80.2,但这个 80.2 死死绑定在"PaLM 2-L 作打分模型 + GSM8K + zero-shot"这一特定组合上。同一张表里,用 GPT-4 搜出来的最佳提示只有 74.5。
- 怎么把提示词写成一份能维护的工程产物?——用结构化标签把任务、数据、示例、格式要求彻底隔开,长文档放前面、问题放最后,说"要做什么"而不是"不要做什么"。这些都是有官方量化表述支撑的做法,而且都不玄。
- 提示词是写出来的还是试出来的?——答案是试出来的,而且必须有可量化的评测集。这一节要给出一套完整的迭代闭环,并解释一个让所有人都不舒服的实验事实:语义几乎一样的两句话,准确率能差 13 个百分点。这意味着"凭语感优化提示词"从根上就是不可靠的。
假设你要找一家五金加工厂做一个零件。你有两种交代方式。
方式一:打电话过去说"我要一个铁片,方的,中间打个孔,你看着做吧"。厂里师傅手艺一流,但他不认识你、不知道这零件装在哪儿、不知道公差要求。他做出来的东西大概能用,也大概装不上——因为孔的位置差了两毫米,而你从没说过要多准。
方式二:发一张图纸过去。图纸上有:这零件叫什么、用在什么设备上(上下文);要加工成什么(任务);材质 304 不锈钢、厚 2 毫米、孔径 5±0.05 毫米、边缘不得有毛刺(约束);交付时用 PDF 出一份检验报告,尺寸列表格(格式)。再附上三个已经做过的合格样品照片,标明哪个是合格、哪个是边缘案例——师傅照着做,一次成型。
提示词就是给模型的图纸,四要素就是图纸上必须有的四类信息,few-shot 示例就是随图纸一起寄过去的样品。而"迭代"这一节要讲的事,则是图纸的版本管理:任何一次改图,都得拿同一批检验项重新量一遍,不能凭"我感觉这版更好"就发下去。模型的能力是那位手艺一流的师傅,而图纸的质量完全在你手上。
为什么这一章值得单独拆出来
第 8 章讲了 LLM 运行时的机制,第 9 章讲了多模态。这一章讲的是你和模型之间那条缝——你的意图怎么变成它能执行的指令。这条缝之所以值得单开一章,有两个理由。
第一个理由是投入产出比高得不成比例。换一个更强的模型要花钱、要改代码、要重测;而改一段提示词是零成本的。同一个模型,糟糕提示词和好提示词之间的差距,往往比两代模型之间的差距还大。这就像你不必换掉那位手艺一流的师傅,只需要把图纸画清楚。
第二个理由更重要:这个领域的传言密度极高。提示词技巧不需要显卡就能传播,于是它成了整个 AI 领域里错误信息最密集的角落。一句话在社交媒体上被转三万次,跟它有没有实验支撑毫无关系。本章的写法因此和别的章不同——每一条流行技巧后面,我们都会附上"这条到底出自哪儿、测的是什么、在什么条件下成立"。你会看到不少"原来是这样"的时刻,也会看到几处厂商建议和学术测量彼此矛盾的地方。矛盾的地方我们不替你下结论,只把两边都摆清楚——因为在一个还在快速变化的领域里,诚实地展示分歧比强行给出定论更有价值。
这一章怎么读
五节是层层叠加的:§10.1 给骨架,§10.2 往骨架里塞示例,§10.3 让模型把中间过程写出来,§10.4 把这一切用结构化标签整理成能维护的工程产物,§10.5 建立"改一版就量一次"的闭环。建议按顺序读,因为后面每一节都会回头用前面的概念。
如果你时间很紧只能读一节,读 §10.1——四要素是全章的地基,而且那一节里"角色扮演的真相"是本章最反常识、也最能改变你日常习惯的一段。如果你已经是重度使用者、想找的是能立刻提升产出的东西,跳到 §10.4 和 §10.5:结构化标签和评测闭环,是从"会用"到"能交付"之间那道门。
另外提前打个招呼:这一章会出现不少"烂提示 vs 好提示"的对照表和可以直接复制的模板。这些模板不是让你死记的,是让你看清"清晰"到底长什么样。看过五六个之后,你自己写的时候会自动带上那个结构。
本章的五节
提示词四要素
任务、上下文、约束、格式。附赠一个反常识结论:让 AI 扮演专家,可能没用。
Few-shot 示例
GPT-3 论文写的是 10 到 100 个,工程实践建议 3 到 5 个——这两者不能混。
思维链提示
17.7% 到 78.7%。以及"深呼吸,一步步想"这句咒语的真实出身。
结构化提示
用标签把任务、数据、格式隔开;长文档放前、问题放后。
提示词迭代
语义几乎一样的两句话差 13 个百分点——所以只能靠测,不能靠猜。
学之前先记住这一点
- 把模型当聪明的新员工这是 Anthropic 官方文档给出的心智模型:它很聪明,但完全不了解你们内部的语境、行话、默认约定。黄金法则——把提示词给一个不了解任务的同事看,他困惑,模型就困惑。
- Few-shot 的"几个"要看语境GPT-3 论文里通常是 10 到 100 个示例;Anthropic 官方给工程实践的建议是 3 到 5 个。两个数字都对,但对的是不同问题。混着用会导致严重误判。
- 角色扮演的收益被高估了162 种角色 × 4 个模型家族 × 2410 道事实题的测量结果是:加角色相比不加角色,平均没有提升,且个别角色的好坏近乎随机、事前无法预判。但它对语气和文体的调控是另一回事。
- 咒语是搜出来的,不是悟出来的"Take a deep breath and work on this problem step-by-step" 是 OPRO 让 LLM 自动搜索出的产物,得分 80.2 只在特定模型和特定任务上成立。论文自己说:最优提示格式可以是模型特定、任务特定的。
- 语义相近 ≠ 效果相近两句意思几乎一样的话,GSM8K 上一句 71.8、一句 58.8,差 13 个百分点。这条足以否定"凭语感调提示词"这套方法论——必须有评测集。
- 说"要做什么"而不是"不要做什么"官方对照:不要写"不要在回答里用 markdown",改成"你的回答应当由流畅连贯的散文段落组成"。正面指令给的是可执行的方向,否定句只是划掉了一片区域。