快速开始 Quick Start

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

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

  • 内容生成
  • 总结
  • 分类、归类和情感分析
  • 数据提取
  • 翻译
  • 还有很多!

介绍

completions 端点是我们 API 的核心,它提供了一个极其灵活和强大的简单接口。 您输入一些文本作为提示,API 将返回一个文本完成,它会尝试匹配您提供的任何指令或上下文。

提示:为冰淇淋店写一个标语。 完成:我们为每一勺服务微笑!

您可以将其视为非常高级的自动完成——模型处理您的文本提示并尝试预测接下来最有可能出现的内容。

1.从一条指令开始

假设您想创建一个宠物名字生成器。 从头开始想出名字很难!

首先,您需要一个明确说明您想要什么的提示。 让我们从一个指令开始。 提交此提示 以生成您的第一个完成。

不错! 现在,试着让你的指示更具体。

如您所见,在我们的提示中添加一个简单的形容词会改变生成的完成。 设计提示本质上就是您“编程”模型的方式。

2.添加一些例子

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

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

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

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

3.调整你的设置

提示设计并不是您可以使用的唯一工具。 您还可以通过调整设置来控制完成。 最重要的设置之一称为温度

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

尝试将温度设置为 1 并多次重新提交相同的提示。

看看发生了什么? 当温度高于 0 时,每次提交相同的提示会导致不同的完成。

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

对于您的昵称生成器,您可能希望能够生成很多名字创意。 0.6 的适中温度应该可以正常工作。

4.构建您的应用程序

现在你已经找到了一个好的提示和设置,你已经准备好构建你的爱称生成器了! 我们已经编写了一些代码来帮助您入门——按照下面的说明下载代码并运行应用程序。

设置

如果您没有安装 Node.js,从此处安装。 然后通过克隆 this repository 下载代码。

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

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

添加你的 API 密钥

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

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

复制您的秘密 API 密钥并将其设置为新创建的 .env 文件中的 OPENAI_API_KEY。 如果您还没有创建密钥,您可以在下面创建。

Secret keyCreatedLast used
sk-...8Hh72023年3月10日2023年3月14日

重要说明:使用 Javascript 时,所有 API 调用都应仅在服务器端进行,因为在客户端浏览器代码中进行调用会暴露您的 API 密钥。 参见此处 了解更多详情。

运行应用

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

在浏览器中打开 http://localhost:3000,您应该会看到昵称生成器!

理解代码

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

js
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 的 completions 端点。

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

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

结束

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

要记住的一个限制是,对于大多数模型,单个 API 请求在提示和完成之间最多只能处理 2,048 个标记(大约 1,500 个单词)。

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

下一步

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