提示工程是设计与大模型交互的核心技能,特别是Chain-of-Thought(CoT)技术通过引导模型展示推理过程,能显著降低对标注数据的依赖。无需微调,即可通过零样本/少样本提示让基座模型表现出接近微调模型的性能。文章系统介绍了提示工程流程:任务分析、提示设计模式选择、迭代评估和工具集成,以及角色扮演、格式约束等高级技巧,帮助开发者将人类思维模式"翻译"成模型可执行的指令,实现经济高效、透明可解释的大模型应用。
前排提示,文末有大模型AGI-CSDN独家资料包哦!
开展提示工程(Prompt Engineering)是一项核心技能,其本质是设计与模型的交互方式,以最有效地激发出模型在预训练阶段获得的知识和推理能力。
以下我将系统性地阐述如何开展提示工程,并重点讲解如何通过类似Chain-of-Thought (CoT) 的设计来降低对标注数据的依赖。
一、核心思想:从“下达指令”到“引导思维”
- CoT 通过显式要求模型生成中间推理步骤,激活了模型中与逻辑推理相关的潜在表示;
- 这本质上是一种引导式搜索,让模型从“直接生成答案”转变为“生成推导路径”,从而绕过表面样式匹配,进入更深层的语义空间。
传统的提示是给模型一个指令(如“翻译这句话”),而高级的提示工程是为模型搭建一个思维框架,引导它模仿人类解决问题时的内在认知过程。
为什么这能降低对标注数据的依赖?
- 无需微调:你不需要用成千上万个(问题,推理链,答案)的标注数据对模型进行微调(SFT)。
- 零样本/少样本学习:通过巧妙的提示,可以直接让拥有千亿参数的基座模型(Base Model)在“零样本”(Zero-Shot)或“少样本”(Few-Shot)的情况下,表现出接近甚至经过微调模型的性能。
二、开展提示工程的系统化流程
这是一个可循环迭代的流程,而非一次性的步骤。
1.任务分析与分解(Task Analysis & Decomposition)
- 目标:彻底理解你要模型解决的任务的本质。
- 方法:
- 将复杂任务分解为更小的子任务(Sub-tasks)。例如,“解答数学应用题”可以分解为“理解问题”、“提取变量”、“列出公式”、“分步计算”、“整合答案”。
- 识别任务中的潜在陷阱和歧义点(如视频中的“首字母” vs “未字母”陷阱)。
2.提示设计模式选择(Prompt Design Pattern Selection)
根据任务复杂度,从初级到高级选择合适的设计模式:
- a. 零样本提示(Zero-Shot Prompting)
- 形式:直接给出指令。
“请问中国的首都是哪里?” - 适用:简单、常见、定义明确的任务。
- b. 少样本提示(Few-Shot Prompting)
- 形式:提供几个输入-输出的示例(Examples),让模型从中学习模式。
输入:“天空的颜色是?” 输出:“蓝色。”
输入:“草地的颜色是?” 输出:“绿色。”
输入:“云的颜色是?” 输出:“
适用:任务有特定格式或风格要求(如情感分类、实体识别)。
- c. 思维链提示(Chain-of-Thought Prompting)
- 形式:在少样本示例中,不仅给出答案,更展示得出答案的推理步骤。这是激发推理潜能的关键。
问题:小明有5个苹果,他吃了2个,又买了3个,现在有几个?
推理:小明一开始有5个。吃了2个,所以剩下5-2=3个。又买了3个,所以现在有3+3=6个。
答案:6
问题:我有3个苹果,爸爸比我多2个,我们一共有多少个?
推理:
零样本CoT:甚至可以不提供示例,直接使用魔法指令(如视频中所提):“请逐步推理以下问题:我有3个苹果,爸爸比我多2个,我们一共有多少个?”“Let's think step by step.”
- d. 自我一致性提示(Self-Consistency Prompting)
- 形式:高级技巧。结合CoT,让模型生成多条不同的推理路径和答案,然后从中选择最一致的答案(多数投票)。
- 实现:通过调整生成参数(如
num_return_sequences,temperature > 0)来采样多个输出。 - 适用:复杂、开放或多解的问题,能显著提升准确率。
3.迭代与评估(Iteration & Evaluation)
- 构建测试集:准备一个包含标准答案的多样化测试集(20-50个典型例子)。
- 评估指标:不仅评估最终答案的正确率,也评估推理过程的逻辑性。
- 迭代优化:
- 如果模型直接跳向错误答案 → 在提示中加强“逐步思考”的指令。
- 如果推理步骤混乱 → 在少样本示例中提供更清晰、更规范的推理范例。
- 如果结果不一致 → 引入自我一致性(Self-Consistency)方法。
4.工具集成与自动化(Tool Integration & Automation)
- 将最终验证有效的提示模板化、参数化。
- 利用LangChain、LlamaIndex等框架构建可重复使用的提示工作流。
- 建立提示版本管理系统,追踪不同提示的效果。
三、高级技巧与最佳实践
- 角色扮演(Role Playing):
- 让模型扮演某个领域的专家(如“你是一位杰出的数学家”),能有效激活模型内部相关的知识库。
- 格式约束(Formatting Constraints):
- 要求模型以特定格式(如JSON、XML、Markdown表格)输出,便于后续程序解析,提升输出稳定性。
- 示例:
“请以JSON格式输出,包含'reasoning'和'answer'两个字段。”
- 分步交互(Multi-Turn Interaction):
- 对于极其复杂的任务,不要期望一次提示就得到完美答案。设计多轮对话,让用户或系统可以逐步提供反馈和约束,引导模型深入思考。
- 负面提示(Negative Prompting):
- 明确告诉模型“不要做什么”,可以有效避免常见错误。
- 示例:
“请确保你的推理是基于逻辑的,而不是凭记忆中的样式匹配。”
四、一个完整的CoT提示工程示例
任务:解决数学应用题
初始失败提示(零样本):
“问题:我有3个苹果,爸爸比我多2个,我们一共有多少个?请直接给出答案。”(模型可能因样式匹配直接回答5)
优化后的CoT提示(少样本):
请解决以下数学问题,并遵循以下格式:
逐步推理。
最后给出最终答案。
示例:
问题:小明有5个苹果,他吃了2个,又买了3个,现在有几个?
推理:小明一开始有5个。吃了2个,所以剩下5-2=3个。又买了3个,所以现在有3+3=6个。
答案:6
现在请解决:
问题:我有3个苹果,爸爸比我多2个,我们一共有多少个?
推理:
*(模型现在更可能生成:首先,我的苹果数是3个。爸爸比我多2个,所以爸爸有3+2=5个。我们一共有3+5=8个。答案:8)*
进一步优化(加入自我一致性):
- 用
temperature=0.7和num_return_sequences=5的参数,让上述提示生成5个推理过程和答案。 - 统计发现4个答案输出是8,1个是5。
- 选择最终答案8。
总结
开展提示工程,尤其是CoT类提示的设计,是一个将人类的问题解决思维模式“翻译”成模型能理解和执行的指令的过程。其强大之处在于:
- 经济高效:极大降低了对昂贵标注数据和计算密集型微调的依赖。
- 透明可解释:模型的推理过程得以展现,便于调试和信任。
- 激发潜能:它不是“教”模型新知识,而是“引导”模型更好地运用其已有知识。
要掌握它,必须深入理解你的模型(它的优势和弱点)和你的任务,并秉持实验和迭代的精神。
基于Self-Consistency推理的、可直接使用的提示词样本案例
这些案例覆盖了数学、逻辑、常识和创意等多个领域,并展示了如何设计提示词来最大化激发模型的推理潜能。
核心提示词设计原则
在阅读案例前,请先理解两个核心设计原则:
- 强制逐步推理 (Force Step-by-Step Reasoning):使用类似
“让我们一步步思考”、“首先...其次...最后...”、“推导过程:”等指令,明确要求模型展示其思维过程,而不是直接给出答案。 - 分离推理与答案 (Separate Reasoning from Answer):要求模型在最后以明确的格式(如
“### 最终答案:”)给出答案,这便于程序自动从大量文本中提取和统计答案。
样本案例集
案例一:数学应用题(经典)
问题:
一个房间里有一些长凳。如果每条长凳坐4个学生,就有3个学生没地方坐。如果每条长凳坐5个学生,就会空出2条长凳。请问一共有多少个学生?
提示词 (Prompt):
请解决以下数学问题。请确保逐步展示你的推理过程,并在最后以“### 最终答案:”的格式框出最终答案。问题:一个房间里有一些长凳。如果每条长凳坐4个学生,就有3个学生没地方坐。如果每条长凳坐5个学生,就会空出2条长凳。请问一共有多少个学生?推理过程:让我们一步步思考。*(模型会开始生成推理路径,如:“设长凳数量为b,学生数量为s。第一种情况:4b + 3 = s。第二种情况:5(b-2) = s…”)*
案例二:逻辑推理(谁说了谎?)
问题:
甲、乙、丙三人中有一个说了谎。
甲说:“乙在说谎。”
乙说:“丙在说谎。”
丙说:“甲和乙都在说谎。”
请问谁说了谎?
提示词 (Prompt):
你是一个逻辑推理专家。请分析以下问题,一步步地列出所有可能性,并找出唯一符合逻辑的结论。你的最终答案应该是一个名字。问题: 甲、乙、丙三人中有一个说了谎。 甲说:“乙在说谎。” 乙说:“丙在说谎。” 丙说:“甲和乙都在说谎。”逐步推理:(模型可能会生成:“假设甲说谎…那么乙就说真话…丙也说真话,但丙的陈述与乙的陈述矛盾…因此假设不成立。再假设乙说谎…”)
案例三:常识与物理推理
问题:
如果把一个冰块放进一杯刚烧开的热水里,冰是融化得更快还是更慢?为什么?
提示词 (Prompt):
请用物理学原理逐步解释以下现象。你的推理应基于热传导和对流等概念。在最后,请总结你的答案。问题:如果把一个冰块放进一杯刚烧开的热水里,冰是融化得更快还是更慢?为什么?分步解释: 1.(模型可能会生成:“1. 热水的温度远高于冰的熔点。2. 高温差会导致剧烈的热对流… 3. 这种对流加速了热量传递到冰表面的过程… 4. 因此,冰会融化得更快。”)
案例四:创意生成与评估(产品设计)
问题:
为经常出差的人设计一个创新的行李箱功能。
提示词 (Prompt):
请扮演一个产品设计师。你的任务是为新行李箱构思功能。请遵循以下步骤:1. 分析目标用户(经常出差者)的核心痛点。2. 基于每个痛点, brainstorm 1-2个解决方案。3. 从这些方案中选择一个你认为最创新、最可行的。4. 简要描述这个功能及其如何解决问题。请开始你的构思过程:(这个提示词引导模型进行“结构化”的创意推理,而不是天马行空。通过生成多个方案并选择,模拟了Self-Consistency中的“多路径生成与选择”过程)
案例五:复杂规划(项目计划)
问题:
我要组织一个为期一天的线上会议,有来自北美、欧洲和亚洲的5位演讲者。我应该考虑哪些关键因素来安排会议时间?
提示词 (Prompt):
你是一个经验丰富的项目经理。请为上述问题提供一个全面的计划。请按优先级列出关键考虑因素,并为每个因素提供你的推理和解决方案建议。
请按以下结构组织你的回答:
**关键因素 1:** [因素名称]
*推理:* [为什么这个因素重要?]
*建议:* [如何处理?]
**关键因素 2:** [因素名称]
*推理:* [为什么这个因素重要?]
*建议:* [如何处理?]
… (以此类推)
最终,请给出一个你认为最合理的会议时间窗口建议。
(这个提示词通过强制要求一个清晰的结构,引导模型进行多维度、深度的思考,每一条都是一个独立的“推理路径”,最终的综合建议就是“一致性答案”)
如何将这些提示词用于Self-Consistency技术?
- 批量生成:将上述任何一个提示词,输入到模型(如GPT-4)中多次(例如5-10次)。每次通过调整
temperature(温度参数)或使用不同的随机种子,让模型生成多样化的推理路径和初步答案。
- 例如:在API调用中设置
n=5, temperature=0.7
- 提取答案:使用简单的规则(如正则表达式匹配
### 最终答案:(.*))或关键字,从每一次的生成结果中提取出最终的答案(如“95个学生”、“乙在说谎”、“融化得更快”)。 - 多数投票:统计所有被提取出的答案,选择出现次数最多的那个作为最终答案。
- 例如:5次生成中,有4次得出“95个学生”,1次得出“35个学生”,则最终答案确定为“95个学生”。
总结:一个万能提示词模板
你可以用这个模板来构建几乎所有问题的提示词:
请解决以下问题。请确保逐步推理,清晰地展示你的思考过程。在最后,请以“### 最终答案:”的格式单独一行给出你的最终答案。问题:[在这里插入你的问题]让我们一步步思考:这个模板简单却极其强大,它明确指令模型分离“推理”和“答案”,是实施Self-Consistency技术的完美起点。
先进产业+物理人工智能
产业智能官AI-CPS
加入知识星球“产业智能研究院”:产业OT技术(自动化+机器人+工艺+精益)和
新一代IT技术
(云计算+物联网+区块链+大数据+人工智能)深度融合,在场景中构建“状态感知-实时认知-自主决策-精准执行-学习提升”的
物理人工智能(Physical AI)
;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链。
物理人工智能(Physical AI)
作为第四次工业革命的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎;重构设计、生产、物流、服务等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态和新模式;引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。
产业智能化技术分支用来的今天,从业者必须了解如何将**物理人工智能(Physical AI)**全面渗入整个公司、产品、业务等商业场景中,利用
物理人工智能(Physical AI)
形成数字化、网络化和智能化力量,实现行业的重新布局、企业的重新构建和焕然新生。
CSDN独家福利
最后,感谢每一个认真阅读我文章的人,礼尚往来总是要有的,下面资料虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走: