本文介绍了提示工程从 2018 年到 2025 年的发展,随着大语言模型的不断进步,提升工程也在不断演进。通过本文的介绍,可以充分理解提升工程的发展脉络,为更好的使用大语言模型打下基础。原文:The Evolving Art and Science of Prompt Engineering: A Chronological Journey

-
2018 - 2020 --- 早期提示词 :NLP 研究人员开始将任务转换为文本提示词,而不是特定任务模型,从而实现零样本(zero-shot)和少样本(few-shot)学习。GPT-3 在 2020 年的首次亮相表明,以纯文本形式向大型模型提供正确的指令和示例可以胜过许多微调模型。这个时代建立了基本的提示工程:提供清晰的说明,可选的提供一些示例,而不用重新训练模型。
-
基本原则出现:OpenAI 和其他机构的早期指导强调提示的清晰度、特异性和上下文。好的提示词明确的描述任务、格式和所需样式,使用分隔符将指令与数据分开,并明确提出请求(做什么而不是不做什么)。即使模型得到改进,这些原则仍然至关重要。
-
2022年 - 推理突破 :研究人员发现,提示模型"一步一步思考"显著提高了复杂的推理能力。有了思维链(CoT,Chain-of-Thought)提示 ,像 PaLM 540B 这样的模型可以通过在答案之前输出中间推理来更好的解决多步数学问题。简单的在一个问题中添加一个触发短语("让我们一步一步思考"),即使是零样本提示也能在推理任务中获得更好的效果,这是"魔法提示"的早期例子。•
-
超越思维链 - 工具和行动 :2022 年末,我们看到了提示驱动的行动和思想。ReAct 范例将 CoT 风格的推理与工具结合起来。通过将思维步骤和动作指令(例如搜索)结合在一起,不仅可以让 LLM 推理,还可以在回答过程中获取新信息。从而减少了事实错误,使交互式决策超越了静态提示。
-
2023年 - 结构化思维探索 :研究人员将提示词推广到非线性推理。思维树(ToT,Tree-of-Thought) 提示让[模型探索像分支一样的多个推理路径,具有回溯和预测功能](www.promptingguide.ai/techniques/... "Tree of Thoughts (ToT "模型探索像分支一样的多个推理路径,具有回溯和预测功能")")。思维图(Graph-of-Thought) 框架进一步扩展了这一点,将每个想法建模为部分解决方案图中的节点。这些技术通过评估多种可能性而不是单一推理链来解决需要计划或搜索的任务。
-
逐渐消失的技巧,更强大的模型:随着 ChatGPT 和 GPT-4(2022-2023)等模型被训练得能更好的遵循指令,对精心设计的"提示黑客"的需求减少了。对于这些模型,简单、结构良好的提示词通常和复杂的提示词一样有效。例如,GPT-4 通常可以在没有明确的"一步一步"提示的情况下正确推理(它在内部就是这样做的),使得基本的 CoT 触发器不那么像秘密武器。早期的许多一次性"魔法提示"或角色扮演在现代 LLM 中已经没有必要,甚至会产生适得其反的结果。
-
2024+ - 提示自动化和代理 :最近的工作重点是自动化提示工程本身。像自动提示工程师(APE,Automatic Prompt Engineer) 这样的技术通过 LLM 或进化算法来生成和改进给定目标的提示,而不需要手动试错。同时,基于 LLM 的代理(例如 AutoGPT 风格的系统)将多个提示和模型输出串在一起,以最少的人为干预处理复杂的多步骤任务。即时工程现在包括设计高级指令、角色和迭代循环,以便AI系统可以分解任务、调用工具、自我纠正并自主决定下一步行动。
-
要点:提示词已经从简单的提问艺术发展成为一门结构化的工程学科。许多早期技巧已经让位于健壮的框架(CoT、ReAct、ToT),其核心非常清晰 ------ 重要的是清晰性和推理结构。今天的从业者更多关注于分解任务并给出精确指令,同时利用先进的提示方法(或让 AI 帮助生成)来获得最佳结果。
早期(2018-2020):从零样本学习到少样本学习
我们所熟知的提示概念是随着第一批预训练大语言模型的出现而产生的。研究人员不再为每个任务对模型进行微调,而是思考:如果只通过输入文本让模型执行任务会怎样?2018 年,自然语言十项全能(decaNLP,Natural Language Decathlon)项目表明,多个自然语言处理任务可以重新表述为单一的问答模型,这一想法已初现端倪。大约在同一时期,OpenAI 的 GPT-2(2019 年)展示了令人惊讶的零样本能力:例如,只需在文本末尾加上 TL;DR:
,GPT-2 就能生成一篇不错的文章摘要。这是一个重大发现,模型从训练数据中隐性的学会了 "TL;DR 意味着总结" 这一概念。这些结果表明,只要措辞恰当,语言模型无需额外训练就能遵循提示。
真正的突破出现在 2020 年的 GPT-3。GPT-3 的论文 语言模型是少样本学习 表明,一个 175b 参数的模型可以通过包含少量示例的精心设计的提示来执行新任务。例如,要让 GPT-3 将英语翻译成法语,可以简单提示如下:
vbnet
Translate English to French:
English: I have a pen.
French: J'ai un stylo.
English: How are you?
French: Comment ça va?
English: This is a beautiful day.
French:
GPT-3 会用正确的法语翻译来完成这个模式。这种少样本提示适用于翻译、回答、算术等,所有这些都不需要更新模型权重。很明显,情境学习(in-context learning) 可以有力替代显性训练。GPT-3 也能很好处理很多场景的零样本提示(只有提示词而没有示例),尽管性能通常比少样本的情况要低一些。
由于这些发现,"提示工程"这一术语在 2020 年左右开始进入人们视野。从业者们意识到,输入的措辞方式会对输出质量产生巨大影响。GPT-3 的早期用户交流如何让模型遵循指令的技巧:比如,以明确的指令开头(比如"总结以下文本"),提供必要的背景信息,要求以特定格式输出等等。到 2020 年末和 2021 年,社区博客和 OpenAI 的指南已经总结出了有效提示的最佳实践:
- 明确任务和格式:不要想当然认为模型知道你的需求。明确告知你对内容、风格、长度、格式等方面的期望(例如:"写一段包含三个要点的执行摘要。")。具体提示可以缩小模型的输出范围,提高可靠性。
- 提供上下文或示例 :如果任务输入需要上下文,请将其包含在提示符中,并使用明确的分隔符。例如,在一篇文章前加上
文本:
,然后询问关于它的问题。或者在真正的查询之前给出一对 QA 作为演示(少样本)。高质量示例可以显著引导模型输出。 - 使用分隔符和结构 :早期用户发现使用符号(XML标记、三重引号等)将指令与数据分开有助于防止混淆。例如:
指令:用一句话概括下面的文章。文本: """ {文章文本} """ 摘要:
这样的结构使得什么是提示,什么是内容很明显。 - 选择积极的措辞:与其只说不该做什么("不要长时间输出"或"不要提及 X"),不如说该做什么("保持答案简洁")。模型往往不那么服从否定,引导他们做出正确的行为会更有效。
- 迭代和改进:提示设计被认为是一个迭代的过程。如果第一次尝试不理想,应该分析输出并调整措辞,添加示例,或者将任务分成更小的部分。从业者将提示视为可以在多次尝试中调整的灵活指令。
到 2021 年,这些基础技术使用户能够从像 GPT-3 这样的模型中获得令人瞩目的成果,而模型在未做任何改动的情况下仍保持了其初始训练的状态。不过,也存在明显的局限性。尽管可以向 GPT-3 提出各种指令,让它完成许多事情,但某些复杂的任务(例如多步骤逻辑推理题、数学应用题)却暴露出一个缺陷:模型常常直接给出答案并出现错误,因为提示并未迫使它去解决这个问题。仅展示输入-输出对的少量提示并不能教会它思考,只是让它模仿答案而已。这一认识为下一个提示工程时代奠定了基础,在这个时代,重点转向了激发推理过程,而不仅仅是获取最终答案。
2022:思维链 --- 教会模型公开思考
2022 是至关重要的一年。谷歌的研究人员发现,如果让大语言模型在执行推理任务时"说出思考过程",其表现会更加出色。这种被称为 "思维链提示(Chain-of-Thought (CoT) prompting,)" 的技术于 2022 年初首次被报道。与只要求模型给出答案不同,这种提示会包含一些逐步得出解决方案的示例。例如,一个对于数学应用题的思维链提示可能如下:
makefile
Q: Roger 有 5 个网球。他又买了 2 罐网球。每个罐子有 3 个网球。他现在有多少个网球?
A: Roger 一开始有 5 个球。2 罐 3 个网球等于 2 * 3 = 6 个球。所以他有 5 + 6 = 11 个球。答案是 11。
Q: 自助餐厅有 23 个苹果。如果他们用 20 个苹果做午餐,又买了 6 个,他们现在有多少个苹果?
A:
在给出最终答案之前,示例显式的遍历了计算的每个步骤(突出显示了算术和推理)。在提示中看到这种思维链会鼓励模型为下一个问题生成类似的逐步解决方案。至关重要的是,与标准提示相比,这种方法可以大大提高多步骤问题的准确性。

谷歌的研究人员通过 5400 亿参数的 PaLM 模型展示了 CoT(思维链)的影响。在常规提示下,PaLM 在数学问题基准测试(GSM8K)中的表现随着规模增大几乎没有提升。但通过思维链提示,拥有 540 亿参数的 PaLM 解决了 58% 的问题 ------ 甚至超过了专门针对该任务进行训练的 175 亿参数的 GPT-3 模型。CoT 实际上解锁了一种新兴推理能力,这种能力只有在最大的模型中才变得可靠。它表明,超过一定模型规模(约 100 亿参数以上)后,提示能够诱导出令人惊讶的高级行为。
此外,2022 年年中还出现了一个有趣的方法:你甚至可能不需要示例性的思考过程,而只需一个触发词即可。Kojima 等人发现,通过在问题后添加"让我们一步步思考"这句话,通常可以在零样本模式下激活模型的潜在推理能力。这种零样本思维链技术在许多任务中显著提高了准确性(例如,在 InstructGPT 模型中添加这个提示后,解决某个简单的数学测试的准确率从 17.7% 提高到了 78.7%)。实际上,即使提示中没有任何示例性内容,这个短语也能促使模型输出一系列推理过程并得出正确答案。它在提示工程领域成为了广为引用的"神奇短语" ------ 这充分说明一个小小的措辞变化能够如何挖掘出大语言模型的潜在能力。
CoT 的成功引发了一系列相关想法,以提高可靠性和性能:
-
自洽性(Self-Consistency) :与仅依赖单一思考过程不同,Wang 等人(2022 年)让模型生成多条推理路径,然后对最终答案进行表决。这种方法被称为"自洽性",通过平均排除推理错误,极大提高了准确性。对于 GSM8K 数据集,带有思考过程的自洽性使 PaLM 540B 的得分从 58% 提高到了 74%。其原理是,虽然任何单一思考过程都可能存在错误,但许多独立思考过程中的最常见答案大概率是正确的。
-
从简单到复杂的提示 :2022 年的另一项创新是明确将复杂问题分解为一系列更简单的子问题,并引导模型依次解决这些子问题。在"从简单到复杂"的提升方式中,首先要求模型解决问题中最简单的部分,然后将该结果纳入以解决接下来的部分,依此类推。这被证明有助于那些需要组合性推理的任务,或者在那些直接的思维链可能会陷入困境的问题中发挥作用,迫使模型逐步构建出完整答案,类似于人类通过将复杂问题分解为步骤来解决。
-
更完善的数学与逻辑提示:研究人员还研究了诸如为模型提供"草稿纸"或要求其进行结构化推理(例如列出假设、进行计算然后得出结论)等变体。所有这些本质上都是旨在引导模型内部思考过程的提示模式,强调的关键点在于:提示工程已经从答案应该是什么扩展到了模型应该如何得出答案。
到 2022 年底,思维链提示已成为核心技术。很明显,对于任何涉及推理的任务(比如数学、逻辑谜题、常识性问题等),指示模型展示其解题过程具有极大的益处。这种透明度还有附带的好处:用户可以看到模型的中间思考过程(作为答案的一部分打印出来),使得调试或信任结果变得更加容易。思维链改变了提示工程师的角色,从仅仅编写查询转变为同时引导模型的推理过程。
然而,基本的思维链模型存在局限性,其知识仍然局限于训练过程中所接触到的内容。它会循序渐进的进行推理,但如果需要外部事实(比如在多步问题中,"X 国的总统是谁?"),它可能会编造事实或者陷入停滞。此外,思维链推理模型本身并不允许与外部世界互动或采取行动,而只是进行纯粹的内部推理。这就促成了接下来的发展:能够不仅思考还能行动的提示。
2022年末:ReAct --- 推理并利用工具行动
将推理与行动相连接的一项具有里程碑意义的技术便是由 Yao 等人在 2022 年末提出的 ReAct 技术。ReAct 代表"推理 + 行动(Reason + Act)",通过将推理步骤与使用工具或采取行动的能力相结合,扩展了思维链理念。在 ReAct 提示中,模型会展示"思考 → 行动 → 观察"循环示例。例如,对于某个问题,模型可能会输出这样的思考:"嗯,我应该查找 X",然后是行动,比如调用搜索 API,接着得到观察结果,然后基于此继续进行推理。
ReAct 的核心理念在于:大语言模型能够像一个更大系统中的一个"代理"那样发挥作用,能够决定采取何种行动(例如查询知识库、运行计算器等),并将这些行动作为其输出的一部分,而不仅仅给出最终答案。这种模式通常如下所示:
yaml
思考 1: <模型对如何解决任务的第一个想法>
动作 1: <某个操作命令,例如查询[苹果遥控器]>
观察 1: <动作的结果, 例如维基百科上的内容>
思考 2: <模型得到结果后的想法>
动作 2: <下一个动作...>
...
思考 N: <最后得到答案的思考>
动作 N: <完成>
答案: <最终答案>
该模型遵循这种 ReAct 提示模式,生成了一系列相互交织的想法和工具使用步骤,使得它能够克服传统思维链的两个主要问题:幻觉 和有限的知识。如果模型不确定某个事实,ReAct 会鼓励它采取明确的行动(比如进行查找)来收集证据,而不是猜测。通过审视这些想法和行动的链条,用户可以追踪模型得出答案的过程,从而提高透明度。
例如,假设问题表述为:"除了苹果遥控器之外,还有哪些设备能够控制苹果遥控器可以交互的应用?" 其 ReAct 交互过程可能如下:
- 思考 1:"我需要找到苹果遥控器是为什么应用设计的。"
- 动作 1:
搜索["苹果遥控器最初设计用于控制什么"]
- 观察 1:返回信息:"苹果遥控器......最初是为控制 Front Row 媒体中心而设计的......"
- 思考 2:"这个应用是 Front Row。问题问的是:除了苹果遥控器之外,还有哪些设备可以控制 Front Row 呢?"
- 动作 2:
搜索["Front Row 其他设备控制"]
- 观察 2:返回了关于 Front Row 可以通过键盘等方式控制的信息。
- 思考 3:"似乎 Front Row 可以通过苹果遥控器或者键盘的功能键来控制。"
- 动作 3:
完成
- 答案:"还可以通过键盘功能键来控制。"

本质上讲,ReAct 将提示转化为用于交互的脚本,而不仅仅是一次性的查询。这是迈向自主人工智能"代理"的一步。结果表面,ReAct 在事实问答(在这种情况下外部查找会有所帮助)和需要决策的游戏等任务中,表现优于标准 CoT。例如,在 HotpotQA 查找事实的任务中,由 ReAct 提示的模型能够为每个线索搜索维基百科,并且在准确性更高且错误提示更少的情况下完成任务。
ReAct 还突出一个更普遍的趋势:提示工程的重点已转向设计整个流程,而不仅仅是单一提示。提示可以形成循环,即模型的输出会被反馈回来(作为工具的输入)。这种循环提示的理念为后来的自动化奠定了基础。
到 2023 年初,社区已经接纳了 CoT 和 ReAct 模式(通常会将两者结合起来)。出现了开源框架来轻松实现这些提示模式(例如,LangChain 提供了适用于 ReAct 代理的模板)。开始普遍提及"基于代理"的 LLM ------ 这意味着将模型视为能够思考(CoT)和行动(ReAct)的代理,通过迭代来完成任务。提示工程师的角色扩展到了编写指导性提示,这些提示会指示模型何时使用工具、如何组织想法、何时停止等,从而通过范例对模型行为进行有效控制。
这些技术进步带来的结果是,某些早期提示技巧变得不再那么重要了。如果有能够查找信息的代理,那么就不需要像以前那样在提示中预先加载大量知识了。而且随着模型在避免虚构琐碎事实方面表现得越来越好(得益于指令调整和强化学习反馈引导),对于较简单的查询,总是强制使用工具的需求也降低了。在信任模型内部知识与调用外部工具之间所形成的平衡,可以通过 ReAct 模式由提示者进行控制。
2023:超越线性链 --- 思维树和思维图
基于思维链的提示机制表明,一系列清晰的推理步骤能够显著提升大语言模型在复杂任务中的表现。但人类的思考并非总是遵循单一直线路径,我们会考虑多种可能性、进行回溯,并探索不同的解决方法,尤其是在面对难题时。2023 年,研究人员提出了新的提示框架,以使大语言模型能够进行非线性推理:
-
思维树(ToT,Tree-of-Thought) :由[姚顺宇等人](www.promptingguide.ai/techniques/... "Tree of Thoughts (ToT "姚顺宇等人")")于 2023 年初提出。ToT 对 CoT 进行了扩展,允许模型在每一步都能分支出多种可能的想法。它不再是一条单一链,而是生成一系列思维序列的树状结构。然后,某种搜索算法(如广度优先搜索或深度优先搜索)会探索这个树状结构,以找到通往解决方案的有希望的路径。ToT 的提示可能包含诸如"考虑多种方法"之类的指令,甚至在决策点上,模型还会列举选项 A、B、C 等示例。通过评估部分解决方案(修剪看起来不具前景的分支并扩展有成效的分支),ToT 让模型进行策略性前瞻。例如,在 24 点游戏(必须用给定数字的算术运算得到 24)中,ToT 提示使 GPT-4 能尝试不同的运算顺序。有论文报告称,得益于 ToT 提示,GPT-4 在该任务中的成功率从接近零跃升至 74%。模型能够有效的说"如果我这样做,那么那样......会让我更接近目标吗?如果不是,回溯。" 这种能力是由提示和搜索程序的设置方式所促成的。
-
思维图(GoT,Graph-of-Thought):进一步发展这一理念,到 2023 下半年,又有一个框架出现,可以将大语言模型的推理过程建模为通用图结构(而不仅仅是树结构)。在思维图提示中,每一个想法都对应一个节点,而边则表示想法之间的依赖关系或转换关系。这使得探索更加灵活。例如,模型可能会重新审视之前的某个想法,并采取不同的路径,形成循环或合并两条推理思路。GoT 方法将提示和模型的输出视为构建一个相互连接的思维网络的过程,可以通过各种方式在该网络中进行探索以得出答案。实际上,实施 GoT 可能需要多轮提示:例如,首先提示模型生成一系列候选想法/节点,然后提示它从这些节点中提出连接或下一步建议,依此类推,这一过程可以由外部算法协调进行。GoT 的研究者们认为,这种方法在固定数量的模型调用下,在探索的"广度"和推理的"深度"之间提供了更好的平衡。简单来说,由于 GoT 能够巧妙的重复利用部分结果,因此能够比单一链式结构或呈指数级增长的树形结构在更少尝试次数内找到解决方案。
基于树形/图形的提示还有一个优点,那就是其具有较强的稳定性。它并非依赖某个可能出错的思维链,而是通过探索多种路径来增加找到正确解决方案的可能性。这与传统 AI 集成方法类似。尽管这种方法计算成本更高(需要对多个模型进行查询),但在处理非常困难的任务(如谜题、规划、编码挑战等)时,能显著提高可靠性。
到 2023 年底,我们已经拥有了多种用于推理的提示技术:
- 零样本与少样本(Zero-shot vs Few-shot),可处理简单任务,区别在于是否需要示例。
- 思维链(Chain-of-Thought),用于在单个答案中强制进行逐步推理。
- 自洽性(Self-consistency),通过选取多个思维链结果并取其共识来实现。
- ReAct 和使用工具,用于允许查找信息或与环境进行交互。
- 思维树(Tree-of-Thought),用于系统探索不同解决方案路径。
- 思维图(Graph-of-Thought),用于进行泛化和优化探索过程。
并非每种技术都适用于每个问题 ------ 对于较简单的任务,仅依靠基本提示就能很好完成;而非常强大的模型(如 GPT-4)仅通过直接提示就能处理许多推理任务。这些创新为提示工程师提供了多种方法工具包,从而能够拓展语言模型所能达到的极限。
值得一提的是,这些技术中有许多是相互重叠的,也可以相互结合使用。例如,可以进行思维树搜索,其中每个节点的内容都是通过思维链提示生成。或者在思维图框架内使用 ReAct,以便模型在搜索过程中获取事实。"提示工程"和"算法设计"的界限变得模糊了,提示成为构建复杂 AI 系统的核心要素,而无需修改语言模型的权重。
2024-2025:元提示和自动化
进入 2024 年,两个趋势变得更为明显:(1) 模型变得更加强大(例如 GPT-4, Claude 2 等新版本),通常可以轻松处理指令;(2) 手写提示词变成了瓶颈 ------ 人们想知道 AI 是否可以帮我们提示 AI。这导致了对元提示(meta-prompting) 和 自动提示工程(automated prompt engineering) 的关注:
遵循指令与更简洁的提示:2022 年末推出的 ChatGPT(GPT-3.5)以及 2023 年推出的 GPT-4 改变了日常的提示方式。这些模型是基于指令和对话进行微调的,因此在无需巧妙措辞或示例的情况下,就能更好的遵循简单的提示。过去在 GPT-3 上需要通过少样本提示的任务,现在在 GPT-4 上往往只需一个指令就能通过零样本提示完成。对于从业者来说,这意味着重点又回到了清晰和精确的语言上,而不是寻找晦涩的触发词。事实上,某些早期"过度设计"的提示甚至可能会让新模型感到困惑。例如,GPT-3 可能需要冗长的角色扮演设置("你是一个专业的聊天机器人...")才能生成有用的回答,而 ChatGPT 默认就表现得很友好,所以直接提问往往就足够了。核心原则 ------ 清晰性、上下文和具体性 ------ 一如既往的重要,但需要特殊技巧的情况减少了。许多业内人士开始警告不要进行提示"伪科学"(设置不完全被理解的复杂预设条件);相反,他们建议要专注于基础:清楚的向模型说明想要的结果,它很可能会照办。简而言之,模型在理解人类方面变得更加出色了,因此我们能更自然的与它们交流。
自动提示优化 :一项引人注目的进展是 自动提示工程(APE,Automatic Prompt Engineering) 工具的兴起。其理念是利用算法(包括语言模型本身)为特定任务寻找最佳提示。例如,可以使用遗传算法来进化提示:生成一系列随机提示变体,在验证查询中进行测试,保留表现最佳的那些,进行变异并重复。或者,可以将模型自身纳入其中:让语言模型提出提示并对其进行评估。研究发现,如果给语言模型设定目标、测试案例和反馈信号,它能够迭代的优化提示。甚至有研究表明,自动化方法在算术推理方面找到的提示比"让我们一步步思考"更好,这本质上是通过反复试验发现新的触发词或指令。像 Anthropic 这样的公司开始提供"提示优化器"功能,他们的 AI(Claude)会建议如何重新表述提示以获得更好的结果。所有这些都指向一个未来,即机器帮助我们与机器进行交流。我们无需让人工去尝试数十种不同的提示方案,而是可以使用智能代理来完成这项工作,并最终给出表现最佳的提示方案。
多提示编排与智能代理:到 2024 年,整个社区都在热议"AI 代理" ------ 诸如 AutoGPT、BabyAGI 等系统,能够将众多提示和操作串联起来,以实现用户目标。这本质上是对 ReAct 想法的扩展和放大:模型不仅能够进行推理并使用工具,还能生成新的目标或子任务,并不断向自己发出提示,直至最终达成。对于提示工程而言,这意味着要设计强大的元提示(或"控制"提示),告知代理如何操作。通常,系统提示会定义角色(例如"您是一个项目管理 AI,能够分解任务。您拥有这些工具......"),而代理则会维持从规划 → 执行(通过向自身或另一个模型发出提示来实现)→ 审查结果 → 更新计划的循环。这仍是新兴领域,但展示了如何利用提示来建立完整的自动化工作流程。人类的工作重点转移到编写高层次指令,以指导代理在多个步骤中的行为,而不是对每个步骤进行微观管理。
主动提示机制的影响是,在长时间的交互过程中需要对记忆和上下文信息进行管理。提示工程师现在会考虑如何从前一步骤中为模型提供相关信息(通常通过总结或使用对话的动态窗口来实现)。诸如"记事本"或提示中的专用记忆槽之类的概念变得更加常见。例如,某个提示可能会有一个类似于这样的部分:
markdown
## 计划:
{代理的当前计划}
## 动作历史:
- 思考: ...
- 动作: ...
- 观察: ...
(重复)
## 当前思考:
...
实际上这是一种随着时间推移而不断完善的结构化提示。精心设计这样的提示至关重要,以免模型失去上下文或产生困惑。我们还看到在提示中定义了工具库(告知模型可以采取哪些行动以及应采用的格式),这是一种新的提示工程挑战(几乎就像是在提示中为模型提供了一个 API 规范)。
个性化与动态提示:另一个前沿领域是创建能够适应用户或情境的提示。开发者不再使用固定的提示模板,而是通过代码实时组装提示,从中获取用户个人资料数据、之前交互的上下文等信息。例如,客服机器人可能会在主要指令之前有一个提示,包含用户姓名、购买历史、最近查询的内容等占位符。确保提示保持连贯且不超出长度成为一项设计任务。还有关于让模型自身管理提示的研究 ------ 比如让模型在上下文过长时决定总结之前的对话,实际上是在学习自己编写简短的提示。这些"自我反思"或"自我总结"技术模糊了模型与提示之间的界限,但都是处理复杂交互的一部分。
最后,随着模型范围不再局限于文本(还包括视觉、音频等),提示工程也在不断发展,不过这超出了本文的讨论范围。多模态提示引入了自身技术(比如将文本提示与图像嵌入相结合,或者指示模型先描述图像然后再回答问题)。但基于文本的提示原则在很大程度上仍然适用:清晰性、提供背景信息(这可以是图像描述)、以及逐步指导仍然是关键要素。
经久不衰的原则:什么会一直很重要
尽管提示工程迅速发展,但从 2018 年到 2025 年,一些基本原理却始终保持不变:
- 清晰性和明确性:明确具体的提示总是优于模糊的提示。这在 2018 年就是如此,现在依然如此。模型是巨大的模式匹配器,如果提示含糊不清,模型就会有太多种模式可供遵循,从而导致结果难以预测。清晰的说明会缩小可能性范围。例如,说"以要点形式列出文章的 3 个关键要点"比"总结这篇文章"更有可能产生有用的结果,后者可能会输出从一句话到五段不等的内容。所有复杂技巧(如 CoT、ToT 等)仍然需要精确传达任务。
- 提供背景信息:提供正确的背景信息 ------ 无论是相关事实、对话历史还是示例 ------ 至关重要。早期的少样本提示实际上将背景信息作为示例嵌入其中。如今,即使有强大的模型,如果问题依赖特定知识(比如用户文档中的细节),就需要包含该文本或让模型检索。传递方式可能会有所不同(2020 年提示中的手动复制粘贴与 2025 年代理中的工具辅助检索),但原则是相同的:模型只能使用它所接收到的内容。提示工程师会花费大量精力来决定在提示中或旁边应加入哪些信息。
- 分解步骤:将复杂任务分解为步骤来处理已被证明是始终有效的方法。起初,我们是通过少量示例隐性进行这种操作的。后来,我们通过诸如"思维链"、"从简单到复杂"等方法明确进行操作。这些名称有所不同,但核心理念是永恒不变的:逐步引导模型完成任务。即使我们不再总是需要说"一步步思考",但在幕后,模型(尤其是大模型)通常会进行多步骤推理。当它失败时,常见的解决方法仍然是提示它组织其方法(例如,"首先,制定一个计划。然后解决每个部分。")。
- 格式化和结构化提示 :模型对格式化提示反应良好。这在早期就体现在诸如在提示中使用 "markdown" 或 "HTML" 来提取信息等方面得到了体现。如今,如果想要 JSON 输出,可以直接说 "输出 JSON",模型通常会遵从。或者可以在提示中提供模板,展示期望的输出格式(通过示例或清晰的标记)的重要性是一个长期的教训。结构化提示会带来结构化的输出。
- 迭代优化:从一开始,从业者就将提示工程视为一个迭代过程 ------ 尝试某种方法,观察模型反应,然后进行改进。尽管工具已经有所改进以帮助执行这个过程,但原则依然不变。即便有了自动化工具,通常也需要人工审查输出并调整方法。模型可能会以某种微妙的方式误解指令;只有通过分析其输出,才能确定如何明确下一个提示。本质上,调试提示仍然是核心技能,就像调试代码一样。
总之,明确说明要做什么、提供任何必要的背景信息或示例,并且或许还能引导模型思考过程的提示,一直以来都是最佳标准。新技术对其进行了补充,但并未取代它。当人们问"提示的秘诀是什么?"时,答案一直很稳定:要清晰、具体,并向模型展示想要的内容。我们所看到的所有演变都基于这一基础之上。
演进战略:什么改变了,什么消失了
尽管核心原则保持不变,但随着语言模型技术的不断发展,许多策略已得到完善或被替换:
- 少样本提示与指令调优:在 2020 年,少样本提示是让模型完成任务的主要方式。到 2023 年,像 GPT-4 这样的模型经过了非常出色的指令调优,以至于对于某些简单任务,往往根本不需要示例。提供 5 个示例有时会让 GPT-4 变得更差(可能是由于过度详细描述或达到上下文限制),而 GPT-3 则会需要它们。因此,技术重点转向了了解模型何时需要示例以及何时直接给出指令更为合适。少样本提示对于非常开放式的任务或需要模仿特定风格时仍然有用,但不再普遍适用于准确性方面。
- "神奇"短语和提示:发现适用于所有情况的提示(比如著名的"让我们一步步思考")的时代相对短暂。这些提示在某些模型生成中(尤其是那些没有专门针对遵循指令进行训练的模型)是有效的,但一旦模型通过训练融入了这些能力,这些神奇短语就失去了魔力。事实上,开发人员开始采用硬编码过滤器的方式,以确保模型在未被要求的情况下不会透露其内部思考过程,这样一来,简单的"逐步思考"方法就不再那么有用,除非对提示进行结构化设计,使其符合思考过程的格式要求。同样,复杂的角色设定或诸如"你是一个乐于助人的助手......"这样的模板对于已经具备帮助性特征的模型来说也变得不再必要。该领域从神秘的咒语式操作发展到了理解提示为何有效的阶段。许多早期提示"技巧"实际上都是利用了模型训练数据的某些特性;一旦架构和训练得到改进,这些特性要么消失,要么成为了内置功能。
- 缩短提示长度/复杂度:在早期的 GPT-3 时代,人们可能会准备一个包含详细角色、多个示例等的庞大提示,以最大限度提高性能。而现在,随着更大的上下文窗口和更智能的模型的出现,提示工程师们认识到简洁性可能是一种优势。不必要的冗长可能会使模型感到困惑或引入更多错误。简洁但精确的提示往往比冗长的提示表现更好。现在有一种向极简有效提示转变的趋势 ------ 只提供所需的确切信息,而无需多余内容。这并不意味着不能提供背景信息;其含义是提供相关的背景信息,但避免给出无关指令。例如,之前可能通过 500 字的提示来温和的引导模型给出答案,而现在可以通过 50 字的提示,直接切中要点(尤其是在 GPT-4 类模型中)。输出质量不会受到影响,而且更容易保持稳定。
- 提示的脆弱性与稳健性:早期模型对提示的措辞非常敏感(一个单词的变化就可能导致改变输出)。这导致某些脆弱的提示只能以某种形式有效。而新模型则更加稳健,能更好识别同义词或类似表述。因此,提示设计现在更具包容性,不需要像以前那样去寻找完美措辞,多种措辞都能产生相似结果。不过,对于复杂任务,轻微的措辞变化仍然可能很重要,所以测试变体的做法并未过时,只是在高级模型中,这种差异会较小。
- 集成工具和记忆:提示工程之前只是处理单个静态的输入 -> 输出的事务,现在经常需要处理一个序列。设计每次步骤后提示内容的变化方式(例如将最后的问答内容添加到上下文中,或者更新提示中的"知识库"部分)是一项全新技能。在通过 API 进行单次对话时,这并不重要,但在对话式和代理系统中,已变得至关重要。实际上,提示现在是一个不断演变的有生命的对象,对其进行工程设计包括在每次步骤中决定保留或舍弃的内容。诸如总结之前的对话以节省空间,或者在每个新提示中重新注入重要事实等技术,已成为构建长期对话或多步骤工作流的标准做法。
- 提示标准与分类的出现 :在 2021 年,"提示工程"还像是民间智慧和零散的技巧。到 2025 年,已成为更系统化的领域。我们在学术调查中看到了提示技术的正式分类,甚至还有专门关于提示工程最佳实践的书籍。这种成熟意味着今天的从业者有了更清晰的选择范围。例如,如果任务是推理问题,分类可能会建议:尝试标准的 CoT 推理,如果不够就尝试自洽性,如果需要外部信息就尝试 ReAct 等等。如今的试验与错误过程是基于集体知识来进行的,而早期的快速开发工程师们则常常需要从零开始为每个新的挑战寻找解决方案。从本质上讲,策略已经得到了规范,有些策略已经被淘汰(你很少再看到使用某某技巧或其他早期 GPT-3 异常情况的建议了),而另一些则被编纂为推荐模式。
对当前实践者的实际影响
时间快进到 2025 年:这一切对 LLM 来说意味着什么?在实践中:
- 从简单开始:鉴于模型性能如此出色,通常最佳的初始提示应是简单明了的。切勿一开始就过度复杂化,用通俗易懂的语言明确说明任务,提供背景信息,或许还可以说明期望的格式。你可能会惊讶的发现,这个"简单的"提示在现代模型上也能发挥作用。如果不行,那就逐步增加复杂性(也许可以将任务分解为步骤,或者添加示例)。这种方法可以避免不必要的提示冗长,并使输出更具可预测性。
- 谨慎使用高级技术:像 CoT、ReAct、ToT 这样的技术非常强大,但并非总是必需的。它们在解析输出时也会引入复杂性(例如,如果模型输出的是想法和行动,就需要对此进行处理)。因此,要确定任务是否确实需要这些技术。如果任务很简单 ------ 比如摘要、分类、简单的问答 ------ 直接提示通常就足够了。如果任务涉及推理或多步骤答案,可以考虑使用 CoT 或自洽性。如果需要超出模型训练范围的外部知识,则使用 ReAct / 工具或在提示中提供这些知识。总的来说,要根据问题选择合适的方法。
- 保持对格式的控制:有一点未曾改变,那就是语言模型在输出时会遵循最简单的路径,除非受到引导。因此,始终要明确所需格式,尤其是当输出将被程序使用时。无论是 JSON 格式、项目符号列表,还是正式报告风格,告诉模型如何输出与告诉它要输出什么同样重要。幸运的是,如果清晰说明了格式要求,模型现在在遵循格式指令(即使是复杂指令)方面表现得相当出色。
- 注意令牌限制和成本:对于非常长的提示(包含许多示例或长历史记录),请记住,上下文是有限的,而令牌就是金钱(用于 API 使用)。今天的提示工程实际上包括提示修剪 ------ 决定不包含的内容。最佳的提示应该是简洁但完整的。诸如上下文摘要或动态检索仅包含相关信息以纳入提示中的技术可以帮助管理这一过程。检索增强型提示的趋势(尽管我们在此没有深入讨论)是通过仅注入相关事实来保持提示焦点的一种方式。即使没有复杂的检索功能,也应精心挑选提示内容,以避免向模型输入过多不相关的文本。
- 利用系统和角色提示:在以对话为导向的模型中,如果有助于模型的表现,就使用系统消息(或类似内容)来设定高级行为,并在提示中使用角色扮演或少样本对话。例如,如果模型输出过于冗长,像"你是一个简洁的助手"这样的系统指令可以影响其风格。这些功能在早期模型中并不存在,所以要充分利用 ------ 这基本上是无需在每一轮中重复提示条件的更简便的实施方法。
- 持续评估和调整:该领域仍在迅速发展,新模型可能会使某些技术过时或引入新的可能性。例如,如果未来模型能够浏览网页,可能就不需要用明确的搜索动作来提示(它可能会根据高层次请求自行进行操作)。通过文献和社区资源保持信息更新现在是提示工程师工作的一部分 ------ 去年有效的方法今年可能就不是最佳的了。话虽如此,如果能深刻理解每种技术背后的原理,那么就能够将这些概念应用到任何新的提示模式中。
总之,提示工程从一项小众技艺发展成利用大语言模型的关键技能,从简单的一次性查询发展到复杂的多轮协调操作。然而,其核心始终在于有效运用语言与模型进行交流。随着大语言模型越来越能够理解我们的意图,这种"工程"工作可能会逐渐让位于以直观的方式向 AI 系统提出所需内容的方式。但在那一天到来之前,了解 2018 年至 2025 年期间的历史和工具包为我们打下了丰富的基础,以便设计出真正能够释放模型潜力的提示 ------ 可靠、透明且高效。
你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!