快速开始
OpenAI 训练了非常擅长理解和生成文本的尖端语言模型。我们的 API 提供对这些模型的访问,可用于解决几乎任何涉及处理语言的任务。
在本快速入门教程中,您将构建一个简单的示例应用程序。在此过程中,您将学习使用 API 完成任何任务的关键概念和技术,包括:
- 内容生成
- 总结
- 分类、分类和情感分析
- 数据提取
- 翻译
- 还有很多!
介绍
补全端点是我们 API 的核心,它提供了一个极其灵活和强大的简单接口。您输入一些文本作为提示,API 将返回一个文本补全,尝试匹配您提供的任何指令或上下文。
示例:
提示信息
为冰淇淋店写一个标语。 补全结果
每一勺我们都会微笑!
您可以将其视为非常高级的自动补全——模型处理您的文本提示并尝试预测接下来最有可能出现的内容。
从指令开始
假设您想创建一个宠物名字生成器。从头开始想出名字很难!
首先,您需要一个明确说明您想要什么的提示。让我们从一个指令开始。提交此提示以生成您的第一个补全。
给一匹马起一个名字
不错!现在,试着让你的指示更具体
给一匹黑马取一个名字
如您所见,在我们的提示中添加一个简单的形容词会改变生成的补全。设计提示本质上就是您“编程”模型的方式。
添加一些例子
制定好的说明对于获得好的结果很重要,但有时它们还不够。让我们试着让你的指令更复杂。
给一匹超级英雄马取三个名字。
这个补全并不是我们想要的。这些名称非常通用,而且模型似乎没有接受我们指令中的马匹部分。让我们看看能否让它提出一些更相关的建议。
在许多情况下,向模型展示和告诉模型您想要什么是很有帮助的。在您的提示中添加示例可以帮助传达模式或细微差别。尝试提交此提示,其中包含几个示例。
为一种超级英雄动物取三个名字。
动物:猫
名字:夏普克劳船长,Fluffball探员,不可思议的猫
动物:狗
姓名:保护者鲁夫、神奇犬、巴克斯-洛特爵士
动物:马
姓名:
好的!添加我们期望给定输入的输出示例有助于模型提供我们正在寻找的名称类型。
调整您的设置
提示设计并不是您可以使用的唯一工具。您还可以通过调整设置来控制完成。最重要的设置之一称为温度参数。
您可能已经注意到,如果您在上面的示例中多次提交相同的提示,模型将始终返回相同或非常相似的完成。这是因为您的温度设置为0。
尝试将 temperature 设置为1重新提交几次相同的提示。
为一种超级英雄动物取三个名字。
动物:猫
名字:夏普克劳船长,Fluffball探员,不可思议的猫
动物:狗
姓名:保护者鲁夫、神奇犬、巴克斯-洛特爵士
动物:马
姓名:
结果:奇妙的母马,英勇的骏马,壮丽的种马
看看发生了什么?当温度高于 0 时,每次提交相同的提示会导致不同的完成。
请记住,该模型预测哪个文本最有可能跟在它前面的文本之后。温度是一个介于 0 和 1 之间的值,基本上可以让您控制模型在进行这些预测时的置信度。降低温度意味着它将承担更少的风险,并且完成将更加准确和确定。升高温度将导致更多样化的补全。
深入
了解标记和概率
我们的模型通过将文本分解为更小的单元(称为标记)来处理文本。标记可以是单词、单词块或单个字符。编辑下面的文本以查看它是如何被标记化的。
原文:I have an orange cat named Butterscotch.
译文:我有一只橙色的猫,名叫奶油糖果。
I
have
an
orange
cat
named
But
ters
cot
ch
.
我有一只橘猫,名叫 奶油糖果。像“猫”这样的常用词是单个标记,而不太常用的词通常被分解成多个标记。例如,“Butterscotch”翻译成四个标记:“But”、“ters”、“cot”和“ch”。许多标记以空格开头,例如“hello”和“bye”
给定一些文本,该模型确定下一个最有可能出现的标记。例如,文本“Horses are my favorite”最有可能跟随标记“animal”。
原文:Horses are my favorite
译文:马是我的最爱
名称 | 比例 |
---|---|
动物 | 49.65% |
多种动物 | 42.58% |
\n(符号换行) | 3.49% |
!(符号感叹号) | 0.91% |
这是 温度 发挥作用的地方。如果在温度设置为 0 的情况下提交此提示 4 次,该模型下一个总是会返回“动物”,因为它的概率最高。如果你提高温度,它会承担更多的风险,并考虑概率较低的标记。
如果温度(temperature )为 0 | 如果温度(temperature )为 1 |
---|---|
马是我最喜欢的动物 | 马是我最喜欢的动物 |
马是我最喜欢的动物 | 马是我最喜欢的动物 |
马是我最喜欢的动物 | 马是我的最爱! |
马是我最喜欢的动物 | 马是我最喜欢的动物 |
通常最好为所需输出明确定义的任务设置低温。较高的温度对于需要多样性或创造力的任务可能很有用,或者如果您想为最终用户或人类专家生成一些变化以供选择。
对于您的昵称生成器,您可能希望能够生成很多名字创意。 0.6 的适中温度应该可以正常工作。
构建您的应用程序
现在你已经找到了一个好的提示和设置,你已经准备好构建你的爱称生成器了!我们已经编写了一些代码来帮助您入门——按照下面的说明下载代码并运行应用程序。
NODE.JS
开始
如果您没有安装 Node.js,请从此处安装。然后通过克隆此存储库来下载代码。
git clone https://github.com/openai/openai-quickstart-node.git
如果您不想使用 git,您也可以使用此 zip 文件 下载代码。
添加您的 API 密钥
导航到项目目录并复制示例环境变量文件。
cd openai-quickstart-node
cp .env.example .env
复制您的秘密 API 密钥并将其设置为新创建的 .env
文件中的 OPENAI_API_KEY
。如果您还没有创建密钥,您可以在下面创建。
密钥 | 已创建 | 最后使用 |
---|---|---|
sk-...RmfS | 2023年2月7日 | Never |
sk-...AnxI | 2023年2月7日 | 2023年2月8日 |
重要说明:使用 Javascript 时,所有 API 调用都应仅在服务器端进行,因为在客户端浏览器代码中进行调用会暴露您的 API 密钥。有关更多详细信息,请参见此处。
运行应用
在项目目录下运行以下命令安装依赖并运行应用程序。
npm install
npm run dev
在浏览器中打开 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!
PYTHON(FLASK)
现在您已经找到了一个好的提示和设置,您已经准备好构建您的爱称生成器了!我们编写了一些代码来帮助您入门 - 按照以下说明下载代码并运行应用程序。
开始
如果您没有安装 Python,请从此处安装。然后通过克隆此存储库下载代码。
git clone https://github.com/openai/openai-quickstart-python.git
如果您不想使用 git,您也可以使用此 zip 文件下载代码。
添加您的 API 密钥
导航到项目目录并复制示例环境变量文件。
cd openai-quickstart-python
cp .env.example .env
复制您的秘密 API 密钥并将其设置为OPENAI_API_KEY
您新创建的.env
文件中的。如果您还没有创建密钥,您可以在下面创建。
密钥 | 已创建 | 最后使用 |
---|---|---|
sk-...RmfS | 2023年2月7日 | 绝不 |
sk-...AnxI | 2023年2月7日 | 2023年2月9日 |
sk-...IpZO | 2023年2月9日 | 绝不 |
运行应用
在项目目录下运行以下命令安装依赖并运行应用程序。运行命令时,您可能需要键入python3
/pip3
而不是python
/ ,pip
具体取决于您的设置。
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
flask run
在浏览器中打开http://localhost:5000,您应该会看到昵称生成器!
理解代码
app.py
在openai-quickstart-python
文件夹中打开。在底部,您将看到生成我们在上面使用的提示的函数。由于用户将输入他们宠物的动物类型,因此它会动态换出指定动物的提示部分。
def generate_prompt(animal):
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: {}
Names:""".format(animal.capitalize())
在 中的第 14 行app.py
,您将看到发送实际 API 请求的代码。如上所述,它使用温度为 0.6的补全端点。
response = openai.Completion.create(
model="text-davinci-003",
prompt=generate_prompt(animal),
temperature=0.6
)
就是这样!您现在应该完全了解您的(超级英雄)宠物名称生成器如何使用 OpenAI API!
结束
这些概念和技术将大大有助于您构建自己的应用程序。也就是说,这个简单的例子只是展示了可能性的一小部分!补全端点非常灵活,几乎可以解决任何语言处理任务,包括内容生成、摘要、语义搜索、主题标记、情感分析等等。
要记住的一个限制是,对于大多数模型,单个 API 请求在提示和补全之间最多只能处理 2,048 个标记(大约 1,500 个单词)。
深入
了解标记和概率
深入
模型和定价
我们提供一系列具有不同功能和价位的模型。在本教程中,我们使用了我们最强大的自然语言模型。我们建议在试验时使用此模型,因为它会产生最佳结果。一旦一切正常,您就可以查看其他模型是否可以以更低的延迟和成本产生相同的结果。text-davinci-003
单个请求(提示和补全)中处理的标记总数不能超过模型的最大上下文长度。对于大多数模型,这是 2,048 个标记或大约 1,500 个单词。根据粗略的经验法则,对于英文文本,1 个标记大约为 4 个字符或 0.75 个单词。
定价为每 1,000 个标记即用即付,前 3 个月可使用 18 美元(人民币=大约122.2056)的免费信用额度。了解更多。
对于更高级的任务,您可能会发现自己希望能够提供更多的示例或上下文,而不是单个提示中的内容。微调 API是执行此类更高级任务的绝佳选择。微调允许您提供数百甚至数千个示例来为您的特定用例定制模型。
下一步
要获得灵感并了解有关为不同任务设计提示的更多信息:
- 阅读我们的补全指南。
- 浏览我们的示例提示库。
- 开始在Playground中进行试验。
- 在开始构建时,请牢记我们的使用政策。