2. 快速入门

116 阅读8分钟

原文链接:platform.openai.com/docs/quicks…

OpenAI已经训练出了非常擅长理解和生成文本的尖端语言模型。我们的API提供了对这些模型的访问,可以用于解决几乎任何涉及处理语言的任务。

在本快速入门教程中,您将构建一个简单的示例应用程序。在此过程中,您将学习在各种任务中使用API的基本概念和技术,包括:

● 内容生成

● 摘要

● 分级,分类和情绪分析

● 数据提取

● 翻译

● 更多其他任务!

简介

completions端点是我们API的核心,提供了一个非常灵活和强大的简单接口。您输入一些文本作为prompt,API将返回一个文本completion,试图匹配您给它的任何指令或上下文。

prompt: 为冰淇淋店写一句标语。

completion: 我们为每一勺冰淇淋提供微笑!

你可以认为这是一个非常高级的自动补全——模型处理你的文本提示,并尝试预测接下来最有可能发生的事情。

从指令开始

假设您想要创建一个宠物名生成器。从零开始起名字是很难的!

首先,你需要一个能明确你想要什么的prompt。让我们从一个指令开始。提交此prompt以生成你的第一个completion。

帮我给马起一个名字。    [原文可以提交prompt]

很好!现在,试着让你的指令更具体。

帮我给一匹黑马取一个名字。    [原文可以提交prompt]

如您所见,向prompt中添加一个简单的形容词会改变completion的结果。设计你的prompt本质上是你如何为模型“编程”。

再多一些例子

制定好的指令对于取得好的结果很重要,但有时还不够。让我们试着让你的指令更复杂。

给一匹超级英雄马取三个名字。    [原文可以提交prompt]

这个completion并不是我们想要的。这些名称非常平庸,似乎模型并没有注意到我们指令中关于马的部分。让我们看看是否能让它提出一些更相关的建议。

在很多情况下,向模型展示并告诉模型你想要什么是很有帮助的。在prompt中添加示例有助于告知模型你需要的模式或细节。尝试提交这个括几个示例的prompt。

给一位超级英雄动物起三个名字。    [原文可以提交prompt]

动物:猫

名字:Captain SharpclawAgent FluffballThe Incredible Feline

动物:狗狗

名字:Ruff the ProtectorWonder CanineSir Barks-a-Lot

动物:马

名字:

很好!为给定的输入添加我们期望的输出的示例,可以帮助模型为我们提供所需的那种名字。

调整你的设置

prompt设计并不是您可以使用的唯一工具。您还可以通过调整设置来控制completion。最重要的设置之一叫做temperature。

您可能已经注意到,如果在上面的示例中多次提交相同的prompt,模型将总是返回相同或非常相似的completion。这是因为temperature被设为0。

尝试在temperature设置为1的情况下重新提交相同的prompt几次。

给一位超级英雄动物起三个名字。    [原文可以调整temperature并提交prompt]

动物:猫

名字:Captain SharpclawAgent FluffballThe Incredible Feline

动物:狗狗

名字:Ruff the ProtectorWonder CanineSir Barks-a-Lot

动物:马

名字:

看看发生了什么?当temperature高于0时,每次提交相同的prompt会产生不同的completion。

记住,该模型用来预测一段文本后面最有可能出现什么样的文本。temperature是一个介于0和1之间的值,它本质上用于让您控制模型在进行这些预测时的自信程度。降低temperature意味着风险更小,completion将更加准确和确定。提高temperature将产生更多样化的completion。

深入了解

理解token和概率

我们的模型通过将文本分解为更小的单元(称为token)来处理文本。标记可以是单词、单词块或单个字符。
编辑下面的文本,看看它是如何被分解成token的。

image.png

像“猫”这样的常见单词是一个token,而不太常见的单词通常被分解成多个token。例如,“Butterscotch” 
分解成四个token:“But”,“ters”,“cot”和“ch”。许多token以空白开始,例如“ hello”和“ bye”。

给定一些文本,模型确定下一个最有可能出现的token。例如,文本“马是我最喜欢的”后面最有可能跟着token“动物”。

image.png

这就是temperature发挥作用的地方。如果你在temperature设置为0的情况下提交这个prompt 4次,模型下一次总是
返回“animal”,因为它有最高的概率。如果你提高temperature,它将承担更多的风险,并考虑概率较低的token。

image.png

对于希望输出值非常明确的任务,通常最好设置较低的temperature。较高的temperature可能对需要多样性或创造性
的任务更有用,或者如果您想为最终用户或领域专家生成一些可供选择的变化。

对于宠物名生成器,您可能希望能够生成许多名字。将temperature设为适中的0.6就可以了。

构建应用程序

PYTHON(FLASK)   [原文有NODE.JS版本]

现在您已经找到了一个很好的prompt和设置,您已经准备好构建您的宠物名生成器了!我们已经写了一些代码让你开始——按照下面的说明下载代码并运行应用程序。

安装

如果你没有安装Python,请从这里开始安装。然后通过克隆这个存储库下载代码。

git clone https://github.com/openai/openai-quickstart-python.git

如果您不喜欢使用git,也可以使用这个zip文件下载代码。

添加API key

要让应用程序工作,您需要一个API key。你可以通过注册一个账户并返回到这个页面来获得API key。

运行应用程序

在项目目录中运行以下命令来安装依赖项并运行应用程序。运行这些命令时,根据您的设置,您可能需要键入python3/pip3而不是python/pip。

python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
flask run

在浏览器中打开http://localhost:5000 ,您应该会看到宠物名生成器!

理解代码

打开openai-quickstart-python文件夹中的app.py。在底部,您将看到生成我们上面使用的prompt的函数。由于用户将输入他们的宠物的动物类型,它将动态地替换prompt中指定动物的部分。

def generate_prompt(animal):
    return """Suggest three names for an animal that is a superhero.

Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: {}
Names:""".format(animal.capitalize())

在app.py的第14行,您将看到发送实际API请求的代码。如上所述,它使用temperature为0.6的completion端点。

response = openai.Completion.create(
  model="text-davinci-003",
  prompt=generate_prompt(animal),
  temperature=0.6
)

就是这样!现在您应该已经完全理解了您的(超级英雄)宠物名生成器是如何使用OpenAI API的!

结尾

这些概念和技术将在很大程度上帮助您构建自己的应用程序。也就是说,这个简单的示例只演示了可能实现的功能的一小部分!completion端点非常灵活,几乎可以解决任何语言处理任务,包括内容生成、摘要、语义搜索、主题标记、情绪分析等等。

要记住的一个限制是,对于大多数模型,在prompt和completion之间,单个API请求最多只能处理2048个token(大约1500个单词)。

深入了解

模型和价格

我们提供了一系列不同能力和价位模型。在本教程中,我们使用了我们能力最强的自然语言模型text-davinci-003。我们建议在实验时使用这个模型,因为它将产生最好的结果。一旦你让事情运转起来,你就可以看看其他模型是否能以更低的延迟和成本产生相同的结果。

在单个请求中处理的token总数(提示和完成)不能超过模型的最大上下文长度。对于大多数模型,这是2048个标记或大约1500个单词。从粗略的经验来看,对于英语文本来说,1个token大约是4个字符或0.75个单词。

价格是每1000个token现收现付,前3个月可使用5美元的无息借贷。了解更多

对于更高级的任务,你可能会发现自己希望能提供更多的例子或上下文,而不是一个简单的提示。对于像这样更高级的任务,微调API是一个很好的选择。微调允许您提供数百甚至数千个示例,以便为特定的用例定制模型。

下一步

为了获得灵感并进一步学习如何为不同任务设计prompt:

● 阅读我们的completion指南

● 探索我们的prompt示例库。

● 开始在游乐场上做实验。

● 在开始构建时,请牢记我们的使用政策