Prompt Engineering

在使用 Generative AI 时,如何提问往往比模型本身更重要。本文系统介绍 Prompt Engineering 的核心技巧,帮助你更有效地与 AI 模型交互。

1. 什么是 Prompt Engineering?

Prompt Engineering(提示词工程)是设计和优化输入提示的过程,目的是引导 AI 模型生成更准确、更有用的输出

类比理解:就像与外国人交流时,不仅要用对语言,还要考虑表达方式和文化背景。

2. 为什么 Prompt 如此重要?

  • 同样的模型,不同的提示词可能产生天壤之别的结果
  • 好的 Prompt 能充分发挥模型潜力,弥补模型短板
  • Prompt 是用户控制 AI 输出的主要手段

3. Prompt Engineering 的核心技巧

以下是从简单到复杂的 Prompt 技巧体系:

3.1 Zero-Shot Prompting(零样本提示)

定义
直接给模型一个明确的问题或任务指令不提供任何示例

核心思路
依靠模型的预训练知识和泛化能力,在没有示例指导的情况下推理并完成任务。

适用场景

  • 任务简单明确
  • 想快速得到初步结果
  • 不知道怎样示范才好

方法详解

  • 问题必须清晰、具体,避免模糊措辞。
  • 可以在指令中补充角色扮演格式要求,提升准确性,比如:假设你是一个数学家,帮助我解决以下数学问题并提供详细步骤。

示例

1
请用中文总结下面一段英文文本,要求字数不超过 100 字:

小结
Zero-Shot 是最简单、最基础的 Prompt 技巧,但对 Prompt 表述清晰度要求高。

3.2 Few-Shot Prompting(少量示例提示)

定义
在任务指令中加入几个示例,帮助模型学习任务模式

核心思路
通过 示范样例 让模型理解问题要求,减少歧义,提高准确率。

适用场景

  • 任务结构固定,但稍复杂
  • 想引导模型遵循特定格式或风格

方法详解

  1. 标签空间和输入分布的重要性

    即使单个标签是错误的,只要整体标签空间(label space)和输入文本的分布与真实任务相似,就能显著提升模型表现。
    就像教小孩识别动物,即使你偶尔把狐狸错认为狗,但只要展示的动物种类和特征分布是合理的,小孩最终仍能学会正确分类。

    例子:教 AI 分辨水果和蔬菜

    我们要教 AI 分类「番茄」和「香蕉」,但手头的标签可能有错误。
    🚫 方式 1:标签全对但分布奇怪

    1
    2
    3
    1. 红红的、圆的 → 水果 ❌(番茄实际是蔬菜)
    1. 黄色的、弯的 → 水果 ✔
    1. 红色的、小的 → 水果 ❌(小番茄也是蔬菜)

    🔍 问题:
    虽然每个标签”看似正确”(人们常误认番茄是水果)
    但所有样本都被标为「水果」,AI 根本不知道「蔬菜」类存在!

    ✅ 方式 2:标签有错但结构合理

    1
    2
    3
    1. 红红的、圆的 → 蔬菜 ✔(番茄)
    2. 黄色的、弯的 → 水果 ✔(香蕉)
    3. 绿色的、圆的 → 水果 ❌(其实是青椒蔬菜)

    ✨ 优势:

    • 标签空间完整:展示了「水果」「蔬菜」两个类别
    • 分布合理:2 蔬菜 vs 1 水果(接近真实厨房情况)
    • 特征覆盖:有颜色/形状等关键特征

    🤖 AI 学习效果对比

    当遇到新的「草莓」时:
    方式 1 的 AI:
    100%认为是水果(虽然对,但只是因为没见过蔬菜类)
    方式 2 的 AI:
    水果:70%(因为红色像番茄但更甜)
    蔬菜:30%

    当遇到「胡萝卜」时:
    方式 1 的 AI:崩溃(不知道蔬菜是什么)
    方式 2 的 AI:能猜「蔬菜」(因为见过圆形蔬菜)

  2. 格式的关键作用
    使用结构化的输入-输出格式,即使标签是随机的,也比完全没有标签要好得多
    实验依据:在研究中,使用随机标签但保持正确格式的 prompt,性能比无标签的 prompt 高出约 20-30%。

1
2
3
4
5
6
7
8
9
10
11
任务描述:[简要说明任务]
示例格式:[明确输入输出的格式]
示例 1:
输入:[示例输入 1]
输出:[示例输出 1]
示例 2:
输入:[示例输入 2]
输出:[示例输出 2]

当前输入:[待处理输入]
请生成输出:
  1. 标签分布的影响
    真实标签分布中随机采样标签(如正负样本 7:3),比均匀采样(如正负样本各 50%)效果更好。这帮助模型更好地捕捉任务中的类别先验概率。

    假设你要 AI 帮忙判断邮件重要性:

1
2
[均匀分布] 重要:不重要 = 50%:50% → AI会过度预警
[真实分布] 重要:不重要 = 20%:80% → AI更接近现实场景

示例

1
2
3
4
5
6
7
8
9
10
11
12
将英文句子翻译成简体中文:

示例1:
英文:I love programming.
中文:我热爱编程。

示例2:
英文:The cat is sleeping.
中文:猫正在睡觉。

现在,请翻译:
英文:The weather is nice today.

小结
Few-Shot 是提高任务一致性的有效方法,但示例质量至关重要。

3.3 Chain-of-Thought Prompting(思维链提示)

定义
引导模型逐步推理,而不是直接输出答案。

核心思路
要求模型在得出最终结论前,列出详细推理步骤,提升复杂推理任务的准确率。

适用场景

  • 数学推理
  • 多步逻辑推理

方法详解

  • 明确要求请一步步推理,不要直接给答案
  • 可适当设置问题分块提示
1
问题:小明有 3 支铅笔,小红给了他 2 支,他又买了 5 支。现在小明有几支铅笔?请一步步推理。

推理过程:

1
2
3
4
- 小明原来有 3 支铅笔。
- 小红又给了他 2 支,现在有 3+2=5 支。
- 他又买了 5 支,现在有 5+5=10 支。
答案:10支

小结
Chain-of-Thought 让模型的推理过程更透明,也通常能显著提升复杂任务的正确率。

3.4 Self-Consistency(自洽推理)

定义
核心目标是改进传统思维链(Chain-of-Thought, CoT)提示中的贪婪解码策略。该技术通过生成多个多样化推理路径,然后选择最一致的答案,显著提升了复杂推理任务的表现。

核心思路
多样化推理抵消随机噪声,提高整体准确性。

适用场景

  • 推理容易波动的任务
  • 需要更高可靠性的场景

方法详解

  • 通过设置 temperature > 0 的多次采样
  • 汇总不同推理链的最终答案,投票决定最优输出

示例

1
同一个数学问题,让模型推理5次,选出现次数最多的答案作为最终结果。

小结
Self-Consistency 是提升推理鲁棒性的强力技巧,但计算开销较大

3.5 Meta Prompting(元提示)

定义
Meta Prompting = 教大模型怎么理解任务模式,而不是单次去堆内容
你不是每次喂给它不同的内容,而是喂任务格式、输入输出规律,让它自己能泛化

为什么 Meta Prompting 很强?

  • 提高泛化性:同一个 Meta Prompt,可以适应各种主题,不用每次重写。
  • 减少 Hallucination(幻觉):结构清晰,模型更容易按套路输出,少出偏差。
  • 方便系统化构建:比如做批量内容生成自动化对话时,Meta Prompt 是必须掌握的技能。

核心思路
让模型参与到Prompt 设计过程中,以适应任务的特殊需求。

适用场景

  • 任务边界模糊
  • 希望模型自行探索最佳询问方式

方法详解

  1. 明确目标任务类型,比如你要让它写小红书爆款文案,那么任务类型就是「短内容写作」。

  2. 梳理输入信息,比如写爆款文案需要用户提供【产品名】【产品特点】这类基本信息。

  3. 设计输出结构,比如:
    爆款文案可能需要:

    • 中段描绘使用场景
    • 结尾呼吁行动
    • 使用生成的 Prompt 执行实际任务
  4. 添加约束规范,比如:要求字数 100 字以内,风格轻松活泼,面向 18-25 岁女性群体。

标准模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
任务说明
根据用户提供的【输入信息】,完成【目标任务】,要求如下:

- 输出结构:
1. 【部分1说明】
2. 【部分2说明】
3. 【部分3说明】
- 输入要求:
- 【输入A】
- 【输入B】
- 约束规范:
- 【字数/风格/语气要求】

示例输入:
【示例内容】

开始执行:

示例

1. 产品分析类 Meta Prompt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
任务描述:
请根据提供的产品名称和简要描述,撰写一份产品分析报告,要求:

- 介绍:概括产品基本信息(名称、定位、核心功能)
- 优势分析:列举至少3条核心竞争优势
- 问题与挑战:指出潜在问题或改进空间
- 结论与建议:总结产品前景并提出1-2条优化建议

输入要求:
- 产品名称
- 简要描述(50字以内)

注意事项:
- 内容条理清晰,每一部分单独分段
- 保持专业且简洁的文风

示例输入:
产品名称:StudyAI
简要描述:一款面向中小学生的个性化AI学习助手

2. 用户评论总结类 Meta Prompt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
任务描述:
根据一组用户评论,总结出以下内容:

- 总体情感倾向(正面/中立/负面)
- 高频出现的正面关键词(不少于3个)
- 高频出现的负面关键词(不少于3个)
- 1段简洁总结(不少于100字)

输入要求:
- 提供5条以上的原始用户评论文本

注意事项:
- 以表格列出关键词
- 总结段落需覆盖主要情感和改进方向

示例输入:
用户评论:【...多条评论文本...】
3. 会议纪要生成类 Meta Prompt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
任务描述:
根据会议录音的自动转录文本,生成一份标准会议纪要,要求:

- 会议主题
- 参会人员
- 主要讨论内容(按主题分类,逐条列出)
- 决策事项(明确责任人)
- 待跟进事项(明确截止时间)

输入要求:
- 转录文本(可包含口语化内容)

注意事项:
- 将口语内容整理为正式书面语
- 保持信息准确、逻辑清晰

示例输入:
转录文本:【...原始文字...】

小结
Meta Prompting 是在教 AI 学做事的方法,而不是每次告诉它要做哪件事

Meta Prompt 往往+模板化输入,最终就可以形成自动化管道(比如批量生成文案、总结成报告、分类处理信息),这是工程化应用中很常见的做法!

3.6 Prompt Chaining(提示链)

定义
Prompt Chaining 是一种高级提示词工程技术,它将一个复杂任务拆解成多个子任务,每个子任务单独交给 LLM 处理,并且把前一步的输出作为下一步的输入,最终形成一条任务执行链(Chain of Prompts)

👉 本质上,它是:用小步骤连起来完成大任务

核心思路
分治复杂任务,通过中间步骤输出,提升整体流程准确率与可控性。

适用场景

  • 多阶段任务(如:提取 → 总结 → 翻译)
  • 需要中间推理或格式变化的任务

方法详解

  1. 定义最终目标
    🔹 举例:
    比如我要「生成一篇关于可持续能源的完整长文」。

  2. 拆解成子任务
    这个任务可以拆成哪些简单步骤?

    🔹 举例:

    • 确定具体主题角度(比如风能、太阳能哪个?)
    • 搜集主要论点和事实数据
    • 写出段落提纲
    • 逐段展开成文
  3. 设计每个子 Prompt

    每个子任务独立设计 prompt,比如:

    • 子 Prompt 1:根据领域确定具体写作角度
    • 子 Prompt 2:围绕角度,搜索 3 条关键事实
    • 子 Prompt 3:根据角度和事实,生成提纲
    • 子 Prompt 4:根据提纲,分段写正文
  4. 定义链式传递方式
    明确:

    • 哪些信息要从一个 prompt 传递到下一个?
    • 需要对中间结果加工(如提炼、清洗)吗?

    🔹 举例:
    从第二步出来的事实,要被总结成要点,才能喂给第三步。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1. Prompt 1:
请根据关键词“可持续能源”,提出一个具体细分主题,要求具有时代相关性。

输出示例:风能在城市发电中的应用



2. Prompt 2:
根据主题【风能在城市发电中的应用】,列举3条支持这一主题的重要事实或数据。



3. Prompt 3:
根据主题【风能在城市发电中的应用】和以下关键事实【...】,撰写一份段落提纲,包括引言、主体、总结。



4. Prompt 4:
根据提纲,逐段撰写完整短文,保持正式、简洁风格,控制在800字以内。

小结
Prompt Chaining = 把大任务拆小,一步步接力执行,最终拿到高质量输出。

3.7 Tree of Thoughts(ToT)

定义
Tree of Thoughts (ToT) 是一种为了解决复杂推理问题而提出的高级 Prompting 方法。不同于 Chain-of-Thought(CoT)的一条推理链,ToT 允许模型在每一步生成多个「思路(Thoughts)」,并在搜索树中进行扩展、评估和选择,从而更系统地探索问题解法。

它的核心思想是:
👉 不只是线性推理,而是分支式推理,在思考过程中不断探索、比较、选择最优路径

具体来说:

  • 每个中间步骤叫做一个 Thought(思路/想法)
  • 所有的 Thought 组成一个探索树(Tree)
  • 通过搜索算法(如广度优先、深度优先)在树上探索最优解
  • 允许模型回头修正错误路径,而不是一条路走到黑

ToT = 多思路并发探索 + 动态评估选择最佳思路。

核心思路
不仅展开单线推理,而是多路径并行探索,通过回溯/筛选找到最佳答案。

适用场景

应用领域 典型任务
数学推理 解复杂计算题、代数推导
战略规划 商业战略设计、产品路线图制定
游戏对弈 博弈推演、下一步决策选择
系统设计 软件架构规划、复杂流程建模
多步推理 案例推断、逻辑推演、推理小说创作

方法详解

  1. 明确目标任务

    首先问自己:

    我要解决的问题是什么?需要探索哪些思路?

    🔹 举例:

    • 解一道复杂数学应用题
    • 做商业决策分析
  2. 定义思路生成规则

    继续问自己:

    让 LLM 在每一步,生成哪些类型的中间思路?

    🔹 举例:

    • 对问题进行子问题拆解
    • 为每个子问题列出多种解法思路
  3. 设定评估标准

    明确:

    如何判断一个 Thought 是好的还是差的?

    🔹 举例:

    • 是否贴合题目目标?
    • 是否逻辑严密?
    • 是否覆盖了所有关键条件?
  4. 选择搜索策略

    指定探索方法:

    • 广度优先(BFS):广泛探索多种思路,适合开放性问题
    • 深度优先(DFS):快速深入一个方向,适合路径依赖性强的问题
    • 混合策略:如先浅后深,自定义组合探索
  5. 执行探索与回溯

    每次模型生成 thought 后:

    • 进行评估:如果好,继续拓展。
    • 回退重试:如果差,回到上一步,换别的分支探索。

直到找到满意的完整解决方案。

一个标准 Tree of Thoughts Prompt 长什么样?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
任务说明:
根据【用户输入的问题】,通过以下方式进行推理求解:

- 在每一个步骤,生成多个可能的中间思路(Thoughts)
- 对每个思路进行自我评估,选择最优的进行拓展
- 如果发现当前路径不可行,回溯到上一步,尝试其他思路

搜索策略:
使用【广度优先搜索】/【深度优先搜索】进行探索。

输出要求:
- 展示完整推理树
- 标注每一步选择的原因
- 最终给出解决方案,并简要总结推理路径

示例输入:
问题:如何设计一个既高效又环保的城市交通系统?

开始执行:

示例

1. 解一道复杂的数学应用题
1
2
3
4
5
6
1. Prompt:阅读题目后,列出3个不同的求解思路
2. Prompt:针对每个思路,推演出第一步操作
3. Prompt:根据第一步结果,继续生成下一步可能的操作(每步至少2种可能)
4. Prompt:在每步后评估:是否向正确方向前进?如果是,继续,否则回退并换分支
5. Prompt:最终根据最优分支输出详细解题过程与答案

2. 设计一款新型智能健身设备。

ToT 应用方式:

1
2
3
4
Thoughts生成:提出多个核心创新点(如个性化训练算法、沉浸式体验、社交功能)
Tree展开:针对每个创新点,细化设计细节(功能、交互、硬件规格)
搜索:组合不同设计方案,推演用户体验和市场接受度
评估与回溯:如果某一组合用户体验不好(如功能复杂操作繁琐),回溯换设计方向
3. 推理小说创作

场景:创作一部复杂反转的推理小说。

1
2
3
4
5
ToT应用方式:
Thoughts生成:提出多种可能的罪犯、动机、作案手法
Tree展开:根据每种设定发展剧情线索和伏笔
搜索:探索多条故事分支,评估哪一条逻辑更闭环、反转更出人意料
回溯:如果某条剧情发展过早暴露关键线索,退回并调整

结果:创作出一部逻辑自洽、高潮迭起的推理故事

小结
Tree of Thoughts = 多思路并行探索 + 动态筛选 + 搜索最优解决路径

3.8 Retrieval-Augmented Generation(RAG)

定义
RAG(检索增强生成)是一种将 信息检索(Retrieval)与文本生成(Generation) 结合起来的系统设计,用于解决知识密集型任务

传统大模型(如 GPT)在推理时只依赖模型内部训练时学到的「参数知识」(parametric knowledge)
而 RAG 系统引入了外部知识源(如文档库、数据库、网页等),让模型可以实时检索信息,并在生成文本时融合检索到的材料

这样可以解决几个关键问题:

  • 🧠 模型知识过时(因为训练时的信息静态)
  • 🔥 事实错误、幻觉(hallucination)
  • 🛠️ 需要动态更新知识的应用场景(如金融、医疗、教育)

核心思路
结合检索(Retrieval)+ 生成(Generation) 两种模式,让模型基于真实知识作答,而非凭空想象

适用场景

  • 企业知识问答
  • 文档助手、内部数据问答系统

方法详解

输入问题 ➔ 检索相关文档 ➔ 将文档+问题一起喂给生成模型 ➔ 输出答案

  1. 检索阶段

将输入问题用 Embedding 编码,去向量数据库(如 FAISS、Milvus)中检索相关文档

  1. 生成阶段

把「问题 + 检索到的文档」拼接在一起作为新的 Prompt,输入到生成模型(如 T5、Flan-T5、GPT)中,生成最终回答。

示例

1
2
3
4
5
6
7
你是一名企业规章制度解读助手,请基于以下资料回答用户的问题:

【资料1】员工因特殊情况可申请远程办公,须提前填写远程办公审批表并由部门主管批准。
【资料2】一般岗位不支持长期远程办公,如有临时需要应事前申报。

用户问题:请问员工能不能远程办公?

小结
RAG 解决了传统大模型“胡诌”问题,极大提升了可信度与可控性。

之后,我将写一篇详细教程,深入介绍 RAG 的实现方法,感兴趣的朋友可以关注。在教程中,我会分享:

  • 完整的代码实现步骤
  • 向量数据库的选择与配置
  • 文档预处理与嵌入技术
  • 实际应用案例分析
  • 常见问题及解决方案

如果你对构建自己的 RAG 系统感兴趣,这篇教程将为你提供从理论到实践的全面指导。

3.9 Automatic Reasoning and Tool-use(ART)

定义
Automatic Reasoning and Tool-use (ART) 是一种将 思考推理(Chain of Thought, CoT)与工具调用(Tool-use) 自动结合的高级 Prompt 技巧。

它的核心目标是:

👉 让大模型能够自动完成推理步骤,并在需要时调用合适的工具,形成闭环解决复杂问题。

不同于传统需要手动脚本化提示,ART 让模型可以在零样本(zero-shot)条件下,依据演示案例,自主判断:

  • 什么时候自己推理
  • 什么时候调用外部工具(比如搜索、计算器、API)

而且可以动态暂停、调用工具、拿到结果后继续推理
一句话总结:

ART = 自动化推理 + 动态工具调用 + 连续完成复杂任务。

核心思路
让模型像人类一样根据需要借助工具,而不是单靠语言推理

适用场景

应用领域 典型任务
数学计算与推理 复杂应用题、金融建模
知识检索 文献查询、事实核验
数据处理 SQL 查询、数据清洗
自动问答系统 基于外部知识库的智能问答
多步任务代理 智能助手结合多工具完成复杂指令

方法详解

  1. 准备任务示范(Task Demonstrations)

    • 每个示范都包括推理步骤+工具调用示例。
    • 示例数量不需要太多,但需要覆盖典型情况。
  2. 构建任务与工具库(Task and Tool Library)

    • 收集常见任务模板
    • 定义可以调用的工具,描述工具接口(输入/输出格式)
  3. 推理执行(Test-Time Reasoning)

    当面对新任务时:

    • 模型从任务库中选取最相关的示范
    • 开始推理
    • 遇到需要工具协助时自动暂停生成
    • 调用相应工具,接收结果
    • 拿到工具返回后继续生成后续推理
    • 整个过程可以自动进行,无需人工干预
  4. 扩展与修正

    • 人类可以随时增加新的示范
    • 新增新的外部工具
    • 修正模型推理中的失误 -只需更新任务/工具库,不需要微调模型!

一个标准 ART Prompt 长什么样?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
任务描述:
请根据问题,自动完成推理,同时在需要时调用外部工具。规则如下:

- 每当需要外部数据支持(如复杂计算、事实查询),使用【TOOL_CALL】标记并描述需要使用的工具
- 暂停生成,等待工具返回结果后,用【TOOL_RESULT】标记继续推理
- 推理过程保持逻辑连贯,直到最终给出完整答案

可用工具:
- Calculator (输入数学表达式,输出数值)
- SearchAPI (输入查询语句,返回网页摘要)

示例演示:
【Task】某项商品打8折后价格为160元,原价是多少?
【Reasoning】
1. 确定打折比例是0.8
2. 用【TOOL_CALL: Calculator】计算160 ÷ 0.8
3. 【TOOL_RESULT: 200】
4. 所以原价是200元

请开始新的推理任务:
【Task】...

示例

智能推理助手
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

你是一个智能推理助手。你的任务是根据用户的问题,自动推理,并在需要时调用外部工具完成部分任务。遵循以下规则:

1. 仅在需要外部信息或计算时调用工具。
2. 使用【TOOL_CALL: 工具名称(参数)】格式发起工具调用。
3. 等待外部系统返回【TOOL_RESULT: 返回值】后继续推理。
4. 保持推理过程逻辑连贯,最终输出清晰准确的答案。

【可用工具列表 Tools Available】
- **WeatherAPI**
- 功能:查询指定城市当前天气
- 输入格式:`city`(如 "Shanghai")
- 返回格式:天气描述(如 "Sunny, 25°C")
- 示例调用:`【TOOL_CALL: WeatherAPI(city="Beijing")】`

- **DatabaseQuery**
- 功能:查询公司数据库中的用户资料
- 输入格式:`query`(如 "SELECT age FROM users WHERE name='Alice'")
- 返回格式:查询结果(如 28)
- 示例调用:`【TOOL_CALL: DatabaseQuery(query="SELECT email FROM employees WHERE id=1024")】`

【推理流程 Reasoning Flow】

- 如果可以仅通过常识推理完成,请直接推理。
- 如果需要外部信息,请暂停并发起对应工具调用。
- 工具返回后,使用返回值继续推理,直到最终完成。

【示范示例 Example Demonstrations】

例1:

【Task】小明的手机原价2000元,打9折后价格是多少?

【Reasoning】
1. 打9折即乘以0.9
2. 需要计算2000 × 0.9
3. 【TOOL_CALL: Calculator(expression="2000*0.9")】
4. 【TOOL_RESULT: 1800】
5. 打折后价格是1800元。

---
【Task】请告诉我,名叫张三的员工的邮箱。

【Reasoning】
1. 需要从公司数据库中查询张三的邮箱
2. 【TOOL_CALL: DatabaseQuery(query="SELECT email FROM employees WHERE name='张三'")】
3. 【TOOL_RESULT: "zhangsan@example.com"】
4. 张三的邮箱是 zhangsan@example.com。

---

【开始新的任务】

【Task】:(此处替换为用户输入的问题)

小结
ART = 让 LLM 自动学会:什么时候思考?什么时候用工具?怎么合起来完成任务

3.10 Automatic Prompt Engineer(APE)

APE(Automatic Prompt Engineer) 是一种用于 自动生成和选择任务指令(instruction prompt) 的框架。它将提示生成问题视为一个自然语言的黑盒优化问题,利用大型语言模型(LLMs)自己生成、测试和选择出性能最优的提示

核心思路
将 Prompt 工程变成一个机器可以自我优化的过程,减少人工试错。

适用场景

  • 自动调优 Prompt
  • 提升少样本学习性能

方法详解
其核心思想是:用语言模型来搜索最好的提示语句

方法详解

  1. Instruction Generation(指令生成)

给模型一组 「输入 ➜ 输出」 示例,让它尝试自己合成 「instruction prompt」

示例输入:

1
2
3
Input: 23 + 19
Output: 42

模型可能自动生成:

1
指令:让我们一步一步地解决这个问题,以确保我们得到正确的答案。
  1. Candidate Execution(候选执行)

    用这些自动生成的 instruction prompt,结合输入数据,让目标模型去执行任务并输出结果。

  2. Evaluation & Selection(评估选择)

    比较每个 candidate prompt 的输出质量,选择性能最优的那一个。

示例

1
2
任务:提升文本摘要质量。
APE 自动探索不同表述方式,逐步演化出最优提示。

小结

  • APE 成功发现比人类常用的提示(如 “让我们一步一步地解决这个问题”)更有效的 zero-shot CoT 提示。
  • 自动化程度高、无需人工调试 prompt。
  • 对任务适应性强,能针对具体任务生成最佳提示。

3.11 Active-Prompt

定义
Active-Prompt 是一种基于主动学习的提示优化方法,用于挑选最有信息量的示例(exemplars)来适配任务,从而增强语言模型的推理能力。

传统 Chain-of-Thought (CoT) 依赖静态的人工例子(prompt exemplars),但这些例子对不同任务不一定有效。Active-Prompt 通过引入不确定性评估人类标注反馈,不断改进 exemplar 选择,使 prompt 更具适应性和效果。

核心思路
模拟真实对话中的澄清提问,提高任务准确率。

适用场景

  • 用户需求容易模糊或变化的场景
  • 复杂问题梳理

方法详解

  1. 初步示例推理(Warm Start)

    使用一些 CoT 示例(或不使用)对一批训练问题进行推理,生成多个(k 个)答案。

  2. 不确定性评估(Uncertainty Estimation)

对每个问题的 k 个回答进行分歧度分析,衡量 LLM 对该问题的不确定性程度。

方法:如用回答之间的互不一致性(例如投票分布)衡量。

  1. 主动选择标注样本(Active Selection)

选择最不确定的那些问题,让人类来提供 CoT 标注答案(即高质量 reasoning 示例)。

  1. 更新 Prompt 示例(Prompt Update)

将新标注的 CoT 示例加入 prompt 示例集中,重新用于推理 ➜ 性能逐步提高

示例
第一步:初始 Prompt(含少量示例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
请判断两个句子之间的关系,并说明理由。可能的关系包括:
- 蕴涵(第二句一定为真)
- 矛盾(第二句一定为假)
- 中性(不确定真假)

示例 1:
句子 A: 所有猫都会爬树。
句子 B: 有的猫不会爬树。
答案: 矛盾。
解释: 如果所有猫都会爬树,就不可能有猫不会爬树。

示例 2:
句子 A: 女孩在弹钢琴。
句子 B: 女孩喜欢音乐。
答案: 中性。
解释: 弹钢琴可能表示喜欢音乐,但也可能是练习或考试,无法确定。

第二步:手动生成多个答案,用于观察不确定样本

1
2
3
4
请尝试输出多个不同角度的分析,每个角度给出结论与解释:
句子 A: 男孩正在吃汉堡。
句子 B: 男孩很饿。

🌟 你发现答案分歧大,说明该问题是高不确定样本

✍️ 第三步:你手动写出“好解释”,变成新示例加进 Prompt 中

1
2
3
4
5
6
示例 3:
句子 A: 男孩正在吃汉堡。
句子 B: 男孩很饿。
答案: 中性。
解释: 虽然男孩正在吃东西,但不能确定是否因饥饿。也可能是为了尝试口味或完成任务。

🔁 第四步:加到下一轮 Prompt 中,增强模型判断能力

1
2
3
4
下面我补充了一个更复杂示例,请继续根据这些推理判断新的样本关系。
句子 A: 一位老人正在散步。
句子 B: 他在锻炼身体。

这时模型会倾向输出中性 并给出更合理的解释,因为你强化了它的思维边界

小结
Active-Prompt 将 Prompt 从一次性输入,升级为交互式、动态调整的过程。

3.12 Directional Stimulus Prompting(方向性刺激提示)

定义
传统的 Prompt 通常直接给出任务描述,让 LLM 执行。但在实际操作中,我们发现 LLM 对于任务描述的理解存在不确定性,尤其是在摘要、改写等任务中可能输出偏离预期方向的结果。

Directional Stimulus Prompting(定向刺激提示),是 Li 等人在 2023 年提出的一种新方法。它的关键思想是:

引入一个小型可调节的模型(policy LLM)生成刺激词(stimulus) 或提示性引导内容,以更明确地引导目标 LLM(大模型)生成符合预期方向的输出。

这种方法就像给主模型喂一段启发式暗示,起到指路的作用。

核心思路
有意识地引导模型思考路径,减少偏离,提高推理质量。

适用场景

  • 复杂推理需要控制方向时
  • 避免模型走入无关推理分支

方法详解

  1. 训练一个 policy LM(可以是小模型)
  • 输入:原始文本 + 任务目标
  • 输出:刺激提示语(例如:“请强调正面影响” 或 “聚焦技术方面”)
  1. 构造最终 prompt
  • 原文 + policy LLM 生成的 stimulus(刺激)+ 标准任务指令(如“请生成摘要”)
  • 然后一起送入一个固定的大语言模型中(如 GPT-4)

示例

1
2
3
4
5
6
7
8
刺激提示语(由 policy LLM 自动生成):
“请重点强调技术实现过程中的难点与挑战。”

完整Prompt:
请根据以下内容生成一段摘要,并遵循提示:
提示:请重点强调技术实现过程中的难点与挑战。
正文:“近年来,生成式AI在教育场景中被广泛应用……”

小结
Directional Stimulus Prompting 通过明确提示,帮助模型沿着更符合预期的逻辑方向前进。

3.13 Program-Aided Language Models(程序辅助语言模型)

定义
Program-Aided Language Models(PAL) 是 Gao 等人在 2022 年提出的一种提示方法,其核心思想是:

利用 LLM 生成程序代码,将问题转化为程序执行的任务,通过调用外部解释器运行程序来获得最终答案。

这与传统的 Chain-of-Thought(CoT) 方法有一个关键区别:

  • CoT:LLM 以自然语言推理出中间步骤。
  • PAL:LLM 将中间步骤用程序表示,并由代码执行得到结果。

PAL 的优势在于更高的精度、可解释性 和对复杂逻辑的处理能力

核心思路
语言推理结合程序执行,提升数学、逻辑类任务的正确率。

适用场景

  • 需要精确计算的复杂推理
  • 数学题、数据处理任务

方法详解

  1. 输入任务描述(自然语言)
    用户提出问题,如:“班上有 5 个男生和 7 个女生,一共有多少人?”

  2. 生成程序(由 LLM 完成)

  3. 由外部程序运行该代码,返回最终结果

示例

  1. 自然语言输入
1
2
一个农场里有 14 只羊、6 只牛和 10 只马。一共有多少只动物?

  1. PAL 提示模板
1
2
3
4
请根据下列问题生成一段 Typescript 程序来解决它,并输出结果:

问题:一个农场里有 14 只羊、6 只牛和 10 只马。一共有多少只动物?

小结
PAL 让语言模型拥有程序执行力,把复杂推理从脑算变为编程+执行,大幅提升准确性。

3.14 ReAct(Reasoning + Acting)

定义
ReAct(Yao et al., 2022)提出了一种融合推理(Reasoning)行动(Acting) 的大型语言模型提示框架。与传统 Chain-of-Thought(CoT) 仅进行语言内部推理不同,ReAct 让 LLM 在思考过程中可以调用外部工具,例如搜索引擎、计算器或数据库。

这种交替式的思考 → 行动 → 反馈 → 再思考流程,模拟了人类解决复杂任务的方式,有效缓解了 LLM 的幻觉、闭门造车等问题。

核心思路
思考与执行交替进行,动态适应环境变化。

适用场景

  • 多轮推理与信息检索交织的问题
  • 复杂任务执行,如智能体(Agent)

方法详解

ReAct 的核心机制是交替生成两类内容:

  • Reasoning(推理):以自然语言进行分析、假设、分步推理
  • Action(行动):调用外部工具(如搜索、API、数据库等)

这两类内容不断交替,形成如下循环:

1
2
3
4
5
6
7
8
9
[任务输入]
→ Thought: 推理一
→ Action: 工具调用一
→ Observation: 得到返回结果
→ Thought: 推理二(基于返回结果)
→ Action: 工具调用二
...
→ Answer: 最终结论

示例

记账分类示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
你是一个记账分类专家,正在帮助用户建立一套适合其个人家庭情况的记账分类体系。你可以多轮尝试,评估方案效果,并在每次尝试后进行反思和调整。

你将遵循如下步骤:

1. 根据任务目标,生成【思考 Thought】+【行动 Action】;
2. 用户或评分器将反馈执行结果(好坏+理由);
3. 你需要【反思 Reflection】,总结经验教训,并存入【记忆 Memory】;
4. 开始下一轮尝试(考虑 Memory 中已有内容);
5. 最终输出一个高质量的分类方案。

请使用如下格式进行交互:

🔁 Round N:

Thought: ...
Action: ...
Evaluation: ...
Reflection: ...
Memory: ...

(每一轮你都可以更新 memory 作为你的经验积累)

现在开始吧。

🧩 任务目标:为某位普通家庭用户设计记账分类体系,用于日常生活开销记录与预算分析。

你需要基于提供的信息,提供贴近你实际的反馈,帮助它生成的内容更加准确。

小结
ReAct 框架让模型在不确定环境中也能灵活决策,提高任务完成的成功率与效率。

项目 内容
🧠 核心思想 推理(Reasoning)+ 工具调用(Acting)交替前进
🔄 运行流程 Thought → Action → Observation → Thought → …
📦 可集成工具 搜索引擎、API、数据库、天气、计算器等
🎯 目标优势 解决幻觉问题、提升事实一致性和任务可靠性
🧪 适用任务 问答、推荐、策略规划、对话管理

之后,我将写一篇详细教程,深入介绍 ReAct 的实现方法,感兴趣的朋友可以关注。在教程中,我会分享:

  • 完整的代码实现步骤
  • 实际应用案例分析
  • 常见问题及解决方案
  • 与其他提示技术的结合使用

如果你对构建自己的 ReAct 系统感兴趣,这篇教程将为你提供从理论到实践的全面指导。

3.15 Reflexion

定义
Reflexion 是一种自我反思型智能体机制,由三大组件构成:

  • Actor(执行者):负责在环境中执行任务,产生动作与推理过程(可由 CoT 或 ReAct 驱动);
  • Evaluator(评估器):对 Actor 的行为表现进行打分(使用 LLM 或规则);
  • Self-Reflection(反思者):基于表现结果生成反馈,指导智能体未来更优行为。

这种架构将传统的 生成 → 执行 模式扩展为 生成 → 执行 → 评估 → 反思 → 改进,从而形成带记忆、自我优化的闭环系统。

核心思路
引入反思机制,不断从失败和成功中学习。

适用场景

  • 长期执行任务的智能体
  • 需要持续优化输出的应用

方法详解

Reflexion 的运行流程:

  1. 任务定义:指定目标任务
  2. 初次执行(Trajectory):Actor 基于当前观察生成初始推理与动作路径
  3. 表现评估(Evaluate):Evaluator 对路径打分(如正确性/完成度)
  4. 自我反思(Reflect):LLM 根据执行结果总结经验、反思失误,并将反思写入记忆
  5. 下一次尝试:Actor 读取记忆与反思,优化行为

这个过程可以重复若干次,每轮都提升 Agent 表现。

示例

设计适合我的家庭财务的记账分类规则
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Task: 设计适合我的家庭财务的记账分类规则

🔁 Round 1:

Thought: 我将支出分为「餐饮」「交通」「购物」「娱乐」四类。
Action: 提出分类方案并试运行。

Evaluation: 评分 5/10。用户反馈“遗漏了教育、医疗和家庭用品等关键类目”。

Reflection: 我的分类不够全面,未覆盖基本生活所需。下次要先参考常见家庭预算模板。

🧠 Memory: 「思考时应参考更标准的分类模板,确保完整性。」

🔁 Round 2:

Thought: 参考家庭财务分类模板,新增「教育」「医疗」「家庭用品」类别。
Action: 更新分类方案。

Evaluation: 评分 8/10。更贴合需求,但分类粒度还不够灵活。

Reflection: 可引入二级分类(如餐饮 → 外卖/食材),提高分析粒度。

Final Answer: 分类层次更加合理,满足用户家庭记账需求。

小结
Reflexion 为模型引入自我监督机制,使其在长期任务中表现越来越好。

3.16 Multimodal CoT Prompting

定义
Zhang et al. (2023) 提出了一种将图文多模态融合的推理框架 —— Multimodal Chain-of-Thought (CoT)。传统的 Chain-of-Thought Prompting(思维链提示)通常仅作用于文本输入,无法充分利用图像等其他信息源。而 Multimodal CoT 则扩展了这一思维范式,结合了图像和文字信息,以提升复杂任务中的推理能力和解释性。

核心思路
多模态输入 + 多步推理,让模型更好理解复杂场景。

适用场景

  • 图文综合理解
  • 需要跨模态推理的任务

方法详解

该方法采用了 两阶段框架:

第一阶段:多模态推理链生成(Rationale Generation)
模型接收图像和文字输入,生成一段清晰的、与多模态信息结合的中间推理过程。

1
2
3
图像描述:图中是一张绿色叶子的显微图像。
问题:为什么叶子是绿色的?
推理链输出:叶子含有叶绿素,叶绿素能吸收红光和蓝光,反射绿色光,因此我们看到的叶子是绿色的。

第二阶段:答案推理(Answer Inference)
在推理链的基础上,模型综合已有的逻辑与知识生成最终答案。
接续上例,答案输出:“叶绿素反射绿色光”

该方法显著提升了模型在多模态理解和推理任务中的表现

示例

  1. 上传一张香蕉的图形
1
这个香蕉可以吃吗

会得到回复类似于:

1
2
图像中的香蕉已经变熟,表皮出现黑斑,这是熟透的正常现象,而非腐烂。熟香蕉通常口感更甜,更适合直接食用或做成甜品。因此,这根香蕉虽然外皮有斑点,但内部并未腐坏,是可以食用的。

小结
Multimodal CoT 拓展了语言模型的能力边界,使其可以在图文融合场景下完成复杂推理任务。

特点 说明
🖼️ 融合视觉与语言 不仅依赖文本,还能处理图片(如图表、显微照片)等复杂输入。
🧩 两阶段结构 先生成中间推理过程,再输出最终答案,提升解释性和准确性。
📈 性能优异 在 ScienceQA 等多模态任务中,小模型(1B)即可超过 GPT-3.5 表现。
📚 应用场景 教育考试问答、图文联合诊断、多模态推理评估系统等。

4. 总结

Prompt Engineering 是一门不断发展的艺术与科学,通过本文介绍的各种技巧,我们可以更有效地与 AI 模型交互:

核心技巧回顾

技法名称 难度 适用场景 优点 缺点
Zero-Shot Prompting 快速测试、简单任务 简单直接,无需示例 复杂推理效果差
Few-Shot Prompting ⭐⭐ 需要示例指导的任务 可提升生成质量 示例设计要求高
Chain-of-Thought Prompting ⭐⭐⭐ 复杂推理、多步问题 强化推理逻辑 输出冗长、推理质量不稳定
Meta Prompting ⭐⭐⭐ 自定义生成风格、结构控制 灵活适配不同场景 Prompt 设计复杂
Self-Consistency ⭐⭐⭐⭐ 提升复杂推理稳定性 答案更可靠准确 推理成本增加
Prompt Chaining ⭐⭐⭐⭐ 多阶段任务拆解 控制流程、细粒度优化 链条设计复杂,执行慢
Tree of Thoughts (ToT) ⭐⭐⭐⭐ 大规模复杂推理 逻辑探索更完整 计算资源消耗大
Retrieval Augmented Generation (RAG) ⭐⭐⭐⭐ 需要实时信息支撑 信息丰富、上下文更全面 依赖检索质量
Automatic Reasoning and Tool-use (ART) ⭐⭐⭐⭐ 智能体任务、多工具协作 动态适应、完成复杂任务 需要集成检索和执行系统
Automatic Prompt Engineer (APE) ⭐⭐⭐⭐ 自动优化 Prompt 自动调优省人工 训练与部署成本高
Active-Prompt ⭐⭐⭐⭐ 持续学习与环境交互任务 动态自适应,学习能力强 系统搭建复杂
Directional Stimulus Prompting ⭐⭐⭐ 需要特定方向推理时 控制推理路径,减少偏差 对提示词设计依赖大
PAL(Program-Aided Language Models) ⭐⭐⭐⭐ 需要精确计算或代码辅助 减少纯语言推理误差 需要执行环境支持
ReAct(Reasoning + Acting) ⭐⭐⭐⭐ 边推理边调用外部工具 灵活完成复杂任务 动作规划复杂,易出错
Reflexion ⭐⭐⭐⭐ 长期任务优化、自我改进 自主学习、自我提升 反思质量需要监控
Multimodal CoT Prompting ⭐⭐⭐⭐ 图文表混合理解任务 跨模态推理能力强 多模态处理复杂,依赖数据一致性

实践建议

技法组合 适用场景 搭配优势 注意事项
Few-Shot Prompting + Chain-of-Thought Prompting 多步推理、复杂决策 提供示例,引导模型分步骤推理,提升逻辑准确性 示例需清晰且步骤合理,避免引导错误
Chain-of-Thought Prompting + Self-Consistency 高难度推理、推导不唯一的任务 多次推理取多数,提高答案稳定性 生成多条推理链需更多推理资源
Retrieval-Augmented Generation (RAG) + ReAct Prompting 复杂问题回答、工具调用辅助 结合外部检索与动作决策,生成更丰富准确的回答 检索内容质量与动作执行需要监控
Prompt Chaining + Reflexion 长期复杂任务、逐步学习改进 拆分任务流程+阶段性反思优化 反思设计要合理,防止过拟合或偏离
Tree of Thoughts (ToT) + Self-Consistency 搜索式推理、多种思路探索任务 构建推理树后,筛选最佳路径,提升结果可靠性 计算量大,适合资源充足环境
Directional Stimulus Prompting + Few-Shot Prompting 指定推理方向的任务(如安全性检测) 设定推理偏好+提供样例指导,精准控制输出 刺激词(stimulus)设计要细致,避免歧义
PAL (Program-Aided Language Models) + ReAct Prompting 数理逻辑推导、计算题、自动化处理 结合程序辅助执行,推理更精准高效 程序生成与运行环境需稳定
Active-Prompt + Reflexion 连续任务、自适应系统(如智能体) 动态提示+自主反思提升长期性能 需要机制监控,防止无监督偏移

随着 AI 模型能力的不断提升,Prompt Engineering 将继续发挥关键作用,帮助我们更好地利用这些强大工具解决实际问题。


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

蜀ICP备2025133850号