Skip to content

Prompt Engineering | 提示工程 ​

作者: Lilian Weng(翁荔)| 发布日期: 2023年3月15日

一句话摘要: 本文是提示工程领域最全面的技术综述之一,系统梳理了从零样本/少样本学习、思维链推理到自动化提示设计、增强式语言模型等全方位技术方法,是理解"如何与 LLM 有效沟通"的必读指南。


一、核心内容翻译 ​

1. 提示工程的定义 ​

翁荔将提示工程定义为:在不更新模型权重的前提下,通过设计输入来引导 LLM 行为以获取期望输出的方法集合。

这是一种纯推理阶段的技术——通过精心设计输入,让已经训练好的模型表现出更好的性能。

2. 基础提示方法 ​

零样本学习(Zero-Shot):最简单的方式——直接将任务文本输入模型,不提供任何示例。例如直接要求模型进行情感分析。

少样本学习(Few-Shot):在目标任务前展示高质量的输入-输出示例。研究发现,示例的选择、排序和格式对性能有显著影响。LLM 在少样本设置中存在三种关键偏差:

  • 多数标签偏差:来自不平衡的标签分布
  • 近因偏差:倾向重复最后出现的标签
  • 常见词元偏差:偏好高频词元

示例选择技巧:

  • 使用嵌入空间中的 k-NN 聚类来选择语义相似的示例
  • 基于图的方法选择多样且有代表性的示例
  • 对比学习衡量示例质量
  • Q-Learning 和基于不确定性的主动学习方法

示例排序技巧:

  • 保持多样化、随机的排序以避免偏差
  • 模型规模的增大并不能减少排列方差
  • 不同排序在不同模型上效果各异

3. 指令提示(Instruction Prompting) ​

经过指令微调的语言模型在(指令、输入、输出)三元组上使用 RLHF 进行训练。关键实践包括:

  • 具体而精确,而非告诉模型"不要做什么"
  • 解释目标受众——例如"向一个6岁的孩子解释量子物理"
  • 上下文指令学习:在单个提示中结合少样本示例和跨任务的显式任务定义

4. 自一致性采样(Self-Consistency Sampling) ​

以温度 > 0 采样多个输出,然后通过多数投票或任务特定验证(如代码的单元测试)来选择最佳答案。核心思想:正确推理路径的多样性恰恰是可靠性的来源。

5. 思维链(Chain-of-Thought, CoT) ​

在给出最终答案之前,生成逐步的推理序列。对于使用大模型(500亿+参数)处理复杂推理任务时最为有效。

两种主要类型:

  • 少样本 CoT:提供包含手动编写或模型生成的推理链的示例
  • 零样本 CoT:使用"让我们一步步思考(Let's think step by step)"等触发短语激活推理

扩展与技巧:

  • 自一致性采样通过多数投票提高准确率
  • STaR 方法:生成推理链 -> 保留正确的 -> 微调 -> 重复迭代
  • 更高复杂度的示例能提升性能
  • 换行符比"步骤 i"更有效地分隔推理步骤
  • 基于复杂度的一致性:偏好复杂推理链
  • "Question:" 格式优于 "Q:" 格式
  • Self-Ask:迭代式提示,让模型自行提出并回答后续问题
  • IRCoT:交错检索与 CoT
  • ReAct:将推理与外部行动结合
  • 思维树(Tree of Thoughts):探索多条推理分支

6. 自动化提示设计 ​

可训练提示:将提示视为可通过梯度下降优化的参数:

  • AutoPrompt:梯度引导的触发词搜索
  • Prefix-Tuning:在序列开头添加小型可训练参数矩阵
  • P-tuning:在提示中插入伪词元,使用 LSTM 编码器建模词元依赖
  • Prompt Tuning:每个任务前置 k 个可调词元,当模型足够大时"可达到与模型微调相当的竞争性结果"

APE(自动提示工程师):从示例中生成指令候选 -> 评分 -> 通过语义变体迭代优化。

自动 CoT 构建:

  • 增强-剪枝-选择方法:生成多条伪推理链 -> 基于正确性剪枝 -> 使用策略梯度选择
  • 聚类方法:嵌入问题 -> k-means 聚类 -> 采样代表性问题 -> 生成推理链以保证多样性

7. 增强式语言模型 ​

检索增强:将外部知识检索与 LLM 提示结合。关键发现——"尽管 LLM 通过 Google 搜索获取了最新信息,其在 2020 年之后问题上的表现仍然远逊于 2020 年之前的问题。"

答案概率方法包括:

  • RAG 风格:TF-IDF 段落分数与语言模型概率的加权组合
  • 噪声信道方法:贝叶斯公式化
  • 专家乘积方法:组合所有概率估计

编程语言辅助:

  • PAL(程序辅助语言模型) 和 PoT(思维程序):生成可执行代码来分担计算任务,将推理与计算解耦。

外部 API 使用:

  • TALM:使用特殊标记(|tool-call、|result、|output)增强 LM 的文本到文本 API 调用能力
  • Toolformer:自监督工具使用——计算器处理数学、问答系统减少幻觉、搜索引擎获取最新信息、翻译系统处理低资源语言、日历感知时间。训练过程包括标注 API 调用、通过自监督损失过滤有用调用、微调。

二、技术要点 ​

  1. 提示格式至关重要:示例的选择、排序甚至格式("Question:" vs "Q:")都会显著影响 LLM 表现,这不是玄学而是有实验证据支撑的工程决策。
  2. 思维链是大模型的"加速器":CoT 对 500 亿+参数的模型效果最佳,小模型反而可能因 CoT 而性能下降——规模是 CoT 生效的前提。
  3. 自一致性 > 贪心解码:多次采样 + 多数投票是一种简单但极其有效的策略,本质上利用了正确推理路径的高概率集中性。
  4. 可训练提示弥合了提示工程与微调的鸿沟:Prompt Tuning 在大模型上接近全量微调的效果,但只需训练极少的参数。
  5. 检索增强并非万能药:即使接入了实时搜索,LLM 对新知识的利用能力仍然有限,暗示了模型内部知识表示的局限性。

三、深度解读 ​

这篇文章的价值在于它的系统性。在提示工程被各种"神奇提示词"的营销充斥的背景下,翁荔用学术级别的严谨性梳理了每一种方法的原理、适用条件和局限性。

特别值得注意的是她对偏差的讨论。多数标签偏差、近因偏差、常见词元偏差——这三种偏差的存在意味着,少样本学习的效果在很大程度上取决于示例的统计属性,而非语义内容。这是一个反直觉但至关重要的发现。

文章对自动化提示设计的梳理也极具前瞻性。从 AutoPrompt 到 Prompt Tuning,这条技术路线模糊了"提示"和"模型参数"的边界,预示着未来的 LLM 交互方式将不再是简单的文本输入,而是更深层的参数级别的调控。

Toolformer 的介绍尤为精彩——通过自监督学习让模型自行发现何时该调用工具,而非依赖人工规则。这为后来的 Function Calling、MCP 协议等工具使用范式奠定了理论基础。


四、延伸思考 ​

  • 提示工程是否有天花板?:随着模型能力的提升,简单提示可能就足够了。提示工程的终极形态可能不是更复杂的提示,而是更强大的模型让提示回归自然语言。
  • 从提示工程到智能体编排:当今的"提示工程"已经从单次输入扩展到了多步骤、多工具的编排流程,本质上是在构建"推理的程序"。
  • 评估的困境:文章提到的许多方法效果高度依赖基准测试的选择,而基准测试本身可能已经被模型"记住",这是一个元层面的挑战。
  • 多模态时代的提示工程:文章聚焦于文本,但随着视觉-语言模型的普及,如何为多模态输入设计有效的提示成为新的研究前沿。

原文链接 ​

Prompt Engineering - Lil'Log

全球顶尖 AI 实验室博客的中文翻译与深度解读 · 210+ 篇文章 · 15+ 实验室