OpenAI Api 快速入门教程
OpenAI已经训练好擅长理解和生成文本的最好语言模型。我们的API提供对这些模型的访问,可用于任何涉及处理语言的任务。
在快速入门教程中,你将生成一个简单的示例应用程序。在此过程中,您将学习将 API 用于任何任务的基础关键概念和技术,包括:
- 内容生成
- 综述
- 分类、概念分析和情绪分析
- 数据提取
- 翻译
- 更多
介绍
完成端点是我们 API 的核心,它提供了一个非常灵活和强大的简单接口。您输入一些文本作为提示,API 将返回一个补全的文本,尝试匹配符合你要求的可能指令、上下文。
你可以把它看作是一个非常高级的自动完成——模型通过你的提示内容尝试预测接下来最有可能发生的下一句。
1、从指令开始
想象一下,您要创建一个宠物名称生成器。从头开始想出名字很难!
首先,您需要一个提示,明确您想要什么。
提示:给马取一个名字。
完成:闪电
不错!现在,试下您的说明更具体。
提示:给黑马取一个名字。
完成:黑夜
看到没,在提示中加一个简单的形容词就会改变完成的结果。设计提示本质上是“编程”模型的方式。
2、加一些示例
制定好的说明对于获得良好的结果很重要,但有时它们还不够。让我们尝试使您的指令更加复杂。
提示:给一匹超级英雄马取三个名字。
完成:
1. 雷霆战马
2. 神速马王
3. 不屈战驹
这个完成并不是我们想要的。这些名字非常通用,似乎模型没有接受我们指令中的马部分。让我们看看我们是否可以让它提出一些更相关的建议。
在许多情况下,显示和告诉模型你想要什么很有帮助。在提示中添加示例有助于传达模式或细微差别。尝试提交此提示,其中包括几个示例。
提示:
动物:猫
姓名:沙普克劳上尉、Fluffball探员、不可思议的猫科动物
动物:狗
姓名:Ruff the Protector、Wonder Canine、Barks-Lot爵士
动物:马
姓名:
完成:超级种马,强大的母马,壮丽的马
好!给输入添加我们期望的输出示例,有助于模型回答符合我们要求的名称类型。
3、调整您的设置
设计提示并不是您可以使用的唯一工具。您还可以通过调整设置来控制完成。最重要的设置之一称为温度。
您可能已经注意到,如果在上面的示例中多次提交相同的提示,则模型将始终返回相同或非常相似的完成。这是因为您的温度设置为 0。
尝试在温度设置为 1 的情况下重新提交相同的提示几次。
看看发生了什么?
当温度高于 0 时,提交相同的提示每次会导致不同的完成。
请记住,该模型预测哪些文本最有可能跟随其前面的文本。温度是介于 0 和 1 之间的值,实质上允许您控制模型在进行这些预测时的置信度。降低温度意味着风险更小,完成将更加准确和确定。温度升高将导致更多样化的完成。
对于您的宠物名字生成器,您可能希望能够生成很多名字创意。0.6的中等温度应该效果很好。
我们的模型通过将文本分解为称为标记的较小单元来处理文本。标记可以是单词、单词块或单个字符。
编辑下面的文本以查看它是如何标记化的。
I have an orange cat named Butterscotch.
像“cat”这样的常用词是单个标记,而不太常见的单词通常分解为多个标记。
例如,“Butterscotch”翻译为四个标记:“但是”,“ters”,“cot”和“ch”。许多标记以空格开头,例如“hello”和“bye”。
给定一些文本,模型确定下一个最有可能出现的令牌。
例如,文本“马是我的最爱”最有可能在标记“动物”后面跟上令牌。
这就是温度发挥作用的地方。如果在温度设置为 4 的情况下提交此提示 0 次,则模型将始终返回“动物”,因为它的概率最高。
如果你配置较高的温度值,它将承担更多的风险,并考虑概率较低的标记。
通常,最好为所需输出已明确定义的任务设置低温。较高的温度对于需要多样性或创造力的任务可能很有用,或者如果您想生成一些变体供最终用户或人类专家选择。
4、构建您的应用程序
现在您已经找到了一个很好的提示和设置,您可以构建您的宠物名字生成器了!我们编写了一些代码来帮助你入门 - 按照以下说明下载代码并运行应用。
设置
如果您没有安装 Node.js,请从此处安装它。然后通过此存储库克隆下载代码。
git clone https://github.com/openai/openai-quickstart-node.git
如果您不想使用 git,也可以使用此 zip 文件下载代码。
添加您的 API 密钥
要使应用正常运行,您需要一个 API 密钥。您可以通过注册一个帐户并返回此页面来获取一个。
导航到项目目录,并制作示例环境变量文件的副本。
cd openai-quickstart-node
cp .env.example .env
复制您的秘密API密钥,并将其设置为新创建的.env文件中的OPENAI_API_key。如果您还没有创建密钥,可以先创建。
重要提示:使用Javascript时,所有API调用都应仅在服务器端进行,因为在客户端浏览器代码中进行调用将暴露API密钥。请参阅此处了解更多详细信息。
运行应用
在项目目录中运行以下命令以安装依赖项并运行应用。
npm install
npm run dev
在浏览器中打开 http://localhost:3000,您应该会看到宠物名称生成器!
理解代码
在文件夹中打开。在底部,您将看到生成我们上面使用的提示的函数。由于用户将输入其宠物的动物类型,因此它会动态交换提示中指定动物的部分。generate.js
openai-quickstart-node/pages/api
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:`;
}
在 的第 9 行中,您将看到发送实际 API 请求的代码。如上所述,它使用温度为 0.6 的完成终结点。generate.js
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: generatePrompt(req.body.animal),
temperature: 0.6,
});
就是这样!您现在应该完全了解您的(超级英雄)宠物名字生成器如何使用 OpenAI API!
定价
我们提供一系列具有不同功能和价位的型号。在本教程中,我们使用了text-davinci-003。我们建议在试验时使用此型号或gpt-3.5-turbo,因为它们将产生最佳结果。一旦你把事情做好了,你就可以看看其他模型是否能以更低的延迟和成本产生同样的结果。或者,如果您可能需要转向类似gpt-4这样更强大的模型。
在单个请求(提示和完成)中处理的令牌总数不能超过模型的最大上下文长度。对于大多数模型,这是4096个标记或大约3000个单词。根据粗略的经验,对于英语文本来说,1个标记大约是4个字符或0.75个单词。
定价为每1000个代币现收现付,前3个月可使用5美元的免费积分。