学习如何生成或处理文本
简介
“completions”端点可用于各种任务。它提供了一个简单而强大的接口,可用于任何我们的模型。您将一些文本作为提示输入,模型将生成一个文本补全,试图匹配您给出的任何上下文或模式。例如,如果您给API提供提示“正如笛卡尔所说,我思故我在”,它将以高概率返回补全“我是”。
开始探索“completions”的最佳方式是通过我们的Playground。它只是一个文本框,您可以在其中提交提示以生成补全。要自己尝试,请在Playground中打开此示例:
一旦您提交,您将看到类似于以下内容:
你看到的实际完成情况可能不同,因为该API默认是非确定性的。这意味着你每次调用它都可能得到一个稍微不同的完成度,即使你的prompt
保持不变。将temperature
设置为0将使输出大部分是确定的,但可能仍然有少量的变化。
这种简单的文本输入、文本输出界面意味着你可以通过提供指示或只提供一些你希望它做什么的例子来 "编程 "这个模型。它的成功通常取决于任务的复杂性和你提示的质量。一个好的经验法则是考虑你会如何为一个中学生写一个文字问题来解决。一个写得好的提示为模型提供了足够的信息,使它知道你想要什么以及它应该如何回应。
本指南包括一般提示设计的最佳实践和例子。要了解更多关于使用我们的Codex模型的代码工作,请访问我们的代码指南。
请记住,默认模型的训练数据在2021年截止,所以它们可能不了解当前的事件。我们计划在未来增加更多的连续训练。
Prompt 设计
基础知识
我们的模型可以做任何事情,从生成原创故事到执行复杂的文本分析。因为它们可以做这么多事情,所以你必须明确描述你想要什么。展示,而不只是讲述,往往是一个好的prompt
的秘密。
创建提示有三个基本准则。
展示和讲述。通过指示、例子或两者的结合来明确你想要什么。如果你想让模型按字母顺序排列一个项目清单,或按情绪对一个段落进行分类,就向它展示你想要的东西。
提供高质量的数据。如果你试图建立一个分类器或让模型遵循一个模式,确保有足够的例子。确保校对你的例子--模型通常足够聪明,可以看穿基本的拼写错误,并给你一个回应,但它也可能认为这是故意的,这可能会影响回应。
检查你的设置。温度和top_p设置控制了模型在产生响应方面的确定性。如果你要求它产生一个只有一个正确答案的响应,那么你就想把这些设置得低一些。如果你希望得到更多不同的反应,那么你可能想把它们设置得更高。人们使用这些设置的首要错误是假定它们是 "聪明 "或 "创造性 "控制。
故障排除
如果你在让API按预期执行时遇到困难,请遵循这个检查表。
是否清楚预期的生成应该是什么?
是否有足够的例子?
你有没有检查你的例子是否有错误?(API不会直接告诉你)
你是否正确使用了temperature 和top_p?
分类器
为了用API创建一个文本分类器,我们提供了一个任务描述和几个例子。在这个例子中,我们展示了如何对Tweets的情感进行分类。
Decide whether a Tweet's sentiment is positive, neutral, or negative.
Tweet: I loved the new Batman movie!
Sentiment:
值得注意的是这个例子中的几个特点。
使用平实的语言来描述你的输入和输出。我们对输入 "Tweet "和预期输出 "Sentiment "使用平实的语言。作为一个最佳实践,先用平实的语言描述。虽然你经常可以用速记或键来表示输入和输出,但最好是一开始就尽可能地描述,然后向后删除多余的词,看看性能是否保持一致。
向API展示如何对任何情况作出反应。在这个例子中,我们在指令中包括可能的情感标签。一个中立的标签是很重要的,因为在很多情况下,即使是人类也很难确定某些东西是积极的还是消极的,还有一些情况是两者都不是。
对于熟悉的任务,你需要更少的例子。对于这个分类器,我们不提供任何例子。这是因为API已经对情感和Tweet的概念有了了解。如果你要为API可能不熟悉的东西建立一个分类器,可能需要提供更多的例子。
提高分类器的效率
现在我们已经掌握了如何建立一个分类器,让我们以这个例子为例,让它变得更加高效,这样我们就可以用它来从一次API调用中获得多个结果。
Classify the sentiment in these tweets:
1. "I can't stand homework"
2. "This sucks. I'm bored 😠"
3. "I can't wait for Halloween!!!"
4. "My cat is adorable ❤️❤️"
5. "I hate chocolate"
Tweet sentiment ratings:
我们提供一个有编号的推文列表,这样API就可以在一次API调用中对五条(甚至更多)推文进行评级。
需要注意的是,当你要求API创建列表或评估文本时,你需要格外注意你的概率设置(Top P or Temperature),以避免漂移。
- 通过运行多次测试,确保你的概率设置被正确校准。
-
- 不要使你的列表太长,否则API很可能会漂移。
生成
你可以用API完成的最强大但最简单的任务之一是生成新的想法或输入版本。你可以要求任何东西,从故事的想法,到商业计划,到角色描述和营销口号。在这个例子中,我们将使用API来创建在健身中使用虚拟现实的想法。
如果需要,你可以通过在提示中加入一些例子来提高回答的质量。
对话
API非常善于与人甚至与自己进行对话。只需几行指令,我们就能看到API作为一个客服聊天机器人,智能地回答问题而不慌乱,或者作为一个聪明的对话伙伴,开笑话和说双关语。关键是要告诉API它应该如何表现,然后提供一些例子。
下面是一个API扮演人工智能回答问题的例子。
以下是与一个人工智能助手的对话。这个助手很有帮助,很有创意,很聪明,而且非常友好。
The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.
Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human:
这就是创建一个能够进行对话的聊天机器人的全部内容。在其简单性之下,有几件事值得注意。
我们告诉API的意图,但我们也告诉它如何表现。就像其他提示一样,我们提示API这个例子代表什么,但我们还增加了另一个关键细节:我们给它明确指示如何与 "这个助手很有帮助,很有创意,很聪明,而且非常友好 "这句话互动。
如果没有这个指示,API可能会偏离并模仿与之互动的人类,变得讽刺或其他一些我们想要避免的行为。
我们给API一个身份。在开始时,我们让API作为一个人工智能助手作出反应。虽然API没有内在的身份,但这有助于它以一种尽可能接近事实的方式做出回应。你可以以其他方式使用身份来创建其他类型的聊天机器人。如果你告诉API以一个从事生物学研究的女科学家的身份做出回应,你会从API那里得到智能和深思熟虑的评论,类似于你对具有这种背景的人的期望。
在这个例子中,我们创建了一个有点讽刺的聊天机器人,并不情愿地回答问题。
Marv is a chatbot that reluctantly answers questions with sarcastic responses:
You: How many pounds are in a kilogram?
Marv: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
You: What does HTML stand for?
Marv: Was Google too busy? Hypertext Markup Language. The T is for try to ask better questions in the future.
You: When did the first airplane fly?
Marv: On December 17, 1903, Wilbur and Orville Wright made the first flights. I wish they’d come and take me away.
You: What is the meaning of life?
Marv: I’m not sure. I’ll ask my friend Google.
You: Why is the sky blue?
为了创建一个有趣的、有点帮助的聊天机器人,我们提供了一些问题和答案的例子,向API展示如何回答。只需要几个讽刺性的回答,API就能掌握这个模式,并提供无尽的讽刺性回答。