【译】Prompt Engineering (提示词工程) 简介

在这里,我们讨论了几个撰写提示(输入模型的内容)的原则和技巧,这些提示将帮助您为您的任务获得最佳的生成结果。选择正确的温度也会对生成质量产生很大的影响,我们会在这里单独讨论温度。


主要的原则

我们发现,在设计我们的模型的提示时需要牢记两个主要的想法。

1. 提示将引导模型生成有用的输出。

例如,如果您需要一篇文章的摘要,足够训练的大型语言模型可以在您的引导下生成摘要:

这个提示有两个部分:您想要进行摘要的文本以及任务描述。

2. 尝试多种提示表述以获得最佳的生成结果

在使用generate时,尝试不同的提示对于解决问题非常有用。即使看起来类似的不同提示表述也可能导致生成结果截然不同。这可能是因为我们的模型已经学习到这些不同的提示表述在不同的上下文和用途中使用,因此会产生不同的结果。下面我们将给出一些我们发现在不同任务中特别有效的示例。
以摘要为例,如果使用“In summary”无法得到好的生成结果,我们可能需要尝试使用“To summarize in plain language”或“The main point to take from this article is that”。

此外,您还可以在playground中使用可能性特征来查看模型是否存在特定的单词、短语或结构理解困难的问题。但是,请记住,序列开始时的标记平均可能性总是很高的。模型可能会将首次引入新概念或名称的可能性降低,但一旦它看到它一次,就可以轻松地在生成中使用它。您还可以使用可能性功能查看是否有任何拼写或标点符号会导致记号化问题。

3.描述任务和一般情境

通常在任务描述中包含额外的组成部分会很有用,自然而然地,这些组成部分往往会在我们要处理的输入文本之后。

为模型提供足够的上下文。例如,在文章之前更详细地描述摘要任务。

示例:以自然语言塑造我们需要模型完成的任务,可以使用输入文本之前和之后的文本。

让我们通过另一个示例来考虑这个问题的更多方面。假设您想要使用我们的模型通过自动生成合理的回复来协助您的客户满意度部门(注意:生成结果不会发送给客户,这只是一种模拟)。

一个客户向您的公司提出了以下问题:

Hi, I'd like a refund for the coffee maker I ordered. Would that be possible?

如何设计一个提示语以便与顾客进行交互时得到有用的生成呢?首先,我们需要让我们的模型知道这个问题的一般背景,并且明确指出我们将在提示语中包含什么内容:

This is a conversation between a customer and a polite, helpful customer service agent.
Question of the customer: Hi, I'd like a refund for the coffee maker I ordered. Would that be possible?

好的,我们已经告诉模型可以期望什么,并清楚地表明我们的查询是针对顾客提出的问题。接下来,让我们展示模型我们想要给顾客的回答的开头部分。

Response by the customer service agent: Hello, thank you for reaching out to us. Yes,

请注意,我们已经明确表示下一个句子是对问题的回答,它来自客户服务代理,并且我们希望给出一个积极的答案。将这一切结合在一起,我们得到以下提示:

This is a conversation between a customer and a polite, helpful customer service agent.
Question of the customer: Hi, I'd like a refund for the coffee maker I ordered. Would that be possible?
Response by the customer service agent: Hello, thank you for reaching out to us. Yes,
在提示语中包含特定的组件(例如输入和输出指示器)有助于向模型描述所需的任务,特别是在提示语中包含多个示例时(如下图所示)。

将其多次输入到我们的中型模型中,我们得到以下的完成结果:

  • 是的,如果产品未使用并且未打开,我们可以接受退货。
  • 是的,我们很乐意退还您的购买款项。但是,我们需要您将物品退回到我们的商店以获得全额退款。
  • 是的,我们可以这样做。请给我们发送一条消息,包括您的姓名、电话号码和退款原因。我们将尽快回复您。
  • 请注意,即使这只是一个简化的示例,我们也可以从基线模型中获得可信的完成结果,而且只使用了很少的客户服务交互!通过对特定问题和请求的处理示例进行微调,这可以进一步改进。

4. 展示给模型您希望看到的内容

将示例添加到提示中是实现良好生成的关键方式之一。示例向模型展示了我们所针对的输出类型。

请提供您想要的一些生成类型的示例。这被称为少样本学习。我们来看一个例子。假设您想要使用我们的模型来分类电影评论是积极的、消极的还是中性的。想象一下,您将以下提示输入到我们的模型中:

Review: "I really enjoyed this movie!"
This sentiment of this review is

根据此提示,我们的 Medium 模型实际生成了以下内容:

This sentiment of this review is apt, considering the movie's plot,

显然,我们的模型看到可能是我们不希望得到的生成类型。

在提示中,示例应包括要模拟的示例输入和输出。

将所有这些内容结合在一起,将其馈入Medium Generation模型,我们可靠地获得积极的生成。

This is a movie review sentiment classifier.
Review: "I loved this movie!"
This review is positive.
Review: "I don't know, it was ok I guess.."
This review is neutral.
Review: "What a waste of time, would not recommend this movie."
This review is negative.
Review: "I really enjoyed this movie!"
This review is

这个提示的一个更简单的版本可以这样展示:


一个将提示的各个组成部分结合起来的示例。我们还可以在每个示例中重复任务描述,以强调对模型的指示。

少样本生成通常会在我们更大的模型中更好地工作。您可以使用可能性终点来查看模型对示例中给出的正确答案的不确定性。

如果命令格式不起作用,请尝试将其结构化为散文。与生成模型进行直观互动的一种方式是向模型发出有关所需生成类型的命令,例如:列举艺术职业的清单。但是,由于我们的模型看到的大部分文本都是互联网文章,有时会误解这种写作方式。尝试将命令重新表述为散文的方式,以使模型产生所需的输出:

The table lists the following professions as artistic careers:
1. Painter 2.

总的来说,您可能希望尝试不同的写作风格,直到找到适合您的东西。例如,写新闻文章、博客文章或对话的风格。

案例

在这里,我们将展示如何应用上述原则来完成两项具体任务:根据给定的文章生成关键词和根据少数已有示例生成更多示例。

生成关键词:假设我们有一些文本段落,希望自动标记其中最相关的概念。

通过结合上述技术,我们可以实现这一目标!首先,在提示语的开头说明此提示的设定。然后,我们展示模型两个要完成的示例:用标签“约翰·冯·诺依曼”标记来自约翰·冯·诺依曼维基百科页面的段落,用标签“女权主义”标记来自女权主义维基百科页面的段落。最后,我们向模型提供来自 Python 维基百科页面的一段。

This is a bot that automatically finds the most important keyword for a given text passage.

Text: "John von Neumann (/vɒn ˈnɔɪmən/; Hungarian: Neumann János Lajos, pronounced [ˈnɒjmɒn ˈjaːnoʃ ˈlɒjoʃ]; December 28, 1903 – February 8, 1957) was a Hungarian-American mathematician, physicist, computer scientist, engineer and polymath. Von Neumann was generally regarded as the foremost mathematician of his time[2] and said to be "the last representative of the great mathematicians".[3] He integrated pure and applied sciences."

Most important key word: "John von Neumann"

Text: "Some scholars consider feminist campaigns to be a main force behind major historical societal changes for women's rights, particularly in the West, where they are near-universally credited with achieving women's suffrage, gender-neutral language, reproductive rights for women (including access to contraceptives and abortion), and the right to enter into contracts and own property.[9] Although feminist advocacy is, and has been, mainly focused on women's rights, some feminists argue for the inclusion of men's liberation within its aims, because they believe that men are also harmed by traditional gender roles.[10] Feminist theory, which emerged from feminist movements, aims to understand the nature of gender inequality by examining women's social roles and lived experience; feminist theorists have developed theories in a variety of disciplines in order to respond to issues concerning gender."

Most important key word:  "Feminism"

Text: "Guido van Rossum began working on Python in the late 1980s, as a successor to the ABC programming language, and first released it in 1991 as Python 0.9.0.[31] Python 2.0 was released in 2000 and introduced new features, such as list comprehensions and a garbage collection system using reference counting and was discontinued with version 2.7.18 in 2020.[32] Python 3.0 was released in 2008 and was a major revision of the language that is not completely backward-compatible and much Python 2 code does not run unmodified on Python 3."

Most important key word:

这个提示可靠地生成“Python”作为答案,有时还会返回另一个可信选项“Guido van Rossum”。

示例生成:常见的任务是让模型根据某些描述生成示例。以以下格式列出提示通常效果良好。

This is a list of ideas for blog posts for tourists visiting Toronto:

1. The best sights to see in Toronto
2. My favourite walks in Toronto

这将给我们带来类似以下的生成结果:

3. An overview of Toronto
4. Toronto events
5. Restaurants in Toronto
6. Shopping in Toronto
7. Travel tips for Toronto
8. Sightseeing in Toronto
9. What to do in Toronto
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容