文章目录

  • 前言
  • 一、引言
  • 二、基本提示
  • 三、LLM设置说明
  • 四、标准提示
  • 五、提示的组成要素
  • 六、设计提示的通用技巧
    • 从简单开始
    • 指令
    • 具体性
    • 避免不准确性
    • 做还是不做?
  • 总结

前言

随着ChatGPT的大火,提示工程在大模型中的重要性不言而喻,本文参考国外Prompt Engineering Guide完成国内中文版本的《提示工程指南》,希望能够和大家一起交流,分享及发现提示工程的美妙之处。文章所有内容可以在ChatGPT_Prompt_Chinese中找到。


一、引言

提示工程学是一门相对较新的学科,用于开发和优化提示,以便高效地利用语言模型(LM)来进行各种应用和研究主题。提示工程技能有助于更好地了解大型语言模型(LLM)的能力和限制。研究人员使用提示工程来改善LLM在各种常见和复杂任务上的能力,例如问答和算术推理。开发人员使用提示工程来设计与LLM和其他工具接口的强大和有效的提示技术。

本指南介绍标准提示的基础知识,以提供如何使用提示与指导大型语言模型(LLM)进行交互和指导的大致概念。

除非另有说明,否则所有示例均使用chatgpt进行测试,所以输出内容和国外版本的文档有些出入。Prompt Engineering Guide的测试环境是text-davinci-003(使用OpenAI的playground进行测试)。它使用默认配置,例如temperature=0.7top-p=1


二、基本提示

您已经可以通过提示实现很多功能,但结果的质量取决于您提供的信息量。提示可以包含信息,例如您传递给模型的指令或问题,以及包括其他细节,例如输入或示例。

以下是一个简单提示的基本示例:

Prompt

天空是

Output

天空是什么?

正如您所看到的,语言模型根据 “天空是” 的上下文输出了一个问句。输出可能会出乎意料,或者远离我们想要实现的任务。

这个基本示例也突出了提供更多关于我们具体想要实现什么任务的上下文或说明的必要性。

让我们试着改进一下:

Prompt:

完成句子:
天空是

Output:

天空是一种美丽的自然景观,展现着无限的宽广和深邃。

这样是不是更好了?我们告诉模型完成句子,因此结果看起来好多了,它恰好遵循了我们告诉它要做的(“完成句子”)。这种设计最佳提示以指导模型执行任务的方法被称为提示工程

以上示例是当前语言模型可能的基本示例。当前的语言模型能够执行各种高级任务,从文本摘要到数学推理再到代码生成等等。


三、LLM设置说明

说明:这部分内容主要是针对davinci-003环境,本文演示的chatgpt已经是一个较成熟的产品了,因为不具备超参调节的功能

在使用提示时,您将通过API或直接与LLM进行交互。您可以配置一些参数以获得不同的提示结果。

  • Temperature- 简而言之,温度越低,结果越确定,即始终选择最可能的下一个标记。增加温度可能会导致更多的随机性,从而鼓励更多多样化或创造性的输出。我们基本上是增加了其他可能标记的权重。在应用方面,我们可能希望在基于事实的问答(QA)中使用较低的温度,以鼓励更多基于事实和简洁的回答。对于诗歌生成或其他创意任务,增加温度可能会有所好处。

  • Top_p - 同样,通过top_p进行采样,使用称为核采样的温度采样技术,您可以控制模型在生成响应时的确定性。如果您正在寻找准确和真实的答案,请保持较低。如果您希望获得更多样化的响应,请增加到较高的值。

一般建议是只更改其中一个参数而不是两个都更改。

在开始一些基本示例之前,请记住,您的结果可能会因您使用的LLM版本而有所不同。


四、标准提示

我们尝试了一个非常简单的提示。标准提示的格式如下:

<Question>?

这可以转换成QA格式,这在许多QA数据集中是标准格式,如下所示:

Q: <Question>?
A:

鉴于上述标准格式,一种流行且有效的提示技术被称为Few-shot提示,其中我们提供示例。Few-shot提示的格式如下:

<Question>?
<Answer>

<Question>?
<Answer>

<Question>?
<Answer>

<Question>?

你已经猜到了,其QA格式的版本如下所示:

Q: ?
A:

Q: ?
A:

Q: ?
A:

Q: ?
A:

请注意,我们在实际场景中并不一定需要使用QA格式。具体的格式取决于手头的任务。例如,您可以执行一个简单的分类任务,并给出演示该任务的实例,如下所示:

Prompt

这很棒!// 积极
这很糟糕!// 消极
哇,那部电影太棒了!// 积极
多么可怕的节目啊!//

Output

多么可怕的节目啊!// 消极

Few-shot提示使得在上下文学习中成为可能,即语言模型仅通过少量的示例就可以学习任务。我们将在即将发布的指南中看到更多这方面的内容。


五、提示的组成要素

随着我们越来越多地涉及提示工程的例子和应用,您会注意到组成提示的某些要素。

提示可以包含以下任何组成部分:

指令 - 您想让模型执行的具体任务或指令

上下文 - 可以涉及外部信息或附加上下文,可以引导模型做出更好的响应

输入数据 - 是我们有兴趣找到响应的输入或问题

输出指示 - 表示输出的类型或格式。

并非所有组成部分都是提示所必需的,格式取决于手头的任务。我们将在后面发布的指南中涉及更多具体的示例。


六、设计提示的通用技巧

以下是在设计提示时应牢记的一些技巧:

从简单开始

当您开始设计提示时,应牢记这是一个迭代的过程,需要大量的试验才能获得最佳结果。使用像OpenAI或Cohere这样的简单实验场所是一个很好的起点。

您可以从简单的提示开始,随着您的目标越来越明确,逐渐添加更多的元素和背景。在这个过程中进行版本控制非常重要。在我们阅读本指南时,您会看到许多例子表明,明确、简洁和精确通常会给您带来更好的结果。

当您有一个涉及许多不同子任务的大型任务时,可以尝试将任务分解为更简单的子任务,并随着您获得更好的结果而逐步构建。这避免了在提示设计过程中添加过多的复杂性。

指令

通过使用指令来指导模型进行各种简单任务的设计,例如“写入”、“分类”、“总结”、“翻译”、“排序”等。

请记住,您还需要进行大量的实验,以查看哪种方法最有效。尝试使用不同的指令、关键字、上下文和数据,看看什么对您的特定用例和任务最有效。通常,上下文对于您尝试执行的任务越具体和相关,效果越好。我们将在即将推出的指南中介绍采样和添加更多上下文的重要性。

其他人建议将指令放在提示的开头。建议使用一些清晰的分隔符,如“###”,来分隔指令和上下文。

例如:

Prompt:

###指令###
将下面的文本翻译成西班牙语:
文本:“嗨!”

Output

Texto: “¡Hola!”

具体性

在指示和任务上要非常具体。提示越详细,结果就越好。当您需要特定的输出或生成风格时,这一点尤其重要。并不存在能够导致更好结果的特定标记或关键字。拥有良好的格式和描述性的提示更加重要。实际上,在提示中提供示例非常有效,这样可以获得特定格式的所需输出。

设计提示时,您还应牢记提示的长度,因为长度存在一定的限制。需要考虑具体和详细的程度。并不是无用细节越多越好,而是应当与任务有关并有助于完成任务的相关细节越多越好。这是需要进行大量实验和迭代以优化应用程序的提示的一个方面。

例如,让我们尝试从一段文本中提取特定信息的简单提示。

Prompt

提取以下文本中的地名。

期望格式:

地点: <comma_separated_list_of_company_names>

输入:“尽管这些发展令研究人员感到鼓舞,但仍有很多谜团。“我们经常在大脑和我们在外围看到的效果之间有一个黑匣子,”里斯本尚帕利莫未知中心的神经免疫学家恩里克·维加-费尔南德斯说。“如果我们想在治疗环境中使用它,我们实际上需要了解其机制。”

Output:

地点: 里斯本尚帕利莫未知中心

输入文本取自Nature文章。

避免不准确性

根据上述关于详细说明和改善格式的提示,很容易陷入想要变得过于聪明的陷阱,从而可能创建不精确的描述,因此直接和具体的描述往往更好。这里的类比与有效沟通非常相似–越直接,信息就越能有效传达。

例如,您可能有兴趣了解提示工程的概念。您可以尝试像这样的东西:

解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。

从上面的提示中无法清楚地了解使用多少句话以及采用什么样的风格。您可能仍然可以获得良好的响应,但更好的提示是非常具体,简明扼要和直截了当的。例如:

用2-3个句子向高中生解释提示工程的概念。

做还是不做?

设计提示的另一个常见技巧是避免说明不要做什么,而是说明要做什么。这鼓励更具体化和更专注于细节,从而获得模型的良好响应。

以下是电影推荐聊天机器人的示例,因为我的指令的表述方式而未能成功做到我不想做的事情 - 焦点在于避免做什么。

Prompt

以下是向客户推荐电影的代理。不要询问兴趣。不要询问个人信息。
客户:请根据我的兴趣推荐电影。
代理:

Output

代理:
非常感谢您的请求。以下是我们为您推荐的一些电影:

  1. 头号玩家 (Ready Player One)
  2. 盗梦空间 (Inception)
  3. 阿凡达 (Avatar)
  4. 星际穿越 (Interstellar)
  5. 风云雄霸天下 (The Godfather)
  6. 我们希望您会喜欢其中的某一部电影。

可能ChatGPT相比于davinci-3做了些优化,使得回答更加准确了。。。。

这是一个更好的提示:

Prompt

以下是向客户推荐电影的代理。代理负责从全球流行电影中推荐电影。
它应该避免询问用户的偏好并避免询问个人信息。如果代理没有电影推
荐,它应该回答“很抱歉,今天找不到电影推荐。”
客户:请根据我的兴趣推荐电影。
代理:

Output

很抱歉,我没有关于您的兴趣的信息。然而,这是目前全球流行电影列表:[电影列表]。希望您能找到自己喜欢的电影!
上面的一些示例摘自“使用OpenAI API进行提示工程的最佳实践”文章。


总结

本文主要介绍了提示工程的一些基本示例,下一章会介绍一些基本的提示。

不写代码、年薪百万,带你玩赚ChatGPT提示工程-介绍相关推荐

  1. 不写代码、年薪百万,带你玩赚ChatGPT提示工程-高级提示

    文章目录 前言 一.Zero-Shot提示 二.Few-Shot 提示 Few-shot Prompting 的局限性 三.Chain-of-Thought Prompting 四.Zero-Shot ...

  2. 不写代码、年薪百万,带你玩赚ChatGPT提示工程-基本提示

    文章目录 前言 一.文本摘要 二.信息抽取 三.问答 四.文本分类 五.对话 六.代码生成 七.推理 总结 前言 随着ChatGPT的大火,提示工程在大模型中的重要性不言而喻,本文参考国外Prompt ...

  3. 《人人都能玩赚ChatGPT》:一份简明易懂的 ChatGPT 技术指南

    在科技日新月异的时代,人工智能无疑成为了当之无愧的热点话题.对于许多对前沿技术感兴趣的人来说,掌握聊天机器人技术似乎是一个遥不可及的梦想.然而,一本名为<人人都能玩赚ChatGPT>的书籍 ...

  4. 带你玩转Visual Studio——开篇介绍

    开篇之前,先唠叨几句 本人从事C++开发工作一年半,总想就C++开发方面写点东西.写什么呢?想了一下还是写点跟开发密切相关的吧,要说跟开发最密切相关的那莫过于就是开发工具了,也就是常常说的集成开发环境 ...

  5. 手把手带你玩转需求预测-需求预测方法介绍

    系列文章目录 手把手带你玩转需求预测 文章目录 系列文章目录 前言 时序预测算法类型 第一代:统计时序预测算法 第二代:经典机器学习方法 第三代:深度学习预测算法 总结 前言 预测算法的本质是从历史数 ...

  6. 只需百行代码,Python带你玩转汉服圈

    平时旅游的时候,在旅游景区我们经常可以看到穿各种服饰去拍照的游客,也不会刻意多关注.前两天浏览网页无意看到一个网站,看到穿汉服的女孩是真的很好看.无论是工作需要还是创作文案,把这么漂亮的图片来当作素材 ...

  7. 今日写代码遇到的https请求的时候,提示ssl证书错误

    关于SSL证书,有两种方法: 第一种:可以直接下载,具体的操作步骤大家可以百度走一波. 第二种:直接用代码屏蔽掉证书,代码亲测. import org.slf4j.Logger; import org ...

  8. 【玩转ChatGPT |OpenAI超级对话模型】手把手带你玩转ChatGPT

    个人名片:

  9. 【转】带你玩转Visual Studio——02.带你新建一个工程

    接着上一篇文章带你玩转Visual Studio--开篇介绍继续讲这个主题,现在我们从创建一个新的工程开始. 一步一步创建项目 依次选择菜单:File\New\Project,打开New Projec ...

最新文章

  1. React useState,useEffect ,Hook是什么?什么是副作用?
  2. 线性代数的本质与几何意义 02. 线性组合、张成的空间、基(3blue1brown 咪博士 图文注解版)...
  3. 转:微软未公开的几个过程介绍及用法
  4. win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解
  5. Druid 连接池的实用 配置详解
  6. Hadoop hdfs文件下载代码示例
  7. “前”方有坑,绕道而行(一)-- H5 CSS
  8. ftp服务器需要什么系统,ftp服务器需要什么系统
  9. oracle-01940,ORA-01940: 无法删除当前已连接的用户的错误,该如何解决呢?
  10. 微信小程序 --- 动态获取input的value
  11. 玩转Citrix XenApp中的IE发布 (上)
  12. 在一个窗体的panel控件中显示其他窗体
  13. could not resolve xxx.jar
  14. HTTP知识点总结 - 转载
  15. PowerDesigner 15 License Key失效的解决方案
  16. Linux Bind 安装
  17. 场景一:刮刮卡,大转盘等抽奖算法
  18. ACCESS 中屏蔽shift键
  19. 小视频如何伪原创 抖音合并视频md5
  20. java微服务Nacos配置管理

热门文章

  1. python中可变长度参数_Python的可变长参数
  2. js获取class对象
  3. 词向量算法—【AAAI2018】蚂蚁金服公开的基于笔画的中文词向量算法
  4. Excel正则表达式:提取选中区域正数负数和小数
  5. 波士顿矩阵模型:产品定位
  6. iptables与IP报文分片浅析
  7. php返回的几种状态码
  8. 编写高效的jQuery代码
  9. 【Mac】解决macOS版本更新失败的问题
  10. 携程“919旅行囤货划算节”两年,已成行业超级IP