Prompt Engineering · 技术篇

提示工程技术全览

这份文档把 promptingguide.ai「Prompting Techniques」一章里的 18 种提示技术逐条整理还原:每一种都保留原文的定义、示例、论文出处与结论,并按概念的难度补上机制拆解、类比和流程图,帮你从「零样本」一路读到「智能体级」的提示方法。

18 种技术 逐条保真整理 含原始 Prompt 示例 配 SVG 流程图
🧭

导言:为什么需要提示技术

Prompting Techniques · 总览
📄 promptingguide.ai/techniques

提示工程的目标,是有效地设计与改进提示词,从而在各类任务上从大语言模型(LLM)拿到更好的结果

前面章节里的基础示例虽然有趣,但只是入门。这一章要讲的是更进阶的提示工程技术——它们让我们能完成更复杂的任务,并提升 LLM 的可靠性与性能。下面 18 种技术,大致可以按「需要什么能力」来分组阅读:从最朴素的零样本/少样本,到引导模型一步步推理的思维链家族,再到让模型连接外部知识、调用工具、甚至像智能体一样反思与行动的高级范式。

📌 怎么读这份文档每一节都对应原指南里的一种技术,标题里给出中英文名与提出它的论文。技术之间常常彼此叠加(例如自洽性建立在思维链之上、ReAct 融合了思维链与工具调用),所以遇到「📎 需先理解」这类提示时,可以点链接回看前置概念。
0️⃣

零样本提示 Zero-shot Prompting

最基础的用法 · 不给任何示例
📄 原文

今天的大模型(如 GPT-3.5 Turbo、GPT-4、Claude 3)经过指令微调、在海量数据上训练,因此具备「零样本」完成部分任务的能力。

这种技术在做什么

是什么

零样本提示指的是:与模型交互的提示里不包含任何示例或演示,而是直接指示模型去完成任务,不给它任何范例来「带方向」。

为什么有效

它之所以行得通,靠的是大规模训练 + 指令微调。论文(Wei et al. 2022)显示指令微调能提升零样本学习能力——即用「以指令形式描述的数据集」去微调模型;此外 RLHF(基于人类反馈的强化学习)被用来扩展指令微调,让模型更贴合人类偏好,这正是 ChatGPT 这类模型背后的方法。

例子

下面的情感分类里,我们没给模型任何「文本→情感」的范例,模型却已经理解了「情感(sentiment)」是什么——这就是零样本能力在起作用。

Prompt
Classify the text into neutral, negative or positive.

Text: I think the vacation is okay.
Sentiment:
Output
Neutral
⚠️ 何时它会失效当零样本不奏效时,原指南建议:在提示里提供演示或示例,这就过渡到了下一节的「少样本提示」。
🎯

少样本提示 Few-shot Prompting

用几个示例做「上下文学习」
📄 原文

尽管大模型零样本能力惊人,在更复杂的任务上它仍会力不从心。少样本提示通过在提示中放入演示来实现「上下文学习(in-context learning)」,引导模型给出更好的表现。

核心思路

是什么

少样本提示是在提示里放入若干「输入 + 期望输出」的演示(demonstration),这些演示作为条件(conditioning),为随后我们真正想让模型回答的样例「定调」。

为什么

据 Touvron et al. 2023 的观察,少样本能力是在模型规模扩大到足够大时才涌现出来的(Kaplan et al., 2020)。换句话说,它不是被显式训练出来的功能,而是规模带来的副产品。

例子

经典做法是先给模型几对「文本—标签」示范,再把待分类的新文本接在后面;模型会顺着前面演示的格式与规律,把答案补全。

⚠️ 少样本提示的局限少样本并非万能。原指南指出:对于需要多步推理的复杂任务,光靠堆演示往往还不够——模型可能模仿了答案的格式却没学会其中的推理过程。这正是引出「思维链」的动机:与其只给「问题→答案」,不如把中间推理步骤也演示出来。
📎 承上启下下一节的思维链(CoT)可以看作少样本的升级:在演示里额外写出「怎么一步步想到答案」。
🧠

思维链 Chain-of-Thought (CoT)

Wei et al. (2022) · 让模型「展示推理过程」
📄 原文

思维链提示由 Wei et al. (2022) 提出,通过中间推理步骤,赋予模型复杂推理能力。它可以与少样本提示结合,在「需要先推理再作答」的复杂任务上拿到更好结果。

标准思维链(Few-shot CoT)

是什么

在演示里,不只写出最终答案,还把得出答案的推理链条一并写出来。模型看到「这样推→所以答案是…」的范例后,会模仿这种「边推理边作答」的方式。

例子

在「判断一组数里的奇数之和是否为偶数」任务中,演示里写明「把所有奇数(9,15,1)加起来得 25,所以答案是 False」。给了这种推理示范后,模型对新题也能算对。原指南还指出:哪怕只给一个这样的范例,往往也足够了

为什么

作者强调:这是一种涌现能力(emergent ability),只有在足够大的语言模型上才会出现。小模型即便看了推理演示,也未必能复现这种链式推理。

零样本思维链(Zero-shot CoT)

Kojima et al. (2022) 提出一个更简单的点子:在原始提示后面加上一句「Let's think step by step(让我们一步步思考)」,就能在没有任何范例的情况下触发推理。

不加引导(答错)
I went to the market and bought 10 apples.
I gave 2 apples to the neighbor and 2 to the
repairman. I then bought 5 more apples and ate 1.
How many apples did I remain with?
→ 输出:11 apples(错误)
加上 "Let's think step by step"(答对)
...How many apples did I remain with?

Let's think step by step.
→ 模型逐步:10 → 给出4个剩6 → 买5个=11
→ 吃1个 = 10 apples(正确)
💡 为什么这句话好用当你手头没多少示例可放进提示时,这种零样本 CoT 尤其管用——一句通用咒语就能显著改善需要推理的题目。

自动思维链(Auto-CoT)

手工编写多样且有效的 CoT 演示很费力,还可能不是最优解。Zhang et al. (2022) 提出 Auto-CoT:用 LLM 配合「Let's think step by step」自动逐个生成推理链作为演示。自动生成难免出错,因此关键在于「演示的多样性」来抵消错误的影响。

  1. 阶段一:问题聚类把数据集里的问题划分成若干个簇(cluster)。
  2. 阶段二:演示采样从每个簇里挑一个代表性问题,用零样本 CoT + 简单启发式规则生成它的推理链。

这里的「简单启发式」可以是问题长度(如约 60 个 token)、推理步骤数(如 5 步),目的是鼓励模型用简洁而准确的演示。

问题 Question (复杂、需推理) 中间推理步骤 step by step… 最终答案 更可靠
思维链的本质:在「问题」和「答案」之间,显式插入一段可见的推理链,把原本的「黑盒跳答」变成「白盒逐步推导」。
🏗️

元提示 Meta Prompting

Zhang et al. (2024) · 关注「结构」而非「内容」
📄 原文

元提示是一种进阶技术,它聚焦于任务与问题的结构和句法层面,而不是具体的内容细节;目标是构造一种更抽象、更结构化的方式来与 LLM 交互,强调信息的「形式与模式」而非传统的「内容中心」做法。

五个关键特征

  • 面向结构:优先关注问题与解答的格式、模式,而非具体内容。
  • 句法导向:把句法当作「期望回答/解法」的模板。
  • 抽象示例:用抽象化的示例作为框架,只展示问题与解法的结构,不纠缠具体细节。
  • 通用性强:可跨多个领域使用,为各类问题提供结构化回应。
  • 分类式方法:借鉴类型论(type theory),强调对提示中各组成部分进行分类与逻辑编排。

相比少样本提示的优势

Zhang et al. (2024) 报告,元提示与少样本提示的根本差别在于:元提示是结构导向,少样本是内容驱动。在 MATH 基准的解题示例中,二者形成鲜明对比。元提示的优势包括:

优势含义
Token 效率聚焦结构而非细节内容,减少所需 token 数。
公平比较弱化具体示例的影响,为比较不同解题模型提供更公平的方式。
零样本效力可视为一种零样本提示——具体示例的影响被降到最低。
⚠️ 前提与局限元提示假设 LLM 对该任务已有内在知识。由于模型能泛化到未见任务,元提示理论上可用;但和零样本一样,面对越是独特、新颖的任务,性能可能越下滑。适用场景包括复杂推理、数学解题、编程挑战、理论性问题等。
🗳️

自洽性 Self-Consistency

Wang et al. (2022) · 多路推理后「投票」
📄 原文

自洽性是较为进阶的技术之一,旨在替换思维链里那种朴素的「贪心解码」。思路是:通过少样本 CoT 采样出多条不同的推理路径,再用这些生成结果挑出「最一致的答案」。它能提升 CoT 在算术与常识推理任务上的表现。

📎 需先理解 思维链 CoT——自洽性是建立在 CoT 之上的「多采样 + 投票」增强。

  1. 多次采样推理路径对同一个问题,用带温度的采样让模型生成多条不同的「推理 + 答案」。比如一道年龄题,模型可能走出几条不同算法。
  2. 提取每条路径的最终答案从每条推理链末尾取出它给出的答案(如三条分别得 67、67、35)。
  3. 多数表决统计哪个答案出现得最多,把「多数答案」作为最终结果。原指南示例里 67 出现两次、35 出现一次,于是 67 胜出——而单次贪心解码恰恰可能错答成 35。
🔗 类比

就像让一群学生各自独立解同一道题,然后看大家答案的「众数」。即使个别人算错,只要多数人沿不同思路殊途同归到同一个答案,这个答案就更可信——比只信任「第一个举手的人」稳健得多。

📚

生成知识提示 Generated Knowledge Prompting

Liu et al. (2022) · 先让模型「自造知识」再作答
📄 原文

一个流行思路是:把知识/信息纳入提示,帮助模型做出更准确的预测。那么——能不能让模型在作答前先自己生成知识?这正是 Liu et al. (2022) 尝试的:生成知识,作为提示的一部分,尤其用于常识推理类任务。

它解决什么问题

是什么

分两步:① 先用模型针对问题生成若干条相关「知识」;② 再把这些知识拼进提示,让模型据此作答。

为什么

原指南举例:直接问「高尔夫的一部分是不是要比别人得更高的分?」模型会错答「Yes」,暴露了它在「需要世界知识」的任务上的局限。先让模型生成关于高尔夫规则的知识(高尔夫是用最少杆数完成、杆数越少越好),再据此作答,模型就能纠正为「No」。

例子

原指南还观察到一个有趣现象:用不同的生成知识去引导,模型给出的两个答案置信度差异很大——一条知识让它非常自信地答对,另一条措辞略不同的知识则让它信心明显更低。这说明「喂什么知识」对最终判断影响显著。

问题 可能缺常识 生成知识 1 生成知识 2 整合+作答 更准确
生成知识提示:问题先「发散」出多条候选知识,再「收敛」回答案——把模型自己的知识显式调出来辅助判断。
🔗

提示链 Prompt Chaining

把任务拆成子任务,首尾相接
📄 原文

为提升 LLM 的可靠性与性能,一项重要技术是把任务拆成子任务:用一个提示完成一个子任务,把它的输出当作下一个提示的输入,如此串成一条「提示操作链」。

为什么要把提示串起来

是什么

提示链:一个任务被拆成多个子任务,每一步对上一步的输出做转换或进一步处理,逐步逼近最终目标状态。

为什么

面对一个「事无巨细的超长提示」,模型常常处理不好;拆成链后不仅性能更好,还能提升透明度、可控性和可靠性——你能更容易地调试问题、定位并改进出问题的那个环节。它在搭建对话助手、提升个性化与用户体验时尤其有用。

例子:文档问答

回答关于长文档的问题时,可设计两个提示:提示 1 负责从文档里抽取与问题相关的引文(用 <quotes> 标签输出,若无则回「No relevant quotes found!」);提示 2 接收这些引文 + 原文档,据此组织出一个准确、友好、有帮助的回答。

  1. 提示 1:抽取引文给定文档与问题,先只做一件事——把相关引文摘出来,用 <quotes></quotes> 包裹。
  2. 提示 2:据引文作答把上一步抽出的引文连同原文档喂进来,让模型基于这些证据写出最终答案。你甚至可以在链中再加一步去清理引文里的引用编号。
💡 提示原指南指出,Anthropic 的 Claude 文档里也有更多提示链示例,本例正是受其启发改编而来。
🌳

思维树 Tree of Thoughts (ToT)

Yao et al. (2023) & Long (2023) · 带探索与回溯的推理
📄 原文

对于需要探索或具备策略性前瞻的复杂任务,传统提示方法力不从心。思维树(ToT)在思维链之上做了推广,鼓励模型探索「作为中间步骤的思路(thoughts)」来进行通用问题求解。

ToT 是怎么运作的

是什么

ToT 维护一棵思路树,其中每个「思路」是一段连贯的语言序列,作为解题的中间步骤。模型能通过「深思熟虑的推理过程」对中间思路自我评估进展;再把这种生成 + 评估思路的能力,与搜索算法(如广度优先 BFS、深度优先 DFS)结合,实现带前瞻与回溯的系统化探索。

例子:24 点游戏

论文用「Game of 24」做数学推理任务,需把思路拆成 3 步、每步一个中间等式;每一步只保留最优的 b=5 个候选。在 BFS 里,模型被要求把每个候选思路评估为「sure / maybe / impossible(确定能/也许/不可能到达 24)」,据此剪掉「太大/太小」的不可能解,保留有希望的分支(每个思路评估采样 3 次)。

效果

论文报告 ToT 在这类任务上大幅超越其他提示方法

两个版本的差异

Yao et al. (2023) 与 Long (2023) 的核心思想相似——都通过「多轮对话 + 树搜索」增强复杂问题求解。主要区别在于:Yao 用通用的 DFS/BFS/束搜索(不针对具体问题做适配);而 Long 提出一个由强化学习训练的「ToT 控制器」来决定何时回溯、回溯几层。后者能从新数据或自博弈中学习(类似 AlphaGo vs 暴力搜索),因此即便底层 LLM 固定,这套 RL 驱动的 ToT 系统也能持续进化。

把 ToT 当成一句提示用

Hulbert (2023) 提出 Tree-of-Thought Prompting,把 ToT 的核心思想浓缩成一个简单提示,让 LLM 在单个提示里就去评估中间思路。示例提示大意是:

Imagine three different experts are answering this question.
All experts will write down 1 step of their thinking,
then share it with the group.
Then all experts will go on to the next step, etc.
If any expert realises they're wrong at any point then they leave.
The question is...

此外 Sun (2023) 对这种提示做了大规模实验,并提出 PanelGPT——让多个 LLM 像「专家组讨论(Panel discussion)」那样来提示。

初始问题 思路 A 思路 B 思路 C ✕ 剪枝 A1 ✓ A2 ✕ B1 ✓
思维树展开成多分支:模型对每个中间思路自评「sure/maybe/impossible」,剪掉死路(虚线)、沿有希望的分支前瞻与回溯,而非像 CoT 那样只走一条直线。
🔍

检索增强生成 RAG

Lewis et al. (2021) · 把外部知识接进来
📄 原文

通用语言模型经过微调可完成情感分析、命名实体识别等任务,这些通常不需要额外背景知识。但对于更复杂、知识密集型的任务,可以构建一个能访问外部知识源的系统——这能提升事实一致性与可靠性,并缓解「幻觉(hallucination)」问题。

RAG 是什么、怎么工作

是什么

RAG 由 Meta AI 研究者提出,把「信息检索组件」与「文本生成模型」结合。它接收输入,从某个来源(如维基百科)检索出一组相关/支撑文档,把这些文档作为上下文与原始提示拼接,再喂给生成器产出最终输出。

为什么重要

因为 LLM 的参数化知识是静态的。RAG 让模型无需重新训练就能接入最新信息:它可被高效微调、其内部知识可被高效修改,从而适应「事实会随时间变化」的场景,通过基于检索的生成产出更可靠的输出。

技术细节

Lewis et al. (2021) 给出通用微调配方:用预训练的 seq2seq 模型作参数化记忆,用维基百科的密集向量索引作非参数化记忆(由神经预训练检索器访问)。

RAG 在 Natural Questions、WebQuestions、CuratedTrec 等多个基准上表现强劲;在 MS-MARCO 与 Jeopardy 问题上,它生成的回答更具事实性、更具体、更多样;在 FEVER 事实核查上也有提升。如今这类「检索器 + LLM(如 ChatGPT)」的组合越来越流行,用于提升能力与事实一致性。

用户输入 检索器 向量索引 📖 知识库 拼接上下文 文档+提示 生成器 LLM 输出 更事实
RAG 的输入-处理-输出管道:用户问题先去知识库检索相关文档,文档与提示拼成上下文后再交给 LLM 生成——让模型「带着资料作答」。
🛠️

自动推理与工具使用 ART

Paranjape et al. (2023) · 自动编排「推理 + 调工具」
📄 原文

把思维链与工具交错使用,已被证明是应对许多任务的强大且稳健的方法。但这类做法通常需要手工编写任务专属演示,并精心脚本化「模型生成」与「工具调用」的交错。ART 提出用一个冻结的 LLM 自动生成中间推理步骤(作为程序)

ART 怎么运作

工作流程

① 面对新任务,ART 从任务库里挑选多步推理 + 工具使用的演示;② 在测试时,每当需要调用外部工具,就暂停生成,把工具的输出整合进来,再继续生成。

为什么好

ART 鼓励模型从演示中泛化,以零样本方式分解新任务、在合适位置调用工具。它还是可扩展的:人类可以直接更新任务库与工具库,来修正推理步骤里的错误或添加新工具。

效果

在 BigBench 与 MMLU 基准的未见任务上,ART 显著超越少样本提示与 Auto-CoT;当引入人类反馈时,性能甚至超过手工编写的 CoT 提示。

📎 相关:ART 与 ReAct 都属于「推理 + 工具/行动」一类,区别在于 ART 更强调自动从库中检索演示并把推理写成可调用工具的程序

🤖

自动提示工程师 APE

Zhou et al. (2022) · 让模型自己写提示
📄 原文

APE 是一个自动生成与筛选指令的框架。它把「指令生成」这个问题,当作一种自然语言合成问题来处理,并用 LLM 把它当作黑盒优化问题来生成并搜索候选解。

  1. 生成候选指令一个充当「推理模型」的大语言模型,在给定输出演示后,生成一批针对该任务的候选指令。
  2. 执行并评分这些候选指令被「目标模型」执行,再根据计算出的评估分数,选出最合适的那一条。
💡 一个有名的发现APE 发现了一个比人类手写的「Let's think step by step」更好的零样本 CoT 提示:
「Let's work this out in a step by step way to be sure we have the right answer.」
这句话在 MultiArith 与 GSM8K 基准上提升了表现。

延伸:自动优化提示的相关工作

APE 触及了「自动优化提示」这一重要主题。原指南列出了几篇关键论文供深入:

方法核心思路
Prompt-OIRL用离线逆强化学习,生成「依赖具体查询」的提示。
OPRO用 LLM 来优化提示;让模型「Take a deep breath」竟提升了数学题表现。
AutoPrompt基于梯度引导的搜索,为多种任务自动构造提示。
Prefix Tuning微调的轻量替代:为 NLG 任务前置一段可训练的连续前缀。
Prompt Tuning通过反向传播学习「软提示(soft prompts)」。
🎚️

主动提示 Active-Prompt

Diao et al. (2023) · 针对任务挑「最该标注」的样例
📄 原文

思维链方法依赖一组固定的、人工标注的范例。问题是:这些范例未必是不同任务下「最有效」的例子。Active-Prompt 应运而生,用于让 LLM 适配到不同任务专属的范例提示(这些范例带有人工设计的 CoT 推理)。

  1. 初始查询用「带或不带少量 CoT 范例」的方式去查询 LLM,对一组训练问题各生成 k 个可能答案。
  2. 计算不确定性基于这 k 个答案计算一个不确定性指标(用「分歧度 disagreement」)。
  3. 挑最不确定的来标注选出最不确定的那些问题,交给人类去标注 CoT 推理。
  4. 用新范例推理把这些新标注的范例,用于推理每一个问题。
🔗 类比

就像老师批改作业时,把精力优先花在「全班答案最五花八门、最拿不准」的那几道题上——给这些题写出标准解题过程,收益最大。Active-Prompt 让「人工标注」这种稀缺资源,花在模型最迷糊的地方。

🧭

定向刺激提示 Directional Stimulus Prompting

Li et al. (2023) · 用小模型生成「提示/线索」来引导大模型
📄 原文

Li et al. (2023) 提出这一技术,目的是更好地引导 LLM 生成期望的摘要(及其他输出)。

核心机制

是什么

训练一个可调的策略语言模型(policy LM),专门用来生成「刺激/线索(stimulus / hint)」。这个策略 LM 可以很小,经优化后去生成引导黑盒冻结大模型的提示线索。

为什么

和标准提示相比,这是把「越来越多地用强化学习来优化 LLM」的趋势落到实处——不直接改大模型,而是训练一个小的「向导」在它旁边轻声指路。

📝 原指南备注该节标注「完整示例即将到来(Full example coming soon!)」——目前指南只给出了方法框架与对比图。
🐍

程序辅助语言模型 PAL

Gao et al. (2022) · 把「算」这一步交给 Python
📄 原文

PAL 让 LLM 读懂自然语言问题,并把程序作为中间推理步骤生成出来。它与思维链的关键区别在于:CoT 用自由文本得到解,而 PAL 把求解这一步「卸载」给一个程序运行时(如 Python 解释器)

它和 CoT 的根本差异

是什么

模型不再用文字「口算」推理,而是生成一段可执行代码;真正的计算由解释器完成,模型只负责把问题翻译成程序。

例子:日期推理

原指南用 LangChain + OpenAI 搭了个能算日期的应用。给模型若干「日期理解」范例后,问:「Today is 27 February 2023. I was born exactly 25 years ago. What is the date I was born in MM/DD/YYYY?」

模型生成的不是文字,而是 Python 代码
# 今天是 2023/2/27,25 年前出生
today = datetime(2023, 2, 27)
born = today - relativedelta(years=25)
# 按 %m/%d/%Y 格式化
born.strftime('%m/%d/%Y')

这段 llm_out 的内容是一段 Python 代码片段,再用 exec 执行它,最终输出:02/27/1998。计算的正确性由解释器保证,而非靠模型「心算」。

🔗 类比

CoT 像是让模型口头一步步算(容易在某一步算错);PAL 则是让模型列出算式后交给计算器——分工明确:语言模型擅长理解题意、把问题结构化成程序;解释器擅长精确执行。

ReAct(推理 + 行动)

Yao et al. (2022) · 交错产生「思考」与「行动」
📄 原文

ReAct 让 LLM 以交错的方式同时生成推理轨迹(reasoning traces)任务专属的行动(actions)。推理轨迹帮助模型归纳、追踪、更新行动计划,甚至处理异常;行动步骤则让模型能与外部源(如知识库或环境)交互、获取信息。

📎 ReAct 融合了 思维链 与工具调用。原指南指出:最佳做法是把 ReAct 与 CoT 结合,从而同时利用模型的内部知识与推理中获取的外部信息

它为何能改善表现

为什么

纯 CoT 虽能做算术和常识推理,但无法访问外部世界、也无法更新自身知识,容易导致事实幻觉与错误传播。ReAct 让系统能动态推理来「创建、维护、调整行动计划」,同时与外部环境(如维基百科)交互、把额外信息纳入推理。一句话:检索信息支撑推理,推理又指引下一步该检索什么

例子:问答轨迹

面对 HotpotQA 这类问题,模型会生成「Thought(思考)→ Act(行动,如 Search/Lookup)→ Obs(从环境得到的观察)」的求解轨迹,循环往复直到 Finish 给出答案。

Thought 1  我需要搜索「Colorado orogeny」,找出其东段延伸到的区域…
Act 1      Search[Colorado orogeny]
Obs 1      Colorado orogeny 是一次造山运动…
Thought 2  它没提到东段,我需要查「eastern sector」
Act 2      Lookup[eastern sector]
Obs 2      东段延伸进 High Plains,称 Central Plains orogeny
...        (反复 思考→行动→观察)
Act 5      Finish[1,800 to 7,000 ft]
💭 Thought 思考 🎬 Act 调工具 👁 Obs 观察结果 观察反哺下一轮思考 ↺
ReAct 的循环:思考 → 行动(调外部工具)→ 观察,观察结果再喂回下一轮思考,直到收敛到答案。这正是现代「智能体」的雏形。

实验结论

  • 知识密集任务(HotpotQA / Fever):ReAct 普遍优于「只行动(Act)」;在 Fever 上超过 CoT,在 HotpotQA 上略逊于 CoT。
  • 原因分析:CoT 易出事实幻觉;ReAct 的结构约束降低了推理步骤的灵活性,且高度依赖检索质量——无信息量的搜索结果会带偏模型。
  • 把 ReAct 与「CoT + 自洽性」结合、并允许在两者间切换的方法,整体表现最好。
  • 决策任务(ALFWorld 文字游戏 / WebShop 购物环境):ReAct 优于 Act——没有「思考」的 Act 无法正确把目标分解为子目标;但当前基于提示的方法离人类专家水平仍有差距。

实践中,LangChain 已内置 ReAct 框架,可把 LLM 与各种工具(如搜索 API、计算器)组合成执行任务的智能体。

🪞

Reflexion(语言化的强化)

Shinn et al. (2023) · 让智能体「用语言反思错误」
📄 原文

Reflexion 是一个用语言反馈来强化「基于语言的智能体」的框架。按 Shinn et al. (2023) 的说法,它是一种「言语(verbal)强化的新范式」,把策略参数化为「智能体记忆编码 + 所选 LLM 参数」。

高层来看,Reflexion 把来自环境的反馈(自由语言或标量)转化为语言反馈,即「自我反思(self-reflection)」,作为下一轮(episode)里 LLM 智能体的上下文。这让智能体能快速有效地从过去的错误中学习,在许多高级任务上提升表现。

三个组成模型

Actor 行动者

根据状态观察生成文本与行动,在环境中行动并接收观察,形成一条轨迹(trajectory)。这里用 CoTReAct 作为 Actor 模型,并加上记忆组件提供额外上下文。

Evaluator 评估者

为 Actor 的输出打分:输入一条生成轨迹(短期记忆),输出一个奖励分数。不同任务用不同奖励函数(决策类任务会用 LLM 与基于规则的启发式)。

Self-Reflection 自我反思

由一个 LLM 担任,生成「言语强化线索」帮助 Actor 自我改进。它结合奖励信号、当前轨迹与持久记忆,产出具体、相关的反馈并存入记忆;这些存于长期记忆的经验被智能体用来快速改进决策。

简言之,Reflexion 的关键步骤是:a) 定义任务 → b) 生成轨迹 → c) 评估 → d) 反思 → e) 生成下一条轨迹。它通过引入自评、自我反思与记忆组件,扩展了 ReAct 框架。

效果

实验显示 Reflexion 在多类任务上显著提升:决策类(AlfWorld,ReAct+Reflexion 用自评技术完成 130/134 任务,大幅超过 ReAct)、推理类(HotPotQA)、编程类(Python 的 HumanEval,以及 MBPP、Rust、Leetcode Hard 上多达 SOTA)。

什么时候该用 Reflexion

  • 需要从试错中学习:适合决策、推理、编程等可通过反思过往错误来改进的任务。
  • 传统 RL 不切实际时:它无需微调底层语言模型,在数据与算力上更高效,是轻量替代。
  • 需要细致反馈:言语反馈比标量奖励更细腻具体,利于做有针对性的改进。
  • 看重可解释性与显式记忆:自我反思被存入记忆,便于分析与理解其学习过程。
⚠️ 局限依赖自评能力——若模型不能准确评估自身表现,反思就失真(预期随模型能力提升而改善);② 长期记忆受限——用的是有最大容量的滑动窗口,复杂任务或需向量嵌入/SQL 数据库等更高级结构;③ 代码生成的局限——测试驱动开发难以指定准确的输入输出映射(如非确定性函数)。
🖼️

多模态思维链 Multimodal CoT

Zhang et al. (2023) · 把「图像 + 文本」一起推理
📄 原文

传统思维链只聚焦语言模态。多模态 CoT 则把文本与视觉信息纳入一个两阶段框架

  1. 阶段一:依据多模态信息生成「依据(rationale)」结合文本与图像,先产出推理依据。
  2. 阶段二:答案推断利用上一步生成的、信息丰富的依据,推断出最终答案。
💡 一个亮眼结果仅 1B 参数的多模态 CoT 模型,在 ScienceQA 基准上超越了 GPT-3.5——说明「让模型在看图后先写推理依据、再答题」这一结构,能用小模型撬动大效果。
🕸️

图提示 GraphPrompt

Liu et al. (2023) · 面向图数据的提示框架
📄 原文

Liu et al. (2023) 引入 GraphPrompt——一个面向图(graph)的全新提示框架,用于提升下游任务的表现。

📝 原指南备注该节标注「更多内容即将到来(More coming soon!)」。目前指南只点出方法的存在与定位,尚未展开细节,这里如实保留。
🗺️

技术全景对照表

一张表速查 18 种技术

把前面所有技术按「解决什么核心问题」横向对照,便于回看与定位。

技术提出核心一句话
零样本不给示例,直接下指令,靠模型内在能力。
少样本Brown 等 / Touvron 2023放几对演示做上下文学习,规模够大才涌现。
思维链 CoTWei 2022演示出中间推理步骤,或加「一步步思考」。
元提示Zhang 2024关注问题的结构/句法而非具体内容,省 token。
自洽性Wang 2022对 CoT 多采样多条路径,再投票取众数答案。
生成知识Liu 2022先让模型自造相关知识,再据此作答。
提示链把任务拆成子任务,前一步输出喂给后一步。
思维树 ToTYao / Long 2023维护思路树,自评 + 搜索,带前瞻与回溯。
RAGLewis 2021检索外部文档拼进上下文,缓解幻觉、接最新知识。
ARTParanjape 2023自动从库取演示,把推理写成可调工具的程序。
APEZhou 2022把写提示当黑盒优化,让模型自动生成并筛选指令。
Active-PromptDiao 2023按不确定性挑最该标注的样例做 CoT 标注。
DSPLi 2023训练小策略模型生成线索,引导黑盒大模型。
PALGao 2022生成可执行程序,把计算交给解释器。
ReActYao 2022交错「思考→行动→观察」,边推理边调工具。
ReflexionShinn 2023把环境反馈转成语言自反思,存入记忆迭代改进。
多模态 CoTZhang 2023图+文两阶段:先生成依据,再推断答案。
GraphPromptLiu 2023面向图数据的提示框架(细节待补)。
🧩 一条隐含主线这些技术大致沿一条线演进:「给不给示例」→「要不要显式推理」→「要不要多路/树形探索」→「要不要接外部知识与工具」→「要不要像智能体一样行动与反思」。越往后,模型越从「被动答题者」走向「主动求解者」。
结语提示工程的进阶,本质是不断回答同一个问题:如何把模型「能做但默认不会自发去做」的能力,用结构稳定地引导出来——无论是让它一步步想、多想几遍、查查资料,还是动手调工具、回头反思自己。