提示工程
ChatGPT 与高级提示工程:驱动 AI 演化

OpenAI 在开发像 OpenAI Gym 和 GPT-n 模型这样的革命性工具方面发挥了重要作用。DALL-E,也是一个可以从文本输入中创建图像的 AI 模型,也引起了人们的关注。OpenAI 的 ChatGPT 是一个大型语言模型的典范,它可以对用户输入做出类似人类的响应,并将其应用扩展到各个领域,从软件开发和测试到商业交流,甚至创作诗歌。
GPT-4:提示工程
ChatGPT 已经改变了聊天机器人的格局,为用户提供了类似人类的响应,并将其应用扩展到各个领域。GPT-4 可以作为企业和个人手中的一个无穷无尽的知识库,精通从数学和生物学到法律研究等各个学科。这样的先进和易用的 AI 模型有望重新定义工作、学习和创造力的未来。
像 GPT-4 这样的生成模型可以根据现有的输入生成新数据。这种独特的特性使它们能够执行多种任务,包括生成文本、图像、音乐和视频。
在 ChatGPT 和 OpenAI 模型的背景下,提示是用户提供给模型的输入,通常以文本形式出现。提示是控制这些模型生成输出的主要手段,因此它们对于成功和相关的对话至关重要。
提示质量的影响
使用明确定义的提示是与 AI 系统进行有用和有意义的对话的关键。糟糕定义的提示可能会导致输出不对用户有帮助,甚至可能导致误导性内容。
为了演示提示质量的影响,让我们比较两个不同的提示给 ChatGPT。第一个提示,定义不清晰,假设先前的知识,可能会生成一个对用户不太有用的响应。另一方面,第二个提示提供了更多的上下文和示例,确保了一个更相关和更容易理解的响应。
提示 1: “告诉我关于卷积神经网络。”
响应 1: “卷积神经网络(CNN)是多层感知机网络,包括全连接层和池化层。它们通常用于图像识别任务。该过程涉及将滤器应用于输入图像,并使用池化层对其进行下采样。”
提示 2: “我想学习卷积神经网络,但我没有关于人工神经网络的先验知识。您能提供一个适合初学者的解释和一个示例,说明如何在图像识别中使用 CNN 吗?”
响应 2: “卷积神经网络(CNN)是一种主要用于图像识别任务的神经网络。与其他神经网络不同,它们利用卷积层和池化层来处理图像。想象你有一张猫的图像。CNN 可以通过应用滤器和使用池化层对图像进行下采样来识别图像中的不同特征,例如胡须、耳朵和尾巴。这个过程使 CNN 非常适合识别图像中的对象。”
通过比较两个响应,我们可以看出,一个明确定义的提示会导致一个更相关和更用户友好的响应。提示设计和工程是日益增长的学科,旨在优化 AI 模型(如 ChatGPT)的输出质量。
在本文的以下部分中,我们将深入探讨旨在改进大型语言模型(LLM)的高级方法,例如提示工程技术和策略。这些包括少次学习、ReAct、链式思维和 RAG 等。
高级工程技术
在我们继续之前,了解大型语言模型(LLM)的一个关键问题至关重要,即所谓的 “hallucination”。在 LLM 的背景下,”hallucination” 指的是这些模型生成输出可能看起来合理但不基于事实现实或给定的输入上下文的倾向。
这个问题在最近的一起法院案件中得到了突出的体现,在那里,一名辩护律师使用 ChatGPT 进行法律研究。AI 工具由于其 hallucination 问题,引用了不存在的法律案例,这导致了重大的后果,造成了混乱并在诉讼过程中破坏了可信度。这一事件提醒我们,解决 AI 系统中的 hallucination 问题至关重要。
我们的探索提示工程技术的目标是改进这些方面的 LLM。通过提高它们的效率和安全性,我们为创新应用(如信息提取)铺平了道路。此外,它还为将 LLM 无缝集成到外部工具和数据源中提供了可能,扩大了它们的潜在用途。
零次和少次学习:使用示例优化
生成预训练变换器(GPT-3)在生成 AI 模型的发展中标志着一个重要的转折点,因为它引入了 “少次学习” 的概念。这种方法因其能够在不需要全面微调的情况下有效运行而成为游戏规则的改变者。GPT-3 框架在论文 “语言模型是少次学习者” 中被讨论,作者展示了该模型在不需要自定义数据集或代码的情况下在各种用例中表现出色。
与微调相比,微调需要不断的努力来解决不同的用例,少次模型表现出更广泛的适应性。虽然微调在某些情况下可能提供强大的解决方案,但在规模上可能很昂贵,特别是当与提示工程相结合时,使用少次模型可能是一个更实用的方法。
想象一下,你正在尝试将英语翻译成法语。在少次学习中,你会向 GPT-3 提供几个翻译示例,例如 “海獭 -> 水獭”。GPT-3 作为一个高级模型,能够继续提供准确的翻译。在零次学习中,你不会提供任何示例,GPT-3 仍然能够有效地将英语翻译成法语。
“少次学习” 的术语源自模型从有限数量的示例中 “学习” 的想法。需要注意的是,在这种情况下,”学习” 不涉及更新模型的参数或权重,而是影响模型的性能。
零次学习进一步推广了这一概念。在零次学习中,模型不提供任务完成的示例。模型预计将根据其初始训练进行良好的性能,使这种方法适合开放域问答场景,例如 ChatGPT。
在许多情况下,一个擅长零次学习的模型可以在提供少次或甚至单次示例时表现良好。这种在零次、单次和少次学习场景之间切换的能力凸显了大型模型的适应性,增强了它们在不同领域的潜在应用。
零次学习方法变得越来越普遍。这些方法的特点是能够识别训练中未见过的对象。以下是少次提示的一个实用示例:
"将以下英语短语翻译成法语:
'海獭' 翻译成 '水獭'
'天空' 翻译成 '天空'
法语中 '云' 的翻译是什么?"
通过提供模型几个示例,然后提出一个问题,我们可以有效地引导模型生成所需的输出。在这种情况下,GPT-3 可能会正确地将 “云” 翻译成法语中的 “nuage”。
我们将更深入地探讨 GPT 模型中提示工程技术的细微差别及其在优化模型性能方面的重要作用。我们还将探讨如何有效地使用它们来创建在各种用例中具有成本效益和可扩展性的解决方案。
当我们进一步探索 GPT 模型中提示工程技术的复杂性时,值得注意的是,我们的最后一篇文章 “ChatGPT 中的提示工程的基本指南” 为我们提供了在各种用例中有效地指示 AI 模型的策略的见解。
在我们之前的讨论中,我们探讨了大型语言模型(LLM)中的基本提示方法,例如零次学习和少次学习,以及指令提示。掌握这些技术对于解决我们将在这里探讨的提示工程的更复杂的挑战至关重要。
少次学习可能受到大多数 LLM 的限制性上下文窗口的限制。另外,若没有适当的保障措施,LLM 可能会被误导以产生潜在有害的输出。此外,许多模型在推理任务或遵循多步骤指令方面存在困难。
鉴于这些限制,挑战在于利用 LLM 处理复杂任务。一个明显的解决方案可能是开发更先进的 LLM 或改进现有的模型,但这可能需要大量的工作。因此,问题出现了:我们如何优化当前的模型以提高问题解决能力?
同样令人着迷的是探索这种技术如何与 Unite AI 的 “掌握 AI 艺术:Midjourney 和提示工程的简明指南” 中的创意应用接口,其中描述了艺术和 AI 的融合如何导致令人惊叹的艺术作品。
链式思维提示
链式思维提示利用大型语言模型(LLM)的内在自回归属性,这些模型擅长预测给定序列中的下一个单词。通过提示模型阐述其思维过程,它会诱导更彻底、更有条理的想法生成,这往往与准确的信息更为一致。这种一致性源于模型处理和提供信息的方式,类似于人类专家一步一步地引导听众通过复杂的概念。一个简单的陈述,如 “一步一步地引导我…”,通常足以触发更详细、更有条理的输出。
零次链式思维提示
虽然传统的 CoT 提示需要预先训练的演示,一个新兴领域是零次 CoT 提示。这种方法由 Kojima 等人(2022 年)引入,创新地在原始提示中添加了 “让我们一步一步地思考” 这个短语。
让我们创建一个高级提示,要求 ChatGPT 总结来自 AI 和 NLP 研究论文的关键要点。
在这个演示中,我们将使用模型的能力来理解和总结来自学术文本的复杂信息。使用少次学习方法,让我们教 ChatGPT 总结来自 AI 和 NLP 研究论文的关键发现:
1. 论文标题: "注意力就是你需要的"
关键要点: 引入了变换器模型,强调了序列转换任务中注意力机制的重要性,而不是循环层。
2. 论文标题: "BERT:语言理解的深度双向变换器的预训练"
关键要点: 引入了 BERT,展示了预训练深度双向模型的有效性,从而在各种 NLP 任务中取得了最先进的结果。
现在,基于这些示例的上下文,总结以下论文的关键发现:
论文标题: "大型语言模型中的提示工程:一项检查"
这个提示不仅保持了清晰的思维链,还利用了少次学习方法来指导模型。它将我们的关键词联系起来,专注于 AI 和 NLP 领域,特别是要求 ChatGPT 执行一个与提示工程相关的复杂操作:总结研究论文。
ReAct 提示
ReAct,或 “推理和行动”,由 Google (GOOGL ) 在 “ReAct:语言模型中的推理和行动的协同” 论文中引入,革新了语言模型与任务的交互方式,提示模型动态生成语义推理痕迹和任务特定操作。
想象一个人类厨师在厨房里:他们不仅执行一系列操作(切菜、煮水、搅拌食材),还进行内部对话(”现在蔬菜切好了,我应该把锅放在炉子上”)。这种持续的精神对话有助于策划过程、适应突然的变化(”我没有橄榄油,我会用黄油代替”),并记住任务的顺序。ReAct 模仿了这种人类能力,启用了模型快速学习新任务并在新或不确定的情况下做出强健的决策的能力,就像人类一样。
ReAct 可以解决 Chain-of-Thought(CoT)系统中常见的问题,即幻觉。虽然 CoT 是一种有效的技术,但它缺乏与外部世界交互的能力,这可能导致事实幻觉和错误传播。ReAct 通过与外部信息源交互来弥补这一点,使系统能够不仅验证其推理,还可以根据外部世界的最新信息更新其知识。
ReAct 的基本工作原理可以通过 HotpotQA 中的一个实例来解释,HotpotQA 是一个需要高阶推理的任务。接收到一个问题后,ReAct 模型将问题分解为可管理的部分,并制定一个行动计划。模型生成一个推理痕迹(思维)并识别一个相关的行动。它可能决定查找有关 Apple (AAPL ) Remote 的信息的外部来源(如维基百科)(行动),并根据获得的信息更新其理解(观察)。通过多个思维-行动-观察步骤,ReAct 可以检索信息以支持其推理,同时完善它需要检索的下一个内容。
这个过程可能如下所示:
- 思维: “我需要搜索 Apple Remote 和其兼容设备。”
- 行动: 在外部来源中搜索 “Apple Remote 兼容设备”。
- 观察: 从搜索结果中获得 Apple Remote 兼容设备的列表。
- 思维: “根据搜索结果,除了 Apple Remote 之外,还有几个设备可以控制它最初设计要与之交互的程序。”
结果是一个动态的、基于推理的过程,可以根据它与之交互的信息而演变,从而导致更准确、更可靠的响应。
设计 ReAct 代理是一项专门的任务,考虑到其实现复杂目标的能力。例如,基于 ReAct 模型的对话式代理包括对话记忆,以提供更丰富的交互。然而,Langchain 等工具简化了这一任务,Langchain 已成为设计这些代理的标准。
上下文忠实提示
“大型语言模型的上下文忠实提示” 论文强调了,虽然大型语言模型(LLM)在知识驱动的 NLP 任务中取得了显著的成功,但它们过度依赖参数化知识可能会导致它们在上下文敏感任务中失足。例如,当语言模型在过时的事实上进行训练时,它可能会在上下文中产生不正确的答案,如果它忽略了上下文线索。
这个问题在知识冲突的实例中显而易见,知识冲突是指上下文包含与 LLM 预先训练的知识不同的事实。考虑一个大型语言模型(LLM)在 2022 年世界杯之前的数据上进行训练,并被提供一个上下文,表明法国赢得了锦标赛。然而,LLM 仍然坚持认为之前的获胜者,即 2018 年世界杯的冠军,是当前的冠军。这表明了 LLM 中的一个典型的知识冲突。
本质上,LLM 中的知识冲突是指新信息与模型预先训练的知识相矛盾时发生的现象。模型倾向于依赖其先前的训练而不是新的上下文可能会导致不正确的输出。另一方面,LLM 中的幻觉是指生成看似合理但不基于模型的训练数据或提供的上下文的响应。
另一个问题出现了,当提供的上下文中没有足够的信息来准确回答一个问题时,这种情况被称为 “预测和弃权”。例如,如果一个 LLM 被要求提供关于微软创始人的信息,但上下文中没有提供这些信息,那么它应该避免猜测。
为了提高 LLM 在这些场景中的上下文忠实度,研究人员提出了各种提示策略。这些策略旨在使 LLM 的响应更加关注上下文,而不是依赖其编码的知识。
一种这样的策略是将提示框定为基于意见的问题,其中上下文被解释为叙述者的陈述,问题与叙述者的意见相关。这一方法将 LLM 的注意力重新集中在呈现的上下文上,而不是诉诸其预先的知识。
在提示中添加反事实演示也被确定为提高知识冲突中忠实度的有效方法。这些演示提供具有虚假事实的场景,指导模型更加关注上下文以提供准确的响应。
指令微调
指令微调是一种监督学习阶段,通过为模型提供特定的指令(例如 “解释日出和日落的区别”)来利用模型。指令与适当的答案配对,例如 “日出是指太阳在早晨从地平线上升起的时刻,而日落是指太阳在晚上从地平线下降落的时刻。” 通过这种方法,模型基本上学习如何遵循和执行指令。
这种方法显著影响了对 LLM 进行提示的过程,导致提示风格发生了根本性的转变。一个经过指令微调的 LLM 允许立即执行零次任务,提供无缝的任务执行。如果 LLM 尚未进行微调,则可能需要使用少次学习方法,将一些示例包含在提示中以指导模型朝着期望的响应方向发展。
“使用 GPT-4 进行指令微调” 讨论了使用 GPT-4 生成用于微调 LLM 的指令遵循数据的尝试。他们使用了一个丰富的数据集,包含 52,000 个独特的指令遵循条目,既有英文也有中文。
该数据集在指令微调 LLaMA 模型方面发挥了至关重要的作用,LLaMA 是一个开源的 LLM 系列,结果是这些模型在新任务上的零次性能得到提高。值得注意的项目,例如 Stanford Alpaca,已经成功地使用了自我指令微调,这是一种高效的方法,用于将 LLM 与人类意图对齐,利用高级指令微调教师模型生成的数据。
指令微调研究的主要目标是提高 LLM 的零次和少次推广能力。进一步的数据和模型扩展可以提供宝贵的见解。考虑到当前的 GPT-4 数据大小为 52K,以及基本的 LLaMA 模型大小为 70 亿参数,有巨大的潜力可以收集更多的 GPT-4 指令遵循数据,并将其与其他数据源结合起来,从而训练出更大的 LLaMA 模型以获得更好的性能。
STaR:通过推理自举推理
LLM 的潜力在复杂的推理任务中尤其明显,例如数学或常识问答。然而,引导语言模型生成一系列逐步的理由或 “链式思维” 的过程具有其自身的挑战。它通常需要构建大型的理由数据集或牺牲准确性,因为它仅依赖于少次推理。
“自我教导的推理者”(STaR)提供了这些挑战的一个创新解决方案。它利用一个简单的循环不断提高模型的推理能力。这个迭代过程从使用几个合理的示例来回答多个问题开始,生成理由。如果生成的答案不正确,模型会再次尝试生成理由,这次给出正确的答案。然后,模型在所有导致正确答案的理由上进行微调,并重复这个过程。
为了说明这一点,让我们考虑一个问题 “什么可以用来携带一只小狗?”,答案选项从游泳池到篮子不等。STaR 模型生成一个理由,确定答案必须是能够携带小狗的东西,并得出结论,设计用于容纳物品的篮子是正确的答案。
STaR 的方法是独特的,因为它利用了语言模型现有的推理能力。它采用自我生成和完善推理的过程,迭代地自举模型的推理能力。然而,STaR 的循环有其局限性。模型可能无法解决训练集中新的问题,因为它没有直接的训练信号来解决它无法解决的问题。为了解决这个问题,STaR 引入了理性化。对于模型无法正确回答的问题,它会生成一个新的理性化,方法是提供正确的答案,这使模型能够反向推理。
因此,STaR 成为一种可扩展的自举方法,允许模型学习生成自己的理由,同时也学习解决越来越困难的问题。STaR 的应用已经在任务中显示出令人鼓舞的结果,例如算术、数学文字问题和常识推理。在常识问答中,STaR 提高了少次基线和直接微调以预测答案的基线,并且其性能与一个 30 倍大的模型相当。
标记上下文提示
“标记上下文提示” 的概念围绕着为 AI 模型提供额外的上下文层,方法是标记输入中的某些信息。这些标记本质上是 AI 的标志,指导它如何准确地解释上下文并生成相关且事实性的响应。
想象一下,你正在与朋友讨论一个特定的主题,比如 “国际象棋”。你做出一个陈述,然后用一个引用来标记它,例如 “(来源:维基百科)”。现在,你的朋友(在这种情况下是 AI 模型)知道你的信息来自哪里。这种方法旨在通过减少幻觉或生成虚假事实的风险,使 AI 的响应更加可靠。
标记上下文提示的一个独特方面是其潜力,可以提高 AI 模型的 “上下文智能”。例如,该论文使用来自多个来源的各种问题来展示这一点,例如总结的维基百科文章和最近出版的一本书中的章节。问题被标记,向 AI 模型提供了关于信息来源的额外上下文。
这种额外的上下文可以在生成不仅准确而且符合提供的上下文的响应时证明是非常有益的,使 AI 的输出更加可靠和值得信赖。
结论:对有前途的技术和未来方向的探索
OpenAI 的 ChatGPT 展示了大型语言模型(LLM)在处理复杂任务方面的潜力。像少次学习、ReAct 提示、链式思维和 STaR 这样的高级技术使我们能够利用这一潜力,应用于广泛的应用领域。尽管存在知识冲突、过度依赖参数化知识和潜在的幻觉等挑战,但这些 AI 模型在正确的提示工程下已经证明了它们可以成为变革性的工具。
指令微调、上下文忠实提示和与外部数据源集成进一步扩大了它们的能力,使它们能够推理、学习和适应。随着我们深入探索这些方法的细微差别,我们发现它们正在如何塑造人机交互的未来,并为 AI 的更丰富、更安全的交互铺平了道路。


















