提示工程演进之旅

2025-07-12  本文已影响0人  DeepNoMind

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

早期(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 将英语翻译成法语,可以简单提示如下:

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 的指南已经总结出了有效提示的最佳实践:

到 2021 年,这些基础技术使用户能够从像 GPT-3 这样的模型中获得令人瞩目的成果,而模型在未做任何改动的情况下仍保持了其初始训练的状态。不过,也存在明显的局限性。尽管可以向 GPT-3 提出各种指令,让它完成许多事情,但某些复杂的任务(例如多步骤逻辑推理题、数学应用题)却暴露出一个缺陷:模型常常直接给出答案并出现错误,因为提示并未迫使它去解决这个问题。仅展示输入-输出对的少量提示并不能教会它思考,只是让它模仿答案而已。这一认识为下一个提示工程时代奠定了基础,在这个时代,重点转向了激发推理过程,而不仅仅是获取最终答案。

2022:思维链 — 教会模型公开思考

2022 是至关重要的一年。谷歌的研究人员发现,如果让大语言模型在执行推理任务时“说出思考过程”,其表现会更加出色。这种被称为 “思维链提示(Chain-of-Thought (CoT) prompting,)” 的技术于 2022 年初首次被报道。与只要求模型给出答案不同,这种提示会包含一些逐步得出解决方案的示例。例如,一个对于数学应用题的思维链提示可能如下:

Q: Roger 有 5 个网球。他又买了 2 罐网球。每个罐子有 3 个网球。他现在有多少个网球?
A: Roger 一开始有 5 个球。2 罐 3 个网球等于 2 * 3 = 6 个球。所以他有 5 + 6 = 11 个球。答案是 11。
Q: 自助餐厅有 23 个苹果。如果他们用 20 个苹果做午餐,又买了 6 个,他们现在有多少个苹果?
A:

在给出最终答案之前,示例显式的遍历了计算的每个步骤(突出显示了算术和推理)。在提示中看到这种思维链会鼓励模型为下一个问题生成类似的逐步解决方案。至关重要的是,与标准提示相比,这种方法可以大大提高多步骤问题的准确性。

数学题的标准提示与思维链提示。在CoT中,引导模型显示其工作过程,在之前失败(红色)的地方给出正确答案(绿色)。

谷歌的研究人员通过 5400 亿参数的 PaLM 模型展示了 CoT(思维链)的影响。在常规提示下,PaLM 在数学问题基准测试(GSM8K)中的表现随着规模增大几乎没有提升。但通过思维链提示,拥有 540 亿参数的 PaLM 解决了 58% 的问题 —— 甚至超过了专门针对该任务进行训练的 175 亿参数的 GPT-3 模型。CoT 实际上解锁了一种新兴推理能力,这种能力只有在最大的模型中才变得可靠。它表明,超过一定模型规模(约 100 亿参数以上)后,提示能够诱导出令人惊讶的高级行为。

此外,2022 年年中还出现了一个有趣的方法:你甚至可能不需要示例性的思考过程,而只需一个触发词即可。Kojima 等人发现,通过在问题后添加“让我们一步步思考”这句话,通常可以在零样本模式下激活模型的潜在推理能力。这种零样本思维链技术在许多任务中显著提高了准确性(例如,在 InstructGPT 模型中添加这个提示后,解决某个简单的数学测试的准确率从 17.7% 提高到了 78.7%)。实际上,即使提示中没有任何示例性内容,这个短语也能促使模型输出一系列推理过程并得出正确答案。它在提示工程领域成为了广为引用的“神奇短语” —— 这充分说明一个小小的措辞变化能够如何挖掘出大语言模型的潜在能力。

CoT 的成功引发了一系列相关想法,以提高可靠性和性能:

到 2022 年底,思维链提示已成为核心技术。很明显,对于任何涉及推理的任务(比如数学、逻辑谜题、常识性问题等),指示模型展示其解题过程具有极大的益处。这种透明度还有附带的好处:用户可以看到模型的中间思考过程(作为答案的一部分打印出来),使得调试或信任结果变得更加容易。思维链改变了提示工程师的角色,从仅仅编写查询转变为同时引导模型的推理过程。

然而,基本的思维链模型存在局限性,其知识仍然局限于训练过程中所接触到的内容。它会循序渐进的进行推理,但如果需要外部事实(比如在多步问题中,“X 国的总统是谁?”),它可能会编造事实或者陷入停滞。此外,思维链推理模型本身并不允许与外部世界互动或采取行动,而只是进行纯粹的内部推理。这就促成了接下来的发展:能够不仅思考还能行动的提示。

2022年末:ReAct — 推理并利用工具行动

将推理与行动相连接的一项具有里程碑意义的技术便是由 Yao 等人在 2022 年末提出的 ReAct 技术。ReAct 代表“推理 + 行动(Reason + Act)”,通过将推理步骤与使用工具或采取行动的能力相结合,扩展了思维链理念。在 ReAct 提示中,模型会展示“思考 → 行动 → 观察”循环示例。例如,对于某个问题,模型可能会输出这样的思考:“嗯,我应该查找 X”,然后是行动,比如调用搜索 API,接着得到观察结果,然后基于此继续进行推理。

ReAct 的核心理念在于:大语言模型能够像一个更大系统中的一个“代理”那样发挥作用,能够决定采取何种行动(例如查询知识库、运行计算器等),并将这些行动作为其输出的一部分,而不仅仅给出最终答案。这种模式通常如下所示:

思考 1: <模型对如何解决任务的第一个想法>
动作 1: <某个操作命令,例如查询[苹果遥控器]>
观察 1: <动作的结果, 例如维基百科上的内容>
思考 2: <模型得到结果后的想法>
动作 2: <下一个动作...>
...
思考 N: <最后得到答案的思考>
动作 N: <完成>
答案: <最终答案>

该模型遵循这种 ReAct 提示模式,生成了一系列相互交织的想法和工具使用步骤,使得它能够克服传统思维链的两个主要问题:幻觉有限的知识。如果模型不确定某个事实,ReAct 会鼓励它采取明确的行动(比如进行查找)来收集证据,而不是猜测。通过审视这些想法和行动的链条,用户可以追踪模型得出答案的过程,从而提高透明度。

例如,假设问题表述为:“除了苹果遥控器之外,还有哪些设备能够控制苹果遥控器可以交互的应用?” 其 ReAct 交互过程可能如下:

ReAct提示方法简化说明。该模型在生成想法(纯文本形式的推理步骤)和动作(像搜索这样的命令)之间交替进行。对环境的观察(绿色文字)反馈到下一步想法中。ReAct 使 LLM 能够在提示期间使用外部信息和工具,从而减少错误。

本质上讲,ReAct 将提示转化为用于交互的脚本,而不仅仅是一次性的查询。这是迈向自主人工智能“代理”的一步。结果表面,ReAct 在事实问答(在这种情况下外部查找会有所帮助)和需要决策的游戏等任务中,表现优于标准 CoT。例如,在 HotpotQA 查找事实的任务中,由 ReAct 提示的模型能够为每个线索搜索维基百科,并且在准确性更高且错误提示更少的情况下完成任务。

ReAct 还突出一个更普遍的趋势:提示工程的重点已转向设计整个流程,而不仅仅是单一提示。提示可以形成循环,即模型的输出会被反馈回来(作为工具的输入)。这种循环提示的理念为后来的自动化奠定了基础。

到 2023 年初,社区已经接纳了 CoT 和 ReAct 模式(通常会将两者结合起来)。出现了开源框架来轻松实现这些提示模式(例如,LangChain 提供了适用于 ReAct 代理的模板)。开始普遍提及“基于代理”的 LLM —— 这意味着将模型视为能够思考(CoT)和行动(ReAct)的代理,通过迭代来完成任务。提示工程师的角色扩展到了编写指导性提示,这些提示会指示模型何时使用工具、如何组织想法、何时停止等,从而通过范例对模型行为进行有效控制。

这些技术进步带来的结果是,某些早期提示技巧变得不再那么重要了。如果有能够查找信息的代理,那么就不需要像以前那样在提示中预先加载大量知识了。而且随着模型在避免虚构琐碎事实方面表现得越来越好(得益于指令调整和强化学习反馈引导),对于较简单的查询,总是强制使用工具的需求也降低了。在信任模型内部知识与调用外部工具之间所形成的平衡,可以通过 ReAct 模式由提示者进行控制。

2023:超越线性链 — 思维树和思维图

基于思维链的提示机制表明,一系列清晰的推理步骤能够显著提升大语言模型在复杂任务中的表现。但人类的思考并非总是遵循单一直线路径,我们会考虑多种可能性、进行回溯,并探索不同的解决方法,尤其是在面对难题时。2023 年,研究人员提出了新的提示框架,以使大语言模型能够进行非线性推理:

基于树形/图形的提示还有一个优点,那就是其具有较强的稳定性。它并非依赖某个可能出错的思维链,而是通过探索多种路径来增加找到正确解决方案的可能性。这与传统 AI 集成方法类似。尽管这种方法计算成本更高(需要对多个模型进行查询),但在处理非常困难的任务(如谜题、规划、编码挑战等)时,能显著提高可靠性。

到 2023 年底,我们已经拥有了多种用于推理的提示技术:

并非每种技术都适用于每个问题 —— 对于较简单的任务,仅依靠基本提示就能很好完成;而非常强大的模型(如 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,能够分解任务。您拥有这些工具……”),而代理则会维持从规划 → 执行(通过向自身或另一个模型发出提示来实现)→ 审查结果 → 更新计划的循环。这仍是新兴领域,但展示了如何利用提示来建立完整的自动化工作流程。人类的工作重点转移到编写高层次指令,以指导代理在多个步骤中的行为,而不是对每个步骤进行微观管理。

主动提示机制的影响是,在长时间的交互过程中需要对记忆和上下文信息进行管理。提示工程师现在会考虑如何从前一步骤中为模型提供相关信息(通常通过总结或使用对话的动态窗口来实现)。诸如“记事本”或提示中的专用记忆槽之类的概念变得更加常见。例如,某个提示可能会有一个类似于这样的部分:

## 计划:
{代理的当前计划}
## 动作历史:
- 思考: ...
- 动作: ...
- 观察: ...
(重复)
## 当前思考:
...

实际上这是一种随着时间推移而不断完善的结构化提示。精心设计这样的提示至关重要,以免模型失去上下文或产生困惑。我们还看到在提示中定义了工具库(告知模型可以采取哪些行动以及应采用的格式),这是一种新的提示工程挑战(几乎就像是在提示中为模型提供了一个 API 规范)。

个性化与动态提示:另一个前沿领域是创建能够适应用户或情境的提示。开发者不再使用固定的提示模板,而是通过代码实时组装提示,从中获取用户个人资料数据、之前交互的上下文等信息。例如,客服机器人可能会在主要指令之前有一个提示,包含用户姓名、购买历史、最近查询的内容等占位符。确保提示保持连贯且不超出长度成为一项设计任务。还有关于让模型自身管理提示的研究 —— 比如让模型在上下文过长时决定总结之前的对话,实际上是在学习自己编写简短的提示。这些“自我反思”或“自我总结”技术模糊了模型与提示之间的界限,但都是处理复杂交互的一部分。

最后,随着模型范围不再局限于文本(还包括视觉、音频等),提示工程也在不断发展,不过这超出了本文的讨论范围。多模态提示引入了自身技术(比如将文本提示与图像嵌入相结合,或者指示模型先描述图像然后再回答问题)。但基于文本的提示原则在很大程度上仍然适用:清晰性、提供背景信息(这可以是图像描述)、以及逐步指导仍然是关键要素。

经久不衰的原则:什么会一直很重要

尽管提示工程迅速发展,但从 2018 年到 2025 年,一些基本原理却始终保持不变:

总之,明确说明要做什么、提供任何必要的背景信息或示例,并且或许还能引导模型思考过程的提示,一直以来都是最佳标准。新技术对其进行了补充,但并未取代它。当人们问“提示的秘诀是什么?”时,答案一直很稳定:要清晰、具体,并向模型展示想要的内容。我们所看到的所有演变都基于这一基础之上。

演进战略:什么改变了,什么消失了

尽管核心原则保持不变,但随着语言模型技术的不断发展,许多策略已得到完善或被替换:

对当前实践者的实际影响

时间快进到 2025 年:这一切对 LLM 来说意味着什么?在实践中:

总之,提示工程从一项小众技艺发展成利用大语言模型的关键技能,从简单的一次性查询发展到复杂的多轮协调操作。然而,其核心始终在于有效运用语言与模型进行交流。随着大语言模型越来越能够理解我们的意图,这种“工程”工作可能会逐渐让位于以直观的方式向 AI 系统提出所需内容的方式。但在那一天到来之前,了解 2018 年至 2025 年期间的历史和工具包为我们打下了丰富的基础,以便设计出真正能够释放模型潜力的提示 —— 可靠、透明且高效。


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!

本文由mdnice多平台发布

上一篇 下一篇

猜你喜欢

热点阅读