关于chatgpt:Prompt工程师指南从基础到进阶篇用于开发和优化提示以有效地使用语言模型LMs进行各种应用和研究主题

5次阅读

共计 20289 个字符,预计需要花费 51 分钟才能阅读完成。

Prompt 工程师指南[从根底到进阶篇]:用于开发和优化提醒,以无效地应用语言模型(LMs)进行各种利用和钻研主题

Prompt 工程是一种绝对较新的学科,用于开发和优化提醒,以无效地应用语言模型(LMs)进行各种利用和钻研主题。Prompt 工程技能有助于更好地了解大型语言模型(LLMs)的能力和局限性。钻研人员应用 Prompt 工程来改善 LLMs 在各种常见和简单工作上的能力,

1.Prompting 介绍

Prompt engineering(提醒工程)是一门绝对较新的学科,旨在开发和优化提醒以无效地利用语言模型 (LMs) 进行各种利用和钻研主题。提醒工程技能有助于更好地了解大型语言模型 (LLMs) 的能力和局限性。钻研人员应用提醒工程来进步 LLMs 在各种常见和简单工作上的能力,例如问答和算术推理。开发人员应用提醒工程来设计与 LLMs 和其余工具接口的持重和无效的提醒技术。

本指南介绍了规范提醒的基础知识,以提供如何应用提醒与大型语言模型 (LLMs) 进行交互和领导的大抵思路。

除非另有阐明,所有示例均应用 text-davinci-003 (在 OpenAI 的 playground 上应用),应用默认配置,例如 temperature=0.7 和 top-p=1。

提纲:

  • 根本提醒
  • 对于 LLM 设置的一些阐明
  • 规范提醒
  • 提醒的元素
  • 设计提醒的一些技巧

1.1 根本提醒

应用提醒曾经能够实现很多性能,但后果的品质取决于您提供的信息量。提醒能够蕴含诸如您传递给模型的“指令”或“问题”以及其余详细信息,例如“输出”或“示例”。

以下是一个简略提醒的根本示例:

Prompt

The sky is

Output:

blue

The sky is blue on a clear day. On a cloudy day, the sky may be gray or white.

如您所见,语言模型输入了一系列在上下文“天空是”下有意义的字符串。输入可能出其不意,或与咱们想要实现的工作相去甚远。

这个根本示例也突出了提供更多上下文或具体阐明咱们想要实现什么的必要性。

让咱们试着略微改良一下:

Prompt:

Complete the sentence: 

The sky is

Output:

 so  beautiful today.

这样是不是好多了?咱们通知模型要实现句子,所以后果看起来更好,因为它恰好遵循了咱们要求它做的事件(“实现句子”)。这种设计最佳提醒以领导模型执行工作的办法就是所谓的 提醒工程。

下面的例子是现今 LLMs 可能实现的根本演示。现在的 LLMs 可能执行各种先进工作,从文本摘要到数学推理再到代码生成。


1.2 对于 LLM 设置的一些阐明

在应用提醒时,您将通过 API 或间接与 LLM 进行交互。您能够配置一些参数来获取不同的提醒后果。

Temperature – 温度, 简而言之,温度越低,后果越确定,意思是始终抉择最可能的下一个标记。减少温度可能会导致更多的随机性,从而激励更多多样化或有创造性的输入。咱们实际上是减少了其余可能标记的权重。在利用方面,对于基于事实的问答之类的工作,咱们可能心愿应用较低的温度来激励更精确和扼要的答复。对于诗歌生成或其余有创造性的工作,减少温度可能会更无益。
Top_p – 同样,应用温度的一种抽样技术称为核采样(nucleus sampling)时,能够通过 top_p 来管制模型在生成响应时的确定性。如果您想要准确和主观的答案,请将其放弃较低。如果您想要更多样化的答复,请将其减少到较高的值。

个别倡议是只更改一个参数而非同时更改两个参数。

在开始一些根本示例之前,请记住您的后果可能因您应用的 LLM 版本而异。


1.3 规范提醒

咱们下面尝试了一个非常简单的提醒。规范提醒具备以下格局:

<Question>?

这能够依照很多问答数据集的规范格局进行格式化,如下所示:

Q: <Question>?
A: 

依据下面的规范格局,一种风行且无效的提醒技术被称为 few-shot 提醒,其中咱们提供示例。
Few-shot 提醒能够格式化如下:

<Question>?
<Answer>

<Question>?
<Answer>

<Question>?
<Answer>

<Question>?

您能够猜想它的问答(QA)格局版本看起来像这样:

Q: <Question>?
A: <Answer>

Q: <Question>?
A: <Answer>

Q: <Question>?
A: <Answer>

Q: <Question>?
A:

请留神,不须要应用 QA 格局。格局取决于手头的工作。例如,您能够执行一个简略的分类工作并提供演示该工作的示例,如下所示:
Prompt:

This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! // Positive
What a horrible show! //

Output:

Negative

Few-shot prompts 能够实现上下文学习,即语言模型仅仅通过大量的样本就可能学习工作。在行将公布的指南中,咱们将看到更多这方面的理论利用。


1.4 提醒的元素

随着咱们涵盖越来越多的提醒工程的实例和利用,您会发现提醒由以下特定元素组成:

指令 – 您心愿模型执行的特定工作或指令

上下文 – 可波及内部信息或额定的上下文,能够疏导模型产生更好的响应

输出数据 – 咱们感兴趣的输出或问题,心愿找到对应的答复

输入指标 – 批示输入的类型或格局。

并不是所有的组件都是提醒所必须的,格局取决于手头的工作。咱们将在行将公布的指南中提供更多具体的例子。


1.5 设计提醒的一些技巧

以下是设计提醒时须要记住的一些技巧:

  • 从简略开始
    在开始设计提醒时,您应该记住,这是一个须要大量试验和迭代能力失去最佳后果的过程。应用像 OpenAI 或 Cohere 这样的简略 playground 是一个很好的终点。

您能够从简略的提醒开始,随着一直增加元素和上下文,以取得更好的后果。在这个过程中对提醒进行版本控制十分重要。在咱们浏览指南的过程中,您将看到许多例子,其中具体、简略和扼要的提醒通常会给您带来更好的后果。

当您有一个波及许多不同子工作的大工作时,能够尝试将工作分解成更简略的子工作,并随着取得更好的后果逐渐构建。这能够防止在提醒设计过程中增加过多的复杂性。

  • 指令
    您能够应用命令领导模型执行各种简略工作来设计无效的提醒,例如“写入”,“分类”,“摘要”,“翻译”,“排序”等。

请记住,您也须要进行大量试验,以查看哪种形式成果最佳。尝试应用不同的关键字、上下文和数据来尝试不同的指令,以查看哪种办法最适宜您的特定用例和工作。通常状况下,上下文与您要执行的工作越具体和相干,成果越好。在行将公布的指南中,咱们将波及到采样和增加更多上下文的重要性。

其他人倡议将指令搁置在提醒的结尾。同时,倡议应用清晰的分隔符比方“###”来分隔指令和上下文。

例如:

Prompt:

###nstruction ###
Translate the text below to Spanish:

Text: "hello!"

Output:

¡Hola!
  • 具体形式
    在设计提醒时,要十分具体,明确要求模型执行的工作。提醒越具体、具体,后果就越好。这在你须要特定的生成后果或格调时尤为重要。并没有特定的令牌或关键字能够带来更好的后果,更重要的是有一个良好的格局和描述性提醒。实际上,在提醒中提供示例十分无效,能够取得特定格局的冀望输入。
    在设计提醒时,您还应思考提醒的长度,因为提醒的长度有限度。思考提醒应该多具体、具体是须要思考的问题。太多不必要的细节并不一定是一个好办法。细节应该是相干的,对工作有所奉献。这是你须要进行大量试验和迭代来优化提醒的应用程序。

作为一个例子,让咱们尝试一个简略的提醒,从一段文本中提取特定信息。

Prompt:

Extract the name of places in the following text. 

Desired format:
Place: <comma_separated_list_of_company_names>

Input: "Although these developments are encouraging to researchers, much is still a mystery.“We often have a black box between the brain and the effect we see in the periphery,”says Henrique Veiga-Fernandes, a neuroimmunologist at the Champalimaud Centre for the Unknown in Lisbon.“If we want to use it in the therapeutic context, we actually need to understand the mechanism.""

Output:

Place: Champalimaud Centre for the Unknown, Lisbon

输出文本内容来自于这篇 Nature 的文章 this Nature article.

  • 防止不准确性

依据下面对于提供详细信息和改善格局的提醒,很容易陷入想要过于聪慧的提醒陷阱,从而可能创立不精确的形容。通常更间接和具体的形容更为无效。这里的类比十分相似于无效沟通,越间接,信息传递就越无效。

例如,您可能有趣味理解提醒工程的概念。您能够尝试像这样的提醒:

解释提醒工程的概念。放弃解释简短,只有几句话,不要过于形容。

从下面的提醒中并不分明要应用多少句话以及什么样的格调。应用下面的提醒依然可能失去良好的回复,但更好的提醒是十分具体,简洁明了,含糊其辞的。例如:

用 2-3 句话向一名高中学生解释提醒工程的概念。
  • 什么该做什么不该做
    在设计提醒时,另一个常见的技巧是防止说出什么不要做,而是说出应该做什么。这激励更加具体化和专一于细节,从而产生良好的模型响应。

以下是一个电影举荐聊天机器人失败的示例,因为我写的批示语里侧重于要防止什么。

Prompt:

以下是一个向客户举荐电影的代理。不要询问兴趣爱好。不要询问个人信息。顾客:请依据我的兴趣爱好举荐一部电影。代理:

Output:

当然,我能够依据您的趣味举荐电影。您想看什么类型的电影?您喜爱动作片、喜剧片、爱情片还是其余类型的电影?

这里是更好的 Prompt:

Prompt:

以下是一个向客户举荐电影的代理。该代理应该从寰球热门电影中举荐电影,不要询问用户的爱好,防止询问个人信息。如果代理无奈举荐电影,则应回复“对不起,明天无奈找到举荐的电影。”顾客:请依据我的兴趣爱好举荐一部电影。代理:

Output:

对不起,我没有对于您的兴趣爱好的信息。然而,以下是以后寰球热门电影的列表:[电影列表]。心愿您能找到本人喜爱的电影!

上述示例局部摘自 ”OpenAI API 的提醒工程最佳实际 ” 文章。

2. 根底提醒 Basic Prompting

在上一篇指南中,咱们介绍了并且提供了一个根本的 prompt 示例。

在这篇指南中,咱们将提供更多的 prompt 应用示例,并介绍在更高级的指南中将会很重要的要害概念。

通常,学习概念的最佳办法是通过示例进行学习。上面咱们将涵盖一些精心制作的 prompt 的示例,这些 prompt 能够用于执行各种乏味和不同的工作。

主题:

  • 文本摘要
  • 信息提取
  • 问答
  • 文本分类
  • 对话
  • 代码生成
  • 推理
  • Python 笔记本

2.1 文本摘要

自然语言生成中的一项规范工作是文本摘要。文本摘要能够蕴含许多不同的格调和畛域。语言模型最有前途的利用之一是将文章和概念总结成疾速易读的摘要。让咱们尝试应用提醒来进行根本的摘要工作。

假如我有趣味理解抗生素,我能够尝试应用以下提醒:

Prompt:

解释什么是抗生素

A:

Output:

抗生素是一种用于医治细菌感化的药物。它们通过杀死细菌或避免其滋生来使机体免疫系统反抗感化。抗生素通常以口服药片、胶囊或液体溶液的模式服用,有时也会静脉注射。它们对病毒感染有效,不当应用会导致抗生素耐药性。

在这里,”A:” 是一个显式的提醒格局,用于问题答复。我在这里应用它来通知模型存在预期的后续内容。在这个例子中,这并不分明有什么用途,但咱们会在前面的例子中具体解说。让咱们假如这个输入信息太多,咱们心愿进一步摘要。咱们能够批示模型进行一句话总结,如下所示:
Prompt:

抗生素是一种用于医治细菌感化的药物。它们通过杀死细菌或避免其滋生来使机体免疫系统反抗感化。抗生素通常以口服药片、胶囊或液体溶液的模式服用,有时也会静脉注射。它们对病毒感染有效,不当应用会导致抗生素耐药性。请用一句话解释下面的内容:

Output:

抗生素是一种药物,用于通过杀死或避免细菌滋生来医治细菌感化,但不对病毒无效,不当应用会导致抗生素耐药性。

在不过多关注上述输入的准确性的状况下,咱们能够看到模型尝试将段落总结为一句话。您能够聪慧地应用批示,但咱们将在当前的章节中介绍。随时暂停并进行试验,看看是否能够失去更好的后果。


2.2 信息提取

只管语言模型是被训练用于执行自然语言生成及相干工作的,但它也十分善于执行分类和一系列其余的自然语言解决(NLP)工作。

以下是一个从给定段落中提取信息的提醒示例。

Prompt:

钻研论文中的作者奉献申明和致谢应明确并具体阐明作者在撰写和剖析手稿过程中是否以及在什么水平上应用了诸如 ChatGPT 这样的 AI 技术。它们还应指出应用了哪些 LLMs。这将揭示编辑和审稿人更认真地审查手稿,以寻找潜在的偏见、不准确性和不正确的起源证实。同样,迷信期刊应在抉择提交的手稿时通明地公开应用 LLMs 的状况。提及该段落中提到的大型语言模型产品是什么?

Output:

该段落中提到的大型语言模型产品是 ChatGPT。

咱们能够通过许多办法来改良上述后果,但这曾经十分有用了。

当初显然能够通过简略地批示它要做什么来要求模型执行不同的工作。这是 AI 产品构建者曾经在应用的弱小性能,以构建弱小的产品和体验。

段落起源: ChatGPT: five priorities for research


2.3 问答

获取模型对特定答案的响应的最佳办法之一是改良提醒的格局。如前所述,提醒能够联合指令、上下文、输出和输入批示符来取得更好的后果。尽管这些组件并非必须,但随着您指令越具体,您将取得更好的后果。以下是如何在更具构造的提醒中进行的示例。
Prompt:

依据以下内容答复问题。放弃答案简短。如果不确定答案,请答复“不确定答案”。背景:Teplizumab 能够追溯到新泽西州的一家名为 Ortho Pharmaceutical 的药品公司。在那里,科学家们生成了一种名为 OKT3 的抗体的晚期版本。该分子最后是从小鼠中提取的,它可能联合到 T 细胞的外表,并限度它们的细胞杀伤后劲。1986 年,它取得批准,用于帮忙预防肾脏移植后的器官排挤,成为首个容许人类应用的医治性抗体。问题:OKT3 最后是从哪里提取的?答案:

Output:

OKT3 最后是从小鼠中提取的。

内容起源: Nature.


2.4 文本分类

到目前为止,咱们曾经应用简略的指令执行工作。作为一个 Prompt 工程师,您须要进步提供更好指令的能力。但这还不够!您还会发现,在更难的用例中,仅提供指令是不够的。这就是您须要更多思考上下文和能够在提醒中应用的不同元素的中央。您能够提供的其余元素包含输出数据或示例。

让咱们尝试通过提供文本分类的示例来演示这一点。

Prompt:

Classify the text into neutral, negative or positive. 

Text: I think the food was okay. 
Sentiment:

Output:

Neutral 

这里的答复是 Neutral(首字母大写),本例子是想让答复变成小写的 neutral

咱们给出了分类文本的指令,模型以 ’Neutral’ 响应,这是正确的。没有什么错的,然而假如咱们真正须要的是让模型以咱们想要的确切格局返回标签。所以,咱们不想要 Neutral,而是想要它返回全小写的 neutral。咱们如何做到这一点。有不同的办法来做到这一点。咱们关怀的是具体性,在提醒中提供的信息越多,后果就越好。咱们能够尝试提供示例来指定正确的行为。让咱们再试一次:
Prompt:

Classify the text into neutral, negative or positive. 

Text: I think the vacation is okay.
Sentiment: neutral 

Text: I think the food was okay. 
Sentiment:

Output:

neutral

完满!这次模型返回了 neutral,这正是我要寻找的具体标签。仿佛提醒中提供的示例帮忙模型在其输入中变得更加具体。为了强调为什么有时候具体性很重要,请看这个例子并找出问题:
Prompt:

Classify the text into nutral, negative or positive. 

Text: I think the vacation is okay.
Sentiment:

Output:

Neutral

这里的问题是什么?


2.5 对话

通过 prompt engineering,您能够通知 LLM 零碎如何行事,其用意和身份,这在构建客户服务聊天机器人等对话零碎时特地有用。

例如,让咱们创立一个对问题生成更多技术和迷信响应的对话零碎。请留神,咱们通过指令明确通知它如何行事。这有时被称为角色提醒。

Prompt:

上面是与一名技术和迷信氛围的 AI 钻研助理进行的对话。人类:你好,你是谁?AI:问候!我是一个 AI 钻研助手。明天我能帮你什么忙吗?人类:你能通知我黑洞的造成吗?AI:

Output:

当然能够!黑洞是时地面引力极强的区域,甚至连光也无奈逃脱。当一个十分品质微小的恒星死亡并且其外围坍塌时,就会造成一个有限密度的奇点,从而造成黑洞。奇点的强烈引力将四周的所有物质和辐射吸引进来,从而造成黑洞。

咱们的 AI 钻研助手听起来有点太技术了,对吧?好的,让咱们扭转这种行为,批示零碎提供更易于了解的答案。

Prompt:

上面是与一名 AI 钻研助手的对话。助手的答复应该易于被小学生了解。人类:你好,你是谁?AI:问候!我是一个 AI 钻研助手。明天我能帮你什么忙吗?人类:你能通知我黑洞的造成吗?AI:

Output:

当然能够!黑洞是因为十分品质微小的恒星耗尽燃料而坍塌造成的。恒星的引力十分弱小,甚至连光也无奈逃离其吸引。这会在时地面发明一个引力极强的点,称为黑洞。

我认为咱们获得了一些停顿。你能够持续改良。我置信如果你增加更多的例子,你可能会失去更好的后果。


2.6 代码生成

代码生成是 LLM 十分无效的利用之一,Copilot 是一个很好的例子。通过奇妙的提醒,你能够执行大量的代码生成工作。让咱们看一些上面的例子。

首先,让咱们尝试一个简略的程序来问候用户。

Prompt:

/*
询问用户姓名并说“Hello”*/

Output:

let name = prompt("What is your name?");
console.log(`Hello, ${name}!`);

你能够看到,咱们甚至不须要指定要应用的语言。

让咱们略微进步一下难度。我想向你展现在设计提醒时 LLM 能够有多弱小。

Prompt:

"""
Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
创立一个 MySQL 查问,查问计算机科学系的所有学生
"""

Output:

SELECT StudentId, StudentName 
FROM students 
WHERE DepartmentId IN (SELECT DepartmentId FROM departments WHERE DepartmentName = 'Computer Science');

这十分令人印象粗浅。在这种状况下,咱们提供了对于数据库模式的数据,并要求它生成一个无效的 MySQL 查问。

2.7 推理

兴许目前对于 LLM 来说最具挑战性的工作之一是须要肯定推理能力的工作。推理是我最为期待的畛域之一,因为 LLM 能够从中失去各种简单的利用。

在波及到数学能力的工作方面曾经有了一些改良。尽管如此,须要留神的是目前的 LLM 在执行推理工作方面依然存在艰难,因而须要更高级的提醒工程技术。咱们将在下一篇指南中介绍这些高级技术。当初,咱们将介绍一些根本示例,以展现 LLM 的算术能力。

Prompt:

9000 * 9000 等于多少?

Output:

81,000,000

让咱们试试更难的题目。

Prompt:

这组数字中的奇数加起来是一个偶数:15, 32, 5, 13, 82, 7, 1. 

A: 

Output

不,这组数字中的奇数加起来是一个奇数:119。

这是谬误的!让咱们通过改良提醒来改良后果。

Prompt:

这组数字中的奇数加起来是一个偶数:15, 32, 5, 13, 82, 7, 1. 

通过分步解决问题。首先,辨认出奇数,将它们相加,并批示后果是奇数还是偶数。

Output:

奇数:15, 5, 13, 7, 1
总和:41
41 是一个奇数。

好多了,对吧?顺便说一句,我尝试了几次,有时零碎会失败。如果您提供更好的批示联合示例,可能有助于取得更精确的后果。
另外 GPT4 在这方面有很大的改良和晋升!

咱们将持续在本节中蕴含更多常见利用的示例。

在接下来的指南中,咱们将介绍更高级的提醒工程概念,以进步在所有这些和更难的工作上的性能。


2.7 Python 笔记本

形容 笔记本
学习如何应用 openai 和 LangChain 库执行许多不同类型的常见工作 开始应用提醒工程

3. 高阶 Prompting

到这一步,应该很显著,改良提醒有助于在不同工作上取得更好的后果。这就是 Prompt 工程背地的整个理念。

尽管之前的例子很乏味,但在咱们深刻理解更高级的概念之前,让咱们先正式地介绍一些概念。

Topics:

  • 零样本 Prompting
  • 少样本 Prompting
  • 思维链 Prompting
  • 零样本思维链 zero-shot-cot
  • 自洽性 Self-Consistency
  • 生成常识 Prompting
  • 主动提醒工程师 AutomaticPromptEngineer

3.1 零样本 Prompting

目前,通过大量数据训练并依据批示进行调整的 LLM 可能在零样本状况下执行工作。
咱们在后面的章节中尝试了一些零样本的例子。这是咱们应用过的其中一个例子:

Prompt:

Classify the text into neutral, negative, or positive. 

Text: I think the vacation is okay.
Sentiment:

输入:

Neutral

请留神,下面的提醒中咱们没有向模型提供任何示例——这就是零样本能力的工作形式。当零样本不起作用时,倡议在提醒中提供演示或示例。
上面咱们将探讨少样本 Prompting 这种办法。


3.2 少样本 Prompting

只管大型语言模型曾经展现出了不凡的零样本能力,但在应用零样本设置时,它们在更简单的工作上依然体现有余。为了改良这一点,少样本 Prompting 被用作一种技术,以实现上下文学习,即在提醒中提供演示以疏导模型获得更好的体现。这些演示作为后续例子的条件,咱们心愿模型可能生成一个响应。

让咱们通过一个由 Brown et al. 2020.
提出的例子来演示少样本 Prompting。在这个例子中,工作是在句子中正确应用一个新词。

Prompt:

A "whatpu" is a small, furry animal native to Tanzania. An example of a sentence that uses
the word whatpu is:
We were traveling in Africa and we saw these very cute whatpus.
To do a "farduddle" means to jump up and down really fast. An example of a sentence that uses
the word farduddle is:

Output:

When we won the game, we all started to farduddle in celebration.

咱们能够察看到,仅提供一个示例(即 1 -shot)即可让模型学会执行工作。对于更难的工作,咱们能够尝试减少示例(例如 3 -shot,5-shot,10-shot 等)来进行试验。

依据 Min 等人 Min et al. (2022), 的钻研后果,以下是一些对于少样本演示 / 示例的提醒:

-“标签空间和演示文本散布对于性能都很重要(无论个别输出的标签是否正确)”
- 无论您是否只应用随机标签,所应用的格局也对性能起关键作用,这要比没有标签好得多。
- 其余结果显示,从实在标签散布(而不是均匀分布)中抉择随机标签也有所帮忙。

让咱们尝试一些例子。首先,让咱们尝试一个具备随机标签的示例(意味着将“Negative”和“Positive”标签随机调配给输出):

Prompt:

This is awesome! // Negative
This is bad! // Positive
Wow that movie was rad! // Positive
What a horrible show! //

Output:

Negative

咱们依然失去了正确的答案,即便标签曾经被随机化了。请留神,咱们也保留了格局,这也有助于后果。
实际上,通过进一步的试验,咱们发现咱们正在尝试的新 GPT 模型甚至变得更加弱小,即便格局是随机的。例如:

Prompt:

Positive This is awesome! 
This is bad! Negative
Wow that movie was rad!
Positive
What a horrible show! --

Output:

Negative

正如你所说,咱们须要进行更全面的剖析以确认这是否实用于不同和更简单的工作,包含不同变体的提醒。

少样本(Few-shot) Prompting 的限度

规范的少样本提示法对许多工作来说成果良好,但在解决更简单的推理工作时依然不是完满的技术,让咱们来演示一下为什么会呈现这种状况。
你还记得咱们之前提供的以下工作吗:

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 

A: 

如果咱们重试,模型会有上面的输入

Yes, the odd numbers in this group add up to 107, which is an even number.

这不是正确的答复,不仅凸显了这些零碎的局限性,还表明须要更先进的提醒工程。
让咱们尝试增加一些示例,看看 few-shot prompting 是否能够改善后果。

Prompt:

The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: The answer is False.

The odd numbers in this group add up to an even number: 17,  10, 19, 4, 8, 12, 24.
A: The answer is True.

The odd numbers in this group add up to an even number: 16,  11, 14, 4, 8, 13, 24.
A: The answer is True.

The odd numbers in this group add up to an even number: 17,  9, 10, 12, 13, 4, 2.
A: The answer is False.

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
A: 

Output:

The answer is True.

这不是正确的答复,这不仅突出了这些零碎的局限性,而且须要更先进的提醒工程。让咱们尝试增加一些示例,看看大量提醒是否会改善后果。

规范的大量提醒在许多工作中体现良好,但在解决更简单的推理工作时依然不是完满的技术。让咱们演示一下为什么会呈现这种状况。你还记得咱们之前提供的工作吗?

“请计算以下数学问题:24 ÷ 3”

答案是 8,但如果咱们将问题更改为“请计算以下数学问题:3 ÷ 24”,模型的答案将会是 0. 这表明,对于某些更简单的推理问题,大量提醒是不足以失去牢靠的响应的。下面的示例提供了工作的根本信息。如果你仔细观察,就会发现咱们引入的工作类型波及更多的推理步骤。换句话说,如果咱们将问题分解成步骤并向模型演示,这可能会有所帮忙。最近,思维链 chain-of-thought (CoT) prompting 提醒曾经流行起来,以解决更简单的算术、常识和符号推理工作。

总的来说,提供示例对于解决一些工作是有用的。当零量提醒和大量提醒不足以满足需要时,这可能意味着模型所学到的常识不足以在工作中体现良好。从这里开始,倡议思考微调模型或尝试更高级的提醒技术。接下来,咱们将介绍一种风行的提醒技术,即思维链提醒,它曾经广受欢迎。


3.3 思维链 Prompting

在 Wei et al. (2022)等人的论文中引入的 Chain-of-Thought(CoT)prompting,通过两头推理步骤实现简单的推理能力。
您能够将其与 few-shot prompting 联合应用,以取得更好的后果,用于须要在答复之前进行推理的更简单工作。

Prompt:

The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.

The odd numbers in this group add up to an even number: 17,  10, 19, 4, 8, 12, 24.
A: Adding all the odd numbers (17, 19) gives 36. The answer is True.

The odd numbers in this group add up to an even number: 16,  11, 14, 4, 8, 13, 24.
A: Adding all the odd numbers (11, 13) gives 24. The answer is True.

The odd numbers in this group add up to an even number: 17,  9, 10, 12, 13, 4, 2.
A: Adding all the odd numbers (17, 9, 13) gives 39. The answer is False.

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
A:

Output:

Adding all the odd numbers (15, 5, 13, 7, 1) gives 41. The answer is False.

哇!咱们能够看到当咱们提供了推理步骤时,失去了完满的后果。咱们能够通过提供更少的示例来解决这个工作,即,只须要一个示例仿佛就足够了:

Prompt:

The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
A:

Output:

Adding all the odd numbers (15, 5, 13, 7, 1) gives 41. The answer is False.

请留神,作者宣称这是足够大的语言模型呈现的新兴能力。


3.4 零样本思维链 zero-shot-cot

最近提出的一个想法是“零样本思维链”(Zero-Shot CoT)zero-shot CoT (Kojima et al. 2022)。它的根本思维是在原始提醒中增加“一步一步地思考”。让咱们尝试一个简略的问题,并看看这个模型的体现:

Prompt:

I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?

Output:

11 apples

答案是不正确的!当初让咱们尝试一下非凡提醒。

Prompt:

I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?

Let's think step by step.

Output:

First, you started with 10 apples.
You gave away 2 apples to the neighbor and 2 to the repairman, so you had 6 apples left.
Then you bought 5 more apples, so now you had 11 apples.
Finally, you ate 1 apple, so you would remain with 10 apples.

这个简略的提醒在这个工作中十分无效,令人印象粗浅。特地是在你没有太多示例可用于提醒时,它十分有用。


3.5 自洽性 Self-Consistency

兴许目前用于提醒工程的更高级的技术之一是 Self-Consistency。由 Wang et al. (2022)等人提出,Self-Consistency 的指标是“代替链式思维提醒中应用的奢侈贪心解码办法”。其思维是通过 few-shot CoT 采样多个不同的推理门路,并应用生成的后果抉择最统一的答案。这有助于进步 CoT 提醒在波及算术和常识推理的工作中的性能。

让咱们尝试以下算术推理示例:

Prompt:

When I was 6 my sister was half my age. Now
I’m 70 how old is my sister?

Output:

35

输入是谬误的!咱们如何应用 Self-Consistency 来改善它呢?让咱们试一试。咱们将应用 Wang 等人(2022 年)的 few-shot 示例(表 17):

Prompt:

Q: There are 15 trees in the grove. Grove workers will plant trees in the grove today. After they are done,
there will be 21 trees. How many trees did the grove workers plant today?
A: We start with 15 trees. Later we have 21 trees. The difference must be the number of trees they planted.
So, they must have planted 21 - 15 = 6 trees. The answer is 6.

Q: If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?
A: There are 3 cars in the parking lot already. 2 more arrive. Now there are 3 + 2 = 5 cars. The answer is 5.

Q: Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total?
A: Leah had 32 chocolates and Leah’s sister had 42. That means there were originally 32 + 42 = 74
chocolates. 35 have been eaten. So in total they still have 74 - 35 = 39 chocolates. The answer is 39.

Q: Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipops
did Jason give to Denny?
A: Jason had 20 lollipops. Since he only has 12 now, he must have given the rest to Denny. The number of
lollipops he has given to Denny must have been 20 - 12 = 8 lollipops. The answer is 8.

Q: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does
he have now?
A: He has 5 toys. He got 2 from mom, so after that he has 5 + 2 = 7 toys. Then he got 2 more from dad, so
in total he has 7 + 2 = 9 toys. The answer is 9.

Q: There were nine computers in the server room. Five more computers were installed each day, from
monday to thursday. How many computers are now in the server room?
A: There are 4 days from monday to thursday. 5 computers were added each day. That means in total 4 * 5 =
20 computers were added. There were 9 computers in the beginning, so now there are 9 + 20 = 29 computers.
The answer is 29.

Q: Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How many
golf balls did he have at the end of wednesday?
A: Michael initially had 58 balls. He lost 23 on Tuesday, so after that he has 58 - 23 = 35 balls. On
Wednesday he lost 2 more so now he has 35 - 2 = 33 balls. The answer is 33.

Q: Olivia has $23. She bought five bagels for $3 each. How much money does she have left?
A: She bought 5 bagels for $3 each. This means she spent 5

Q: When I was 6 my sister was half my age. Now I’m 70 how old is my sister?
A:

Output 1:

When I was 6 my sister was half my age, so she was 3. Now I am 70, so she is 70 - 3 = 67. The answer is 67.

Output 2:

When the narrator was 6, his sister was half his age, which is 3. Now that the narrator is 70, his sister would be 70 - 3 = 67 years old. The answer is 67.

Output 3:

When I was 6 my sister was half my age, so she was 3. Now I am 70, so she is 70/2 = 35. The answer is 35.

将最终答案计算出来须要几个步骤(详见论文),但为简略起见,咱们能够看到曾经呈现了绝大多数的答案,因而这本质上将成为最终答案。


3.6 生成常识 Prompting

LLM(大型语言模型)一直失去改良,其中一种风行的技术是可能整合常识或信息来帮忙模型进行更精确的预测。

应用相似的思路,模型是否也能够在做出预测之前生成常识?这正是 Liu 等人 Liu et al. 2022 在论文中所尝试的——生成用作提醒的常识。特地是,这对于常识推理等工作有如许有帮忙?

让咱们尝试一个简略的提醒:

Prompt:

Part of golf is trying to get a higher point total than others. Yes or No?

Output:

Yes.

这种谬误揭示了 LLMs 在执行须要更多对于世界的常识的工作时的局限性。咱们如何通过常识生成来改善这一点呢?

首先,咱们生成一些“常识”:

Prompt:

Input: Greece is larger than mexico.
Knowledge: Greece is approximately 131,957 sq km, while Mexico is approximately 1,964,375 sq km, making Mexico 1,389% larger than Greece.

Input: Glasses always fog up.
Knowledge: Condensation occurs on eyeglass lenses when water vapor from your sweat, breath, and ambient humidity lands on a cold surface, cools, and then changes into tiny drops of liquid, forming a film that you see as fog. Your lenses will be relatively cool compared to your breath, especially when the outside air is cold.

Input: A fish is capable of thinking.
Knowledge: Fish are more intelligent than they appear. In many areas, such as memory, their cognitive powers match or exceed those of’higher’vertebrates including non-human primates. Fish’s long-term memories help them keep track of complex social relationships.

Input: A common effect of smoking lots of cigarettes in one’s lifetime is a higher than normal chance of getting lung cancer.
Knowledge: Those who consistently averaged less than one cigarette per day over their lifetime had nine times the risk of dying from lung cancer than never smokers. Among people who smoked between one and 10 cigarettes per day, the risk of dying from lung cancer was nearly 12 times higher than that of never smokers.

Input: A rock is the same size as a pebble.
Knowledge: A pebble is a clast of rock with a particle size of 4 to 64 millimetres based on the Udden-Wentworth scale of sedimentology. Pebbles are generally considered larger than granules (2 to 4 millimetres diameter) and smaller than cobbles (64 to 256 millimetres diameter).

Input: Part of golf is trying to get a higher point total than others.
Knowledge:

Knowledge 1:

The objective of golf is to play a set of holes in the least number of strokes. A round of golf typically consists of 18 holes. Each hole is played once in the round on a standard golf course. Each stroke is counted as one point, and the total number of strokes is used to determine the winner of the game.

Knowledge 2:

Golf is a precision club-and-ball sport in which competing players (or golfers) use many types of clubs to hit balls into a series of holes on a course using the fewest number of strokes. The goal is to complete the course with the lowest score, which is calculated by adding up the total number of strokes taken on each hole. The player with the lowest score wins the game.

咱们正在应用 Liu et al. 2022 论文中提供的提醒。

接下来的步骤是整合常识并得出预测。我将问题转换成了问答格局,以领导答复的格局。

Prompt:

Question: Part of golf is trying to get a higher point total than others. Yes or No?

Knowledge: The objective of golf is to play a set of holes in the least number of strokes. A round of golf typically consists of 18 holes. Each hole is played once in the round on a standard golf course. Each stroke is counted as one point, and the total number of strokes is used to determine the winner of the game.

Explain and Answer: 

答复 1 (十分有信念):

No, the objective of golf is not to get a higher point total than others. Rather, the objective is to play a set of holes in the least number of strokes. The total number of strokes is used to determine the winner of the game, not the total number of points.
Question: Part of golf is trying to get a higher point total than others. Yes or No?

Knowledge: Golf is a precision club-and-ball sport in which competing players (or golfers) use many types of clubs to hit balls into a series of holes on a course using the fewest number of strokes. The goal is to complete the course with the lowest score, which is calculated by adding up the total number of strokes taken on each hole. The player with the lowest score wins the game.

Explain and Answer:

答复 2 (信念要低得多):

Yes, part of golf is trying to get a higher point total than others. Each player tries to complete the course with the lowest score, which is calculated by adding up the total number of strokes taken on each hole. The player with the lowest score wins the game.

这个例子中产生了一些十分乏味的事件。在第一个答复中,模型十分有信念,但在第二个答复中却不是那么有信念。我为了演示的目标简化了过程,但在得出最终答案时还有一些更多的细节须要思考。

3.7 主动提醒工程师 AutomaticPromptEngineer

Zhou et al., (2022) 提出了主动提醒工程师(APE)框架,用于主动生成和抉择指令。指令生成问题被构建为自然语言合成问题,应用 LLMs 作为黑盒优化问题来生成和搜寻候选解。

第一步波及一个大型语言模型(作为推理模型),该模型会取得输入演示,以生成工作的指令候选计划。这些候选计划将领导搜寻过程。指令应用指标模型执行,而后基于计算出的评估分数抉择最适宜的指令。
APE 发现了一个更好的零 -shot CoT 提醒,比人工设计的“让咱们逐渐思考”提醒(Kojima 等人,2022)更好。

提醒“让咱们逐渐地工作,以确保咱们有正确的答案。”引发了思考链,进步了 MultiArith 和 GSM8K 基准测试的性能:

本文波及到与提醒工程相干的一个重要主题,即主动优化提醒的想法。尽管本指南不深入探讨这个话题,但如果您对此感兴趣,以下是一些要害论文:

  • AutoPrompt – 提出了一种基于梯度疏导搜寻的主动创立各种工作提醒的办法。
  • Prefix Tuning – 一种轻量级的 fine-tuning 代替计划,为 NLG 工作筹备可训练的间断前缀。
  • Prompt Tuning – 提出了一种通过反向流传学习软提醒的机制。
正文完
 0