跳到主要内容

快速入门

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

在本快速入门教程中,你将生成一个简单的示例应用程序。在此过程中,你将学习将 API 用于任何任务的关键基础概念和技术,包括:

  • 内容生成
  • 归纳(Summarization)
  • 分级、分类和情绪分析
  • 数据提取
  • 翻译
  • 更多其他的!

介绍

补全(Completion) 是我们 API 的核心,它提供了一个非常灵活和强大的简单接口。你输入一些文本作为 提示词(Prompt),API 将返回一个匹配你提供的任何指令或上下文的文本作为 补全(Completion)

输入提示词(Prompt):为冰淇淋店写一个标语。

返回补全(Completion):我们用每一勺提供微笑!

你可以把它看作是一个非常高级的自动完成 —— 模型处理你的文本提示,尝试预测并返回最合适的内容。

1. 做个尝试

假设你想创建一个宠物名字生成器,如果要从头开始想出名字是很难的。

首先,你需要一个明确说明你想要什么的提示词(Prompt)。让我们尝试一下,提交下面的提示词(Prompt)以获得一个补全(Completion)。

输入提示词(Prompt):Suggest one name for a horse.

返回补全(Completion):Lightning

再试着让你的指示更具体。

输入提示词(Prompt):Suggest one name for a black horse.

返回补全(Completion):Midnight

如你所见,在提示词(Prompt)中添加一个简单的形容词会改变返回的补全(Completion)。设计提示词(Prompt)本质上就是对模型进行“编程”。

2. 再来一些示例

设计好的说明对于获得良好的结果很重要,但有时它们还不够。让我们尝试下更复杂指令。

输入提示词(Prompt):

Suggest three names for a horse that is a superhero.

返回补全(Completion):

1. Super Stallion
2. Captain Colt
3. Mighty Mustang

这个完成并不是我们想要的。这些名称非常通用,而且模型似乎没有接受我们指令中的马匹部分。让我们看看能否让它提出一些更相关的建议。

在许多情况下,向模型展示和告诉模型你想要什么是很有帮助的。在你的提示中添加示例可以帮助传达模式或细微差别。尝试提交此提示,其中包含几个示例。

输入提示词(Prompt):

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: Horse
Names:

返回补全(Completion):

Super Stallion, Mighty Mare, The Magnificent Equine
超级种马、强大的母马、壮丽的马

很好!添加我们期望给定输入的输出示例有助于模型提供我们正在寻找的名称类型。

3. 调整设置

提示设计并不是你可以使用的唯一工具。你还可以通过调整设置来控制补全(Completions)。最重要的设置之一为 温度(Temperature)

你可能已经注意到,如果你在上面的示例中多次提交相同的提示,模型将始终返回相同或非常相似的完成。这是因为你设置的温度(Temperature)为 0。

尝试将温度(Temperature)设置为 1 重新提交几次相同的提示词(Prompt)。

输入提示词(Prompt):

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: Horse
Names:

返回补全(Completion):

Super Stallion, Mighty Equine, The Fabulous Thoroughbred
超级种马,强大的马,神话般的纯种马

看看发生了什么?当温度高于 0 时,每次提交相同的提示词(Prompt)都会返回不同的补全(Completion)。

请记住,该模型预测哪个文本最有可能跟在它前面的文本之后。温度(Temperature)是一个介于 0 和 1 之间的值,基本上可以让你控制模型在进行这些预测时的置信度。降低温度(Temperature)意味着它将承担更少的风险,并且完成将更加准确和确定。提高温度(Temperature)将导致更多样化的完成。

对于宠物名字生成器,你可能希望能够生成很多名字创意。0.6 的中等温度(Temperature)应该有比较好的效果。

4. 构建你的应用程序

现在你已经找到了一个很好的提示词(Prompt)和设置,你可以构建自己的宠物名字生成器了!我们编写了一些代码来帮助你入门 - 按照以下说明下载代码并运行应用程序。

安装

如果你没有安装 Node.js,请 通过这里下载安装。然后通过克隆 该代码库 下载代码。

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

如果你不想使用 git,也可以使用此 zip 文件下载代码。

添加你的 API Key

导航到项目目录并复制示例环境变量文件。

cd openai-quickstart-node
cp .env.example .env

复制你的秘密 API Key 并将其设置为新创建的 .env 文件中的 OPENAI_API_KEY 。如果你还没有创建 API Key,请 点击此处去创建

重要提示:使用 Javascript 时,所有 API 调用都应仅在服务器端进行,因为如果在浏览器端调用,浏览器端代码会暴露你的 API Key。有关更多详细信息,请参阅此处

运行应用

在项目目录中运行以下命令以安装依赖项并运行应用。

npm install
npm run dev

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

理解代码

openai-quickstart-node/pages/api 文件夹中打开 generate.js 。在底部,您会看到生成我们在上面使用的提示词(Prompt)的函数。用户输入宠物的类型,它会动态输出指定动物的提示词(Prompt)。

function generatePrompt(animal) {
const capitalizedAnimal =
animal[0].toUpperCase() + animal.slice(1).toLowerCase();
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: ${capitalizedAnimal}
Names:`;
}

generate.js 的第 9 行,您将看到发送实际 API 请求的代码。如上所述,它使用温度为 0.6 的完成端点。

const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: generatePrompt(req.body.animal),
temperature: 0.6,
});

就是这样!你现在应该完全了解宠物名字生成器如何使用 OpenAI 的 API 了!

结语

这些概念和技术将大大有助于您构建自己的应用程序。也就是说,这个简单的例子只是展示了可能性的一小部分!补全端点(Completions endpoint)非常灵活,几乎可以处理任何“语言处理”相关的任务,包括内容生成、摘要、语义搜索、主题标记、情感分析等等。

要记住的一个限制是,对于大多数模型,单个 API 请求在提示 词(Prompt)和补全(Completion)之间最多只能处理 2048 个 Token(大约 1500 个单词)。

模型 & 价格

我们提供一系列具有不同功能和价位的型号。在本教程中,我们使用了 text-davinci-003 ,这是我们最强大的自然语言模型。我们建议在试验时使用此模型,因为它会产生最佳结果。一旦一切正常,您就可以查看其他模型是否可以以更低的延迟和成本产生相同的结果。

单个请求(提示和完成)中处理的令牌(Token) 总数不能超过模型的最大上下文长度。对于大多数模型,这是 2048 个标记或大约 1500 个单词。根据粗略的经验法则,对于英文文本,1 个标记大约为 4 个字符或 0.75 个单词。

定价为每 1000 个 Token 即用即付,前 3 个月可使用 5 美元的免费信用额度。了解更多

对于更高级的任务,你可能会发现自己希望能够提供比单个提示所能容纳的更多的示例或上下文。微调(Fine-tuning) API 微调 API 是执行此类更高级任务的绝佳选择。微调(Fine-tuning) 允许您提供数百甚至数千个示例来为您的特定用例定制模型。

下一步

要获得灵感并了解有关为不同任务设计提示词(Prompt)的更多信息: