提示工程是一个新兴的领域,专注于开发、设计和优化提示,以增强 LLM 的输出,从而满足您的需求。它为您提供了一种引导模型的行为从而达到您想要实现的结果的方法。
提示工程与微调不同。在微调中,使用训练数据调整权重或参数,目标是优化成本函数。就计算时间和实际成本而言,微调可能是一个昂贵的过程。然而,提示工程试图引导经过训练的 FM、LLM 或文本到图像模型给出更相关、更准确的答案。
提示工程是充分发挥大语言模型的强大能力的最快方法。通过利用一系列问题、语句或指令与 LLM 交互,您可以根据您希望实现的输出的特定上下文来调整 LLM 输出行为。
有效的提示技术可以助力您的企业实现以下益处:
- 提高模型的能力,增强安全性。
- 使用领域知识和外部工具增强模型,而无需更改模型参数或进行微调。
- 与语言模型交互以掌握其全部能力。
- 通过更高质量的输入获得更高质量的输出。
提示的要素
提示的形式取决于您给模型指定的任务。当您探索提示工程示例时,您会注意到提示包含以下部分或全部要素:
- •指令:这是大语言模型要执行的任务。它提供模型应如何执行任务的描述或说明。
- •上下文:这是用于引导模型的外部信息。
- 输入数据:这是需要响应的输入
输出指示:这是输出类型或格式
评估模型的响应
- 务必检查模型的响应,以确保提示产生适当质量、类型和范围的响应。根据需要更改提示。您甚至可以要求模型的一个副本改进或检查模型的另一个副本的输出。
- 通过反复尝试,您将提升您撰写和优化提示的直觉,从而最好地适应您的需求和模型。提示工程是一种可通过实践不断提高的迭代技能。
零样本提示是这样一种提示技术:用户向 LLM 提出任务,而不给模型提供进一步示例。在这种技术中,用户期望模型在没有事先理解或尝试任务的情况下执行任务。现代 LLM 表现出卓越的零样本能力。
使用零样本提示技术的技巧包括:
- •LLM 越大,零样本提示产生有效结果的可能性就越大。
- •指令调整可以改进零样本学习。您可以采用基于人类反馈的强化学习 (RLHF, reinforcement learning from human feedback) 来扩展指令调整,使现代 LLM 更好地适应人类偏好。
小样本提示是这样一种提示技术:您为模型提供有关所请求执行的任务的上下文信息。在这种技术中,您同时提供任务和所需输出的示例。在提示条件中提供此上下文或少量样本,可以使模型严格遵循任务指导。
小样本提示中的标签不必正确即可提高模型性能。通常,应用随机标签比完全不使用标签要好。然而,演示指定的标签空间和输入文本的分布很重要。此上下文中使用的“标签”一词是指提示示例的输出。“提示示例”中的语句所表达的情绪是标签的示例。
如果您有大量示例可以利用,请使用技术来遵守模型的标记限制并动态填充提示模板。您可以使用基于语义相似度的示例选择器来提供帮助。
思维链 (CoT, chain-of-thought) 提示通过中间推理步骤分解复杂的推理任务。您可以将零样本提示技术和小样本提示技术与 CoT 提示结合使用。 思维链提示特定于问题类型。您可以使用短语“一步一步地思考”在机器学习模型中调用 CoT 推理。
基本提示技术并不总是能提供您的特定业务任务所需的结果。本节课将向您介绍多种高级技术。您将学习每种高级技术的运作方式,您还将进一步了解哪种使用案例最适合每种策略。
自洽性是一种类似于思维链提示的提示技术。然而,自洽性技术不采取明显的一步一步路径或贪婪路径,而是提示模型对各种推理路径进行采样。然后,模型根据来自各个路径的多个数据点聚合最终答案。根据 Xuezhi Wang 等人撰写的文章“利用自洽性提高语言模型中的思维链推理效果”(Self-Consistency Improves Chain of Thought Reasoning in Language Models),当用于一系列常见算术和常识推理基准时,自洽性可以改进 CoT 推理提示。
思维树 (ToT, Tree of thoughts) 是另一种基于 CoT 提示技术的技术。CoT 提示按顺序对思维进行采样,但 ToT 提示遵循树分支技术。通过 ToT 技术,LLM 可以采用细致入微的方式学习,考虑多条路径而不是一条顺序路径。
对于涉及重要初始决策、未来策略和探索多种解决方案的任务,ToT 提示是一种特别有效的方法。大多数 LLM 通过遵循标准的从左到右的标记级推理来做出决策,但通过 ToT,LLM 可以自行评估选择。
根据 Shunyu Yao 等人撰写的文章“思维树:让大型语言模型深思熟虑地解决问题”(Tree of Thoughts: Deliberate Problem Solving with Large Language Models),ToT 显著提高了模型处理需要重要规划的任务时的性能。Yao 和其他研究人员在三个任务中测试了 ToT 方法:创意写作、迷你填字游戏和 24 点游戏(一种数学学习游戏)。在 24 点游戏任务中,生成式预训练变换器模型 4 (GPT-4, Generative Pre-trained Transformer 4) 通过 CoT 提示取得了 4% 的成功率。而模型通过 ToT 提示方法取得了 74% 的成功率。
检索增强生成 (RAG, Retrieval Augmented Generation) 是一种提示技术,它提供领域相关的数据作为上下文,以基于这些数据和提示生成响应。该技术类似于微调。然而,RAG 不必使用一小组标注示例对 FM 进行微调,而是从大型语料库中检索一小组相关文档,并使用这些文档提供上下文来回答问题。RAG 不会改变基础模型的权重,而微调会改变模型权重。
这种方法比常规微调更具成本效益,因为 RAG 方法不会产生对模型进行微调的成本。RAG 还解决了数据频繁更改带来的挑战,因为它会检索更新的相关信息,而不是依赖可能过时的数据集。
在 RAG 中,外部数据可以来自多个数据源,例如文档存储库、数据库或 API。在将 RAG 用于 LLM 之前,您必须准备知识库并使其保持最新。下图显示了在 LLM 中使用 RAG 的概念化流程。要查看在知识库准备好后模型进行学习的步骤,请分别选择四个带编号的标记。
与自洽性和 ToT 提示技术一样,ART 是一种基于思维链过程的提示技术。Bhargavi Paranjape 撰写的“ART:大语言模型的自动多步推理和工具使用”(ART: Automatic multi-step reasoning and tool-use for large language models) 一文详细讨论了 ART 技术,该技术专门用于多步推理任务。
该技术本质上是通过让模型从任务库中选择多个或少量示例的演示来解构复杂的任务。在模型使用这种小样本分解的同时,它使用预定义的外部工具(例如搜索和代码生成)来执行任务。
研究表明,对于未见过的任务,ART 的表现明显优于小样本提示和自动 CoT,并且在大多数任务中,它的表现与手动 CoT 提示相当。使用 ART,人类还能够更高效地更新任务库中的信息,从而纠正错误并最终提高性能。
在 ReAct 提示中,LLM 可以将推理和动作结合起来。根据 Shunyu Yao 的文章“ReAct:语言模型中推理和动作的协同作用”(ReAct: Synergizing Reasoning and Acting in Language Models),模型通常用于推理或动作,但并不总是能同时有效地用于这两者。
CoT 提示表明 LLM 有望为简单的任务(例如数学)进行推理和生成动作。但是,无法在 CoT 提示下更新信息或访问外部上下文,可能会导致输出发生事实幻觉等错误。借助 ReAct 框架,LLM 可以生成基于外部工具(例如维基百科页面或 SQL 数据库)的推理跟踪和特定于任务的动作。这种外部上下文可产生更准确可靠的输出
提示注入
提示注入是一种通过使用提示中的指令来影响模型输出的技术。例如,黑客可能会向文本生成模型提供包含有害、不道德或有偏差的内容的提示,以生成类似的有害、不道德或有偏差的文本。然后,黑客可以使用此文本大规模生成假新闻、教义宣传或其他恶意内容。提示注入还可用于非恶意活动,例如覆盖模型的响应、自定义翻译以保留产品名称等。
提示泄露
提示泄露是指生成式 AI 系统可能通过其生成的提示或示例泄露敏感或私人信息的风险。 例如,如果系统使用私人客户数据进行训练以生成产品建议,则可能会泄露有关客户购物的详细信息。该系统还可能通过为新客户生成的建议泄露有关客户浏览历史记录的详细信息。这可能会侵犯客户的隐私,影响客户对系统的信任。
用于训练 AI 模型的数据可能有偏差。如果数据有偏差,AI 模型可能会重现这些偏差。最终,您可能会得到有偏差或不公平的输出。偏差可以通过以下两种方式出现在提示工程中。
一,如果提示建立在假设的基础上,那么提示本身可能是有偏差的。例如,如果查询假设所有软件开发人员都是男性,则可能会导致 AI 产生偏向于男性的结果。
二,即使编写的提示没有偏差,AI 模型有时也会产生有偏差的结果。产生这些结果是由于训练数据中可能存在偏差。例如,即使给出性别中立的提示,如果 AI 模型在接受训练时主要使用以男性软件开发人员为特征的数据,那么它也可能会提供假设软件开发人员是男性的响应。
如果在训练模型时没有足够的数据,这种缺乏数据的情况可能会导致偏差。如果模型是在数据不足的情况下进行训练的,则会导致模型置信度低。大多数毒性筛选条件和排序算法本质上会优先考虑模型置信度。这导致许多群体被推定为排除在外,从而使偏差长期存在。
以下三种技术可以帮助减少 FM 中的偏差。
- 更新提示。提供明确指引可大规模减少意外的表现。
- 增强数据集。提供不同类型的代词并添加不同的示例。
- 使用训练技术。使用公平损失函数、红蓝对抗、RLHF 等技术。