构建应用
现在我们搞定了好的prompt和settings,我们可以开始准备好构建一个宠物名字生成器了!我们已经编写了一些代码来帮助您开始 - 请按照下面的说明下载代码并运行应用程序。
安装
需要提前安装好node或者python的环境,之后选择适合的仓库clone到本地
# node
git clone https://github.com/openai/openai-quickstart-node.git
# python
git clone https://github.com/openai/openai-quickstart-python.git
如果您不喜欢使用 git,您可以选择使用此zip文件下载代码。
添加API KEY
进入到项目目录,并从 .env.example 复制一个 .env 文件出来
# node
cd openai-quickstart-node
# python
cd openai-quickstart-python
cp .env.example .env
复制API KEY,之后将其设置到.env文件中的OPENAI_API_KEY
项里
重要提示:使用 Javascript 时,所有 API 调用应该仅在服务器端进行,因为在客户端浏览器代码中进行调用将暴露您的 API 密钥。有关详细信息,请参阅此处。
运行你的程序
在项目目录中运行以下命令以安装依赖项并运行应用程序。
# node
npm install
npm run dev
# python
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
flask run
在浏览器中打开 http://localhost:5000,您应该可以看到宠物名字生成器!
代码解读(node)
打开 openai-quickstart-node/pages/api
文件夹中的 generate.js
。在底部,您将看到生成我们上面使用的提示的函数。由于用户将输入宠物的动物类型,因此它动态替换指定动物的prompt
部分。
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 请求的代码。如上面所述,它使用的temperature
是completions等于0.6。
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: generatePrompt(req.body.animal),
temperature: 0.6,
});
就是这样!现在您应该完全理解了您的(超级英雄)宠物名字生成器如何使用 OpenAI API!
代码解读(python)
打开 openai-quickstart-python
文件夹中的 app.py
。在底部,您将看到生成我们上面使用的提示的函数。由于用户将输入宠物的动物类型,因此它动态替换指定动物的提示部分。
结束语
这些概念和技巧将大大帮助您构建自己的应用程序。话虽如此,这个简单的示例仅仅展示了可能的一小部分!完成端点足够灵活,可以解决几乎任何语言处理任务,包括内容生成,概括,语义搜索,主题标记,情感分析等等。
要记住的一个限制是,对于大多数模型,单个 API 请求仅可处理最多 2,048 个token(大约 1,500 个单词)在您的prompt
和completion
。
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())
在 app.py
的第 9 行,您将看到发送实际 API 请求的代码。如上面所述,它使用的temperature
是completions等于0.6。
response = openai.Completion.create(
model="text-davinci-003",
prompt=generate_prompt(animal),
temperature=0.6
)
就是这样!现在您应该完全理解了您的(超级英雄)宠物名字生成器如何使用 OpenAI API!
关于定价
我们提供一系列具有不同功能和价位的型号。在本文档,我们使用了我们最强大的自然语言模型。我们建议在试验时使用此模型,因为它会产生最佳结果。一旦一切正常,您就可以查看其他模型是否可以以更低的延迟和成本产生相同的结果。text-davinci-003
单个请求(提示和完成)中处理的令牌总数不能超过模型的最大上下文长度。对于大多数模型,这是 2,048 个标记或大约 1,500 个单词。根据粗略的经验法则,对于英文文本,1 个标记大约为 4 个字符或 0.75 个单词。
定价为每 1,000 个代币即用即付,前 3 个月可使用 18 美元的免费信用额度。了解更多。
对于更高级的任务,您可能会发现自己希望能够提供更多的示例或上下文,而不是单个提示中的内容。微调API是执行此类更高级任务的绝佳选择。微调允许您提供数百甚至数千个示例来为您的特定用例定制模型。
下一步
要获得灵感并了解有关为不同任务设计提示的更多信息:
- 阅读我们的完成指南。
- 浏览我们的示例提示库。
- 开始在Playground中进行试验。
- 在开始构建时,请牢记我们的使用政策。