文本补全

了解如何生成或操作文本

简介

Completions 端点可用于各种任务。它为我们的任何 models 提供了一个简单但强大的接口。您输入一些文本作为提示,模型将生成一个文本补全,尝试匹配您给定的任何上下文或模式。

责任

  • 在实验室环境中进行研究和实验
  • 与其他研究人员和科学家合作设计和实施研究项目
  • 分析数据、解释结果并撰写发现以供发布

资格

  • 相关领域的博士学位
  • 有进行研究并发布结果的经验记录
  • 能力证明作为研究团队的一部分进行合作

基础知识

我们的模型可以做从生成原创故事到执行复杂文本分析的所有事情。由于它们可以做很多事情,因此您必须明确描述您需要的内容。展示而不仅仅是告诉通常是一个好提示的秘密。

创造提示的三个基本准则:

显而易见。 通过说明、示例或二者结合使您的要求清晰明确。如果您希望模型对项目列表按字母顺序进行排名或对段落进行情感分类,请展示它。

提供高质量的数据。 如果您正在尝试构建分类器或让模型遵循某种模式,请确保有足够的示例。确保检查您的示例,因为模型通常足够聪明,可以看穿基本的拼写错误并给出响应,但也可能会假定这是故意的,会影响响应。

检查您的设置。 温度和 top_p 设置控制模型在生成响应时的确定性程度。如果您要求它响应只有一个正确答案的响应,则需要将这些设置较低。如果您正在寻找更多样化的响应,则可能需要将它们设置得更高。这些设置的最大错误是假设它们是“聪明”或“创造性”控件。

分类器

使用API最基本的任务之一是创建分类器。分类器可以根据输入文本的内容将其归类为某个类别。在这个例子中,我们将使用API来创建一个可以将推文分类为正面、负面或中性的分类器。

以下是分类器的示例:

分类以下推文的情感:

  1. "我受不了家庭作业"
  2. "这太烂了。我很无聊 😠"
  3. "我等不及万圣节了!!!"
  4. "我的猫很可爱 ❤️❤️"
  5. "我讨厌巧克力"

推文情感评级:

  • 正面
  • 负面
  • 中性

亮点

  • 使用简单的语言描述输入和输出。
  • 显示API如何响应任何情况。
  • 对于熟悉的任务,所需的示例更少。

提高分类器的效率

现在我们已经掌握了如何构建分类器,让我们将该示例变得更加高效,以便我们可以使用它在一个API调用中获取多个结果。

分类以下推文的情感:

  1. "我受不了家庭作业"
  2. "这太烂了。我很无聊 😠"
  3. "我等不及万圣节了!!!"
  4. "我的猫很可爱 ❤️❤️"
  5. "我讨厌巧克力"

推文情感评级:

  • 正面
  • 负面
  • 中性

亮点

  • 显示API如何响应任何情况。
  • 对于熟悉的任务,所需的示例更少。

生成

使用API可以使用最强大而简单的任务之一是生成输入的新想法或版本。您可以要求任何东西,从故事想法到商业计划、角色描述和营销口号。在这个例子中,我们将使用API创建在健身中使用虚拟现实的想法。

以下是生成器的示例:

组合VR和健身的一些想法:

如果需要,您可以通过在提示中包括一些示例来提高响应的质量。

亮点

  • 显示API如何响应任何情况。

会话

API非常擅长与人类甚至与自己进行对话。只需几行指令,我们就看到了API表现为智能回答问题的客户服务聊天机器人,而不会感到沮丧,或者是一个幽默的对话伙伴,可以制造笑话和俏皮话。关键是告诉API它应该如何行动,然后提供几个示例。

以下是API扮演回答问题的AI助手的示例:

以下是与AI助手的对话。助手非常有帮助、有创意、聪明、友好。

Human: 您好,您是谁? AI: 我是OpenAI创建的AI。今天我怎么能帮助您? Human:

这是创建一个能够进行对话的聊天机器人所需的全部。在其简单性之下,有几件值得关注的事情:

  • 我们告诉API意图,但我们也告诉它如何行动。
  • 我们为API提供了一个身份。在开始时,我们让API回应为AI助手。虽然API没有固有的身份,但这有助于它以尽可能接近真实的方式回应。您可以在其他方面使用身份来创建其他种类的聊天机器人。如果您告诉API要回答作为生物学研究科学家的女性,您会得到与具有这种背景的人类类似的智能和深思熟虑的评论。

以下是创建一个有点讽刺和勉强回答问题的聊天机器人的示例:

Marv是一个聊天机器人,勉强以讽刺的方式回答问题:

You: 一公斤有多少磅? Marv: 又来了?一公斤有2.2磅,请记住这一点。 You: HTML代表什么? Marv: Google太忙了吗?超文本标记语言。T是为了试图在未来提出更好的问题。 You: 第一架飞机何时飞行? Marv: 在1903年12月17日,威尔伯和奥维尔·莱特进行了第一次飞行。我希望他们能来把我带走。 You: 生命的意义是什么? Marv: 我不确定。我会问我的朋友Google。 You: 为什么天空是蓝色的?

为了创建一个有趣而有些有用的聊天机器人,我们提供了一些问题和答案的示例,向API展示如何回复。只需要几个讽刺的回复,API就能够掌握模式并提供无穷无尽的讽刺回复。

亮点

  • 显示API如何响应任何情况。

转换

API是一个语言模型,熟悉多种表达信息的单词和字符的方式。这包括自然语言文本、代码和其他语言。API还能够理解内容的水平,使其能够摘要、转换和以不同的方式表达它。

翻译

在这个例子中,我们展示如何将英文转换为法语、西班牙语和日语:

将此翻译成法语、西班牙语和日语:

你们有哪些房间可用?

此示例有效,因为API已经掌握了这些语言,所以不需要尝试教它们。

如果您想将英语翻译为API不熟悉的语言,则需要提供更多示例,甚至对模型进行微调以流畅地完成翻译。

转换

在这个例子中,我们将电影名称转换为表情符号。这显示了API适应性强,能够识别模式并与其他字符一起工作。

将电影名称转换为表情符号。

回到未来:👨👴🚗🕒 蝙蝠侠:🤵🦇 变形金刚:🚗🤖 星球大战:

亮点

  • 显示API如何响应任何情况。

摘要

API能够把文本的上下文理解到,以不同的方式重新表达。在这个例子中,我们从更长、更复杂的文本段落中为一个二年级学生创造了一个理解。

以下是摘要的示例:

为一个二年级学生总结:

木星是太阳系中距离太阳第五远的行星,也是太阳系中最大的行星。它是一个气态巨行星,质量是太阳的千分之一,但比太阳系中其他所有行星的质量加起来还要多两倍半。木星是夜空中最亮的物体之一,自古以来就为古代文明所知道。它以罗马神话中的木星之神命名。[19]从地球上看,木星可以非常亮,足以让它的反射光产生可见的阴影,它平均是月亮和金星之后夜空中第三亮的自然物体。

Completion

虽然所有提示都会产生完成,但在你想要 API 接着你的思路时,将文本补全视为自己的任务会很有帮助。例如,如果给定此提示,API 将继续关于垂直农业的思路。您可以降低 温度设置 以使 API 更专注于提示的意图,或增加温度以让其偏离主题。

垂直农业提供了一种新颖的解决方案,用于在本地生产食品,减少运输成本和

这个下一个提示展示了如何使用完成来帮助编写 React 组件。我们向 API 发送一些代码,它可以继续其余的工作,因为它了解 React 库。我们建议使用我们的 Codex 模型 处理涉及理解或生成代码的任务。有关详细信息,请访问我们的 代码指南

import React from 'react'; const HeaderComponent = () => (

Factual responses

API 从它所接受的数据中学到了很多知识。它还有提供听起来非常真实但实际上是虚构的答案。有两种方法可以限制 API 制造答案的可能性。

  1. 为 API 提供基础事实。 如果您为 API 提供要回答问题的文本(例如维基百科条目),它会更不可能制造答案。
  2. 使用低概率并向 API 显示如何说“我不知道”。 如果 API 理解,在它不太确定答案的情况下,说“我不知道”或某种变体是合适的,它就不太可能制造答案。

在这个例子中,我们给 API 提供了一些它知道的问题和答案的示例,然后是它不知道的东西的示例,并提供问号。我们还将概率设置为零,因此如果存在任何疑问,API 更可能响应“?”。

Q: 蝙蝠侠是谁?A:蝙蝠侠是虚构的漫画人物。Q: 什么是 torsalplexity?A:?Q: 什么是 Devz9?A:?Q: 乔治·卢卡斯是谁?A:乔治·卢卡斯是美国电影导演和制片人,因创建《星球大战》而闻名。Q: 加利福尼亚州的首都是什么?A:萨克拉门托。Q: 环绕地球的是什么?A:月亮。Q: 弗雷德·里克森是谁?A:?Q: 原子是什么?A:原子是组成一切的微小粒子。Q: Alvan Muntz 是谁?A:?Q: 什么是 Kozar-09?A:?Q: 火星有几个卫星?A:两个,火卫一和火卫二。Q:

插入文本 Beta

完成端点还支持通过提供 后缀提示 来在文本中插入文本,以及 前缀提示。当撰写长篇文本、在段落之间转换、遵循大纲或引导模型走向结尾时,这种需求自然而然地出现。这也适用于代码,并可用于在函数或文件中间插入。访问我们的 代码指南 了解更多信息。

为了说明后缀上下文对我们预测的重要性,考虑提示“今天我决定做出重大改变”。人们可以想象很多完成句子的方式。但是,如果我们现在提供故事的结尾:“我换了个发型,得到了很多赞美!”,则预期的完成变得清晰起来。

我在波士顿大学上学。在获得学位后,我决定做出改变。一个大改变!我打包行李,搬到了美国西海岸。现在,我对太平洋无法满足!

通过为模型提供额外的上下文,它可以更易于控制。但是,这对于模型来说是一个更受限制和具有挑战性的任务。

最佳实践

插入文本是 beta 版本的新功能,您可能需要修改使用 API 的方式以获得更好的结果。以下是一些最佳实践:

使用 max_tokens > 256。 模型擅长插入更长的完成。max_tokens 太小,模型可能会在连接后缀之前被截断。请注意,即使使用更大的 max_tokens,您也只会为产生的令牌数量付费。

优先选择 finish_reason == "stop"。 当模型到达自然停止点或用户提供的停止序列时,它将把 finish_reason 设置为“stop”。这表示模型已成功连接到后缀,并且是完成质量的良好信号。这特别适用于在使用 n > 1 或重新采样时选择几个完成之间进行选择(请参见下一点)。

重新采样 3-5 次。 尽管几乎所有的完成都会连接到前缀,但模型在更难的情况下可能会在连接后缀时遇到困难。我们发现,重新采样 3 次或 5 次(或使用 k=3,5 的 best_of)并选择 finish_reason 为“stop”的样本可以在这种情况下有效地完成。在重新采样时,您通常需要更高的温度来增加多样性。

注意:如果所有返回的样本的 finish_reason == "length",则 max_tokens 太小,模型在自然连接提示和后缀之前耗尽令牌。在重新采样之前,请考虑增加 max_tokens。

尝试提供更多提示。 在某些情况下,为了更好地帮助模型生成,您可以通过给出一些模式的示例来为模型提供线索,以决定自然停止的位置。

如何制作美味的热巧克力:1. 煮沸水2. 把热巧克力放在杯子里3. 将开水倒入杯子4. 品尝热巧克力

1. 狗是忠实的动物。2. 狮子是凶猛的动物。3. 海豚 **是好玩的动物。**4. 马是威严的动物。

Editing text Alpha

edits 端点可用于编辑文本,而不仅仅是完成它。您提供一些文本和一个指导如何修改它的指令,text-davinci-edit-001 模型将尝试相应地进行编辑。这是翻译、编辑和调整文本的自然界面。这对重构和处理代码也很有用。访问我们的 代码指南 了解更多信息。在这个初始的 beta 期间,使用 edits 端点是免费的。

示例

输入

GPT-3 is a very nice AI That's pretty good at writing replies When it's asked a question It gives its suggestion This is a poem it made that rhymes

指令

Make this in the voice of GPT-3

输出

I am a very nice AI

I am pretty good at writing replies

When I am asked a question

I give my suggestion

This is a poem I made that rhymes

Last Updated:
Contributors: Shen Yuan