快速入门
OpenAI已经训练了先进的语言模型,非常擅长理解和生成文本。我们的API提供对这些模型的访问,并可用于解决几乎涉及处理语言的任何任务。
在此快速入门教程中,您将构建一个简单的示例应用程序。在此过程中,您将学习到使用API执行任何任务所必需的关键概念和技术,包括:
- 内容生成
- 摘要
- 分类、归类和情感分析
- 数据提取
- 翻译
- 还有更多!
介绍
完成端点是我们API的核心,提供了一个简单而灵活、功能强大的接口。您输入一些文本作为提示,API将返回一个文本完成,试图匹配您给出的任何指令或上下文。
提示
为冰淇淋店写一个标语。
完成
我们每勺都带来微笑!
您可以把它看作是非常高级的自动完成功能——模型处理您的文本提示,并尝试预测最有可能出现的内容。
开始一条指令
想象你想创建一个宠物名字生成器。从零开始想出名字很难!
首先,您需要一个明确表达您要求的提示语。让我们从一条指令开始。提交此提示以生成第一个完成。
不错!现在,请尝试使您的指令更具体。
正如您所看到的,将简单形容词添加到我们的提示中会改变结果完成情况。设计您的提示本质上就是如何“编程”模型。
添加一些例子
制作好的说明对于获得良好的结果非常重要,但有时候它们还不够。让我们尝试使您的指令更加复杂。
这个完成度还不是我们想要的。这些名称相当通用,并且似乎模型没有注意到我们指令中“马”的部分。让我们看看是否可以让它提出更相关的建议。
在很多情况下,向模型展示和告诉您想要什么都是有帮助的。将示例添加到提示中可以帮助传达模式或细微差别。尝试提交包含几个示例的此提示。
建议三个名字,用于描述一只超级英雄动物。
动物:猫
名称:尖爪队长,毛球特工,超级猫咪
动物:狗
名称:保护者拉夫,奇迹犬,吠叫大师巴克斯
动物:马
名称:?(没有提供可选的名字)
不错!为给定的输入添加输出示例有助于模型提供我们正在寻找的名称类型。
调整您的设置
提示设计并不是您唯一可以使用的工具。您还可以通过调整设置来控制完成度。其中最重要的设置之一称为温度。
您可能已经注意到,如果在上面的示例中多次提交相同的提示,则模型始终会返回完全相同或非常相似的完成结果。这是因为您将温度设为0。
尝试使用将温度设置为1重新提交相同提示几次。
建议一个超级英雄动物的三个名字。
动物:猫
名称:锐爪队长,毛球特工,不可思议的猫咪
动物:狗
名称:保护者拉夫,奇迹犬,吠叫大师巴克斯
动物:马
名称: 铁蹄侠, 神奇马匹, 巨无霸骏马
看到发生了什么吗?当温度高于0时,提交相同的提示会导致每次不同的完成。
请记住,模型预测哪些文本最有可能跟随其前面的文本。温度是一个介于0和1之间的值,它实际上让您控制模型在进行这些预测时应该有多大信心。降低温度意味着它将冒更少的风险,并且完成将更准确和确定性。增加温度将导致更多样化的完成。
深入了解令牌和概率
对于您的宠物名字生成器,您可能希望能够生成许多名称想法。0.6 的适度温度应该效果良好。
构建您的应用程序
现在你已经找到了一个好的提示和设置,准备构建你的宠物名字生成器!我们编写了一些代码来帮助你入门 - 按照下面的说明下载代码并运行应用程序。
安装
如果您没有安装Node.js,请从此处安装。然后通过克隆此存储库来下载代码。
https://github.com/openai/openai-quickstart-node.git (opens in a new tab)
如果您不想使用git,您可以通过此zip文件下载代码。
添加您的 API 密钥
为了让应用程序正常工作,您需要一个 API 密钥。您可以注册一个帐户并返回此页面来获取密钥。
运行应用程序
在项目目录中运行以下命令以安装依赖项并运行应用程序。
npm安装
运行开发环境
在您的浏览器中打开http://localhost:3000,您应该会看到宠物名字生成器!
了解代码
打开openai-quickstart-node/pages/api文件夹中的generate.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的完成端点。
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: generatePrompt(req.body.animal),
temperature: 0.6,
});
就是这样!现在你应该完全了解你的(超级英雄)宠物名字生成器如何使用OpenAI API了!
结束
这些概念和技术将有助于您构建自己的应用程序。话虽如此,这个简单的例子只展示了可能性的一小部分!完成端点足够灵活,可以解决几乎任何语言处理任务,包括内容生成、摘要、语义搜索、主题标记、情感分析等等。
需要注意的一个限制是,在大多数模型中,单个API请求只能在提示和完成之间处理最多2048个令牌(大约1500个单词)。
深度挖掘
模型和定价
我们提供一系列具有不同功能和价格点的模型。在本教程中,我们使用了text-davinci-003,这是我们最强大的自然语言模型。我们建议在实验时使用此模型,因为它将产生最佳结果。一旦您让事情开始运作起来,您可以查看其他模型是否能以更低的延迟和成本产生相同的结果。
单个请求(提示和完成)处理的令牌总数不能超过该模型的最大上下文长度。对于大多数模型而言,这是2,048个标记或约1,500个单词。粗略地说,一个标记约等于4个字符或0.75个英文单词。
按每1,000个令牌计费,并提供$5免费信用额度,在前3个月内可用。了解更多信息。
对于更高级的任务,您可能会发现自己希望能够提供比单个提示中可以容纳的更多示例或上下文。微调API是这种更高级任务的绝佳选择。微调允许您提供数百甚至数千个示例来定制模型以适应特定用例。
下一步
为了获得灵感并学习如何为不同任务设计提示:
阅读我们的完成指南。
探索我们的示例提示库。
在 Playground 中开始尝试。
在开始构建之前,请记住我们的使用政策。