大模型解密之---提示词工程
提示词大白话讲解
目前大模型备受关注,其中不可或缺的是提示词工程,本文章受益于Prompt-Engineering-Guide,其中有很多经典的,新颖的提示词工程的技术,学习时候给自己记录并与大家一起探讨。
Prompt Engineering 有助于有效地设计和改进提示,以便使用 LLM 在不同的任务上获得更好的结果。有效的提示词可以直接决定大模型生成的结果的有效程度,因此提示词工程是大模型技术甚至使用的必修课!
当下角常见的提示词技术主要有以下几种:
基础提示:
-
Zero-shot Prompting(零样本提示)
-
Few-shot Prompting(少样本提示)
增强推理:
-
Chain-of-Thought Prompting(思维链提示)
-
Self-Consistency(自我一致性)
-
Tree of Thoughts(思维树)
知识与工具集成:
-
Retrieval Augmented Generation(检索增强生成)
-
Program-Aided Language Models(程序辅助语言模型)
-
ReAct(推理与行动)
-
Automatic Reasoning and Tool-use(自动推理与工具使用)
自动化与元提示:
-
Automatic Prompt Engineer(自动提示工程师)
-
Meta Prompting(元提示)
-
Active-Prompt(主动提示)
高级与专门技术:
-
Generate Knowledge Prompting(生成知识提示)
-
Prompt Chaining(提示链)
-
Reflexion(反思)
-
Multimodal CoT(多模态思维链)
-
Graph Prompting( 图提示)
-
Directional Stimulus Prompting(定向激励提示)
接下来将通俗讲解这几种提示词技术.
基础提示
Zero-shot Prompting (零样本提示)
核心思想:不给模型任何示例,直接让它根据指令完成任务。
工作原理:依赖模型在训练阶段学到的庞大知识和模式匹配能力来理解并执行一个全新的任务。
示例:
用户:把下面这句话翻译成法语: "Hello, how are you?"
模型直接输出 "Bonjour, comment ça va?",因为它已经“知道”如何翻译。
Few-shot Prompting (少样本提示)
核心思想:在提出正式问题前,给模型提供几个(通常是1到5个)完整的“问题-答案”示例。
工作原理:这是一种“在上下文中学习”(In-Context Learning)的方法。示例向模型展示了任务的格式、期望的输出风格或特定的逻辑,帮助它更好地“校准”自己的回答。
示例:
用户:
英文:sea otter
中文:海獭
英文:panda
中文:熊猫
英文:peacock
中文:
模型看到规律后,会接着输出“孔雀”。
增强推理
Chain-of-Thought Prompting (CoT, 思维链提示)
核心思想:引导模型在给出最终答案前,先输出一步一步的推理过程。
工作原理:通过在提示中加入“让我们一步一步地思考”或在少样本示例中展示推理步骤,可以显著提高模型在复杂逻辑、数学和推理任务上的准确性。因为它模仿了人类解决问题的过程:先思考,再作答。
用户:一个人有5个苹果,他又买了2篮苹果,每篮有3个。他现在总共有多少个苹果?请一步一步思考。
模型: 好的,我们一步一步来分析:
1. 这个人一开始有5个苹果。
2. 他买了2篮苹果。
3. 每篮有3个苹果,所以2篮苹果的总数是 2 * 3 = 6个。
4. 他原来的苹果加上新买的苹果是 5 + 6 = 11个。
所以,他现在总共有11个苹果。
Self-Consistency (自我一致性)
核心思想:对同一个问题,使用多种不同的思维链进行多次提问,然后选择最一致、出现次数最多的答案。
工作原理:它是对思维链(CoT)的增强。通过多次生成(例如,调整一个叫做"temperature"的参数让模型每次的回答略有不同),模型会探索多个推理路径。如果多个不同的推理路径都指向同一个答案,那么这个答案的可信度就更高。这就像让多个专家独立解决一个问题,然后取共识。
目的/优势:大幅提升复杂推理任务的稳定性和准确性。
提示 (Prompt):
问题:一个人有5个苹果,他又买了2篮苹果,每篮有3个。他现在总共有多少个苹果?请一步一步思考。
模型的多次生成 (通过提高 temperature 参数实现多样性):
-
生成路径 1:
-
他有2篮苹果,每篮3个,所以是 2 * 3 = 6个。
-
他原来有5个,加上6个,总共是 5 + 6 = 11个。
-
答案:11
-
-
生成路径 2:
-
他一开始有5个。
-
后来增加了2篮,也就是 2 * 3 = 6个。
-
总数是 5 + 6 = 11个。
-
答案:11
-
-
生成路径 3 (一个错误的推理):
-
他有5个苹果和2篮苹果。
-
所以是 5 + 2 = 7个单位的东西。
-
每篮3个,所以是 7 * 3 = 21个。(这里推理错了)
-
答案:21
-
最终结论: 在三次生成中,答案“11”出现了两次,答案“21”出现了一次。根据“自我一致性”原则,系统会选择11作为最终答案,因为它在不同的推理路径下更加一致。
Tree of Thoughts (ToT, 思维树)
核心思想:将模型的思考过程从“链条”扩展为“树”。
工作原理:比思维链更进一步。在每一步推理中,模型会生成多个可能的“下一步”(树的分支)。然后,模型会评估这些分支,选择最有希望的继续深入探索,甚至可以回溯到之前的节点。这使得模型可以进行更复杂的规划、探索和比较,解决了思维链“一条路走到黑”的局限。
目的/优势:适用于需要系统性探索和战略规划的复杂问题(如下棋、写一篇长篇报告)。
场景:解决一个开放性规划问题。 问题:“我刚写完一本小说,我应该如何出版它?”
-
思维链 (Chain of Thought) 的方式可能会是:
首先,寻找一个文学经纪人。然后,向他们提交我的手稿。接着,等待回复...
(一条路走到底)
-
思维树 (Tree of Thoughts) 的方式会是:
- 根节点 (问题):如何出版我的小说? - 分支 1 (想法):传统出版。 - **评估**:优点是专业、有发行渠道;缺点是门槛高、周期长。 - **下一步**:寻找文学经纪人名单,撰写投稿信。 - 分支 2 (想法):自助出版 (Self-Publishing)。 - **评估**:优点是自主性高、速度快;缺点是需要自己负责所有事(封面、营销)。 - **下一步**:研究亚马逊KDP和Apple Books平台,了解费用和流程。 - 分支 3 (想法):网络小说平台。 - **评估**:优点是能快速获得读者反馈;缺点是收入可能不稳定。 - **下一步**:调研阅文、晋江等平台的风格和签约政策。 **最终结论**:ToT 不会只给出一个线性的计划,而是会探索多个可行路径并进行评估,提供一个更全面的决策参考。
知识与工作集成
Retrieval Augmented Generation (RAG, 检索增强生成)
核心思想:在回答问题前,先从一个外部的知识库(如公司的内部文档、最新的网络文章)中检索相关信息,然后将这些信息作为上下文喂给模型,让它基于这些信息来生成答案。
工作原理:
-
检索 (Retrieve):用户的提问首先被用来在一个向量数据库中搜索最相关的文本片段。
-
增强 (Augment):将检索到的文本片段和原始问题一起打包成一个新的提示。
-
生成 (Generate):将这个增强后的提示发送给大语言模型,生成最终答案。
目的/优势:
-
减少幻觉:答案基于事实依据,而非模型凭空捏造。
-
知识更新:可以轻松接入最新信息,而无需重新训练整个模型。
-
私有数据:可以使用私有或专业领域的知识库。
Program-Aided Language Models (PAL, 程序辅助语言模型)
核心思想:让大语言模型编写代码(如Python脚本)来解决问题,而不是直接计算答案。
工作原理:当遇到需要精确计算的逻辑或数学问题时,模型不直接输出答案,而是输出一段能解决这个问题的代码。然后,这段代码被一个解释器(如Python解释器)执行,代码的运行结果才是最终答案。
目的/优势:将语言模型的自然语言理解能力和计算机代码的精确计算能力结合起来,极大地提高了在科学计算和定量推理任务上的可靠性。
ReAct (Reasoning and Acting, 推理与行动)
核心思想:将思维链(Reasoning)和与外部工具交互(Acting)结合起来。
工作原理:模型以“思考 -> 行动 -> 观察”的循环方式工作。
-
思考(Thought):模型分析当前任务,决定下一步该做什么。
-
行动(Action):模型决定使用一个工具(如搜索引擎API、计算器)。
-
观察(Observation):模型接收工具返回的结果。 然后模型根据观察到的结果,进行下一步的“思考”,周而复始,直到问题解决。
目的/优势:创建能够自主使用工具解决复杂、多步骤问题的智能代理(Agent)。
**场景**:回答一个需要外部最新知识的问题。
**问题**:“《沙丘2》的导演是谁?他还导演过哪些著名的科幻电影?”
**ReAct 的工作流程**:
1. **思考 (Thought)**:我需要先找出《沙丘2》的导演。
2. **行动 (Action)**:`search("《沙丘2》的导演")`
3. **观察 (Observation)**:搜索结果显示导演是“丹尼斯·维伦纽瓦 (Denis Villeneuve)”。
4. **思考 (Thought)**:现在我知道了导演是丹尼斯·维伦纽瓦。接下来我需要找到他导演的其他著名科幻电影。
5. **行动 (Action)**:`search("丹尼斯·维伦纽瓦 著名科幻电影")`
6. **观察 (Observation)**:搜索结果列出了《降临》(Arrival) 和 《银翼杀手2049》(Blade Runner 2049)。
7. **思考 (Thought)**:我已经获得了所有需要的信息,可以整合答案了。
8. **最终答案**: 《沙丘2》的导演是丹尼斯·维伦纽瓦。他还导演过其他著名的科幻电影,例如《降临》和《银翼杀手2049》。
Automatic Reasoning and Tool-use (ART, 自动推理与工具使用)
核心思想:一个更宏大的框架,旨在自动教会模型如何以及何时使用工具。
工作原理:ART 会自动从任务库中选择任务,并促使模型生成解决这些任务所需的“思维链”和“工具使用”的轨迹。然后,它会将这些成功解决问题的范例存储起来,在未来遇到类似问题时,模型就可以使用这些范例作为“少样本提示”来指导自己。
目的/优势:自动化了为模型创建“工具使用示例”的过程,让模型能自主学习和扩展其工具箱。
自动化与元提示
Automatic Prompt Engineer (APE, 自动提示工程师)
核心思想:用一个大语言模型来自动生成和优化针对另一个大语言模型的提示。
工作原理:你给 APE 模型一些“输入-输出”的正确范例,然后 APE 会反向工程出很多候选的指令(prompt)。接着,它会用这些指令去测试目标模型,并根据模型的表现打分,最终找到效果最好的那个提示。
目的/优势:将繁琐和凭直觉的“提示工程”工作自动化。
Meta Prompting (元提示)
核心思想:让大语言模型自己来扮演“提示工程师”或“专家”,指导它如何思考和行动,而不是直接告诉它做什么。
工作原理:你给模型的不是一个简单的指令,而是一个角色和一套完整的操作指南。你告诉它如何分析问题、如何分解任务、如何评估自己的输出,甚至如何向用户提问以获取更多信息。
示例:
用户:你是一个世界级的文案大师。你的任务是为一款新的咖啡产品创作广告语。在给出最终方案前,请先分析产品的目标用户、核心卖点,并提出三个不同风格的草案,最后选出你认为最好的一个并解释原因。
目的/优势:极大地提升了模型处理复杂、开放性任务时的表现,使其输出更加结构化、深思熟虑。
Active-Prompt (主动提示)
核心思想:在“少样本提示”中,智能地选择对模型最有帮助的示例。
工作原理:面对一个新问题,Active-Prompt 会从一个大的示例库中,通过计算不确定性等指标,挑选出那些与当前问题最相关、最能帮助模型“解惑”的示例。它不是随机选几个,而是主动选出最有价值的几个。
目的/优势:优化 Few-shot Prompting 的效果,用最少的示例达到最好的学习效果。
高级与专门技术
Generate Knowledge Prompting (生成知识提示)
核心思想:在回答问题前,先让模型生成一些与问题相关的背景知识。
工作原理:分为两步。第一步,提示模型:“在回答‘X问题’之前,请先生成一些关于‘X’的有用知识。” 第二步,将生成出来的知识和原始问题合并,再让模型回答。这相当于让模型自己为自己做一个“开卷考试”的“小抄”。
目的/优势:帮助模型激活和聚焦于相关的知识,从而提高答案的质量和深度。
Prompt Chaining (提示链)
核心思想:将一个复杂的大任务分解成一系列更小、更简单的子任务,每个子任务由一个独立的提示来完成,前一个提示的输出可以作为后一个提示的输入。
工作原理:就像工厂里的流水线。例如,要写一篇博客文章,可以设计一个提示链:
Prompt 1: 生成文章大纲。
Prompt 2: 根据大纲的第一点,撰写引言段落。
Prompt 3: 根据大纲的第二点和引言,撰写主体部分。
Prompt 4: 撰写结论。
目的/优势:提高输出结果的结构性、一致性和可控性,便于调试和优化流程中的每一步。
Reflexion (反思)
核心思想:让模型在执行任务失败后,能够自我反思,并从失败中学习。
工作原理:当一个智能代理(如 ReAct Agent)的行动序列没有得到预期结果时,Reflexion 框架会启动一个“反思”过程。模型会生成一段文字,分析“为什么我失败了?”以及“下次应该怎么做才能避免?”。这个“反思”的结论会被存储在记忆中,在下一次尝试时用来指导行动。
目的/优势:创建能够自我纠正和迭代改进的智能代理,而不仅仅是机械地重复试错。
场景:一个简单的编程任务。 任务:写一个Python函数,计算一个列表中所有数字的平均值。
第一次尝试 (Attempt 1):
思考: 我需要把所有数字加起来,然后除以数字的个数。
行动: 生成代码
def average(nums): return sum(nums) / len(nums)外部工具 (执行代码): 用
average([])(一个空列表) 来测试,程序崩溃了,因为len([])是0,导致了除以零错误 (ZeroDivisionError)。观察: 失败!
反思阶段 (Reflexion):
模型自我对话: “我的代码在处理空列表时失败了,因为我没有考虑到除以零的情况。为了修复这个问题,我应该在计算前检查列表是否为空。如果为空,我应该返回0或者抛出一个错误。”
第二次尝试 (Attempt 2):
思考: 根据我的反思,我需要在除法前加一个判断。
行动
: 生成新代码:
Python
def average(nums): if not nums: return 0 return sum(nums) / len(nums)外部工具 (执行代码): 再次用
average([])测试。观察: 成功!代码返回了0,没有崩溃。
Multimodal CoT (多模态思维链)
核心思想:将思维链(CoT)应用到包含多种数据类型(如图像、文本、声音)的任务中。
工作原理:在给出最终答案前,模型会一步步地解释它是如何结合不同模态的信息进行推理的。例如,在分析一张图片时,它会先用文字描述图片的关键元素,然后再结合问题中的文本信息进行逻辑推理。
目的/优势:提高了多模态任务的透明度和准确性,让我们能理解模型是如何“看”和“想”的。
Graph Prompting (图提示)
核心思想:专门设计一种提示格式,用于向大语言模型描述图结构数据(节点、边、属性),并让模型在此基础上进行推理。
工作原理:将图的结构和特征用文本或特定的格式编码到提示中,然后提出与图相关的任务,如路径查找、节点重要性分析、社区发现等。
目的/优势:让大语言模型能够理解和处理传统上需要专门算法才能解决的图数据问题。
场景:分析一个简单的社交网络。 图的描述 (文本化):
这是一个社交网络图。
节点 (人物) 包括: ["张三", "李四", "王五", "赵六"]。
关系 (边) 包括: [("张三", "李四"), ("李四", "王五"), ("张三", "王五")]。
"张三"和"赵六"之间没有直接或间接的联系。
问题:
根据上面描述的社交网络,"张三"和"王五"是朋友吗?"李四"和"赵六"呢?
模型回答:
是的,"张三"和"王五"是朋友,因为他们之间存在直接的关系(边)。 不,"李四"和"赵六"不是朋友,因为在给定的关系中找不到他们之间的联系。
Directional Stimulus Prompting (定向激励提示)
核心思想:通过在提示中加入一个微小但有明确方向的“激励”或“线索”,来引导模型输出的特定属性(如风格、内容、结构)。
工作原理:它不是一个硬性的指令,更像是一种软性的引导。例如,在提示中加入一个关键词、一句名人名言或一个简短的故事作为“引子”,可以潜移默化地影响模型生成内容的基调。
目的/优势:提供了一种比直接指令更精细、更灵活的方式来控制模型的输出。
这个技术像是在对话开始前设定一个“基调”。
场景:为一款能量饮料写一句广告词。
-
无激励的提示:
请为名为 'Spark' 的能量饮料写一句广告词。
可能的输出: "Spark: 点燃你的一天。" (比较普通)
-
有定向激励的提示:
[激励词: “极限、巅峰、突破”] 现在,请为名为 'Spark' 的能量饮料写一句广告词。
可能的输出: "Spark: 冲破极限,引爆巅峰能量。" (输出的风格明显受到了激励词的影响,变得更有冲击力)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)