提示词(prompt)工程指南(二):基本提示

时间:2022-01-10 01:17:25

在上一篇指南中,我们介绍并提供了提示的基本示例。

在本指南中,我们将提供更多提示的使用示例并介绍对于更高级指南非常重要的关键概念。

通常,学习概念的最佳方法是通过示例进行。下面我们将涵盖一些精心制作的提示示例,以执行各种有趣和不同的任务。

完整的中文版本指南和更丰富的参考资料在 Github 和 Gitee 中,自动持续翻译更新:
???? 关于提示词工程(prompt)的指南、论文、讲座、笔记本和资源大全

主题:


文本摘要

自然语言生成中的标准任务之一是文本摘要。文本摘要可以包括许多不同的风味和域。语言模型最有前途的应用之一是将文章和概念简述为快速且易于阅读的摘要。尝试使用提示执行基本的摘要任务。

假设我有兴趣了解抗生素,我可以尝试这样的提示:

提示:

解释抗生素

A:

输出:

抗生素是一种用于治疗细菌感染的药物。 它们通过杀死细菌或防止细菌繁殖来工作,使人体免疫系统能够对抗感染。 抗生素通常以口服方式服用,以药丸,胶囊或液体溶液的形式,有时以静脉注射的方式给药。 它们对病毒感染无效,不合适的使用可能导致抗生素耐药。

“A:” 是一种用于问答的显式提示格式,这里我用它告诉模型应该有一个进一步的预期。在这个例子中,现在使用它是否有用还不太清楚,但我们将在稍后的例子中加以说明。假设现在我们想要进一步概括信息,口语化一点,我们可以告诉模型要求它用一句话进行概括:

提示:

抗生素是用于治疗细菌感染的一种药物。它们可以通过杀死细菌或阻止它们繁殖,使免疫系统能够对抗感染。抗生素通常以口服药片、胶囊或液体溶液的形式服用,有时也会通过静脉注射。它们对病毒感染无效,过度使用会导致抗生素耐药。

用一句话解释上面的内容:

输出:

抗生素是药物,通过杀死或阻止繁殖细菌来治疗细菌感染,但对病毒无效,并且过度使用会导致抗生素耐药。

需要注意的是,不要太关注输出的准确性,这是我们将在后面的指南中讨论的问题,模型尝试用一句话概括整个段落。你可以写聪明一点的指令,但这需要我们在后面的章节中来讲解。现在,可以暂停并尝试一下,看看是否可以得到更好的结果。


信息提取

虽然语言模型是用于执行自然语言生成和相关任务的训练模型,但它也非常擅长执行分类和其他自然语言处理(NLP)任务。

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

提示:

格式: 只返回翻译后的内容,不包含原始文本。作者在研究论文中的贡献声明和致谢中应明确并具体说明作者在撰写和分析论文时是否使用了像ChatGPT这样的人工智能技术,以及使用了哪些LLM。这将提醒编辑和审稿人更仔细地审查论文,以避免潜在的偏见、不准确和不当的来源引用。同样,科学期刊应该透明地披露它们使用LLM的情况,例如在选择提交的论文时。

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

段落来源:ChatGPT: five priorities for research


问答

让模型回答特定问题的最佳方式之一是改进提示的格式。如前所述,提示可以结合指令、上下文、输入和输出指示器以获得更好的结果。虽然这些组件并不是必需的,但随着指令越具体,结果就越好,这成为一种良好的实践方法。以下是一个更具结构化提示的示例。

提示:

根据以下上下文回答问题。回答应简短明了。如果不确定答案,请回复“不确定答案”。

格式:仅返回翻译后的内容,不包括原始文本。上下文: Teplizumab 的起源可以追溯到名为 Ortho Pharmaceutical 的新泽西药品公司。在那里,科学家们产生了一种早期版本的抗体,名为 OKT3。这种分子最初是从老鼠中提取的,能够结合到 T 细胞的表面并限制它们的细胞杀伤潜力。1986年,它获批用于帮助预防肾移植后器官排异,成为第一个允许人类使用的治疗性抗体。

问题: OKT3 最初来源于什么?

答案:

老鼠。

上下文来自Nature


文本分类

到目前为止,我们已经使用了简单的指令来执行任务。作为一个提示工程师,您需要更好地提供更好的指令。但这还不是全部!您还会发现,对于更难的用例,仅提供指示是不够的。这是您需要更多地考虑上下文和提示中可以使用的不同元素的地方。您可以提供的其他元素包括 输入数据示例

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

提示:

将文本分类为中性、负面或正面。

文本:我认为食物还行。
情感:

输出:

中性

我们提供了分类文本的指令,模型正确地回应了 '中性',但这是正确的。这里没有错,但是假设我们真正需要的是让模型以我们想要的确切格式返回标签。那么我们该如何实现呢?有不同的方法可以做到这一点。在这里,我们关心的是特定性,因此我们提供的信息越多,提示的结果就越好。我们可以尝试提供示例来指定正确的行为。让我们再试一次:

提示:

将文本分类为中性、负面或正面。

文本:我认为假期还不错。
情感:中性

文本:我认为食物还行。
情感:

输出:

中性

。完美!这一次,模型返回了neutral,这正是我要寻找的标签。看起来,提示中提供的例子让模型在输出中更为具体。为了强调为什么有时候变得具体很重要,请查看以下示例并找出问题:

提示内容:

将文本分类为中性、负面或正面。

文本:我认为度假还好。
情感:

输出结果:

中性

这里出了什么问题?


会话

通过提示工程,您可以实现的挑战之一是指导LLM系统的行为、意图和身份。这在构建像客户服务聊天机器人这样的对话系统时尤其有用。

例如,让我们创建一个对问题能够生成更多技术和科学响应的对话系统。请注意,我们通过指示明确地告诉它如何行为。这有时被称为角色提示

提示内容:

以下是与AI研究助手的对话。助手的口吻是技术性和科学性的。

人类:你好,你是谁?
AI:问候!我是一个AI研究助手。今天我能怎样帮助你?
人类:你能告诉我黑洞的产生吗?
AI:

输出结果:

当然可以!黑洞是时空中的区域,引力非常强大,甚至光都无法逃脱。它们是由于非常大的恒星死亡并使其核心坍塌形成无限密度的奇点导致的。奇点的强大引力吸引其周围的所有物质和辐射,从而产生黑洞。

我们的AI研究助手听起来太过技术了,是吧?好了,让我们改变这种行为并指导系统提供更容易理解的答案。

提示内容:

以下是与AI研究助手的对话,助手的回答应该易于甚至小学生也能理解。

人类:你好,你是谁?
```AI: 你好!我是一位AI研究助手。我今天能为您做些什么呢?
Human: 能否告诉我黑洞是如何形成的?
AI: 

输出:

当一个质量非常大的恒星耗尽燃料并向内坍缩时,就会形成黑洞。恒星的引力非常强大,甚至连光都无法逃脱它的吸引力。这会在时空中产生一个强大的引力点,称为黑洞。

我认为我们取得了一些进展。你可以继续改善它。如果你增加更多的例子,你可能会得到更好的结果。


代码生成

LLM在代码生成方面非常有效。Copilot是一个很好的例子。您可以通过聪明的提示执行大量的代码生成任务。让我们来看几个例子。

首先,让我们尝试一个简单的程序来向用户问候。

提示:

/*
向用户要求姓名并说“你好”
*/

输出:

let name = prompt("你叫什么名字?");
console.log(`你好,${name}!`);

您可以看到,我们甚至不需要指定要使用的语言。

让我们转换一下。我想向您展示LLM在设计提示时可以多么强大。

提示:

"""
表departments,列=[DepartmentId,DepartmentName]
表students,列=[DepartmentId,StudentId,StudentName]
创建一个MySQL查询以获取计算机科学系中的所有学生
"""

输出:

SELECT StudentId,StudentName 
FROM students 
WHERE DepartmentId IN (SELECT DepartmentId FROM departments WHERE DepartmentName = '计算机科学');

这非常令人印象深刻。在这种情况下,我们提供了有关数据库模式的数据,并要求它生成一个有效的MySQL查询。


推理

也许LLM今天最困难的任务之一需要某种形式的推理。由于LLM可能会涌现出各种复杂的应用程序,这使我最为兴奋的是推理领域。".近期在涉及数学能力的任务方面有所改进。虽然如此,需要指出的是,目前的LLMs很难执行推理任务,因此需要更先进的提示工程技术。在下一篇指南中,我们将介绍这些高级技术。现在,我们将涵盖一些基本示例来展示算术能力。

提示:

9000 * 9000 等于多少?

输出:

81,000,000

我们来试试更难的。

提示:

这组数字中的奇数相加实得偶数:15、32、5、13、82、7、1。

A:

输出:

不,这组数字中的奇数相加等于奇数:119。

这是错误的!让我们通过改进提示来改善一下。

提示:

这组数字中的奇数相加实得偶数:15、32、5、13、82、7、1。

通过分步解决问题来解决。首先,识别奇数、将它们相加,然后指出结果是奇数还是偶数。

输出:

奇数:15、5、13、7、1
和:41
41是奇数。

好多了,对吧?顺便说一下,我试过几次,这个系统有时会失败。如果您提供更好的指导并结合实例,可能会有更准确的结果。

在本指南的本节中,我们将继续包括更多常见应用示例。

在即将发布的指南中,我们将涵盖更高级的提示工程概念,以提高在所有这些更困难的任务上的性能。


Python笔记本

描述 笔记本
学习如何使用openaiLangChain库执行多种不同类型的常见任务 Prompt Engineering入门

上一节(提示介绍)

下一节(高级提示技术)

开源、免费自动持续翻译更新关于 GPT 和 prompt 工程的资料合集并同步国内 Gitee 镜像加速访问:

关于提示词工程(prompt)的指南、论文、讲座、笔记本和资源大全(自动持续更新):

  • https://github.com/yunwei37/Prompt-Engineering-Guide-zh-CN
  • https://gitee.com/yunwei37/Prompt-Engineering-Guide-zh-CN

关于 GPT-4 语言模型的提示(prompt)、工具和资源的中文精选列表(自动持续更新)

  • https://github.com/yunwei37/awesome-gpt4-zh-CN
  • https://gitee.com/yunwei37/awesome-gpt4-zh-CN

使用 OpenAI API 的例子和中文指南(自动持续翻译更新 OpenAI 官方文档)

  • https://github.com/yunwei37/openai-cookbook-zh-cn
  • https://gitee.com/yunwei37/openai-cookbook-zh-cn

这个资源库包含了为 Prompt 工程手工整理的资源中文清单,重点是生成性预训练变换器(GPT)、ChatGPT、PaLM 等(自动持续更新)

  • https://github.com/yunwei37/Awesome-Prompt-Engineering-ZH-CN
  • https://gitee.com/yunwei37/Awesome-Prompt-Engineering-ZH-CN