Azure Machine Learning - 提示工程简介

OpenAI的GPT-3、GPT-3.5和GPT-4模型基于用户输入的文本提示工作。有效的提示构造是使用这些模型的关键技能,涉及到配置模型权重以执行特定任务。这不仅是技术操作,更像是一种艺术,需要经验和直觉。本文旨在介绍适用于所有GPT模型的提示概念和技巧。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人

file

提示工程基本概念

本部分介绍 GPT 提示的基本概念和元素。

文本提示是用户与 GPT 模型交互的方式。 与所有生成语言模型一样,GPT 模型会尝试生成最有可能紧跟上一个文本的下一系列字词。 就好像我们在说“当我说 <prompt> 时,你想到的第一件事是什么?”。 以下示例演示了此行为。 给定著名内容的开头,模型能够准确地延续文本。

PromptCompletion
87 年前,我们的先辈们在这个大陆上创立了一个新国家,它孕育于自由之中,并致力于所有人生而平等的信条。 […]
“叫我 Ishmael。”“几年前–不要在意确切的时间–我钱包里几乎没有什么钱,岸上也没有什么特别吸引我的事情,所以我想航行一下,看看这个世界中被水覆盖的部分。”[…]

在开发更复杂的提示时,记住这一基本行为会很有帮助。 无论提供的提示是什么,模型都只是使用它确定的最有可能的情况(基于训练数据和训练目标)做出响应。 如果在提示中提出问题,则模型不会遵循单独的“Q&A”代码路径,而是看起来在回答问题,因为回答即是输入的给定问题最有可能的响应。

提示组件

当使用补全 API 而提示的不同部分之间没有区别时,它对于学习和讨论以识别基础提示组件仍然很有用。 使用[聊天补全 API]时,提示的不同部分以具有关联角色(系统、用户和助手)的字典数组的形式发送到 API。 本指南更笼统地侧重于如何考虑提示构造,而不是提供特定于某个 API 的规范性指导。

同样重要的是要了解,虽然可能存在其他有效的方法来剖析提示,但这种分解的目标是提供一种相对简单的方法来理解提示构造。 使用补全 API 时,所有组件都是可选的,但必须至少有一个组件存在,而大多数提示包含多个组件。 组件之间也可能存在一些灰色区域。 下面显示的顺序大致对应于每个组件的使用方式(从最多到最少)。

Instructions

指令可能是最常用的提示组件。 指令很简单:向模型说明要执行的操作。 虽然概念简单,但它在实践中可能比较复杂。 下表以两种不同形式显示简单和复杂的指令,借此来说明这一点。

指令类型PromptCompletion
简单指令为每周新闻稿撰写简介。欢迎阅读我们的每周新闻稿。 本周,我们特别关注工作效率。 我们将分享有关如何在生活的各个方面提高工作效率的提示和技巧。 我们希望你喜欢并请与你的朋友分享!
复杂指令为名为 Contoso 的公司撰写每周新闻稿简介。 它应该要提及我们上周举行的精彩的全体会议,并感谢团队在过去几个月的辛勤工作。欢迎阅读 Contoso 的每周新闻稿! 我们上周举行了一次精彩的全体会议,我要感谢团队在过去几个月的辛勤工作。 我们期待着一个光明的未来,我相信,在我们团队的奉献和投入下,我们将取得伟大的成就。 感谢你成为我们团队的一员,我期待着在未来几周和几个月内与你们一起工作。 此致,[你的名字]。
复杂指令为每周新闻稿编写简介,包括以下内容: 我的公司名为 contoso 兴高采烈的问候 感谢团队在艰难的几个月里辛勤工作 下一季度的积极前景 由 SLT 签名你好,Contoso 团队! 我想花点时间感谢你们过去几个月的辛勤工作。 这是艰难的几个月,但你们都团结在一起,完成了非常棒的工作。 我真的很为你们感到骄傲。 展望下个季度,我感到非常向上。 我觉得我们会取得一些伟大的成就。 再次感谢,高级领导团队。

主要内容

主要内容是指模型正在处理或转换的某种文本。 主要内容通常与指令一起使用。 一个简单的示例是语言翻译。 在下面的示例中,英语文本被视为主要内容,而“翻译为法语:”是指令。

PromptCompletion
Can you please tell me how to get to the museum? 翻译为法语:Pouvez-vous s'il vous plaît me dire comment aller au musée?

主要内容也可以更长。 在以下示例中,主要内容是维基百科时间复杂度条目的简介部分,长度近 300 字。 为了便于显示,此内容已在表中缩写。

PromptCompletion
在计算机科学中,时间复杂度是指计算复杂度,用于描述运行算法所需的计算机时间量。 时间复杂度通常通过 […] 估计 将前面的文本汇总为几个句子:时间复杂度是度量算法运行所需时间的方法。 它通常表示为输入大小的函数。 最常见的度量值是最差情况的时间复杂度,即给定大小的输入所需的最大时间量。
在计算机科学中,时间复杂度是指计算复杂度,用于描述运行算法所需的计算机时间量。 时间复杂度通常通过 […] 估计 TL;DR`(太长没看)算法的时间复杂度是运行算法所需的时间量。 通常通过计算算法执行的基本操作数来估计时间复杂度,假定每个基本操作的执行时间都是固定的。 时间复杂度通常表示为输入大小的函数。

GPT 模型还可以处理结构化的主要内容。 在下面的示例中,有关比利时啤酒的 TSV(本文中为显示为缩写)作为提示的一部分传递给模型。 它能够正确解释内容并回答有关数据的问题。

PromptCompletion
Belgian Beer Brands Beer name Beer style color ABV Brewery "Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist) "Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00% […] 参考上表,有多少啤酒小于 6% ABV?表中有 10 种啤酒的 ABV 小于 6%。

示例

成功的提示通常依赖于“单样本”或“少样本”学习。 这是指加入模型所需行为的一个或多个示例,通常做法是加入输入和输出对。 这不是从模型进行永久更改这一意义上学习,而是通过示例更好地使模型能够仅根据当前推理的需求做出响应。 使用没有示例的提示有时称为“零样本”学习。 请注意,使用聊天补全 API 时,在初始系统消息后,少样本学习示例通常以示例用户/助手交互的形式添加到消息数组中。

学习类型PromptCompletion
零样本头条:教练相信伤病不会破坏勇士队 主题:教练相信伤病不会破坏勇士队的赛季。 球队仍然专注于他们的目标,他们将继续努力实现他们的目标。
少样本头条:双城队的科雷亚将选择跳出合同,试水自由市场 主题:棒球 头条:卡塔尔世界杯将设有清醒区 主题:足球 头条:耶茨:第 6 周范特西橄榄球情报 主题:橄榄球 头条:教练相信伤病不会破坏勇士队 主题:篮球

上面的示例演示了少样本学习的效用。 如果没有这些示例,模型似乎在猜测所需的行为,而示例则清晰地向模型展示了如何操作。 这也演示了模型的强大功能,它可以推断出所需的标签类别,即使示例中没有“篮球”标签。

指示

指示充当模型输出的“快速启动”,帮助将模型定向到所需的输出。 它通常是模型可以作为生成基础的前缀。 在下面的示例中,我们演示了引导故事以包含关键元素的指示。 指示通常与指令一起使用,但并非总是如此。 在下面的示例中,该模型用于汇总长公告电子邮件。 指示在一种情况下用于帮助聚焦模型的输出,在另一种情况下用于建议特定输出格式(项目符号)。

在聊天补全 API 的上下文中,指令采用系统消息的形式,通过提供一系列示例用户/助手交互来指示少样本示例以帮助启动模型。

指示数PromptCompletion
0绩效评估是我们在 Contoso 实施的绩效 & 发展方法的核心组成部分。 […] 总结上述电子邮件:这封电子邮件的目的是通知员工最近对绩效评估体验进行了更改,这是 Contoso 绩效 & 发展方法的一部分。 这些更改包括改进结构、升级工具内用户体验和重点提示。 此外,现在还有一个可选的“对话启动器”部分,供员工标记他们希望与经理讨论的主题。
1绩效评估是我们在 Contoso 实施的绩效 & 发展方法的核心组成部分。 […] 总结上述电子邮件: 邮件的关键要点是Contoso 通过更加专注于核心优先事项、期望和影响来改进绩效评估体验。 此外,他们还使用小贴士、资源和指南来升级工具内用户体验。 最后,他们添加了有关如何激活公司范围内的核心优先事项的指导。
2绩效评估是我们在 Contoso 实施的绩效 & 发展方法的核心组成部分。 […] 总结上述电子邮件: 要点: •Contoso 正在根据员工的反馈推出对绩效评估体验的更改。 •这些更改包括对核心优先事项、期望和影响的新侧重;升级用户体验;以及公司范围核心优先事项的新指南。 •绩效评估是反思过去绩效和学习以及规划未来优先事项和增长机会的机会。 •员工和经理应在绩效考核会议之前撰写评论。 •每年至少应进行两次绩效评估。 •每次评估的时间投资应保持大致相同。

支持内容

支持内容是模型可用于以某种方式影响输出的信息。 它与主要内容的不同之处在于,它不是任务的主要目标,但它通常与主要内容一起使用。 常见示例包括上下文信息,例如当前日期、用户名、用户偏好等。 以下示例使用支持内容来帮助为用户安排一组计划的研讨会。 如果没有支持(重要主题),模型只会列出研讨会(为显示而截断),当被告知我的重要主题时,模型能够准确地分组会议。

支持内容PromptCompletion
没有研讨会列表: 标题描述 规划研讨会启动请加入我们以启动研讨会! 听取我们的领导关于未来一年的跨组优先事项和学习内容。 此活动的邀请已发送给 […] 中的每个人 总结上述研讨会,按主题分组:研讨会列表: 规划研讨会启动 - 规划研讨会总结 - 核心会面 - 客户驱动的观点 - 影响和重点领域 - 最佳做法 - 加速应用采用 […]
研讨会列表: 标题描述 规划研讨会启动请加入我们以启动研讨会! 听取我们的领导关于未来一年的跨组优先事项和学习内容。 此活动的邀请已发送给 […] 中的每个人 我的重要主题:提示工程、搜索、GPT 模型 总结上述研讨会,按我的重要主题分组:1. 提示工程: - 新的提示工程技巧 - 提示工程的艺术 2. 搜索: - 使用嵌入的矢量搜索简介 3. GPT 模型: - GPT-4 简介 - 深度了解 GPT-35-Turbo。

最佳做法

  • 尽量具体。 尽可能少留解读空间。 限制操作空间。
  • 具有描述性。 使用类比。
  • 强调。 有时可能需要对模型进行重复操作。 在主要内容之前和之后提供说明,使用指令和指示等。
  • 给事项排序。 向模型呈现信息的顺序可能会影响输出。 你选择是在内容之前放置指令(“汇总以下内容…”)还是之后(“汇总以上…”)会影响输出。 即使是少样本示例的顺序也很重要。 这被称为“近因偏差”。
  • 给模型一个“出路”。 如果模型无法完成分配的任务,有时为模型提供备用路径可能会有所帮助。 例如,在对一段文本提出问题时,可以加入类似于“如果答案不存在,则回复‘未找到’”之类的内容。这可帮助模型避免生成错误的响应。

空间效率

虽然输入大小会随着 GPT 模型的迭代而增加,但仍存在提供的数据超出模型所能处理的数据量的情况。 GPT 模型将单词分解为“标记”。 常见的多音节单词通常是单个标记,而不太常见的单词会按音节拆分。 标记有时可能违反直觉,如以下示例所示,它演示了不同日期格式的标记边界。 在这种情况下,拼出整个月份比使用完全数字的日期更具空间效益。 当前的标记支持范围:早期 GPT-3 模型支持 2000 个标记,最新的 GPT-4 模型 32k 版本支持最多 32,768 个标记。
file
由于空间有限,请务必尽可能高效地使用它。

  • 表格 – 如上一部分中的示例所示,GPT 模型可以非常轻松地理解表格格式的数据。 这是一种空间高效的包含数据的方式,相较于在每个字段前面加上名称(例如 JSON)。
  • 空格 - 连续的空格被视为单独的标记,这很容易浪费空间。 另一方面,单词前面的空格通常被视为与单词相同的标记的一部分。 请仔细观察空格的使用情况,不要在单独使用空格就足够时使用标点符号。

file

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/252887.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

diffuser为pipeline设置不用的scheduler

查看默认的schedulers&#xff1a; 使用默认的schedulers生成数据 查看默认scheduler的默认配置&#xff0c;定义了采样器中的相关参数&#xff0c;网上关于DDPM和DDIM的文章较多&#xff0c;可以先去看看这两种schedulers&#xff1a; 修改scheduler&#xff0c;可以用于…

13.二进制枚举练习题

文章目录 二进制枚举练习题[78. 子集](https://leetcode.cn/problems/subsets/)[77. 组合](https://leetcode.cn/problems/combinations/)[1286. 字母组合迭代器](https://leetcode.cn/problems/iterator-for-combination/)[2397. 被列覆盖的最多行数](https://leetcode.cn/pro…

CSS3 2D变形 过渡 动画

​​​​​ transform(2D变形)概述translate()平移scale()缩放skew()倾斜rotate()旋转transform-origin中心原点 CSS3 2D变形 3D变形 过渡 动画 在CSS3中&#xff0c;动画效果包括4个部分&#xff1a;变形&#xff08;transform&#xff09;、3D变形、过渡&#xff08;transit…

【Linux】cp问题,生产者消费者问题代码实现

文章目录 前言一、 BlockQueue.hpp&#xff08;阻塞队列&#xff09;二、main.cpp 前言 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯&#xff0c;而通过阻塞队列来进行通讯&#xff0c;所以生产者生产完数据之后不用…

计算机网络:网络层(无分类编址CIDR、计算题讲解)

带你快速通关期末 文章目录 前言一、无分类编址CIDR简介二、构成超网三、最长前缀匹配总结 前言 我们在前面知道了分类地址&#xff0c;但是分类地址又有很多缺陷&#xff1a; B类地址很快将分配完毕!路由表中的项目急剧增长! 一、无分类编址CIDR简介 无分类域间路由选择CI…

计算机网络:数据链路层(VLAN)

今天又学到一个知识&#xff0c;加油&#xff01; 目录 一、传统局域网的局限&#xff08;促进VLAN的诞生&#xff09; 二、VLAN简介 三、VLAN的实现 总结 一、传统局域网的局限&#xff08;促进VLAN的诞生&#xff09; 缺乏流量隔离:即使把组流量局域化道一个单一交换机中…

【Linux】初识命令行

为什么使用命令行&#xff1f; 大多数的计算机用户只是熟悉图形用户界面(GUI)&#xff0c;采用图形方式显示的用户操作界面。命令行界面(CLI)是一种通过文本输入来与计算机进行交互的方式&#xff0c;用来和计算机进行交流沟通的非常有效的方式&#xff0c;正像人类社会使用文…

【Windows】windows11右键默认显示更多选项的办法

Windows11系统的右键菜单显示&#xff0c;需要多点一次“显示更多选项”才能看到所有菜单内容&#xff0c;按下面步骤简单设置一下就能恢复成Windows经典的右键菜单显示。 1. 2.输入命令【reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a…

熬了一个通宵,把国内外的大模型都梳理完了!

大家好&#xff0c;大模型越来越多了&#xff0c;真的有点让人眼花缭乱。 为了让大家清晰地了解大模型&#xff0c;我熬了一个通宵把国内和国外的大模型进行了全面梳理&#xff0c;国内有189个&#xff0c;国外有20&#xff0c;同时包括大模型的来源机构、来源信息和分类等。 …

vue3+leaflet天地图开发

<script setup> import { onMounted, onUnmounted, ref } from "vue"; // todo 项目使用请放开 leaflet 引入 // import L from leaflet;const emit defineEmits(["mapLoad"]);var markers ref([]); const mapRef ref(); const marker ref(); co…

linux环境安装可操作图库语言Gremlin的图框架HugeGraph

原创/朱季谦 若你还没接触过图数据库&#xff0c;可能看到这个概念时&#xff0c;会比较蒙蔽。 图是什么&#xff1f;图数据库又是什么&#xff1f; 首先&#xff0c;在数据结构中&#xff0c;图是一种由顶点&#xff08;vertex&#xff09;集合及顶点间关系集合组成的一种非…

FRP内网映射家用服务器至公网访问

兄弟们&#xff0c;服务器到货了&#xff0c;后续与大家分享内容就用它了。我预装的操作系统是Centos8,首先要解决的是远程访问的问题。 【特别注意】下述的端口&#xff0c;记得在阿里云安全组配置中放开端口入规则&#xff01;&#xff01; 1. FRP服务器配置 之前我有购买…

如何将数据库导入MySQL的办法

在电脑cmd终端进行导入 首先找到MySQL中bin的位置 第一步&#xff1a;找到MySQL 第二步&#xff1a;进入MySQL 第三步&#xff1a;打开bin 第四步&#xff1a;输入cmd进入终端 第五步&#xff1a; 输入mysql -uroot -p 然后会弹出enter password&#xff1a; 输入你的密码…

Leetcode的AC指南 —— 链表:24. 两两交换链表中的节点

摘要&#xff1a; Leetcode的AC指南 —— 链表&#xff1a;24. 两两交换链表中的节点。题目介绍&#xff1a;给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能…

[计网01] 物理层 详细解析笔记,特性

计算机网络的物理层是网络协议栈中的第一层&#xff0c;负责传输原始的比特流&#xff08;bitstream&#xff09;通过物理媒介进行通信。物理层主要关注传输介质、信号的编码和调制、数据传输速率以及数据传输的物理连接等方面。 相关特性 机械特性&#xff08;Mechanical Ch…

Java已死!

许多开发者仍然认为 Java 与当今时代息息相关&#xff0c;看完本文&#xff0c;你会发现 Java 的影响力已经大幅减弱。实际上&#xff0c;Java 是一种濒临灭绝的编程语言。尽管 Java 一直是世界上使用最广泛、最受欢迎的编程语言之一&#xff0c;但它很快就会面临消亡的危险。 …

【C语言加油站】qsort函数的模拟实现

qsort函数的模拟实现 导言一、回调函数二、冒泡排序2.1 冒泡排序实现升序 三、qsort函数3.1 qsort函数的使用3.2 比较函数 四、通过冒泡排序模拟实现qsort函数4.1 任务需求4.2 函数参数4.3 函数定义与声明4.4 函数实现4.4.1 函数主体4.4.2 比较函数4.4.3 元素交换 4.5 my_qsort…

单片机控制步进电机

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、步进电机的工作原理是什么&#xff1f;二、连线图三、程序1.参考程序2.实际测试 四、开发板1.原理图2.实际连接图3.参考程序4.测试5. 思考 五、步距角总结 …

面向对象三大特征——继承

目录 1. 概述 2. 继承的限制 2.1 单继承 2.2 访问修饰符 2.3 . final 3. 重写 4. super 4.1super的作用 4.2访问父类的成员和被重写方法 4.3调用父类的构造器 1. 概述 多个类中存在相同属性和行为时&#xff0c;将这些内容抽取到单独一个类中&#xff0c;那么就无需在…

【JavaEE】多线程案例 - 定时器

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…