当前位置: 首页 > news >正文

【提示工程】Ch2-提示技术(Prompt Technique)

目录

  • 提示技术(Prompt Technique)
    • 1、通用提示(General Prompting)/ 零样本(Zero-Shot)
    • 2、单样本(One-shot)和 少样本(few-shot)
    • 3、系统提示、上下文(system、contextual)提示与角色提示(role prompting)
      • (1)系统提示(system Prompting)
      • (2)角色提示(Role Prompting)
      • (3)上下文提示(Contextual Prompting)
    • 4、逐步回溯提示(step back Prompt)
      • 思维链 (CoT:chain of thought)

内容较长,耐心看完,定有收获!

提示技术(Prompt Technique)

大型语言模型(LLM)经过大规模数据训练并针对指令跟随进行了优化,使其能够理解用户提示并生成相应回答。然而,LLM 仍存在一定局限性:提示越清晰、越明确,模型生成准确文本的能力就越强。此外,结合对 LLM 训练方式与工作机制的理解,采用特定的提示技术能够进一步提升生成结果的相关性和质量。

在了解了提示工程的基本概念及其要素之后,接下来我们将深入探讨几种最重要的提示技术示例。

1、通用提示(General Prompting)/ 零样本(Zero-Shot)

“零样本”提示是最基本的一类提示方式。它仅通过任务描述和一段文本作为输入,引导大语言模型(LLM)开始生成。输入内容可以是问题、故事开头或指令等任意形式。“零样本”这一名称意指“不提供示例”。

我们以 Vertex AI Studio(语言版)为例,该平台提供了一个用于测试提示的 Playground 环境。如表1所示,这是一个使用零样本提示对电影评论进行分类的示例。

采用如下表格格式是一种高效记录提示的方式。由于提示往往需经过多次迭代才能最终部署到代码库中,保持提示工程工作的结构化和系统性非常重要。关于该表格格式的更多说明、如何跟踪提示工程实验,以及提示开发流程的重要性,将在本章“最佳实践”部分(“记录各类提示尝试”)进一步讨论。

在本示例中,应将模型温度(Temperature)设置为较低值,因为该任务不需要创造性输出。我们使用 gemini-pro 模型默认的 Top-K 和 Top-P 参数,这些默认值实际上等效于禁用这两项设置(详见“LLM 输出配置”部分)。请注意生成的输出结果:由于“disturbing”和“masterpiece”这两个词出现在同一句话中,它们应使分类预测变得略微复杂。

| Name                     | 1_1_movie_classification          |
|--------------------------|-----------------------------------|
| Goal                     | 将电影评论分类为正面、中性或负面。    |
| Model                    | gemini-pro                        |
| Temperature              | 0.1                               |
| Token Limit             | 5                                 |
| Top-K                    | N/A                               |
| Top-P                    | 1                                 |
| Prompt                   | 将电影评论分类为 POSITIVE, NEUTRAL 或 NEGATIVE。评论: "Her" is a disturbing study revealing the direction humanity is headed if AI is allowed to keep evolving, unchecked. I wish there were more movies like this masterpiece. Sentiment: |
| Output                   | POSITIVE                          |

当零样本提示效果不佳时,可以在提示中提供示范或具体示例,此时便引入了“单样本”(one-shot)和“少样本”(few-shot)提示方法。

2、单样本(One-shot)和 少样本(few-shot)

在为 AI 模型创建提示时,提供示例非常有帮助。这些示例可以帮助模型理解你所要求的内容。示例在你希望引导模型朝特定输出结构或模式发展时尤为有用。

单样本提示(One shot)提供单个示例,因此称为单样本。其理念是模型有一个可以模仿的示例来最好地完成任务。

少样本提示(few shot)⁷为模型提供多个示例。这种方法向模型展示它需要遵循的模式。其理念与单样本类似,但多个示例增强了模型遵循所需模式的可能性。

你需要的少样本提示(few shot)示例数量取决于几个因素,包括任务的复杂性、示例的质量以及你使用的生成式 AI(通用 AI)模型的能力。作为一般经验法则,你应至少使用三到五个示例进行少样本提示。然而,对于更复杂的任务,你可能需要使用更多示例;或者由于模型的输入长度限制,你可能需要使用更少的示例。

表 2 显示了一个少样本提示示例,让我们使用相同的 gemini-pro 模型配置设置,与之前相同,只是增加了Token限制以适应更长的响应需求。
在这里插入图片描述
在这里插入图片描述

在选择提示中的示例时,应选用与目标任务高度相关的实例。这些示例应当具备多样性、高质量和规范的语言表达。即使是微小的错误也可能误导模型,导致产生不符合预期的输出。

若希望模型生成的输出对各种输入都具有良好的稳健性,则应在示例中涵盖边缘情况。边缘情况指那些异常或意外的输入类型,但仍期望模型能够正确处理它们。

3、系统提示、上下文(system、contextual)提示与角色提示(role prompting)

系统提示、上下文提示和角色提示都是用于引导大语言模型(LLM)生成文本的技术手段,但它们在功能和应用层面各有侧重:

  • 系统提示用于设定语言模型的整体上下文与任务目标。它确立了模型的“全局视角”,明确其应完成的任务类型,例如翻译文本、对评论进行分类等。
  • 上下文提示则提供与当前对话或任务直接相关的具体背景信息。它帮助模型理解当前输入的细微差异,从而生成更贴合情境的回应。
  • 角色提示通过赋予语言模型一个特定的身份或角色,引导其生成符合该角色设定、知识背景和行为特征的文本。

尽管系统、上下文和角色提示在实际应用中可能存在重叠——例如,一个系统提示中可能同时包含角色设定和上下文信息——但三者仍具有不同的主要目标:

  • 系统提示:界定模型的核心能力与整体任务框架;
  • 上下文提示:提供与当前任务高度相关且动态变化的具体信息,以指导模型生成响应;
  • 角色提示:塑造模型的输出风格与语言个性,增强回应的特定性和拟人化程度。

明确区分这三种提示类型,有助于设计意图清晰、结构良好的提示策略。它不仅允许灵活的组合方式,也使得分析各类提示对模型输出的影响变得更加可行。

接下来,我们将对这三种提示类型进行更深入的探讨。

(1)系统提示(system Prompting)

表3展示了一个系统提示,其中我明确规定了输出返回的具体方式。通过提高Temperature参数,模型获得了更高的创造性水平;同时,我还设置了更高的token数量限制以支持更长的生成内容。尽管采取了这些开放性设置,但由于对输出格式给出了清晰约束,模型并未产生任何冗余文本。
在这里插入图片描述

系统提示可用于生成符合特定需求的输出内容。“系统提示”这一名称本质上代表着“向系统提供附加任务指令”。举例来说,您可以通过系统提示生成与特定编程语言兼容的代码片段,或要求系统返回特定结构的数据。请参阅表 4,我在其中以 JSON 格式返回了相应的输出结果。

在这里插入图片描述
在这里插入图片描述

从提示中直接返回 JSON 对象具有多重优势。在实际应用中,这种方式避免了手动构建 JSON 结构的繁琐,可直接输出已按指定顺序排列的数据(在处理日期时间等对象时尤为便捷)。更重要的是,要求模型返回 JSON 格式能够有效约束其输出结构,显著减少幻觉内容的生成。

系统提示在增强安全性和控制有害内容方面同样具有重要价值。只需在提示中添加一句明确的指令,例如:“你应在回答中始终保持尊重”,即可有效引导模型生成符合伦理和安全标准的回复。

(2)角色提示(Role Prompting)

角色提示(Role Prompting)是提示工程中的一项关键技术,指为生成式 AI 模型设定特定角色,以引导其生成更贴合场景、信息更丰富的回复。通过赋予模型明确的角色身份,可以使其基于该角色的视角和语境调整输出内容,从而提升响应的相关性和准确性。

例如,可让生成式 AI 模型扮演图书编辑、幼儿园教师或励志演讲者等不同角色。一旦角色设定完成,用户即可提出与该角色相关的具体任务,如请教师角色生成可供审阅的课程计划。这种技术能够有效约束模型输出风格与内容范围,增强实际应用的针对性和可控性。请参考表 5,其中展示了模型作为旅游向导进行回复的示例。
在这里插入图片描述

上述示例展示了让 AI 扮演旅行代理人角色时的输出效果。若将角色调整为地理教师,你将发现其回应在内容和风格上均会有所不同。

为 AI 模型设定角色视角,实际上是为其提供了表达语气、行文风格和专业聚焦方向的蓝图。通过明确角色定位,可以有效引导模型生成更高质量、更具相关性且更符合实际需求的输出,从而显著提升回答的准确性和实用性。
在这里插入图片描述

(3)上下文提示(Contextual Prompting)

通过提供充分的上下文信息,你可以确保与 AI 的交互尽可能无缝且高效。模型能够更快速地理解你的请求,并生成更准确、更相关的响应。如表 7 的示例所示,恰当的上下文能够显著提升模型输出的质量和实用性。
在这里插入图片描述

4、逐步回溯提示(step back Prompt)

逐步回溯提示(Step-Back Prompting) 是一种技术,通过引导大语言模型(LLM)首先思考与特定任务相关的更广泛问题,然后将得到的答案作为后续具体任务提示的输入。这一“回溯”步骤能够激活 LLM 中相关的背景知识和推理机制,为其后续处理具体问题奠定基础。

通过关注更广泛、更具原则性的问题,LLM 能够生成更准确、更具洞察力的回答。逐步回溯提示鼓励模型进行批判性思考,并以创新方式运用其已有知识。该方法通过调动 LLM 参数中更多通常难以在直接提示中触发的知识,从而改变最终执行任务时的提示效果。

此外,采用逐步回溯提示还有助于减轻模型响应中的偏见,因为它将关注点从具体细节转向更具普遍性的原则,从而推动更中立的推理。

以下通过示例对比来进一步理解逐步回溯提示如何提升生成结果:首先分析一个传统提示案例(表 8),再与相应的逐步回溯提示(表 9)进行比较:
在这里插入图片描述

当你将温度参数设置为1时,模型可能会生成多样且富有创意的故事情节,但其结果往往具有较强的随机性,且内容容易显得泛化、缺乏独特性。让我们先退一步思考:
在这里插入图片描述

是的,这些主题看起来非常适合用于第一人称射击游戏。现在,让我们回到最初的提示,但这一次,我们会将逐步回溯所得到的答案作为上下文信息一并输入,观察模型会返回怎样的结果。
在这里插入图片描述

这看起来像是一款有趣的视频游戏!通过使用逐步回溯提示技术,你可以提高提示的准确性。

思维链 (CoT:chain of thought)

思维链(Chain-of-Thought, CoT)提示是一种通过引导大型语言模型(LLM)生成中间推理步骤以增强其推理能力的技术。该机制能够有效提升模型在复杂任务中的应答准确性。CoT 提示通常可与少样本提示结合使用,从而在需要多步推理的问题上取得更优性能,因为纯粹的零样本思维链推理仍具有一定挑战性。

CoT 提示具备多方面的优势。首先,该方法成本较低且效果显著,可直接应用于现成的预训练模型,无需额外微调。其次,借助 CoT,用户可以清晰观察模型生成答案的推理过程,从而更好地理解其决策逻辑。若出现错误,也更容易定位问题所在。此外,思维链提示在不同版本或规模的 LLM 之间表现出较强的鲁棒性,即提示效果受模型变动的影响相对较小,相比不引入推理链的方法更为稳定。当然,CoT 方法也存在一些局限,但这些缺点相对直观。

需要注意的是,CoT 推理通常会导致生成长度更长的响应,即消耗更多的输出 token,因此可能会带来更高的推理成本和更长的响应时间。

为具体说明 CoT 的应用,我们将在表 11 中首先构建一个不使用思维链提示的示例,以突显大型语言模型在缺乏中间推理引导时可能存在的不足。
在这里插入图片描述

这个答案显然是错的。实际上,大型语言模型(LLM)在处理数学问题时常常会遇到困难,甚至可能在像两数相乘这样简单的运算上出错。这主要是因为它们主要基于海量文本进行训练,而数学推理往往需要不同的思维方式和方法。接下来,我们看看引入中间推理步骤是否能够改善输出效果。
在这里插入图片描述

很好,现在最终答案正确了。这得益于我们明确指示大型语言模型(LLM)逐步解释推理过程,而非直接要求给出答案。有趣的是,模型采用了将17年的增量逐步累加的方式。如果是我自己计算,我会先算出我和伴侣之间的年龄差,然后再基于当前年龄进行求和,例如:20 + (9 - 3)。看来,我们还需要帮助模型更深入、更自然地“思考”,就像人类推理时那样。

表12展示了一个“零样本”思维链(Zero-shot Chain-of-Thought)的示例。而思维链提示在与单样本或少样本提示结合时,表现尤为强大,具体效果您可以在表13中看到。
在这里插入图片描述

思维链技术可广泛应用于多种场景。例如,在代码生成任务中,可以将需求拆解为多个步骤,并将每个步骤映射为具体的代码实现。又如,在合成数据生成场景中,若已拥有如“产品名称为XYZ”之类的种子数据,可通过引导模型基于给定标题生成假设性内容。一般而言,任何能够通过“分步说明”解决的任务,都适合采用思维链方法。如果你能够将问题的解决过程分解为清晰的步骤,不妨尝试运用思维链策略。

具体实践可参考托管于Google Cloud Platform GitHub存储库中的“Notebook”,其中对思维链提示技术进行了更详细的阐述:

在本章的最佳实践部分,我们将进一步探讨一些专门针对思维链提示的优化方法。

未完待续……

http://www.dtcms.com/a/390961.html

相关文章:

  • vLLM - Worker
  • GitHub上面仓库名写错了,怎么改
  • 项目中的图形验证码是前端还是后端实现?
  • ✅ 基于Scrapy与朴素贝叶斯的校园舆情监测与预警系统 Django+B/S架构 可视化大屏 机器学习
  • Unity UI 插件 | Easy Popup System
  • AI证件照制作 API 快速生成证件照
  • @RequestParam和 @RequestBody能一起用吗
  • 构建高效的电商爬虫代理池:从架构设计到实战优化
  • 使用cJSON库实现JSON与C结构体的互转
  • Cursor :Python 运行路径设置自定义模块导入报错:No module named ‘xxx’ 的解决方案
  • 数图信息科技亮相唐山社区零售论坛,数字化赋能行业高质量发展
  • LLM大模型 - 实战篇 - Assistant API 原理与实战应用
  • python微博舆情分析系统 情感分析 爬虫 机器学习 新浪微博 数据采集 大数据技术(源码)✅
  • FreeRTOS消息队列剖析讲解(思路+源码)
  • Trillium Engineering-无人机万向节有效负载 - 用于战术 UAS 的 EO 和 EO/IR 无人机相机万向节
  • 【Linux网络】Socket编程预备
  • pyAutoGUI 模块主要功能介绍-(4)消息框功能
  • 自学嵌入式第四十三天:硬件方面-ARM体系架构
  • PDF清晰度提升的幕后英雄:ImprovePdf
  • 《中国垒球规则》快投垒球局面规则·垒球5号位
  • Spring Boot 快速入门:构建企业级微服务架构
  • 【论文阅读】 WebDancer: Towards Autonomous Information Seeking Agency
  • MySQL集群运维
  • 未来浏览器:重新定义信息获取与交互
  • Mybatis-plus插件功能
  • weex分析美联储降息新周期:市场迎来机遇与挑战
  • Micronaut 集成 SPL 实现微服务
  • 类加载的过程以及双亲委派模型
  • 将 RabbitMQ 与 .NET Core Web API 和 Worker Services 结合使用
  • 面试编程题(三)