提示词工程是设计、测试并不断改进给大语言模型(LLM)的指令,使其稳定地产出你所需要输出的实践。“工程”二字很关键:目标不是得到一次好答案,而是每次运行提示词都能得到同样质量的答案。
一个实用的定义
提示词是模型开始写作之前收到的全部内容:指令、背景、示例、文档,以及问题本身。提示词工程就是决定这份输入里放什么,以及如何组织。
它包含三项活动:
- 明确任务,不把任何重要的事留给猜测。
- 补充背景,提供模型没有的信息,例如你的数据、受众和约束。
- 衡量结果,依据证据而不是直觉来修改提示词。
提示词工程如何运作
语言模型根据已经看到的 token 来预测下一个 token。它无法获知你的意图,只能看到你的文字。由此产生两个后果。
凡是你没说的,都会被补上。 如果你要“一个简短的摘要”,模型会自己选择篇幅、受众和格式。下一次它可能选得不一样。大多数不一致的输出,都源于提示词从未做出的某个决定。
位置和结构本身就有含义。 模型会把标题、分隔符或示例当作接下来是什么类型文本的信号。把指令与数据分开,并展示你想要的回答形式,比多加几个形容词更能改变预测。
下面是同一个请求的两种写法。
Summarize this report.
Summarize the quarterly sales report below for the EMEA leadership team.
Write 5 bullet points covering revenue by country and the change from
last quarter. Return a markdown list.
<report>
{{report}}
</report>
第二个版本说明了受众、篇幅、内容和格式,并标出了数据从哪里开始、到哪里结束。其中没有任何花招,只是把第一个版本留空的决定做了出来。
为什么提示词工程很重要
可靠性。 调用模型的软件需要可预测的输出。一个十次里有九次返回 JSON 的提示词,会让第十次请求出错。
成本。 模型按 token 计费。重复啰嗦,或者携带不必要背景的提示词,每次调用都要多花钱。如何衡量和降低,请参阅 token 优化。
安全。 提示词里经常包含来自用户、文档和网页的文字。如果不加小心,这些文字可能覆盖你的指令。这叫做提示词注入,防御要从提示词的构造方式开始。
迭代速度。 修改提示词只要几分钟。微调模型则需要数据、资金和时间。对大多数任务来说,更好的提示词是成本最低的改进。
提示词工程不是什么
它不是一份“魔法咒语”清单。许诺给小费、全部用大写之类的小技巧,效果并不稳定,还会随模型版本而变。能长久有效的是清晰的规格说明、相关的背景和测试。
它也不能代替对任务本身的理解。提示词只能要求作者足够了解、足以描述清楚的东西。
提示词工程与上下文工程
随着模型能够读取非常大的输入并调用工具,工作重心从措辞一条指令,转向决定模型在每一步能看到什么信息。这通常称为上下文工程,包括检索、智能体指令,以及 Model Context Protocol 这样的工具连接。原则是相同的:把模型需要的东西清楚地分隔开交给它,不给它任何会干扰它的内容。
接下来读什么
- 按步骤阅读提示词工程指南,写出你的第一个生产级提示词。
- 了解提示词的类型和主要的提示词工程技巧。
- 把提示词粘贴到 PromptFlowEngine 分析器中,看看它留下了哪些未决的问题。