Prompt Engineering 提示词工程研究指南:四、提示词编写样例

  |   0 评论   |   0 浏览

前面的部分介绍了如何编写LLM的基本示例。

本部分将提供更多的示例,展示如何使用提示实现不同的任务,并介绍其中的关键概念。通常,通过示例来学习概念是最好的方式。下面的几个示例演示了如何使用精心设计的提示来执行不同类型的任务。

主题:

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

文本摘要

在自然语言生成中的标准任务之一是文本摘要。文本摘要可以包含许多不同的风格和领域。事实上,语言模型最有潜力的应用之一就是将文章和概念摘要成简洁易读的摘要。让我们尝试使用提示进行一个基本的文本摘要任务。

假设你对抗生素感兴趣,你可以尝试使用这样的提示:

解释一下抗生素,回答:

1680854924012384256.png

“回答:” 是你在问答中使用的显式提示格式。在这里,你使用它告诉模型后面有一个期望的答案。在这个示例中,还不清楚它与不使用它相比有什么用处,但我们将在以后的示例中探讨。让我们假设这些信息太多了,你想进一步进行摘要。实际上,你可以指示模型将其摘要为一句话,像这样:

```抗生素是一种用于治疗细菌感染的药物。它们通过杀死细菌或阻止其繁殖,帮助机体的免疫系统对抗感染。
抗生素通常以口服药片、胶囊、液体溶液的形式服用,有时也以静脉注射的方式给药。它们对病毒感染无效,
不恰当使用可能导致抗生素耐药性。```请用一句话总结上面这段话。

1680855822004482048.png

不用过于关注上面输出的准确性,这是我们将在后面的指南中讨论的内容,模型试图在一句话中概括这段文字。你可以根据指示来做些巧妙的调整,但我们会在后续章节中详细介绍。请随意暂停并尝试一下,看看是否能获得更好的结果。

信息提取

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

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

在研究论文中,作者贡献声明和致谢应清楚明确地说明作者在撰写论文和分析过程中是否及在多大程度上使用了ChatGPT
等人工智能技术。他们还应指示使用了哪些大语言模型(LLMs)。这将提醒编辑和审稿人更加仔细地审查论文,以寻找
潜在的偏见、不准确和不正确的来源引用。同样,科学期刊在选择投稿论文时应对其使用的大语言模型透明。
请提及上述段落中提到的大型语言模型产品。

1680856746596855808.png

通过上述的结果,虽然GPT回答有问题,但现在已经非常有用了,而且还有许多方法可以提升结果质量。

现在,你应该已经意识到,只要简单地告诉模型要做什么,你就可以要求它执行不同的任务。这是一个强大的AI能力,AI产品开发者已经利用它来构建强大的产品和体验。

问答系统

通过改进提示的格式是使模型回答特定问题的最佳方法之一。如前所述,提示可以结合指示、上下文、输入和输出指示符,以获得更好的结果。虽然这些组件不是必需的,但随着指导越具体,结果将会越好,这成为一种良好的做法。下面是一个按照更结构化提示的示例。

根据下面的背景回答问题。回答要简短明了。如果不确定答案,请回答“对答案不确定”。
背景:Teplizumab的起源可以追溯到一个叫Ortho Pharmaceutical的新泽西州药公司。在那里,科学家们生成了一种名为
OKT3的抗体的早期版本。最初是从小鼠中提取的分子,它能够结合到T细胞的表面并限制它们的细胞杀伤潜力。在1986年,
它被批准用于帮助预防肾脏移植后的器官排斥反应,使其成为第一种允许人类使用的治疗性抗体。
问题:OKT3最初是从哪里得到的?
答案:

1680858069157376000.png

文本分类

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

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

将文本分类为中性、负面或正面。
文本:我觉得这食物还可以。
情感:

1680858718246891520.png

完美!这次模型返回了"中性",这正是您要查找的具体标签。似乎提示中提供的例子帮助模型在输出中变得具体。为了强调为什么有时候具体是重要的,请看下面的例子并找出问题。

将文本分类为中性、负面或正面。
文本:我觉得这个假期还可以。
情感:

1680861081418428416.png

这里的问题是什么?作为提示,虚构的"中间"标签完全被模型忽略了。相反,模型输出了"中性",因为它对该标签有一些偏见。但是,让我们假设您真正想要的是"中间"。您该如何解决这个问题呢?也许您可以尝试为标签添加描述或在提示中添加更多的例子?如果您不确定,我们将在接下来的部分讨论一些想法。

对话

通过提示工程,您可以实现的其中一个更有趣的目标是指导语言模型系统的行为、意图和身份。当您构建像客户服务聊天机器人这样的对话系统时,这特别有用。

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

以下是与一名AI研究助理的对话。助理的语气是技术性和科学性的。
人类:你好,你是谁?
AI:问候!我是一名AI研究助理。我今天能帮您什么忙吗?
人类:你能告诉我关于黑洞的形成吗?
AI:

1680861850897051648.png

我们的AI研究助理听起来有点太技术化了,对吗?好的,让我们改变这种行为,指示系统提供更易理解的答案。下面是重新组织提示词过后的问题和回答:

以下是与一名AI研究助理的对话。助理的回答应该易于理解,甚至适合小学生。
人类:你好,你是谁?
AI:你好!我是一名AI研究助理。我今天能帮你什么忙吗?
人类:你能告诉我关于黑洞的形成吗?
AI:

1680862111090700288.png

我们取得了一些进展,当然还可以继续改进。如果添加更多的例子,可能会得到更好的结果。

代码生成

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

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

请用python实现一段程序: 询问用户的姓名,并说“你好”。

1680862986299338752.png

我们稍微提高一下难度。下面的示例显示了在设计提示时LLMs可以做到多么强大。

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

1680863376877121536.png

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

推理

也许对于LLMs来说,最困难的任务之一就是需要某种形式的推理。推理是最有趣的领域之一,因为可以从LLMs中产生各种复杂的应用程序。

在涉及数学能力的任务方面已经取得了一些改进。尽管如此,需要注意的是,目前的LLMs在执行推理任务时仍然存在困难,因此需要更高级的提示工程技术。我们将在下一篇指南中介绍这些高级技术。现在,我们将介绍一些基本的示例来展示算术能力。

9000乘以9000等于多少?

1680863842000269312.png

再试试难一点的:

这个组中的奇数相加得到一个偶数: 15, 32, 5, 13, 82, 7, 1.
回答:

1680865798764720128.png

优化一下提示词,加上计算任务分步骤解释

这个组中的奇数相加得到一个偶数: 15, 32, 5, 13, 82, 7, 1。
通过将问题分解成步骤来解决。首先,识别奇数,将它们相加,然后指示结果是奇数还是偶数。

1680866050058055680.png

顺便说一下,我试过几次,系统有时候会失败。如果你提供更好的指示结合示例,可能会有助于获得更准确的结果。我们将继续在本指南的这一部分中包含更多常见应用的示例。在接下来的部分中,我们将介绍更多先进的提示工程概念和技术,以提高在所有这些更困难的任务上的性能。

PS:本文所有示例由“灵象智问AI”提供入口,官网https://www.lxzw888.com/


标题:Prompt Engineering 提示词工程研究指南:四、提示词编写样例
作者:michael
地址:https://blog.junxworks.cn/articles/2023/07/17/1689583535895.html