介绍
您可以通过来自任何语言的 HTTP 请求、我们的官方 Python 绑定、我们的官方 Node.js 库或社区维护的库与 API 进行交互。
原文链接:API Reference – OpenAI API
若要安装官方 Python 绑定,请运行以下命令:
1 |
pip install openai |
要安装官方的 Node.js 库,请在 Node.js 项目目录中运行以下命令:
1 |
npm install openai |
认证
OpenAI API 使用 API 密钥进行身份验证。访问您的 API 密钥页面,检索您将在请求中使用的 API 密钥。
请记住,您的API密钥是一个秘密!不要与他人共享或在任何客户端代码(浏览器、应用程序)中公开它。生产请求必须通过您自己的后端服务器进行路由,在该服务器上,可以从环境变量或密钥管理服务安全地加载 API 密钥。
所有 API 请求都应在 Authorization
HTTP 标头中包含您的 API 密钥,如下所示:
1 |
Authorization: Bearer YOUR_API_KEY |
请求组织
对于属于多个组织的用户,您可以传递标头以指定用于 API 请求的组织。这些 API 请求的使用量将计入指定组织的订阅配额。
示例 curl 命令:
1 2 3 |
curl https://api.openai.com/v1/models \ -H 'Authorization: Bearer YOUR_API_KEY' \ -H 'OpenAI-Organization: org-xpMoAv99i8jdZvhGXPfiRXug' |
Python 包的openai
示例:
1 2 3 4 5 |
import os import openai openai.organization = "org-xpMoAv99i8jdZvhGXPfiRXug" openai.api_key = os.getenv("OPENAI_API_KEY") openai.Model.list() |
Node.js 包的openai
示例:
1 2 3 4 5 6 7 |
import { Configuration, OpenAIApi } from "openai"; const configuration = new Configuration({ organization: "org-xpMoAv99i8jdZvhGXPfiRXug", apiKey: process.env.OPENAI_API_KEY, }); const openai = new OpenAIApi(configuration); const response = await openai.listEngines(); |
可以在组织设置页面上找到组织 ID。
提出请求
您可以将以下命令粘贴到终端中以运行您的第一个 API 请求。确保替换为您的私有 API 密钥。YOUR_API_KEY
1 2 3 4 |
curl https://api.openai.com/v1/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{"model": "text-davinci-003", "prompt": "Say this is a test", "temperature": 0, "max_tokens": 7}' |
此请求查询 Davinci 模型以完成文本,并提示“说这是一个测试”。max_tokens
参数设置 API 将返回的令牌数的上限。您应该收到类似于以下内容的回复:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "id": "cmpl-GERzeJQ4lvqPk8SkZu4XMIuR", "object": "text_completion", "created": 1586839808, "model": "text-davinci:003", "choices": [ { "text": "\n\nThis is indeed a test", "index": 0, "logprobs": null, "finish_reason": "length" } ], "usage": { "prompt_tokens": 5, "completion_tokens": 7, "total_tokens": 12 } } |
现在,您已经生成了第一个完成。如果连接提示和完成文本(如果将参数 echo
设置为 true
),API 将为您执行此操作),则生成的文本为“假设这是一个测试。这确实是一个考验。您还可以将 API 参数stream
设置为 true ,以便流式传输回文本(作为纯数据服务器发送的事件)。true
模型
列出并描述 API 中可用的各种模型。您可以参考模型文档以了解可用的模型以及它们之间的差异。
列出模型
1 |
GET https://api.openai.com/v1/models |
列出当前可用的模型,并提供有关每个模型的基本信息,例如所有者和可用性。
示例请求
1 2 3 |
curl https://api.openai.com/v1/models \ -H 'Authorization: Bearer YOUR_API_KEY' |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
{ "data": [ { "id": "model-id-0", "object": "model", "owned_by": "organization-owner", "permission": [...] }, { "id": "model-id-1", "object": "model", "owned_by": "organization-owner", "permission": [...] }, { "id": "model-id-2", "object": "model", "owned_by": "openai", "permission": [...] }, ], "object": "list" } |
检索模型
1 |
GET https://api.openai.com/v1/models/{model} |
检索模型实例,提供有关模型的基本信息,例如所有者和权限。
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>model</strong> string Required</mark> |
用于此请求的模型的 ID
示例请求
1 2 3 |
curl https://api.openai.com/v1/models/text-davinci-003 \ -H 'Authorization: Bearer YOUR_API_KEY' |
响应
1 2 3 4 5 6 7 |
{ "id": "text-davinci-003", "object": "model", "owned_by": "openai", "permission": [...] } |
完成
给定提示,模型将返回一个或多个预测完成,还可以返回每个位置的替代令牌的概率。
创建完成
1 |
POST https://api.openai.com/v1/completions |
为提供的提示和参数创建补全
请求 body
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>model</strong> string Required</mark> |
要使用的模型的 ID。可以使用列表模型 API 查看所有可用模型,或参阅模型概述了解它们的描述。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>prompt</strong> string or array Optional Defaults to <|endoftext|></mark> |
用于生成完成、编码为字符串、字符串数组、标记数组或标记数组数组的提示。
请注意,<|endoftext|> 是模型在训练期间看到的文档分隔符,因此如果未指定提示,模型将生成,就像从新文档的开头一样。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>suffix</strong> string Optional Defaults to null</mark> |
完成插入文本后的后缀。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>max_tokens</strong> integer Optional Defaults to 16</mark> |
完成时要生成的最大令牌数。
提示加号的令牌计数不能超过模型的上下文长度 max_tokens
。大多数模型的上下文长度为 2048 个令牌(最新模型除外,它支持 4096)。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>temperature</strong> number Optional Defaults to 1</mark> |
使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使其更加集中和确定。
我们通常建议更改此设置,但不要同时更改 top_p
两者。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>top_p</strong> number Optional Defaults to 1</mark> |
使用temperature 采样的替代方法称为核心采样,其中模型考虑具有top_p概率质量的令牌的结果。因此,0.1 意味着只考虑包含前 10% 概率质量的代币。
我们通常建议更改此设置,但不要同时更改temperature
两者。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>n</strong> integer Optional Defaults to 1</mark> |
为每个提示生成的完成次数。
注意:由于此参数会生成许多完成,因此它会快速消耗令牌配额。请谨慎使用,并确保对 max_tokens
和 stop
进行合理的设置。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>stream</strong> boolean Optional Defaults to false</mark> |
是否流式传输回部分进度。如果设置,令牌将在可用时作为纯数据服务器发送的事件发送,流由data: [DONE]
消息终止。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>logprobs</strong> integer Optional Defaults to null</mark> |
logprobs
包括最可能的令牌的日志概率,以及所选令牌。例如,如果 logprobs
为 5,则 API 将返回 5 个最可能的令牌的 logprob
列表。API 将始终返回采样令牌的 logprobs+1
,因此响应中最多可能有元素。
logprobs
的最大值为 5。如果您需要更多,请通过我们的帮助中心与我们联系并描述您的使用案例。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>echo</strong> boolean Optional Defaults to false</mark> |
除了完成之外,还回显提示
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>stop</strong> string or array Optional Defaults to null</mark> |
最多 4 个序列,其中 API 将停止生成更多令牌。返回的文本将不包含停止序列。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>presence_penalty</strong> number Optional Defaults to 0</mark> |
介于 -2.0 和 2.0 之间的数字。正值会根据新标记到目前为止是否出现在文本中来惩罚它们,从而增加模型讨论新主题的可能性。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>frequency_penalty</strong> number Optional Defaults to 0</mark> |
介于 -2.0 和 2.0 之间的数字。正值会根据新标记到目前为止在文本中的现有频率来惩罚新标记,从而降低模型逐字重复同一行的可能性。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>best_of</strong> integer Optional Defaults to 1</mark> |
在服务器端生成完成并返回 best_of
(每个令牌的日志概率最高的那个)。无法流式传输结果。
n
与 best_of
一起使用时,控制候选完成次数 并指定要返回的完成次数 – best_of
必须大于 n
。
注意:由于此参数会生成许多完成,因此它会快速消耗令牌配额。请谨慎使用,并确保对 和 进行合理的设置。max_tokens
stop
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>logit_bias</strong> map Optional Defaults to null</mark> |
修改完成中出现指定令牌的可能性。
接受将令牌(由其在 GPT 标记器中的令牌 ID 指定)映射到 -100 到 100 之间的关联偏差值的 json 对象。您可以使用此分词器工具(适用于 GPT-2 和 GPT-3)将文本转换为令牌 ID。在数学上,偏差在采样之前被添加到模型生成的对数中。确切的效果因模型而异,但介于 -1 和 1 之间的值应降低或增加选择的可能性;像 -100 或 100 这样的值应该会导致禁止或排他性选择相关令牌。
例如,您可以传递{"50256": -100}
以防止生成 <|endoftext|> 令牌。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>user</strong> string Optional</mark> |
代表最终用户的唯一标识符,可帮助 OpenAI 监控和检测滥用行为。了解更多。
示例请求
curl https://api.openai.com/v1/completions \ -H ‘Content-Type: application/json’ \ -H ‘Authorization: Bearer YOUR_API_KEY’ \ -d ‘{ “model”: “text-davinci-003”, “prompt”: “Say this is a test”, “max_tokens”: 7, “temperature”: 0 }’
参数
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "model": "text-davinci-003", "prompt": "Say this is a test", "max_tokens": 7, "temperature": 0, "top_p": 1, "n": 1, "stream": false, "logprobs": null, "stop": "\n" } |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
{ "id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7", "object": "text_completion", "created": 1589478378, "model": "text-davinci-003", "choices": [ { "text": "\n\nThis is indeed a test", "index": 0, "logprobs": null, "finish_reason": "length" } ], "usage": { "prompt_tokens": 5, "completion_tokens": 7, "total_tokens": 12 } } |
编辑
给定提示和指令,模型将返回提示的编辑版本。
创建编辑
1 |
POST https://api.openai.com/v1/edits |
为提供的输入、指令和参数创建新的编辑。
请求 body
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>model</strong> string Required</mark> |
要使用的模型的 ID。可以将 text-davinci-edit-001
或 code-davinci-edit-001
模型用于此终结点。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>input</strong> string Optional Defaults to ''</mark> |
要用作编辑起点的输入文本。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>instruction</strong> string Required</mark> |
告知模型如何编辑提示的说明。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>n</strong> integer Optional Defaults to 1</mark> |
要为输入和指令生成的编辑次数。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>temperature</strong> number Optional Defaults to 1</mark> |
使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使其更加集中和确定。
我们通常建议更改此设置,但不要同时更改 top_p
两者。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>top_p</strong> number Optional Defaults to 1</mark> |
使用温度采样的替代方法称为核心采样,其中模型考虑具有top_p概率质量的令牌的结果。因此,0.1 意味着只考虑包含前 10% 概率质量的代币。
我们通常建议更改此设置,但不要同时更改 temperature
两者。
示例请求
1 2 3 4 5 6 7 8 9 |
curl https://api.openai.com/v1/edits \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -d '{ "model": "text-davinci-edit-001", "input": "What day of the wek is it?", "instruction": "Fix the spelling mistakes" }' |
参数
1 2 3 4 5 6 |
{ "model": "text-davinci-edit-001", "input": "What day of the wek is it?", "instruction": "Fix the spelling mistakes", } |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "object": "edit", "created": 1589478378, "choices": [ { "text": "What day of the week is it?", "index": 0, } ], "usage": { "prompt_tokens": 25, "completion_tokens": 32, "total_tokens": 57 } } |
图像
给定提示和/或输入图像,模型将生成一个新图像。
相关指南:图像生成
创建映像 试用版
1 |
POST https://api.openai.com/v1/images/generations |
创建给定提示的图像。
请求 Body
prompt string Required
所需图像的文本描述。最大长度为 1000 个字符。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>n</strong> integer Optional Defaults to 1</mark> |
要生成的图像数。必须介于 1 和 10 之间。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>size </strong>string Optional Defaults to 1024x1024</mark> |
生成的图像的大小。必须是 256x256
、 512x512
或 1024x1024
之一。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>response_format</strong> string Optional Defaults to url</mark> |
返回生成的图像的格式。必须是 url
或 b64_json
之一。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>user</strong> string Optional</mark> |
代表最终用户的唯一标识符,可帮助 OpenAI 监控和检测滥用行为。了解更多。
示例请求
1 2 3 4 5 6 7 8 9 |
curl https://api.openai.com/v1/images/generations \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -d '{ "prompt": "A cute baby sea otter", "n": 2, "size": "1024x1024" }' |
参数
1 2 3 4 5 6 |
{ "prompt": "A cute baby sea otter", "n": 2, "size": "1024x1024" } |
响应
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "created": 1589478378, "data": [ { "url": "https://..." }, { "url": "https://..." } ] } |
创建图像编辑 试用版
1 |
POST https://api.openai.com/v1/images/edits |
在给定原始图像和提示的情况下创建编辑或扩展的图像。
请求 Body
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>image </strong>string Required</mark> |
要编辑的图像。必须是有效的 PNG 文件,小于 4MB,并且是正方形。如果未提供蒙版,则图像必须具有透明度,该透明度将用作蒙版。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>mask</strong> string Optional</mark> |
一个附加图像,其完全透明的区域(例如,alpha为零)指示 image
应编辑的位置。必须是有效的 PNG 文件,小于 4MB,并且尺寸与 image
相同。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>prompt</strong> string Required</mark> |
所需图像的文本描述。最大长度为 1000 个字符。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>n</strong> integer Optional Defaults to 1</mark> |
要生成的图像数。必须介于 1 和 10 之间。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>size</strong> string Optional Defaults to 1024x1024</mark> |
生成的图像的大小。必须是 256x256
、 512x512
或 1024x1024
之一。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>response_format</strong> string Optional Defaults to url</mark> |
返回生成的图像的格式。必须是 url
或 b64_json
之一。b64_json
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>user</strong> string Optional</mark> |
代表最终用户的唯一标识符,可帮助 OpenAI 监控和检测滥用行为。了解更多。
示例请求
1 2 3 4 5 6 7 8 |
curl https://api.openai.com/v1/images/edits \ -H 'Authorization: Bearer YOUR_API_KEY' \ -F image='@otter.png' \ -F mask='@mask.png' \ -F prompt="A cute baby sea otter wearing a beret" \ -F n=2 \ -F size="1024x1024" |
响应
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "created": 1589478378, "data": [ { "url": "https://..." }, { "url": "https://..." } ] } |
创建图像变体 试用版
1 |
POST https://api.openai.com/v1/images/variations |
创建给定图像的变体。
请求 Body
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>image </strong>string Required</mark> |
用作变体基础的图像。必须是有效的 PNG 文件,小于 4MB,并且是正方形。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>n</strong> integer Optional Defaults to 1</mark> |
要生成的图像数。必须介于 1 和 10 之间。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>size</strong> string Optional Defaults to 1024x1024</mark> |
生成的图像的大小。必须是 256x256
、 512x512
或 1024x1024
之一。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>response_format</strong> string Optional Defaults to url</mark> |
返回生成的图像的格式。必须是 url
或 b64_json
之一。b64_json
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>user</strong> string Optional</mark> |
代表最终用户的唯一标识符,可帮助 OpenAI 监控和检测滥用行为。了解更多。
示例请求
1 2 3 4 5 6 |
curl https://api.openai.com/v1/images/variations \ -H 'Authorization: Bearer YOUR_API_KEY' \ -F image='@otter.png' \ -F n=2 \ -F size="1024x1024" |
响应
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "created": 1589478378, "data": [ { "url": "https://..." }, { "url": "https://..." } ] } |
嵌入
获取给定输入的向量表示形式,机器学习模型和算法可以轻松使用该表示形式。
相关指南:嵌入
创建嵌入
1 |
POST https://api.openai.com/v1/embeddings |
创建表示输入文本的嵌入向量。
请求 Body
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>model</strong> string Required</mark> |
要使用的模型的 ID。可以使用列表模型 API 查看所有可用模型,或参阅模型概述了解它们的描述。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>input</strong> string or array Required</mark> |
要为其嵌入的输入文本,编码为字符串或标记数组。若要在单个请求中获取多个输入的嵌入,请传递字符串数组或令牌数组数组。每个输入的长度不得超过 8192 个令牌。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>user</strong> string Optional</mark> |
代表最终用户的唯一标识符,可帮助 OpenAI 监控和检测滥用行为。了解更多。
示例请求
1 2 3 4 5 6 7 |
curl https://api.openai.com/v1/embeddings \ -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input": "The food was delicious and the waiter...", "model": "text-embedding-ada-002"}' |
参数
1 2 3 4 5 |
{ "model": "text-embedding-ada-002", "input": "The food was delicious and the waiter..." } |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
{ "object": "list", "data": [ { "object": "embedding", "embedding": [ 0.0023064255, -0.009327292, .... (1536 floats total for ada-002) -0.0028842222, ], "index": 0 } ], "model": "text-embedding-ada-002", "usage": { "prompt_tokens": 8, "total_tokens": 8 } } |
文件
文件用于上传可与微调等功能一起使用的文档。
列表文件
POST https://api.openai.com/v1/files
返回属于用户组织的文件列表。
示例请求
curl https://api.openai.com/v1/files \
-H ‘Authorization: Bearer YOUR_API_KEY’
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "data": [ { "id": "file-ccdDZrC3iZVNiQVeEA6Z66wf", "object": "file", "bytes": 175, "created_at": 1613677385, "filename": "train.jsonl", "purpose": "search" }, { "id": "file-XjGxS3KTG0uNmNOK362iJua3", "object": "file", "bytes": 140, "created_at": 1613779121, "filename": "puppy.jsonl", "purpose": "search" } ], "object": "list" } |
上传文件
POST https://api.openai.com/v1/files
上传包含要跨各种端点/功能使用的文档的文件。目前,一个组织上传的所有文件的大小最大为 1 GB。如果您需要增加存储限制,请联系我们。
请求 Body
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>file</strong> string Required</mark> |
要上传的 JSON 行文件的名称。
如果设置为“微调”,则每行都是一个 JSON 记录,其中“提示”和“完成”字段表示您的训练示例。purpose
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>purpose</strong> string Required</mark> |
上传文档的预期用途。
使用“微调”进行微调。这使我们能够验证上传文件的格式。
示例请求
1 2 3 4 5 |
curl https://api.openai.com/v1/files \ -H "Authorization: Bearer YOUR_API_KEY" \ -F purpose="fine-tune" \ -F file='@mydata.jsonl' |
响应
1 2 3 4 5 6 7 8 9 |
{ "id": "file-XjGxS3KTG0uNmNOK362iJua3", "object": "file", "bytes": 140, "created_at": 1613779121, "filename": "mydata.jsonl", "purpose": "fine-tune" } |
删除文件
DELETE https://api.openai.com/v1/files/{file_id}
删除文件。
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>file_id</strong> string Required</mark> |
用于此请求的文件的 ID
示例请求
1 2 3 4 |
curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3 \ -X DELETE \ -H 'Authorization: Bearer YOUR_API_KEY' |
响应复制
1 2 3 4 5 6 |
{ "id": "file-XjGxS3KTG0uNmNOK362iJua3", "object": "file", "deleted": true } |
检索文件
GET https://api.openai.com/v1/files/{file_id}
返回有关特定文件的信息。
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>file_id</strong> string Required</mark> |
用于此请求的文件的 ID
示例请求
1 2 3 |
curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3 \ -H 'Authorization: Bearer YOUR_API_KEY' |
响应
1 2 3 4 5 6 7 8 9 |
{ "id": "file-XjGxS3KTG0uNmNOK362iJua3", "object": "file", "bytes": 140, "created_at": 1613779657, "filename": "mydata.jsonl", "purpose": "fine-tune" } |
检索文件内容
GET https://api.openai.com/v1/files/{file_id}/内容
返回指定文件的内容
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>file_id</strong> string Required</mark> |
用于此请求的文件的 ID
示例请求
1 2 3 |
curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3/content \ -H 'Authorization: Bearer YOUR_API_KEY' > file.jsonl |
微调
管理微调作业,以根据特定训练数据定制模型。
相关指南:微调模型
创建微调
POST https://api.openai.com/v1/fine-tunes
创建一个作业,用于微调给定数据集中的指定模型。
响应包括排队作业的详细信息,包括作业状态和完成后微调模型的名称。
请求 Body
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>training_file</strong> string Required</mark> |
包含训练数据的上传文件的 ID。
有关如何上传文件的信息,请参阅上传文件。
您的数据集必须格式化为 JSONL 文件,其中每个训练 示例是具有键“提示”和“完成”的 JSON 对象。 此外,您必须上传具有目的的文件 fine-tune
。
有关更多详细信息,请参阅微调指南。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>validation</strong>_file string Optional</mark> |
包含验证数据的上载文件的 ID。
如果提供此文件,则数据将用于生成验证 微调期间定期执行指标。可以在 微调结果文件。 训练数据和验证数据应互斥。
数据集必须格式化为 JSONL 文件,其中每个验证 示例是具有键“提示”和“完成”的 JSON 对象。 此外,您必须上传具有目的的文件。fine-tune
有关更多详细信息,请参阅微调指南。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>model</strong> string Optional Defaults to curie</mark> |
要微调的基本模型的名称。您可以选择“ada”之一, “巴贝奇”、“居里”、“达芬奇”或 2022-04-21 之后创建的微调模型。 若要了解有关这些模型的详细信息,请参阅模型文档。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>n_epochs</strong> integer Optional Defaults to 4</mark> |
要为其训练模型的纪元数。纪元是指一个 通过训练数据集的完整周期。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>batch_size</strong> integer Optional Defaults to null</mark> |
用于训练的批大小。批大小是 用于训练单个前进和后退传递的训练示例。
默认情况下,批大小将动态配置为 ~训练集中样本数的 0.2%,上限为 256 – 一般来说,我们发现较大的批量往往效果更好 对于较大的数据集。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>learning_rate_multiplier</strong> number Optional Defaults to null</mark> |
用于训练的学习率乘数。 微调学习率是用于 预训练乘以此值。
默认情况下,学习率乘数为 0.05、0.1 或 0.2 取决于最终 batch_size
(较大的学习率往往 使用较大的批量时性能更好)。我们建议尝试 值在 0.02 到 0.2 范围内,以查看产生最佳结果 结果。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>prompt_loss_weigh</strong>t number Optional Defaults to 0.01</mark> |
用于提示令牌损失的权重。这将控制如何 模型试图学习生成提示(相比之下 完成的权重始终为 1.0),并且可以添加 当完成时间短时,对培训起到稳定作用。
如果提示非常长(相对于完成),则可能会使 减轻此权重以避免过度优先 学习提示。
1 |
compute_classification_metrics boolean Optional Defaults to false |
如果设置,我们将计算特定于分类的指标,例如准确性 以及使用每个纪元末尾的验证集进行 F-1 分数。 可以在结果文件中查看这些指标。
要计算分类指标,必须提供 validation_file
.此外,您必须 指定多classification_n_classes
类分类或classification_positive_class
二元分类。
classification_n_classes integer Optional Defaults to null
分类任务中的类数。
此参数对于多类分类是必需的。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>classification_positive_class</strong> string Optional Defaults to null</mark> |
二元分类中的正类。
需要此参数来生成精度、召回率和 F1 执行二元分类时的指标。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>classification_betas</strong> array Optional Defaults to null</mark> |
如果提供,我们将计算指定 F-beta 分数 贝塔值。F-beta 分数是 F-1 分数的概括。 这仅用于二元分类。
当 beta 为 1(即 F-1 分数)时,精度和召回率是 给定相同的权重。贝塔分数越高,权重越高 召回,精度较少。较小的 beta 分数带来更大的权重 在精度上,在召回方面更少。
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">suffix string Optional Defaults to null</mark> |
最多 40 个字符的字符串,将添加到微调的模型名称中。
例如,“自定义模型名称”将生成类似 .suffix
ada:ft-your-org:custom-model-name-2022-02-15-04-21-04
示例请求
1 2 3 4 5 6 7 8 |
curl https://api.openai.com/v1/fine-tunes \ -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "training_file": "file-XGinujblHPwGLSztz8cPS8XY" }' |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
{ "id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F", "object": "fine-tune", "model": "curie", "created_at": 1614807352, "events": [ { "object": "fine-tune-event", "created_at": 1614807352, "level": "info", "message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0." } ], "fine_tuned_model": null, "hyperparams": { "batch_size": 4, "learning_rate_multiplier": 0.1, "n_epochs": 4, "prompt_loss_weight": 0.1, }, "organization_id": "org-...", "result_files": [], "status": "pending", "validation_files": [], "training_files": [ { "id": "file-XGinujblHPwGLSztz8cPS8XY", "object": "file", "bytes": 1547276, "created_at": 1610062281, "filename": "my-data-train.jsonl", "purpose": "fine-tune-train" } ], "updated_at": 1614807352, } |
列表微调
GET https://api.openai.com/v1/fine-tunes
列出组织的微调作业
示例请求
1 2 3 |
curl https://api.openai.com/v1/fine-tunes \ -H 'Authorization: Bearer YOUR_API_KEY' |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "object": "list", "data": [ { "id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F", "object": "fine-tune", "model": "curie", "created_at": 1614807352, "fine_tuned_model": null, "hyperparams": { ... }, "organization_id": "org-...", "result_files": [], "status": "pending", "validation_files": [], "training_files": [ { ... } ], "updated_at": 1614807352, }, { ... }, { ... } ] } |
检索微调
GET https://api.openai.com/v1/fine-tunes/{fine_tune_id}
获取有关微调作业的信息。
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>fine_tune_id</strong> string Required</mark> |
示例请求
1 2 3 |
curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F \ -H "Authorization: Bearer YOUR_API_KEY" |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
{ "id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F", "object": "fine-tune", "model": "curie", "created_at": 1614807352, "events": [ { "object": "fine-tune-event", "created_at": 1614807352, "level": "info", "message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0." }, { "object": "fine-tune-event", "created_at": 1614807356, "level": "info", "message": "Job started." }, { "object": "fine-tune-event", "created_at": 1614807861, "level": "info", "message": "Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20." }, { "object": "fine-tune-event", "created_at": 1614807864, "level": "info", "message": "Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT." }, { "object": "fine-tune-event", "created_at": 1614807864, "level": "info", "message": "Job succeeded." } ], "fine_tuned_model": "curie:ft-acmeco-2021-03-03-21-44-20", "hyperparams": { "batch_size": 4, "learning_rate_multiplier": 0.1, "n_epochs": 4, "prompt_loss_weight": 0.1, }, "organization_id": "org-...", "result_files": [ { "id": "file-QQm6ZpqdNwAaVC3aSz5sWwLT", "object": "file", "bytes": 81509, "created_at": 1614807863, "filename": "compiled_results.csv", "purpose": "fine-tune-results" } ], "status": "succeeded", "validation_files": [], "training_files": [ { "id": "file-XGinujblHPwGLSztz8cPS8XY", "object": "file", "bytes": 1547276, "created_at": 1610062281, "filename": "my-data-train.jsonl", "purpose": "fine-tune-train" } ], "updated_at": 1614807865, } |
取消微调
POST https://api.openai.com/v1/fine-tunes/{fine_tune_id}/取消
立即取消微调作业。
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>fine_tune</strong>_id string Required</mark> |
示例请求
1 2 3 4 |
curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F/cancel \ -X POST \ -H "Authorization: Bearer YOUR_API_KEY" |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "id": "ft-xhrpBbvVUzYGo8oUO1FY4nI7", "object": "fine-tune", "model": "curie", "created_at": 1614807770, "events": [ { ... } ], "fine_tuned_model": null, "hyperparams": { ... }, "organization_id": "org-...", "result_files": [], "status": "cancelled", "validation_files": [], "training_files": [ { "id": "file-XGinujblHPwGLSztz8cPS8XY", "object": "file", "bytes": 1547276, "created_at": 1610062281, "filename": "my-data-train.jsonl", "purpose": "fine-tune-train" } ], "updated_at": 1614807789, } |
列出微调事件
GET https://api.openai.com/v1/fine-tunes/{fine_tune_id}/events
获取微调作业的精细状态更新。
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>fine_tune</strong>_id string Required</mark> |
要为其获取事件的微调作业的 ID。
查询参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>stream</strong> boolean Optional Defaults to false</mark> |
是否流式传输微调作业的事件。如果设置为 true, 事件将在可用时作为纯数据服务器发送的事件发送。作业完成后,流将终止并显示一条data: [DONE]
消息(成功、已取消、 或失败)。
如果设置为 false,则仅返回到目前为止生成的事件。
示例请求
1 2 3 |
curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F/events \ -H "Authorization: Bearer YOUR_API_KEY" |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
{ "object": "list", "data": [ { "object": "fine-tune-event", "created_at": 1614807352, "level": "info", "message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0." }, { "object": "fine-tune-event", "created_at": 1614807356, "level": "info", "message": "Job started." }, { "object": "fine-tune-event", "created_at": 1614807861, "level": "info", "message": "Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20." }, { "object": "fine-tune-event", "created_at": 1614807864, "level": "info", "message": "Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT." }, { "object": "fine-tune-event", "created_at": 1614807864, "level": "info", "message": "Job succeeded." } ] } |
删除微调模型
DELETE https://api.openai.com/v1/models/{模型}
删除微调的模型。您必须在组织中具有所有者角色。
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>model</strong> string Required</mark> |
要删除的模型
示例请求
1 2 3 4 |
curl https://api.openai.com/v1/models/curie:ft-acmeco-2021-03-03-21-44-20 \ -X DELETE \ -H "Authorization: Bearer YOUR_API_KEY" |
响应
1 2 3 4 5 6 |
{ "id": "curie:ft-acmeco-2021-03-03-21-44-20", "object": "model", "deleted": true } |
审核
给定输入文本,如果模型将其归类为违反 OpenAI 的内容策略,则输出。
相关指南:审核
OST https://api.openai.com/v1/moderations
对文本违反 OpenAI 内容政策进行分类
请求 BODY
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>input</strong> string or array Required</mark> |
要分类的输入文本
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>model</strong> string Optional Defaults to text-moderation-latest</mark> |
有两种内容审查模型可用:text-moderation-stable
和 text-moderation-latest
。
默认值为 text-moderation-latest
将随时间自动升级。这可确保您始终使用我们最准确的模型。如果您使用 text-moderation-stable
,我们将在更新模型之前提供提前通知。text-moderation-stable
的准确度可能略低于text-moderation-latest
的精度。
示例请求
1 2 3 4 5 6 7 |
curl https://api.openai.com/v1/moderations \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -d '{ "input": "I want to kill them." }' |
参数
1 2 3 4 |
{ "input": "I want to kill them." } |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "id": "modr-5MWoLO", "model": "text-moderation-001", "results": [ { "categories": { "hate": false, "hate/threatening": true, "self-harm": false, "sexual": false, "sexual/minors": false, "violence": true, "violence/graphic": false }, "category_scores": { "hate": 0.22714105248451233, "hate/threatening": 0.4132447838783264, "self-harm": 0.005232391878962517, "sexual": 0.01407341007143259, "sexual/minors": 0.0038522258400917053, "violence": 0.9223177433013916, "violence/graphic": 0.036865197122097015 }, "flagged": true } ] } |
发动机
引擎终结点已弃用。
这些终结点描述并提供对 API 中可用的各种引擎的访问。
列出引擎 荒废的
GET https://api.openai.com/v1/engines
列出当前可用的(非微调的)模型,并提供有关每个模型的基本信息,例如所有者和可用性。
1 2 3 |
curl https://api.openai.com/v1/engines \ -H 'Authorization: Bearer YOUR_API_KEY' |
响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
{ "data": [ { "id": "engine-id-0", "object": "engine", "owner": "organization-owner", "ready": true }, { "id": "engine-id-2", "object": "engine", "owner": "organization-owner", "ready": true }, { "id": "engine-id-3", "object": "engine", "owner": "openai", "ready": false }, ], "object": "list" } |
检索引擎荒废的
GET https://api.openai.com/v1/engines/{engine_id}
检索模型实例,提供有关该实例的基本信息,例如所有者和可用性。
路径参数
1 |
<mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color"><strong>engine_id</strong> string Required</mark> |
用于此请求的引擎的 ID
示例请求
1 2 3 |
curl https://api.openai.com/v1/engines/text-davinci-003 \ -H 'Authorization: Bearer YOUR_API_KEY' |
响应
1 2 3 4 5 6 7 |
{ "id": "text-davinci-003", "object": "engine", "owner": "openai", "ready": true } |
参数详细信息
频率和存在处罚
在完成 API 中找到的频率和存在惩罚可用于降低对重复的令牌序列进行采样的可能性。 它们通过直接修改具有加性贡献的对数(非规范化对数概率)来工作。
1 |
mu[j] -> mu[j] - c[j] * alpha_frequency - float(c[j] > 0) * alpha_presence |
哪里:
mu[j]
是 j 令牌的对数c[j]
是该代币在当前位置之前采样的频率float(c[j] > 0)
如果为 1,否则为 0c[j] > 0
alpha_frequency
是频率惩罚系数alpha_presence
是存在惩罚系数
正如我们所看到的,存在惩罚是一次性的加性贡献,适用于至少采样过一次的所有代币,频率惩罚是与特定代币已被采样的频率成正比的贡献。
惩罚系数的合理值约为 0.1 比 1,如果目的是稍微减少重复样本。如果目的是强烈抑制重复,则可以将系数增加到 2,但这会显着降低样本的质量。负值可用于增加重复的可能性。