转载

OpenAi 文本完成

了解如何生成或操作文本

介绍

完成终结点可用于各种任务。它为我们的任何模型提供了一个简单但功能强大的界面。您输入一些文本作为提示,模型将生成一个文本补全,尝试匹配您为其提供的任何上下文或模式。例如,如果你给 API 提示,“正如笛卡尔所说,我认为,因此”,它将以很高的概率返回完成“我是”。

开始探索完井的最佳方式是通过我们的游乐场。它只是一个文本框,您可以在其中提交提示以生成完成。您可以从如下所示的示例开始:

为冰淇淋店写一个标语。

提交后,您将看到如下所示的内容:

为冰淇淋店写一个标语。我们用每一勺提供微笑!

您看到的实际完成情况可能会有所不同,因为默认情况下 API 是不确定的。这意味着每次调用它时,即使提示保持不变,您也可能得到略有不同的完成。将温度设置为 0 将使输出大部分具有确定性,但可能会保留少量可变性。

这个简单的文本输入、文本输出界面意味着您可以通过提供说明或仅提供您希望它做什么的几个示例来“编程”模型。它的成功通常取决于任务的复杂性和提示的质量。一个好的经验法则是考虑如何为中学生写一个单词问题来解决。编写良好的提示为模型提供了足够的信息,以便了解您想要什么以及它应该如何响应。

本指南涵盖一般提示设计最佳实践和示例。要了解有关使用我们的 Codex 模型处理代码的更多信息,请访问我们的代码指南

请记住,默认模型的训练数据在 2021 年中断,因此它们可能不了解当前事件。我们计划在未来增加更多的持续培训。

提示设计

基本

我们的模型可以做任何事情,从生成原始故事到执行复杂的文本分析。因为他们可以做很多事情,所以你必须明确描述你想要什么。展示,而不仅仅是讲述,通常是良好提示的秘诀。

创建提示有三个基本准则:

展示和讲述。通过说明、示例或两者的组合来明确您想要什么。如果希望模型按字母顺序对项目列表进行排名或按情绪对段落进行分类,请显示这是您想要的。

提供高质量的数据。如果尝试生成分类器或让模型遵循模式,请确保有足够的示例。一定要校对你的例子——这个模型通常足够聪明,可以看穿基本的拼写错误并给你一个响应,但它也可能认为这是故意的,它可能会影响响应。

检查您的设置。温度和top_p设置控制模型在生成响应时的确定性。如果你要求它给出只有一个正确答案的答案,那么你需要把这些设置得更低。如果您正在寻找更多样化的响应,那么您可能希望将它们设置得更高。人们使用这些设置的第一个错误是假设它们是“聪明”或“创造力”控件。

故障 排除

如果在使 API 按预期执行时遇到问题,请按照以下清单操作:

  1. 是否清楚预期的一代应该是什么?
  2. 有足够的例子吗?
  3. 您是否检查过您的示例是否有错误?(API 不会直接告诉你)
  4. 是否正确使用温度和top_p?

分类

为了使用 API 创建文本分类器,我们提供了任务的描述和一些示例。在此示例中,我们展示了如何对推文的情绪进行分类。

确定推文的情绪是积极的、中立的还是消极的。 推特:我喜欢新的蝙蝠侠电影! 情绪:

在这个例子中,值得关注的几个功能:

  1. 使用简单的语言来描述您的输入和输出。我们使用简单的语言输入“推文”和预期的输出“情绪”。最佳做法是,从简单的语言描述开始。虽然您通常可以使用速记或键来指示输入和输出,但最好从尽可能具有描述性开始,然后向后工作以删除多余的单词,看看性能是否保持一致。

  2. 向 API 展示如何响应任何案例。在此示例中,我们在指令中包含可能的情绪标签。中性标签很重要,因为在许多情况下,即使是人类也很难确定某事是积极的还是消极的,而在这种情况下,它两者都不是。

  3. 对于熟悉的任务,您需要更少的示例。对于此分类器,我们不提供任何示例。这是因为 API 已经了解了情绪和推文的概念。如果要为 API 可能不熟悉的内容构建分类器,则可能需要提供更多示例。

提高分类器的效率

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

对这些推文中的情绪进行分类: 1.“我受不了作业” 2.“这很糟糕。我很无聊😠” 3.“我等不及万圣节了!!!” 4.“我的猫很可爱❤️❤️” 5.“我讨厌巧克力” 推文情绪评级:

我们提供了一个带编号的推文列表,因此 API 可以在一次 API 调用中对五条(甚至更多)推文进行评级。

请务必注意,当您要求 API 创建列表或评估文本时,您需要特别注意概率设置(Top P 或温度)以避免漂移。

  1. 确保通过运行多个测试正确校准概率设置。

  2. 不要让你的列表太长,否则 API 可能会漂移。


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

集思广益,结合VR和健身的一些想法:

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


谈话

该 API 非常擅长与人类甚至自身进行对话。只需几行指令,我们就看到 API 可以作为客户服务聊天机器人执行,它可以智能地回答问题而不会感到慌乱,或者是一个明智的对话伙伴,可以开玩笑和双关语。关键是告诉 API 它应该如何运行,然后提供一些示例。

下面是 API 扮演 AI 回答问题的角色的示例:

以下是与AI助手的对话。助手乐于助人,富有创造力,聪明且非常友好。 人类:你好,你是谁? AI:我是OpenAI创造的AI。今天我能帮你什么? 人:

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

  1. 我们告诉 API 意图,但我们也告诉它如何行为。就像其他提示一样,我们将 API 提示到示例所代表的内容,但我们还添加了另一个关键细节:我们向它提供了有关如何与短语“助手乐于助人、富有创造力、聪明且非常友好”进行交互的明确说明。

    如果没有该指令,API 可能会偏离并模仿与之交互的人,并变得讽刺或我们想要避免的其他行为。

  2. 我们给 API 一个标识。一开始,我们让 API 作为 AI 助手进行响应。虽然 API 没有固有标识,但这有助于它以尽可能接近事实的方式进行响应。您可以通过其他方式使用身份来创建其他类型的聊天机器人。如果你告诉API作为一个在生物学领域担任研究科学家的女性做出回应,你会从API得到聪明而深思熟虑的评论,类似于你对具有这种背景的人的期望。

在这个例子中,我们创建了一个有点讽刺的聊天机器人,它不情愿地回答问题:

Marv 是一个聊天机器人,它不情愿地用讽刺的回答来回答问题: 你:一公斤是多少磅? 马夫:又是这个?一公斤有 2.2 磅。请注意这一点。 你:HTML代表什么? Marv:谷歌太忙了吗?超文本标记语言。T代表将来尝试提出更好的问题。 你:第一架飞机是什么时候飞的? Marv:17年1903月<>日,威尔伯和奥维尔·赖特进行了首次飞行。我希望他们来把我带走。 你:生命的意义是什么? 马夫:我不确定。我会问我的朋友谷歌。 你:为什么天空是蓝色的?

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


转型

API 是一种语言模型,它熟悉单词和字符可用于表达信息的各种方式。范围从自然语言文本到代码和英语以外的语言。API 还能够在允许它以不同方式总结、转换和表达内容的级别上理解内容。

译本

在此示例中,我们向 API 展示了如何将英语转换为法语、西班牙语和日语:

将其翻译成法语、西班牙语和日语: 你们有哪些房间?

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

如果你想从英语翻译成API不熟悉的语言,你需要为它提供更多的例子,甚至微调一个模型来流利地做到这一点。

转换

在此示例中,我们将电影名称转换为表情符号。这显示了 API 对拾取模式和处理其他字符的适应性。

将电影标题转换为表情符号。 回到未来: 👨👴🚗🕒 蝙蝠 侠: 🤵🦇 变形金刚: 🚗🤖 星球大战:

综述

API 能够掌握文本的上下文并以不同的方式改写它。在这个例子中,我们创建了一个解释,一个孩子可以从更长、更复杂的文本段落中理解。这说明 API 对语言有深入的掌握。

总结一下二年级学生: 木星是距离太阳的第五颗行星,也是太阳系中最大的行星。它是一颗气态巨行星,质量是太阳的千分之一,但是太阳系中所有其他行星总和的两倍半。木星是夜空中肉眼可见的最亮的天体之一,早在有记载的历史之前就为古代文明所知。它以罗马神木星命名。[19]从地球上看,木星的亮度足以使其反射光投射出可见的阴影,[20]并且平均是夜空中仅次于月球和金星的第三亮自然物体。

完成

虽然所有提示都会导致完成,但在您希望 API 从上次中断的地方继续的情况下,将文本完成视为自己的任务可能会很有帮助。例如,如果给出此提示,API 将继续思考垂直农业。您可以降低温度设置以使 API 更专注于提示的意图,也可以提高温度设置以使其偏离正切线。

垂直农业为在当地生产粮食、降低运输成本和

下一个提示显示了如何使用完成来帮助编写 React 组件。我们向 API 发送一些代码,它能够继续其余的代码,因为它了解 React 库。我们建议将我们的 Codex 模型用于涉及理解或生成代码的任务。要了解更多信息,请访问我们的代码指南

从“反应”导入反应; const 标头组件 = () => (

事实答复

API 有很多知识,它是从训练它的数据中学习的。它还能够提供听起来非常真实但实际上是编造的响应。有两种方法可以限制 API 组成答案的可能性。

  1. 为 API 提供基本事实。如果您向 API 提供文本正文来回答有关(如维基百科条目)的问题,则不太可能虚构响应。

  2. 使用低概率并向 API 展示如何说“我不知道”。如果 API 明白,在不太确定响应的情况下,说“我不知道”或某些变体是合适的,那么它就不太倾向于编造答案。

在此示例中,我们向 API 提供它知道的问题和答案的示例,然后提供它不知道的事情的示例并提供问号。我们还将概率设置为零,以便 API 更有可能在有任何疑问时响应“?”。

问:蝙蝠侠是谁? 答:蝙蝠侠是一个虚构的漫画人物。 问:什么是扭转力? 一个:? 问:什么是 Devz9? 一个:? 问:乔治·卢卡斯是谁? 答:乔治·卢卡斯是美国电影导演和制片人,以创作《星球大战》而闻名。 问:加州的首府是什么? 答:萨克拉门托。 问:什么绕地球运行? 答:月亮。 问:弗雷德·里克森是谁? 一个:? 问:什么是原子? 答:原子是构成一切的微小粒子。 问:阿尔万·蒙茨是谁? 一个:? 问:什么是Kozar-09? 一个:? 问:火星有多少颗卫星? 答:两个,火卫一和火卫一。 Q:

插入文本
试用版

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

为了说明后缀上下文对我们的预测能力有多重要,请考虑提示,“今天我决定做出重大改变。人们可以通过多种方式想象完成句子。但是,如果我们现在提供故事的结局:“我的新头发得到了很多赞美!”,预期的完成就变得清晰了。

我在波士顿大学上大学。获得学位后,我决定做出改变。一个很大的变化! 我收拾好行李,搬到了美国西海岸。 现在,我对太平洋的了解实在是太好了!

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

最佳实践

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

使用 max_tokens > 256。该模型更擅长插入较长的完成项。如果max_tokens太小,模型可能会在连接到后缀之前被切断。请注意,即使使用较大的max_tokens,也只需为生成的代币数量付费。

更喜欢finish_reason==“停止”。当模型到达自然停止点或用户提供的停止序列时,它将finish_reason设置为“停止”。这表明模型已成功连接到后缀,并且是完成质量的良好信号。这对于在使用 n > 1 或重新采样时在几个完成之间进行选择尤其重要(请参阅下一点)。

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

注意:如果所有返回的示例都有 finish_reason == “length”,则可能是max_tokens太小并且模型在设法自然连接提示和后缀之前耗尽了令牌。考虑在重新采样前增加max_tokens。

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

如何制作美味的热巧克力: 1. 烧开水 2.将热巧克力放入杯中 3.在杯子中加入开水 4.享受热巧克力

1. 狗是忠诚的动物。 2.狮子是凶猛的动物。 3. 海豚是爱玩的动物。4.马是雄伟的动物。

编辑文本
阿尔法

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

例子

输入
GPT-3 是一个非常好的人工智能 这很擅长写回复 当有人提问时 它给出了建议 这是一首押韵的诗
指示
以 GPT-3 的声音制作这个
输出
我是一个非常好的人工智能
我很擅长写回复
当我问到一个问题时
我给出我的建议
这是我做的一首押韵