快速入门 Quickstart
介绍 (Introduction)
OpenAI培训了先进的语言模型,非常擅长理解和生成文本。我们的API提供访问这些模型的方式,可用于解决涉及处理语言的任何任务。
在这个快速入门教程中,您将构建一个简单的样例应用程序。在此过程中,您将学习到使用API对于任何任务都是基础的关键概念和技术,包括:
- 内容生成
- 摘要
- 分类、归类和情感分析
- 数据提取
- 翻译
- 很多其他的东西!
补全(Completion) (opens in a new tab)
Completions是我们API的核心,提供了一个非常灵活和强大的简单接口。您将一些文本作为提示(Prompt)输入,API将返回一个文本补全(Completion),试图匹配您给它的任何指令或上下文。
Prompt
为一个冰淇淋店写一个标语。
Completion
我们每勺都掌握微笑!
您可以把它想象成一种非常先进的自动完成——模型处理您的文本提示并尝试预测最有可能出现的内容。
1 从指令开始
想象一下,您想创建一个宠物名字生成器。从零开始想出名字是很难的!
首先,您需要一个清晰表明您想要什么的提示。让我们从一个指令开始。提交此提示以生成您的第一个完成。
提示:为一匹马建议一个名字。
Amazing Grace.
不错!现在,试着让您的指令更加具体。
提示: 为一匹黑色的马建议一个名字。
Shadowfax.
正如您所看到的,向我们的提示添加一个简单的形容词会改变结果。设计您的提示本质上就是如何“编程”模型。
2 添加一些示例
制作好的指导说明对于获得良好的结果很重要,但有时候它们还不足够。让我们试着让你的说明更加复杂。
为一只超级英雄马建议三个名字。
这个完成度还不太是我们想要的。这些名称非常通用,似乎模型没有注意到我们说明中的马部分。让我们看看是否可以让它提供一些更相关的建议。
在许多情况下,向模型展示并告诉你想要什么都是有帮助的。向提示添加示例可以帮助传达模式或细微差别。尝试提交这个包含几个示例的提示。
为一只超级英雄动物建议三个名字。
动物:猫
名字:锐爪队长、毛球特工、无敌猫
动物:狗
名字:保护者拉夫、神奇犬、多吠犬爵士
很好!添加我们期望对于给定输入的输出的示例,帮助模型提供了我们想要的类型的名称。
3 调整您的设置
提示设计不是你所拥有的唯一工具。通过调整设置,你还可以控制补全。 最重要的设置之一叫做温度(temperature)。
你可能已经注意到,如果在上面的示例中提交了相同的提示多次,模型总是返回相同或非常相似的完成度。这是因为你的温度(temperature)设置为0。
尝试将温度(temperature)设置为1,再次提交相同的提示几次。
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
看看发生了什么?当温度(temperature)高于0时,提交相同的提示会产生不同的完成度。
记住,模型预测哪些文本最有可能跟随它之前的文本。温度(temperature)是一个介于0和1之间的值,它本质上能让你控制模型在做出这些预测时的信心程度。降低温度(temperature)意味着它将采取更少的风险,补全将更准确和确定性。增加温度(temperature)将产生更多样化的完成度。
对于你的宠物名生成器,你可能希望能够生成很多的名字想法。0.6的适度温度(temperature)应该效果不错。
深入理解了解tokens和概率.
4 构建您的应用程序
现在,你已经找到了一个很好的提示和设置,你准备建立你的宠物名生成器!我们编写了一些代码,帮助你入门 —— 根据以下说明下载代码并运行应用程序。
安装(Setup)
如果你还没有安装 Node.js,请从这里安装 (opens in a new tab)。然后通过克隆这个仓库 (opens in a new tab)来下载代码。
git clone https://github.com/openai/openai-quickstart-node.git
如果你不想使用 git,那么你可以通过这个压缩文件 (opens in a new tab)来下载代码。
添加你的API key (Add your API key)
为了让应用程序正常工作,你需要一个API密钥。你可以通过注册一个账户并返回到这个页面来获得一个。
启动程序 (Run the app)
在项目目录中运行以下命令来安装依赖项和运行应用程序。
npm install
npm run dev
在你的浏览器中打开http://localhost:3000 (opens in a new tab),你应该会看到宠物名生成器!
理解代码
打开 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请求的代码。如上所述,它使用completions (opens in a new tab)端点(Completion),并使用0.6的温度(temperature)值。
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: generatePrompt(req.body.animal),
temperature: 0.6,
});
这就是全部内容!现在您应该完全了解您(超级英雄)宠物名生成器如何使用OpenAI API了!
价格 (Pricing)
我们提供一系列具有不同能力的模型,并提供相应的价格 (opens in a new tab)。在本教程中,我们使用了 text-davinci-003
。我们建议在实验时使用此模型或 gpt-3.5-turbo
,因为它们会产生最好的结果。一旦您的工作正常运行,您可以查看其他模型是否能以更低的延迟和成本产生相同的结果。或者是否需要升级到更强大的模型,例如 gpt-4
。
单个请求(包括提示和完成)中处理的标记总数不能超过模型的最大上下文长度。对于大多数模型,这是4096个标记或约3000个单词。粗略的经验法则是,对于英文文本,1个标记约等于4个字符或0.75个单词。
按每1,000个标记付费,前3个月免费提供价值5美元的信用额。了解更多 (opens in a new tab)。
最后 (Closing)
这些概念和技术将有助于您构建自己的应用程序。尽管如此,这个简单的例子仅演示了可能性的一小部分!
Completions足以解决几乎任何语言处理任务,包括内容生成、摘要、语义搜索、主题标记、情感分析等等。
需要注意的一点限制是,对于大多数模型,单个API请求只能在提示和完成之间处理最多4096个标记。
更高级的任务可能需要您提供更多示例或上下文,而无法同时适配一个单一提示。 微调API 是这样更高级任务的一个好选择。微调允许您提供数百甚至数千个示例来为您的特定用例定制模型。
学习更多(Next steps)
为不同任务设计提示并获得启发和学习更多:
- 阅读我们的完成指南。
- 探索我们的示例提示库:示例提示。
- 在Playground中开始实验。
- 在构建过程中请谨记我们的使用政策 (opens in a new tab)。