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(零样本提示)
定义 直接给模型一个明确的问题或任务指令,不提供任何示例。
核心思路 依靠模型的预训练知识和泛化能力,在没有示例指导的情况下推理并完成任务。
适用场景
- 任务简单明确
- 想快速得到初步结果
- 不知道怎样示范才好
方法详解
- 问题必须清晰、具体,避免模糊措辞。
- 可以在指令中补充角色扮演、格式要求,提升准确性,比如:假设你是一个数学家,帮助我解决以下数学问题并提供详细步骤。
示例
请用中文总结下面一段英文文本,要求字数不超过 100 字:
小结 Zero-Shot 是最简单、最基础的 Prompt 技巧,但对 Prompt 表述清晰度要求高。
3.2 Few-Shot Prompting(少量示例提示)
定义 在任务指令中加入几个示例,帮助模型学习任务模式。
核心思路 通过 示范样例 让模型理解问题要求,减少歧义,提高准确率。
适用场景
- 任务结构固定,但稍复杂
- 想引导模型遵循特定格式或风格
方法详解
-
标签空间和输入分布的重要性
即使单个标签是错误的,只要整体标签空间(label space)和输入文本的分布与真实任务相似,就能显著提升模型表现。 就像教小孩识别动物,即使你偶尔把狐狸错认为狗,但只要展示的动物种类和特征分布是合理的,小孩最终仍能学会正确分类。
例子:教 AI 分辨水果和蔬菜
我们要教 AI 分类「番茄」和「香蕉」,但手头的标签可能有错误。 🚫 方式 1:标签全对但分布奇怪
1. 红红的、圆的 → 水果 ❌(番茄实际是蔬菜) 1. 黄色的、弯的 → 水果 ✔ 1. 红色的、小的 → 水果 ❌(小番茄也是蔬菜)
🔍 问题: 虽然每个标签"看似正确"(人们常误认番茄是水果) 但所有样本都被标为「水果」,AI 根本不知道「蔬菜」类存在!
✅ 方式 2:标签有错但结构合理
1. 红红的、圆的 → 蔬菜 ✔(番茄) 2. 黄色的、弯的 → 水果 ✔(香蕉) 3. 绿色的、圆的 → 水果 ❌(其实是青椒蔬菜)
✨ 优势:
- 标签空间完整:展示了「水果」「蔬菜」两个类别
- 分布合理:2 蔬菜 vs 1 水果(接近真实厨房情况)
- 特征覆盖:有颜色/形状等关键特征
🤖 AI 学习效果对比
当遇到新的「草莓」时: 方式 1 的 AI: 100%认为是水果(虽然对,但只是因为没见过蔬菜类) 方式 2 的 AI: 水果:70%(因为红色像番茄但更甜) 蔬菜:30%
当遇到「胡萝卜」时: 方式 1 的 AI:崩溃(不知道蔬菜是什么) 方式 2 的 AI:能猜「蔬菜」(因为见过圆形蔬菜)
-
格式的关键作用 使用结构化的输入-输出格式,即使标签是随机的,也比完全没有标签要好得多。 实验依据:在研究中,使用随机标签但保持正确格式的 prompt,性能比无标签的 prompt 高出约 20-30%。
任务描述:[简要说明任务]
示例格式:[明确输入输出的格式]
示例 1:
输入:[示例输入 1]
输出:[示例输出 1]
示例 2:
输入:[示例输入 2]
输出:[示例输出 2]
当前输入:[待处理输入]
请生成输出:
-
标签分布的影响 从真实标签分布中随机采样标签(如正负样本 7:3),比均匀采样(如正负样本各 50%)效果更好。这帮助模型更好地捕捉任务中的类别先验概率。
假设你要 AI 帮忙判断邮件重要性:
[均匀分布] 重要:不重要 = 50%:50% → AI会过度预警
[真实分布] 重要:不重要 = 20%:80% → AI更接近现实场景
示例
将英文句子翻译成简体中文:
示例1:
英文:I love programming.
中文:我热爱编程。
示例2:
英文:The cat is sleeping.
中文:猫正在睡觉。
现在,请翻译:
英文:The weather is nice today.
小结 Few-Shot 是提高任务一致性的有效方法,但示例质量至关重要。
3.3 Chain-of-Thought Prompting(思维链提示)
定义 引导模型逐步推理,而不是直接输出答案。
核心思路 要求模型在得出最终结论前,列出详细推理步骤,提升复杂推理任务的准确率。
适用场景
- 数学推理
- 多步逻辑推理
方法详解
- 明确要求请一步步推理,不要直接给答案。
- 可适当设置问题分块提示
问题:小明有 3 支铅笔,小红给了他 2 支,他又买了 5 支。现在小明有几支铅笔?请一步步推理。
推理过程:
- 小明原来有 3 支铅笔。
- 小红又给了他 2 支,现在有 3+2=5 支。
- 他又买了 5 支,现在有 5+5=10 支。
答案:10支
小结 Chain-of-Thought 让模型的推理过程更透明,也通常能显著提升复杂任务的正确率。
3.4 Self-Consistency(自洽推理)
定义 核心目标是改进传统思维链(Chain-of-Thought, CoT)提示中的贪婪解码策略。该技术通过生成多个多样化推理路径,然后选择最一致的答案,显著提升了复杂推理任务的表现。
核心思路 用多样化推理抵消随机噪声,提高整体准确性。
适用场景
- 推理容易波动的任务
- 需要更高可靠性的场景
方法详解
- 通过设置
temperature > 0
的多次采样 - 汇总不同推理链的最终答案,投票决定最优输出
示例
同一个数学问题,让模型推理5次,选出现次数最多的答案作为最终结果。
小结 Self-Consistency 是提升推理鲁棒性的强力技巧,但计算开销较大。
3.5 Meta Prompting(元提示)
定义 Meta Prompting = 教大模型怎么理解任务模式,而不是单次去堆内容。 你不是每次喂给它不同的内容,而是喂任务格式、输入输出规律,让它自己能泛化。
为什么 Meta Prompting 很强?
- 提高泛化性:同一个 Meta Prompt,可以适应各种主题,不用每次重写。
- 减少 Hallucination(幻觉):结构清晰,模型更容易按套路输出,少出偏差。
- 方便系统化构建:比如做批量内容生成、自动化对话时,Meta Prompt 是必须掌握的技能。
核心思路 让模型参与到Prompt 设计过程中,以适应任务的特殊需求。
适用场景
- 任务边界模糊
- 希望模型自行探索最佳询问方式
方法详解
-
明确目标任务类型,比如你要让它写小红书爆款文案,那么任务类型就是「短内容写作」。
-
梳理输入信息,比如写爆款文案需要用户提供【产品名】【产品特点】这类基本信息。
-
设计输出结构,比如: 爆款文案可能需要:
- 中段描绘使用场景
- 结尾呼吁行动
- 使用生成的 Prompt 执行实际任务
-
添加约束规范,比如:要求字数 100 字以内,风格轻松活泼,面向 18-25 岁女性群体。
标准模板
任务说明
根据用户提供的【输入信息】,完成【目标任务】,要求如下:
- 输出结构:
1. 【部分1说明】
2. 【部分2说明】
3. 【部分3说明】
- 输入要求:
- 【输入A】
- 【输入B】
- 约束规范:
- 【字数/风格/语气要求】
示例输入:
【示例内容】
开始执行:
示例
1. 产品分析类 Meta Prompt
任务描述:
请根据提供的产品名称和简要描述,撰写一份产品分析报告,要求:
- 介绍:概括产品基本信息(名称、定位、核心功能)
- 优势分析:列举至少3条核心竞争优势
- 问题与挑战:指出潜在问题或改进空间
- 结论与建议:总结产品前景并提出1-2条优化建议
输入要求:
- 产品名称
- 简要描述(50字以内)
注意事项:
- 内容条理清晰,每一部分单独分段
- 保持专业且简洁的文风
示例输入:
产品名称:StudyAI
简要描述:一款面向中小学生的个性化AI学习助手
2. 用户评论总结类 Meta Prompt
任务描述:
根据一组用户评论,总结出以下内容:
- 总体情感倾向(正面/中立/负面)
- 高频出现的正面关键词(不少于3个)
- 高频出现的负面关键词(不少于3个)
- 1段简洁总结(不少于100字)
输入要求:
- 提供5条以上的原始用户评论文本
注意事项:
- 以表格列出关键词
- 总结段落需覆盖主要情感和改进方向
示例输入:
用户评论:【...多条评论文本...】
3. 会议纪要生成类 Meta Prompt
任务描述:
根据会议录音的自动转录文本,生成一份标准会议纪要,要求:
- 会议主题
- 参会人员
- 主要讨论内容(按主题分类,逐条列出)
- 决策事项(明确责任人)
- 待跟进事项(明确截止时间)
输入要求:
- 转录文本(可包含口语化内容)
注意事项:
- 将口语内容整理为正式书面语
- 保持信息准确、逻辑清晰
示例输入:
转录文本:【...原始文字...】
小结 Meta Prompting 是在教 AI 学做事的方法,而不是每次告诉它要做哪件事。
Meta Prompt 往往+模板化输入,最终就可以形成自动化管道(比如批量生成文案、总结成报告、分类处理信息),这是工程化应用中很常见的做法!
3.6 Prompt Chaining(提示链)
定义 Prompt Chaining 是一种高级提示词工程技术,它将一个复杂任务拆解成多个子任务,每个子任务单独交给 LLM 处理,并且把前一步的输出作为下一步的输入,最终形成一条任务执行链(Chain of Prompts)。
👉 本质上,它是:用小步骤连起来完成大任务。
核心思路 分治复杂任务,通过中间步骤输出,提升整体流程准确率与可控性。
适用场景
- 多阶段任务(如:提取 → 总结 → 翻译)
- 需要中间推理或格式变化的任务
方法详解
-
定义最终目标 🔹 举例: 比如我要「生成一篇关于可持续能源的完整长文」。
-
拆解成子任务 这个任务可以拆成哪些简单步骤?
🔹 举例:
- 确定具体主题角度(比如风能、太阳能哪个?)
- 搜集主要论点和事实数据
- 写出段落提纲
- 逐段展开成文
-
设计每个子 Prompt
每个子任务独立设计 prompt,比如:
- 子 Prompt 1:根据领域确定具体写作角度
- 子 Prompt 2:围绕角度,搜索 3 条关键事实
- 子 Prompt 3:根据角度和事实,生成提纲
- 子 Prompt 4:根据提纲,分段写正文
-
定义链式传递方式 明确:
- 哪些信息要从一个 prompt 传递到下一个?
- 需要对中间结果加工(如提炼、清洗)吗?
🔹 举例: 从第二步出来的事实,要被总结成要点,才能喂给第三步。
示例
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 = 多思路并发探索 + 动态评估选择最佳思路。
核心思路
不仅展开单线推理,而是多路径并行探索,通过回溯/筛选找到最佳答案。
适用场景
应用领域 | 典型任务 |
---|---|
数学推理 | 解复杂计算题、代数推导 |
战略规划 | 商业战略设计、产品路线图制定 |
游戏对弈 | 博弈推演、下一步决策选择 |
系统设计 | 软件架构规划、复杂流程建模 |
多步推理 | 案例推断、逻辑推演、推理小说创作 |
方法详解
-
明确目标任务
首先问自己:
我要解决的问题是什么?需要探索哪些思路?
🔹 举例:
- 解一道复杂数学应用题
- 做商业决策分析
-
定义思路生成规则
继续问自己:
让 LLM 在每一步,生成哪些类型的中间思路?
🔹 举例:
- 对问题进行子问题拆解
- 为每个子问题列出多种解法思路
-
设定评估标准
明确:
如何判断一个 Thought 是好的还是差的?
🔹 举例:
- 是否贴合题目目标?
- 是否逻辑严密?
- 是否覆盖了所有关键条件?
-
选择搜索策略
指定探索方法:
- 广度优先(BFS):广泛探索多种思路,适合开放性问题
- 深度优先(DFS):快速深入一个方向,适合路径依赖性强的问题
- 混合策略:如先浅后深,自定义组合探索
-
执行探索与回溯
每次模型生成 thought 后:
- 进行评估:如果好,继续拓展。
- 回退重试:如果差,回到上一步,换别的分支探索。
直到找到满意的完整解决方案。
一个标准 Tree of Thoughts Prompt 长什么样?
任务说明:
根据【用户输入的问题】,通过以下方式进行推理求解:
- 在每一个步骤,生成多个可能的中间思路(Thoughts)
- 对每个思路进行自我评估,选择最优的进行拓展
- 如果发现当前路径不可行,回溯到上一步,尝试其他思路
搜索策略:
使用【广度优先搜索】/【深度优先搜索】进行探索。
输出要求:
- 展示完整推理树
- 标注每一步选择的原因
- 最终给出解决方案,并简要总结推理路径
示例输入:
问题:如何设计一个既高效又环保的城市交通系统?
开始执行:
示例
1. 解一道复杂的数学应用题
1. Prompt:阅读题目后,列出3个不同的求解思路
2. Prompt:针对每个思路,推演出第一步操作
3. Prompt:根据第一步结果,继续生成下一步可能的操作(每步至少2种可能)
4. Prompt:在每步后评估:是否向正确方向前进?如果是,继续,否则回退并换分支
5. Prompt:最终根据最优分支输出详细解题过程与答案
2. 设计一款新型智能健身设备。
ToT 应用方式:
Thoughts生成:提出多个核心创新点(如个性化训练算法、沉浸式体验、社交功能)
Tree展开:针对每个创新点,细化设计细节(功能、交互、硬件规格)
搜索:组合不同设计方案,推演用户体验和市场接受度
评估与回溯:如果某一组合用户体验不好(如功能复杂操作繁琐),回溯换设计方向
3. 推理小说创作
场景:创作一部复杂反转的推理小说。
ToT应用方式:
Thoughts生成:提出多种可能的罪犯、动机、作案手法
Tree展开:根据每种设定发展剧情线索和伏笔
搜索:探索多条故事分支,评估哪一条逻辑更闭环、反转更出人意料
回溯:如果某条剧情发展过早暴露关键线索,退回并调整
结果:创作出一部逻辑自洽、高潮迭起的推理故事
小结 Tree of Thoughts = 多思路并行探索 + 动态筛选 + 搜索最优解决路径。
3.8 Retrieval-Augmented Generation(RAG)
定义
RAG(检索增强生成)是一种将 信息检索(Retrieval)与文本生成(Generation) 结合起来的系统设计,用于解决知识密集型任务。
传统大模型(如 GPT)在推理时只依赖模型内部训练时学到的「参数知识」(parametric knowledge), 而 RAG 系统引入了外部知识源(如文档库、数据库、网页等),让模型可以实时检索信息,并在生成文本时融合检索到的材料。
这样可以解决几个关键问题:
- 🧠 模型知识过时(因为训练时的信息静态)
- 🔥 事实错误、幻觉(hallucination)
- 🛠️ 需要动态更新知识的应用场景(如金融、医疗、教育)
核心思路
结合检索(Retrieval)+ 生成(Generation) 两种模式,让模型基于真实知识作答,而非凭空想象。
适用场景
- 企业知识问答
- 文档助手、内部数据问答系统
方法详解
输入问题 ➔ 检索相关文档 ➔ 将文档+问题一起喂给生成模型 ➔ 输出答案
- 检索阶段:
将输入问题用 Embedding 编码,去向量数据库(如 FAISS、Milvus)中检索相关文档。
- 生成阶段:
把「问题 + 检索到的文档」拼接在一起作为新的 Prompt,输入到生成模型(如 T5、Flan-T5、GPT)中,生成最终回答。
示例
你是一名企业规章制度解读助手,请基于以下资料回答用户的问题:
【资料1】员工因特殊情况可申请远程办公,须提前填写远程办公审批表并由部门主管批准。
【资料2】一般岗位不支持长期远程办公,如有临时需要应事前申报。
用户问题:请问员工能不能远程办公?
小结
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 查询、数据清洗 |
自动问答系统 | 基于外部知识库的智能问答 |
多步任务代理 | 智能助手结合多工具完成复杂指令 |
方法详解
-
准备任务示范(Task Demonstrations)
- 每个示范都包括推理步骤+工具调用示例。
- 示例数量不需要太多,但需要覆盖典型情况。
-
构建任务与工具库(Task and Tool Library)
- 收集常见任务模板
- 定义可以调用的工具,描述工具接口(输入/输出格式)
-
推理执行(Test-Time Reasoning)
当面对新任务时:
- 模型从任务库中选取最相关的示范
- 开始推理
- 遇到需要工具协助时自动暂停生成
- 调用相应工具,接收结果
- 拿到工具返回后继续生成后续推理
- 整个过程可以自动进行,无需人工干预
-
扩展与修正
- 人类可以随时增加新的示范
- 新增新的外部工具
- 修正模型推理中的失误 -只需更新任务/工具库,不需要微调模型!
一个标准 ART Prompt 长什么样?
任务描述:
请根据问题,自动完成推理,同时在需要时调用外部工具。规则如下:
- 每当需要外部数据支持(如复杂计算、事实查询),使用【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. 使用【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
- 提升少样本学习性能
方法详解 其核心思想是:用语言模型来搜索最好的提示语句。
方法详解
- Instruction Generation(指令生成)
给模型一组 「输入 ➜ 输出」 示例,让它尝试自己合成 「instruction prompt」。
示例输入:
Input: 23 + 19
Output: 42
模型可能自动生成:
指令:让我们一步一步地解决这个问题,以确保我们得到正确的答案。
-
Candidate Execution(候选执行)
用这些自动生成的 instruction prompt,结合输入数据,让目标模型去执行任务并输出结果。
-
Evaluation & Selection(评估选择)
比较每个 candidate prompt 的输出质量,选择性能最优的那一个。
示例
任务:提升文本摘要质量。
APE 自动探索不同表述方式,逐步演化出最优提示。
小结
- APE 成功发现比人类常用的提示(如 "让我们一步一步地解决这个问题")更有效的 zero-shot CoT 提示。
- 自动化程度高、无需人工调试 prompt。
- 对任务适应性强,能针对具体任务生成最佳提示。
3.11 Active-Prompt
定义
Active-Prompt 是一种基于主动学习的提示优化方法,用于挑选最有信息量的示例(exemplars)来适配任务,从而增强语言模型的推理能力。
传统 Chain-of-Thought (CoT) 依赖静态的人工例子(prompt exemplars),但这些例子对不同任务不一定有效。Active-Prompt 通过引入不确定性评估和人类标注反馈,不断改进 exemplar 选择,使 prompt 更具适应性和效果。
核心思路
模拟真实对话中的澄清提问,提高任务准确率。
适用场景
- 用户需求容易模糊或变化的场景
- 复杂问题梳理
方法详解
-
初步示例推理(Warm Start)
使用一些 CoT 示例(或不使用)对一批训练问题进行推理,生成多个(k 个)答案。
-
不确定性评估(Uncertainty Estimation)
对每个问题的 k 个回答进行分歧度分析,衡量 LLM 对该问题的不确定性程度。
方法:如用回答之间的互不一致性(例如投票分布)衡量。
- 主动选择标注样本(Active Selection)
选择最不确定的那些问题,让人类来提供 CoT 标注答案(即高质量 reasoning 示例)。
- 更新 Prompt 示例(Prompt Update)
将新标注的 CoT 示例加入 prompt 示例集中,重新用于推理 ➜ 性能逐步提高。
示例 第一步:初始 Prompt(含少量示例)
请判断两个句子之间的关系,并说明理由。可能的关系包括:
- 蕴涵(第二句一定为真)
- 矛盾(第二句一定为假)
- 中性(不确定真假)
示例 1:
句子 A: 所有猫都会爬树。
句子 B: 有的猫不会爬树。
答案: 矛盾。
解释: 如果所有猫都会爬树,就不可能有猫不会爬树。
示例 2:
句子 A: 女孩在弹钢琴。
句子 B: 女孩喜欢音乐。
答案: 中性。
解释: 弹钢琴可能表示喜欢音乐,但也可能是练习或考试,无法确定。
第二步:手动生成多个答案,用于观察不确定样本
请尝试输出多个不同角度的分析,每个角度给出结论与解释:
句子 A: 男孩正在吃汉堡。
句子 B: 男孩很饿。
🌟 你发现答案分歧大,说明该问题是高不确定样本。
✍️ 第三步:你手动写出“好解释”,变成新示例加进 Prompt 中
示例 3:
句子 A: 男孩正在吃汉堡。
句子 B: 男孩很饿。
答案: 中性。
解释: 虽然男孩正在吃东西,但不能确定是否因饥饿。也可能是为了尝试口味或完成任务。
🔁 第四步:加到下一轮 Prompt 中,增强模型判断能力
下面我补充了一个更复杂示例,请继续根据这些推理判断新的样本关系。
句子 A: 一位老人正在散步。
句子 B: 他在锻炼身体。
这时模型会倾向输出中性 并给出更合理的解释,因为你强化了它的思维边界。
小结
Active-Prompt 将 Prompt 从一次性输入,升级为交互式、动态调整的过程。
3.12 Directional Stimulus Prompting(方向性刺激提示)
定义
传统的 Prompt 通常直接给出任务描述,让 LLM 执行。但在实际操作中,我们发现 LLM 对于任务描述的理解存在不确定性,尤其是在摘要、改写等任务中可能输出偏离预期方向的结果。
Directional Stimulus Prompting(定向刺激提示),是 Li 等人在 2023 年提出的一种新方法。它的关键思想是:
引入一个小型可调节的模型(policy LLM)生成刺激词(stimulus) 或提示性引导内容,以更明确地引导目标 LLM(大模型)生成符合预期方向的输出。
这种方法就像给主模型喂一段启发式暗示,起到指路的作用。
核心思路
有意识地引导模型思考路径,减少偏离,提高推理质量。
适用场景
- 复杂推理需要控制方向时
- 避免模型走入无关推理分支
方法详解
- 训练一个 policy LM(可以是小模型)
- 输入:原始文本 + 任务目标
- 输出:刺激提示语(例如:“请强调正面影响” 或 “聚焦技术方面”)
- 构造最终 prompt:
- 原文 + policy LLM 生成的 stimulus(刺激)+ 标准任务指令(如“请生成摘要”)
- 然后一起送入一个固定的大语言模型中(如 GPT-4)
示例
刺激提示语(由 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 的优势在于更高的精度、可解释性 和对复杂逻辑的处理能力。
核心思路
语言推理结合程序执行,提升数学、逻辑类任务的正确率。
适用场景
- 需要精确计算的复杂推理
- 数学题、数据处理任务
方法详解
-
输入任务描述(自然语言) 用户提出问题,如:“班上有 5 个男生和 7 个女生,一共有多少人?”
-
生成程序(由 LLM 完成)
-
由外部程序运行该代码,返回最终结果
示例
- 自然语言输入
一个农场里有 14 只羊、6 只牛和 10 只马。一共有多少只动物?
- PAL 提示模板
请根据下列问题生成一段 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、数据库等)
这两类内容不断交替,形成如下循环:
[任务输入]
→ Thought: 推理一
→ Action: 工具调用一
→ Observation: 得到返回结果
→ Thought: 推理二(基于返回结果)
→ Action: 工具调用二
...
→ Answer: 最终结论
示例
记账分类示例
你是一个记账分类专家,正在帮助用户建立一套适合其个人家庭情况的记账分类体系。你可以多轮尝试,评估方案效果,并在每次尝试后进行反思和调整。
你将遵循如下步骤:
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、数据库、天气、计算器等 |
🎯 目标优势 | 解决幻觉问题、提升事实一致性和任务可靠性 |
🧪 适用任务 | 问答、推荐、策略规划、对话管理 |
3.15 Reflexion
定义
Reflexion 是一种自我反思型智能体机制,由三大组件构成:
- Actor(执行者):负责在环境中执行任务,产生动作与推理过程(可由 CoT 或 ReAct 驱动);
- Evaluator(评估器):对 Actor 的行为表现进行打分(使用 LLM 或规则);
- Self-Reflection(反思者):基于表现结果生成反馈,指导智能体未来更优行为。
这种架构将传统的 生成 → 执行 模式扩展为 生成 → 执行 → 评估 → 反思 → 改进,从而形成带记忆、自我优化的闭环系统。
核心思路
引入反思机制,不断从失败和成功中学习。
适用场景
- 长期执行任务的智能体
- 需要持续优化输出的应用
方法详解
Reflexion 的运行流程:
- 任务定义:指定目标任务
- 初次执行(Trajectory):Actor 基于当前观察生成初始推理与动作路径
- 表现评估(Evaluate):Evaluator 对路径打分(如正确性/完成度)
- 自我反思(Reflect):LLM 根据执行结果总结经验、反思失误,并将反思写入记忆
- 下一次尝试:Actor 读取记忆与反思,优化行为
这个过程可以重复若干次,每轮都提升 Agent 表现。
示例
设计适合我的家庭财务的记账分类规则
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) 模型接收图像和文字输入,生成一段清晰的、与多模态信息结合的中间推理过程。
图像描述:图中是一张绿色叶子的显微图像。
问题:为什么叶子是绿色的?
推理链输出:叶子含有叶绿素,叶绿素能吸收红光和蓝光,反射绿色光,因此我们看到的叶子是绿色的。
第二阶段:答案推理(Answer Inference) 在推理链的基础上,模型综合已有的逻辑与知识生成最终答案。 接续上例,答案输出:“叶绿素反射绿色光”
该方法显著提升了模型在多模态理解和推理任务中的表现
示例
- 上传一张香蕉的图形
这个香蕉可以吃吗
会得到回复类似于:
图像中的香蕉已经变熟,表皮出现黑斑,这是熟透的正常现象,而非腐烂。熟香蕉通常口感更甜,更适合直接食用或做成甜品。因此,这根香蕉虽然外皮有斑点,但内部并未腐坏,是可以食用的。
小结
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 将继续发挥关键作用,帮助我们更好地利用这些强大工具解决实际问题。
更多文章❤️请点击这里