为了账号安全,请及时绑定邮箱和手机立即绑定

提示工程的艺术与科学:一场时间之旅

这篇文章总结了从2018年到2025年期间,提示工程在大型语言模型中的发展历程。

太长不看
  • 2018–2020 — 早期提示技术: NLP 研究人员开始将任务描述为文本提示,而不是特定任务的模型,从而实现了零样本和少量样本学习。GPT-3 在 2020 年首次亮相表明,给大型模型提供简单的指令和示例文本可以超越许多微调模型。这一时期建立了基础的提示工程:提供明确的说明,可选地附带一些示例,而不是重新训练模型。
  • 基础原则浮现: 早期来自 OpenAI 和其他组织的指导强调了提示的清晰性、具体性和上下文。好的提示明确描述任务、格式和期望的风格,使用分隔符将指令与数据分开,并正面提问,即说明应该做什么而不是不应该做什么。这些原则即使在模型改进后仍然至关重要。
  • 2022 — 推理突破: 研究人员发现,提示模型“一步一步思考”可以极大地提高复杂推理能力。使用 Chain-of-Thought (CoT) 提示像 PaLM 540B 这样的模型能够通过输出中间推理过程来更好地解决多步骤数学问题,从而表现出色。简单地在问题中加入触发短语(“让我们一步一步思考”)可以使零样本提示在推理任务中更加有效,这是“魔力提示”的早期例子。
  • 超越链式 — 工具和行动: 到 2022 年底,提示不仅驱动思考,还驱动行动。ReAct 方法结合了链式思考和工具使用。通过交错思维步骤和行动指令(例如搜索),提示可以使 LLM 不仅进行推理,还能够在回答过程中获取新的信息。这减少了事实性错误,并使决策过程不再局限于静态提示,而是变得更加灵活。
  • 2023 — 结构化思维探索: 将提示技术扩展到了非线性推理。Tree-of-Thought (ToT) 提示使得 模型可以像树枝一样探索多条推理路径,包括回溯和前瞻思考Graph-of-Thought 框架进一步扩展了这一点,将每个想法建模为部分解决方案图中的一个节点。这些技术通过评估多种可能的解决方案而不是单一的推理链来解决需要计划或搜索的任务。
  • 魔法技巧褪色,更强的模型: 随着像 ChatGPT 和 GPT-4 (2022-2023) 这样的模型被训练得更善于遵循指令,复杂的“提示技巧”需求已经减少。这些模型通常可以通过简单、结构良好的提示来完成与复杂的提示相同的工作。例如,GPT-4 在没有明确的“一步一步”提示的情况下也可以正确推理(它内部会这样做),这使得基本的 CoT 触发不再是秘密武器。早期的一些“魔力提示”或角色扮演的人设如今在现代对齐的 LLM 上不仅无效,甚至可能产生负面影响。
  • 2024+ — 提示工程的自动化和代理: 最近的工作集中在自动化提示工程本身。方法如 Automatic Prompt Engineer (APE) 使用 LLM 或进化算法为特定目标生成和优化提示,而不是手动试错。与此同时,基于 LLM 的代理(例如 AutoGPT 类型的系统)通过组合多个提示和模型输出来处理复杂的、多步骤任务,大大减少了人工干预。如今,提示工程不仅包括设计高层次的指令、角色和迭代循环,使 AI 系统能够拆分任务、调用工具、自我修正并决定下一步行动。
  • 关键要点: 提示技术已经从简单的提问艺术演变为结构化的工程学科。许多早期的技巧已经被稳健的框架(如 CoT、ReAct、ToT)取代,核心教训也已经明确 — 清晰性和推理结构很重要。如今的从业者更关注任务的分解和提供精确的指令,同时利用先进的提示方法(或让 AI 生成这些提示)来达到最佳效果。
早期时代(2018–2020):从零样本学习到少量样本推理

我们所熟知的提示概念伴随第一批大型预训练语言模型的出现而诞生。研究人员不再为每个任务单独微调模型,而是开始思考:如果只是通过文本输入让模型执行任务会怎样呢?这个想法在2018年得到了暗示,当时Natural Language Decathlon (decaNLP) 项目展示了多个NLP任务可以被重新定义为单一的问题回答模型。几乎在同一时间,OpenAI 的 GPT-2(2019)展示出令人惊讶的零样本能力。例如,只需在文本末尾加上 TL;DR:,GPT-2 就能生成一段不错的文章摘要。这一发现令人震惊——模型从训练数据中隐式地学会了“TL;DR 等于总结”的概念。这些结果表明,只要措辞得当,语言模型就能遵循提示,无需额外训练。

真正的突破是在2020年GPT-3的出现。GPT-3的论文《语言模型是少样本学习者》("Language Models are Few-Shot Learners")展示了拥有1750亿参数的模型能够通过一个精心设计的提示和少量示例来完成新任务。例如,要让GPT-3进行英译法翻译,你只需用如下提示:

    把英语翻译成法语:  
    英语:我有支笔。  
    法语:J'ai un stylo。
    英语:你好吗?
    法语:Comment ça va?
    英语:今天真是个好天气。
    法语:

而且GPT-3会用正确的法语翻译来完成这个模式的翻译。这种少量样本提示技术对于翻译、问答、算术等方面都有效,无需更新模型的权重。很明显地,在上下文中的学习(即in-context学习)是一种强大的替代方法,可以替代显式的训练。GPT-3在许多任务的零样本提示上也表现出令人惊讶的好性能(仅凭指令而没有示例),尽管性能通常略低于使用少量示例时的表现。

随着这些发现的出现,术语“提示工程”开始在2020年左右被人们熟知。实践者们意识到,输入措辞的不同会对输出质量产生巨大影响。早期GPT-3的使用者开始分享一些技巧,以使模型更好地遵循指令:例如,从一个清晰的命令开始(如“总结以下文本”),提供必要的背景,要求输出特定格式等。到2020年末和2021年,社区博客和OpenAI自己的指南总结了有效提示的最佳实践:

  • 明确说明任务和格式要求: 不要假设模型了解你的需求。明确告诉它你对内容、风格、长度、格式等方面的期望。(例如:“写一个段落的执行摘要,概述三个关键点。”)具体的要求可以使模型输出更加精准可靠。
  • 提供背景或示例: 如果任务需要背景信息,可以在提示中加上清晰的分隔符,并用这些分隔符明确标注。例如,可以在段落前加上文本:,然后针对该段落提问。或者在实际查询之前给出几个问答对作为示范(示例引导)。高质量的示例可以显著引导模型。
  • 使用分隔符和结构: 最初用户发现,用符号(XML标签、三重引号等)将指令与数据分隔开,有助于防止混淆。例如:
    指令:用一句话总结下面的文本。 文本:""" {文章文本} """ 总结:
    这种结构使提示和内容之间的区别更加明显。
  • 使用正面表达: 不要只说不要做什么(“不要产生长输出”或“不要提到X”),而是说该做什么(“保持简短”)。模型对否定指令的响应可能不够准确;引导它们朝正确的方向更为有效。
  • 迭代和优化: 提示设计被视为一个迭代过程。如果第一次尝试不理想,分析输出,调整措辞,增加示例,或将任务拆分成更小的部分。从业者将提示视为一个可以逐步优化的动态指令。

到了2021年,这些基础技术使用户能够从未经任何修改的预训练模型(如GPT-3)中引导出令人印象深刻的结果。然而,仍然存在明显的局限性。虽然你可以让GPT-3完成许多任务,但某些复杂的任务(例如多步逻辑谜题、数学应用题)暴露出一个缺点:模型经常直接给出答案并犯错误,因为提示没有强迫它逐步解决问题。仅展示输入输出示例的少量提示并没有教会它思考,只是让它重复答案。这为下一阶段的提示工程铺平了道路,在这个阶段,重点转移到了激发推理过程,而不仅仅是最终答案的生成。

2022:思维链 — 教模型展示思维过程

2022年是一个关键年份。谷歌的研究人员发现,如果让大型语言模型(LLM)“出声思考过程”,它们在推理任务上的表现会更好。这项技术被称为链式思维(CoT)引导最早在2022年初报道。提示不仅要求模型提供答案,还包含一些通过逐步推理得出解决方案的例子。例如,一个数学应用题的CoT提示可能看起来像这样:

    Q: 罗杰有5个网球。罗杰又买了2筒网球。每筒有3个网球。他现在一共有多少个网球?
    A: 罗杰一开始有5个网球。2筒网球,每筒有3个,共有2 * 3 = 6个网球。所以他现在一共有11个网球。答案是11个网球。
    Q: 餐厅原来有23个苹果。如果他们用掉了20个来做午餐,并且又买了6个,现在他们有多少个苹果呢?
    A:

在这里,示例答案明确地走过了每个计算步骤(强调了算术和逻辑推理),在给出最终答案之前。看到这种思考过程的提示鼓励模型为下一个问题也生成类似的分步骤解决方案。至关重要的是,这种方法被发现相较于标准提示,在处理多步骤问题时准确性有了显著提升。

图:标准提示方式与链式思维提示方式在数学题上的对比。在链式思维提示方式中,模型被引导展示其解题步骤,从而得到正确的答案(用绿色表示),而在此之前它的答案是错误的(用红色表示)。

谷歌的研究人员展示了PaLM模型(具有5400亿参数)在链式思维(CoT)上的影响。在常规提示下,PaLM在数学问题基准(GSM8K)上的表现几乎没有随着模型规模的增大而提升。但在链式思维提示下,5400亿参数的PaLM解决了58%的问题——甚至超过了专门为该任务进行微调的1750亿参数的GPT-3模型。链式思维似乎解锁了大型模型中出现的一种推理能力,这种能力仅在最大规模的模型中变得可靠。这表明,超过一定规模(约100亿参数以上),提示可以诱发出令人惊讶的高级行为。

此外,2022年中发现了一个有趣的技巧:你甚至可能不需要示例推理链——只需要一个触发短语。Kojima等人 发现,在问题后加上“让我们一步一步地思考”常常可以激活模型在零样本模式下的潜在推理能力。这种所谓的零样本CoT技术在许多任务上显著提高了准确率(例如,在InstructGPT模型中添加该提示后,解决简单数学测试的准确率从17.7%提升到了78.7%)。总之,这个短语促使模型输出推理链并得出正确答案,即使提示中没有任何具体示例。它成为了提示工程领域的“魔法短语”——一个如何通过细微的措辞变化来挖掘大型语言模型潜在能力的绝佳例子。

CoT的成功之后,引发了一系列旨在提高可靠性和性能的想法。

  • 自洽性: 相比于信赖单一的思维链,Wang等(2022)让模型生成多个推理路径,然后通过多数投票来确定最终答案。这种方法被称为自洽性,通过平均多个推理路径中的错误来提高准确性。对于GSM8K,结合思维链的自洽性使PaLM 540B的得分从58%提高到了74%。其背后的直觉是,虽然任何一个单独的思维链可能有错误,但多个独立链中的最常见的答案很可能是正确的。
  • 逐步递进提示: 另一个2022年的创新是将一个难题明确定义为一系列更简单的子问题,并提示模型逐一解决。在逐步递进提示中,模型先解决最简单的部分,然后将这个结果带入解决下一个部分,以此类推。这种方法对于需要组合推理或直接思维链可能停滞不前的任务很有帮助。它迫使模型逐步解决问题,模仿人类解决复杂问题的方法,即将问题拆分为步骤。
  • 更有效的算术和逻辑提示: 研究人员还探索了如提供“草稿板”给模型或让模型生成结构化的推理过程等变体。所有这些都是用于引导模型内部思维过程的提示模式。这些都表明了,提示工程已经从回答是什么扩展到如何得出答案。

到2022年底,链式思维提示(CoT)已成为一种基石技术。很明显,对于涉及推理的任何任务——数学、逻辑谜题、常识问题——让模型展示其思考过程非常有益。这种透明性也有一个额外的好处:用户现在可以看到模型的中间思维过程(作为答案的一部分打印出来),这使得调试或信任结果变得更加容易。CoT 将提示工程师的角色从仅仅构建查询转变为引导模型进行推理过程。

然而,基本CoT的一个局限是,模型的知识仍然局限于其训练过程中所接触的内容。它会一步接一步地进行推理,但如果需要一个外部事实(例如,在多步问题中问“X国家的总统是谁?”),它要么编造一个事实,要么陷入困境。此外,仅靠CoT本身并不能与外界互动或执行操作,它完全是内部推理。这导致了下一步的发展:不仅思考,还能行动的指令。

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

其中一个里程碑式的技术是将推理与行动相结合,ReActYao等人在2022年底提出。ReAct意为“Reason + Act”,它通过将推理步骤与使用工具或采取行动的能力交错进行,扩展了链式思考的想法。在ReAct提示中,模型展示一个思考 → 行动 → 观察的循环例子。例如,对于一个问题,模型可能会输出一个思考步骤如“嗯,我应该查找X”,然后采取行动,比如调用搜索API,然后得到观察结果,再根据这个结果继续推理。

ReAct 的关键见解是,LLM 可以像一个更大系统中的代理一样工作:它不仅能够生成最终答案,还可以根据需要决定采取什么行动(例如查询知识库、运行计算器等)作为其输出的一部分。提示展示这种格式,通常如下所示:

    想法 1:<模型解决任务的第一个想法>  
    行动 1:<一个行动指令,例如 SEARCH[Apple Remote]>  
    看到 1:<行动的结果,例如维基百科的内容>  
    想法 2:<看到结果后的新想法>  
    行动 2:<下一个步骤...>  
    ...  
    想法 N:<最终思考,引向答案>  
    行动 N:<结束>  
    最终答案:<最终答案>

该模型遵循此ReAct提示模式,生成一系列交错的思想和工具使用。这使其能够克服纯CoT的两个主要问题:虚构知识有限。如果模型不确定某个事实,ReAct格式会鼓励它采取具体的行动,比如查询,来获取证据,而不是随意猜测。通过查看想法和行动的链条,用户可以更清楚地了解模型如何得出答案,从而提高透明度。

例如,假设问题是:“除了苹果遥控器之外,还有什么设备可以控制苹果遥控器原本设计用于互动的程序?”一个名为 ReAct 的交互可能如下所示:ReAct 是指一种互动方式。

  • 思考1: “我需要找出Apple遥控器是为哪个软件设计的。”
  • 行动1: 搜索["Apple 遥控器最初是为控制"]
  • 观察1: 返回的信息:“Apple 遥控器……最初是为控制Front Row媒体中心软件……”
  • 思考2: “这个软件是Front Row。问题问的是:除了Apple遥控器外,还有什么设备可以控制Front Row?”
  • 行动2: 搜索["Front Row 其他设备控制"]
  • 观察2: 返回的信息显示,Front Row可以通过键盘等设备控制。
  • 思考3: “看来Front Row可以通过Apple遥控器或键盘的功能键进行控制。”
  • 行动3: 结束
  • 答案: “也可以用键盘的功能键来控制。”

图:ReAct 提示方法的简化说明。模型交替生成思考(以纯文本形式的推理步骤)和行动(如搜索指令等)。环境中的观察(例如绿色文本)则会反馈到下一个思考中。ReAct 让 LLM 在提示过程中能够利用外部信息和工具,从而减少因记忆错误导致的失误。

说到底,ReAct将提示转化为交互脚本,而不仅仅是一次性的查询。它是通往自主AI“代理”的一块垫脚石。实证结果显示,ReAct在某些任务上超越了标准的CoT,在需要外部查找以提高准确性的事实性问答任务以及需要决策制定的游戏环境中表现更佳。例如,在HotpotQA事实查找任务中,使用ReAct提示的模型可以为每个线索搜索维基百科,并以较少的幻觉实现更高的准确性。

ReAct 还强调了一个更普遍的趋势:提示工程现在不仅限于单一提示的设计,而是关于整个流程的设计。一个提示可以建立一个循环,模型的输出会反复被作为工具输入反馈回去。这种循环提示的思想为后来的自动化铺平了道路。

到了2023年的年初,社区已经接受了CoT和ReAct模式(通常将它们结合使用)。开源框架出现来实现这些提示模式,以便轻松实现这些提示模式(例如,LangChain提供了ReAct风格代理的模板)。人们开始普遍称作“代理型”使用LLM——这意味着将模型视为能够思考(CoT)和行动(ReAct)以完成任务的代理。提示工程师的角色扩展为编写元提示,指示模型何时使用工具、如何格式化想法、何时停止等,通过示例编程模型的行为。

这些进步的一个后果是,一些较早的提示技巧变得不那么相关了。如果你有一个能够查找信息的代理,你不再需要在提示中预先加载那么多的知识。随着模型在不凭空捏造琐碎事实方面变得更好(通过指令调优和RLHF技术),对于更简单的查询,不再需要强制使用工具。提示者可以通过ReAct模式(一种提示方法)来控制模型内部知识的信任度与调用工具之间的平衡。

2023:超越线性思维链——思维树图与思维网络

链式思维提示法证明,一系列线性的推理步骤可以大幅提高大型语言模型在复杂任务上的表现。但人类思维往往不是单一的直线,而是多方向的,我们会考虑替代方案,回溯并探索不同的方法,尤其是在处理难题时。2023年,研究人员提出新的提示框架,使大型语言模型能够进行非线性的推理方式,以模拟人类思维。

  • 思维树(ToT):Shunyu Yao等人在2023年初提出,ToT通过允许模型在每一步中分叉出多个可能的思路来扩展CoT。模型生成的不再是单一的序列,而是一个思维序列树。然后,一个搜索算法(如广度优先搜索或深度优先搜索)会探索这棵树以找到一条通往解决方案的有希望的路径。ToT的提示可能包括类似“考虑多种方法”的指令,例如,包括模型在决策点罗列选项A、B、C的例子。通过评估部分解决方案(修剪不乐观的分支,扩展有前景的分支),ToT使模型能够进行战略性的前瞻。例如,在24点游戏中(你需要用给定的数字进行算术运算以达到24),ToT提示使GPT-4尝试不同的操作序列;一篇论文报道了在该任务中,GPT-4的成功率为74%。模型可以有效地说“如果我这样做,那么会怎样……这会让我更接近目标吗?如果不是,就回退。”,这表明这种能力源于提示和搜索过程的设置方式。
  • 思维图(GoT): 进一步推进这一理念,在2023年晚些时候,另一个框架提出,我们可以将大语言模型的推理建模为一个通用的图结构(而不仅仅是树)。在思维图提示中,每个想法都是一个节点,边表示想法之间的依赖关系或过渡。这允许更灵活的探索——例如,模型可能会回顾先前的想法并采取不同的路线,形成循环或合并两条思考路径。GoT方法将提示和模型的输出视为构建一个连接想法的网络,可以通过多种方式穿越这个网络以找到答案。实践中,实现GoT可能涉及多个提示轮次:例如,先提示模型生成一堆候选想法/节点,然后提示它从这些节点中建议连接或下一步,等等,由外部算法来协调。GoT的幕后研究人员认为,它在探索的广度和推理的深度之间提供了更好的平衡,即在一个固定数量的模型调用中。简单来说,基于图的方法可以通过巧妙地重用部分结果,在比单一链或指数增长的树更少的尝试中找到解决方案。

这些高级提示策略(ToT,GoT)在2023年仍然主要集中在研究领域,但它们预示了一个重要的方向:提示工程不再局限于编写一个提示并得到一个答案,而是演变为设计算法,通过在每一步精心构建的提示多次调用模型。提示本身可能包含对中间答案进行评判或评估的指令(“判断这个部分解是否在正确的轨道上:……”)——实际上让模型成为搜索过程的一部分。

树/图结构提示的另一个好处是其稳健性。探索多种思维方式增加了找到正确答案的可能性。这类似于传统AI中的集成方法。虽然它在计算上更耗资源(需要多次模型查询),它可以在诸如谜题、规划和编码挑战等非常困难的任务上显著提高可靠性。

到了2023年底,我们已经拥有了各种用于推理的提示技巧。

  • 零样本 vs 少样本,根据任务是否需要示例。
  • 链式思维,以强制逐步推理于单一答案中。
  • 自我一致性,通过采样多个链式思维并达成一致。
  • ReAct 和工具使用,以允许查找信息或与环境互动。
  • 思维树,以系统地探索不同的解决路径。
  • 思维图,以泛化和优化探索过程。

不是所有技巧都适用于所有问题——简单任务也能用基本提示搞定,而强大的模型(比如GPT-4)仅通过直接提示就能搞定许多推理任务。不过这些创新为提示工程师提供了各种工具,帮助他们拓展LLM的能力边界。

值得注意的是,这些技术中有许多是重叠的或可以结合使用的。例如,可以进行树形思维搜索,其中每个节点的内容都是通过链式思维提示生成的。或者在图状思维框架内使用ReAct,以便模型在搜索过程中检索事实。提示工程和算法设计之间的界限变得模糊——提示成为了构建复杂AI系统而不修改LLM权重的关键组成部分。

2024–2025:元提示技术与自动化

到了2024年,两件事变得明显:(1)模型变得越来越强大,比如新版本如GPT-4、Claude 2等,通常能轻松应对各种指令,(2)手动编写提示语的工作变得越来越困难——人们开始思考AI能否帮助我们编写提示语。这引发了对元提示自动化提示工程的重视:

遵循指令和简化提示: 2022年底发布的ChatGPT(GPT-3.5)和2023年的GPT-4改变了日常提示。这些模型经过了指令和对话的微调,使其在遵循简单的英文指令方面表现出色,无需巧妙的措辞或示例。之前需要用少量样本提示GPT-3完成的任务,现在通常可以用一个指令在GPT-4上完成。对于从业者来说,这意味着重点又回到了清晰和精确的语言上,而不是寻找晦涩的触发短语。例如,GPT-3可能需要一个冗长的角色扮演设置(“你是一个专家聊天机器人……”)来生成有用的答复,而ChatGPT默认已经很有帮助,直接提问通常就足够了。核心原则——清晰、上下文和具体性——仍然极其重要,但对变通技巧的需求减少了。许多业内人士开始告诫不要陷入“提示巫术”(使用复杂的预设,但并不完全理解),而是建议专注于基础:清晰地告诉模型你想要什么,它通常会做到。简言之,模型更理解我们了,因此我们可以更自然地与它们交流。

自动提示优化:一项引人注目的发展 一个令人兴奋的发展是 自动提示工程(A.P.E.) 工具的兴起。其理念是利用算法(包括大语言模型本身)为特定任务寻找最佳提示。例如,可以使用遗传算法来进化提示:生成一组随机提示变体,用验证查询进行测试,保留表现最好的那些,变异并重复。或者,可以利用模型让其提出并评估提示。研究项目发现,如果给定目标、一些测试案例和反馈信号,大语言模型可以迭代地优化提示。甚至有研究表明,一种自动化方法比“让我们一步一步地思考”找到了更适合算术推理的提示——通过尝试和错误发现新的触发短语或指令。像Anthropic这样的公司开始提供“提示改进器”功能,他们的AI(Claude)会建议如何重新表述您的提示以获得更好的结果。这一切都指向一个未来,机器将帮助我们与机器进行交流。而不是由人类手动尝试几十种提示变体,我们可能会得到一个代理来完成这项工作,然后给我们最好的提示。

多提示编排与代理: 到了2024年,“AI代理”引起了社区的广泛关注——例如AutoGPT、BabyAGI等系统,将多个提示和动作串联起来实现用户目标。这些系统本质上是ReAct概念的扩展,规模更大,扩展了ReAct理念:模型不仅能进行推理和使用工具,还能生成新的目标或子任务,并通过不断提示自己直到最终目标达成。对于提示工程而言,这意味着设计一个稳健的元提示(或“控制器提示”)来指导代理如何运行。通常,系统提示会定义角色(例如“你是一个能分解任务的项目管理AI。你可以使用这些工具……”),而代理则保持一个计划→执行(通过自我提示或提示其他模型)→审查结果并更新计划的循环。这仍然是一个新兴领域,但它展示了提示如何被用来建立整个自动化工作流程。人类的任务转变为编写高层次的指令来引导代理的行为,而不是详细指导每个步骤。

代理提示的一个含义是需要在长时间交互中管理 记忆与上下文。提示工程师现在考虑如何将之前步骤的相关信息提供给模型(通常是通过摘要或使用对话的滑动窗口)。像“草稿纸”或专门设置的记忆槽这样的概念变得越来越常见。例如,提示中可能包含类似的部分:

    ## 计划:,  
    代理人的目前的计划
    ## 操作历史:  
    - 思考:这里写思考内容,  
    - 行动:这里写行动内容,  
    - 观察:这里写观察内容,  
    (如下重复)  
    ## 当前想法:  
    ...

这实际上是一个随着时间逐渐完善的结构化提示。设计好这一点非常重要,以确保模型不会因上下文过长而迷失或困惑。我们还注意到,在提示中定义了工具库(告诉模型它可以执行哪些操作以及使用哪种格式),这几乎就像在提示中为模型提供了一个 API 规范。这带来了一种新的提示工程挑战,

个性化和动态提示语: 另一个前沿是制作可以适应用户或情境的动态提示。开发人员不再使用静态提示模板,而是用代码动态生成提示,结合用户个人资料和之前的互动上下文。例如,客户服务机器人可能会使用一个动态提示,包括用户的姓名、购买记录、他们最后的问题等信息,最后再加入主要指令。确保提示保持连贯且不过长,这成了设计的任务。还有研究让模型自己管理提示——例如,模型可以判断何时应该总结之前的对话,以保持上下文不过长,并学会编写自己的简短提示。这些“自我反思”或“自我总结”的技术模糊了模型与提示之间的界限,但它们都是处理复杂交互的重要手段。

最后,随着模型不再局限于文本,扩展到视觉和音频领域,提示工程也在扩展——不过这里我们不讨论这个。多模态提示则有自己的技术,例如,将文本提示与图像嵌入结合起来,或者让模型描述一张图片然后回答问题。不过,基于文本的提示原则依然适用:清晰,提供上下文(比如图片描述),以及逐步引导依然很重要。

永恒的原则:一直很重要的东西

尽管提示工程方法迅速演变,但从2018年到2025年,有些基本原则一直保持不变。

  • 清晰性和具体性: 一个描述明确的提示总是比一个含糊的提示更好。这一点在2018年成立,现在依然是。模型本质上是巨大的模式匹配器——如果你的提示模棱两可,模型可能会遵循多种模式,导致输出不可预测。明确的指令可以缩小可能性。例如,说“列出文章中的3个关键要点,用项目符号表示”比说“总结这篇文章”,后者的输出可能是从一句话到五段文字不等。所有这些高级技术(如CoT、ToT等)仍然需要提示精确地传达任务。
  • 提供上下文: 提供正确的上下文——无论是相关事实、对话历史还是示例——都至关重要。早些时候,我们会通过少量的例子来隐式地实现。现在,即使使用强大的模型,如果问题依赖于特定知识(比如用户文档的细节),你必须包含这些文本或让模型检索它们。虽然交付方式可能不同(2020年的手动复制粘贴与2025年代理的工具辅助检索),但原则是一样的:模型只能根据给定的信息来工作。提示工程师花费大量精力决定将哪些信息放入或放在提示的旁边。
  • 逐步分解: 将复杂任务分解为步骤来处理已被证明非常有效。最初我们通过少量示例隐式地这样做。后来我们明确地使用链式思考、从最简单的开始等方法。名称不同,但这一理念持久:引导模型一步一步完成任务。即使我们不再总是需要说“一步一步思考”,但在幕后,模型(尤其是大型模型)经常进行多步推理。当模型失败时,常见的解决方法仍然是提示它组织自己的方法(例如,“首先,制定一个计划。然后解决每个部分。”)。
  • 格式和结构线索: 模型对格式化线索反应良好。早期这体现在提示中使用markdown或HTML来提取信息。现在,如果你想要JSON格式的输出,你可以说“输出JSON格式”,模型通常会照做。或者你可以在提示中提供一个模板。展示所需输出格式(无论是示例还是清晰的标记)的重要性是一个持久的教训。结构化的提示会生成结构化的输出。
  • 迭代细化: 从一开始,从业者就将提示工程视为迭代过程——尝试一些东西,看看模型做了什么,然后进行调整。这一过程依然如此,尽管工具已经改进以帮助这一循环。即使有了自动化工具,人类仍然需要审查输出并调整提示。模型可能会以微妙的方式误解指令;只有通过分析其输出,你才能找到如何澄清下一个提示的方法。本质上,调试提示仍然是一个核心技能,类似于调试代码。

总之,一个清楚说明要做什么的提示,提供必要的背景信息或示例,并且可能引导模型的思考,一直是黄金标准多年。新的技术增强了这一点,但并没有取代它。当有人问“提示的秘诀是什么?”时,答案一直相当稳定:要明确,要具体,还要向模型展示你想要的结果。我们所见到的所有演变都以此为基础。

策略演变:哪些改变了,哪些消退了

虽然核心原则保持不变,但随着大型语言模型的进步,许多策略已被优化或取代。

  • 少样本示范与指令调优: 2020年时,少样本示例是让模型执行任务的主要方式。到了2023年,像GPT-4这样的模型已经非常擅长指令调优,对于简单的任务通常不需要提供示例。有时提供5个示例会让GPT-4表现得更差(由于过度指定或达到上下文限制),而GPT-3在这种情况下则需要这些示例。因此,艺术转变为了解模型何时需要示例,何时只需直接指令。少样本提示在非常开放的生成或需要模仿特定风格时仍然有用,但对于准确性来说,现在并不总是必需。
  • “魔法”短语和提示: 发现适用于所有模型的提示(如著名的“让我们一步一步地思考”)的有效时期相对较短。这些提示在某些模型生成(尤其是那些没有被明确训练用于遵循指令的模型)上是有效的,但一旦模型通过训练具备了这些能力,这些魔法短语就失去了魔力。实际上,开发人员开始硬编码过滤器,使模型不揭示内部推理链,除非被明确要求,这使得简单的“一步一步思考”提示在没有结构化成推理链格式的提示时变得不那么有用。同样,复杂的角色设定或模板(如“你是一个乐于助人的助手”)对于已经调整为乐于助人的模型来说变得多余。该领域已经从依赖神秘咒语转向理解为何某些提示有效。许多早期的提示“技巧”实际上是在利用模型训练数据中的特异性,一旦架构和训练改进了,这些特异性要么消失了,要么成为了模型内置的功能。
  • 减少提示长度和复杂度: 在早期的GPT-3时代,人们可能会准备一个详细的提示,包括角色设定、多个示例等,以最大化性能。现在,随着更大的上下文窗口和更智能的模型,提示工程师们学习到,简洁性可以成为优势。不必要的冗长可能会混淆模型或引入更多的错误空间。一个简洁而精确的提示通常优于一个长篇大论的提示。现在有了朝着最小有效提示的转变——只提供所需的信息而不添加多余的内容。这并不意味着不提供上下文,而是意味着提供相关的上下文,避免额外的指令。例如,现在人们可能使用50个词的提示直接切入要点(尤其是对于GPT-4类的模型),而不再是使用500个词的提示来温和地引导模型进入答案。输出质量并不会因此受损,反而更容易管理和维护。输出质量并不会因此受损,反而更容易管理和维护。
  • 提示的脆弱性和鲁棒性: 早期的模型可能非常敏感于提示的词汇(一个单词的改变可能会导致输出的极大变化)。这导致了一些仅在特定形式下才能工作的脆弱提示。新的模型则更加稳健——它们能更好地捕捉同义词或重新表述。结果是,现在的提示工程变得更加宽容。你不再需要寻找完美的措辞;一系列的措辞将带来类似的结果。尽管如此,对于复杂的任务,稍微的措辞变化仍然可能会带来重要影响,所以测试各种变体的方法并未过时——只是高级模型的差异较小而已。
  • 工具和记忆的集成: 以往的提示工程处理单一静态的输入-输出交易,而现在则常常涉及序列。设计提示在每一步后如何变化(例如,将上一个问答附在上下文中,或更新提示中的“知识库”部分)已经成为了一项新技能。这在通过API使用单次转换的GPT-3时并不相关,但在对话和代理系统中则变得关键。实际上,提示现在是一个不断演变的对象,其工程设计包括在每一步决定保留或丢弃什么。例如,总结之前的对话以节省空间,或在每个新提示中重新注入重要事实,已成为构建长时间对话或多步骤工作流的标准技术。
  • 提示标准和分类体系的出现: 2021年,“提示工程”感觉像是民间智慧和零散的技巧。到了2025年,它已成为一个系统化的领域。这体现在学术调查中的提示技术分类体系,甚至有专门介绍提示工程最佳实践的书籍。这种成熟度意味着今天的从业者们有了更清晰的选择路径。例如,如果任务是一个推理问题,分类体系可能会建议:尝试标准的CoT,如果不足够则尝试自我一致性,如果需要外部信息则尝试ReAct等。这种试验和错误现在受到集体知识的指引,而早期的提示工程师则常常需要为每个新挑战从头开始发明解决方案。总之,策略已经系统化,而一些早期的GPT-3特异性提示或技巧如今已经很少被推荐使用了。
当今从业者的实际应用和意义

快进到2025年:这所有的一切对从事LLM工作的人意味着什么?从实际角度看:

  • 简洁起步: 给定模型的强大能力,最初始的提示通常是越简单越有效。不要一开始就过度设计。用简单明了的语言说明任务,提供上下文,并可能指定期望的输出格式。你可能惊讶地发现,这种“天真”的提示在现代模型上其实已经足够了。如果不行,那就逐步增加复杂度(例如分步骤完成任务,或者添加示例)。这种做法可以避免提示变得过于复杂,并使输出更可预测。
  • 审慎使用高级技术: CoT、ReAct 和 ToT 这类技术非常强大,但并不总是必要。它们也会增加解析输出的复杂性(例如,如果模型输出的是思想和行动,你需要处理这些内容)。所以,首先要确定任务是否真的需要这些技术。如果任务比较简单,例如总结、分类、直接问答,直接提示通常就足够了。如果任务涉及推理或多个步骤的答案,可以考虑使用 CoT 或自洽性。如果需要模型训练数据以外的外部知识,可以使用 ReAct/工具方法或在提示中提供知识。总之,要根据问题匹配方法。
  • 保持格式控制: 一个没有改变的事实是,除非引导,LLM 会倾向于选择最简单的输出路径。因此,始终指定期望的输出格式,特别是如果输出将被程序使用时。无论是 JSON、项目符号列表还是正式报告格式,告诉模型如何输出与告诉它输出什么一样重要。幸运的是,只要明确说明,模型现在非常善于遵循各种格式指令。
  • 注意标记限制和成本: 对于包括许多示例或长历史记录在内的非常长的提示,请记住上下文是有限的,标记就是成本(用于 API 使用)。如今,提示工程的一部分实际上是精简提示——决定不包括什么内容。使用上下文摘要或动态检索相关信息的技术可以帮助管理这种情况。虽然这里没有深入探讨检索增强提示的趋势,但这也是一种保持提示专注的方法,即只注入相关的事实。即使没有复杂的检索,你也应该整理提示内容,避免用无关的文字让模型过载。
  • 利用系统和角色提示: 在面向聊天的模型中,使用系统消息(或等效消息)来设置高级行为,并在提示中使用角色扮演或少量对话以提高模型性能。例如,如果模型过于冗长,可以使用系统指令如“你是一个简明的助手”来全局影响其风格。这些功能在早期模型中不存在,因此请利用它们——它们基本上是更容易强制执行某些提示条件的方法。
  • 持续评估和调整: 该领域仍然发展迅速。新模型可能会使某些技术过时,或引入新可能性。例如,如果未来模型能够自行浏览网络,你可能就不需要明确提示它执行搜索了。通过文献和社区资源保持信息的更新已成为提示工程师的工作内容之一——去年有效的可能不再是今年的最佳选择。不过,深刻理解每个技术背后的原理,将使你能够将这些概念适应任何新的提示方式。

总之,提示设计已经从一种小众艺术发展成为驾驭大型语言模型的关键技能。我们从简单的单次提问发展到多轮对话。然而,核心始终是有效地与模型沟通。随着这些模型越来越能理解我们的意图,这种“工程”可能会逐渐变得简单,我们可以更直观地向AI提问。但在那一天到来之前,了解2018年至2025年间的历程和工具箱为我们提供了丰富的基础,能够设计出真正能发挥这些模型潜力的提示——既可靠又高效,还透明。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消