OpenAI-API-中文版
一. Introduction 介绍
假如你想运用咱们的API,你能够经过 HTTP 恳求从任何言语与 API 进行交互,也能够运用咱们的官方 Python 绑定、官方 Node.js库 或 社区维护的库。
若要装置官方 Python 绑定,请运转以下指令:
pip install openai
要装置官方的 Node.js 库,请在您的 Node.js 项目目录中运转以下指令:
npm install openai
二. Authentication 认证
1. OpenAI-API-KEY
OpenAI API 运用 API密钥 进行身份验证。请拜访您的 API密钥 页面以检索您在恳求中运用的API密钥。
请记住,您的API密钥是机密的! 不要与他人分享它或在任何客户端代码(浏览器、应用程序)中揭露它。生产恳求有必要经过您自己的后端服务器路由,其间您的 API密钥 能够从环境变量或密钥办理服务中安全加载。
一切API恳求都应在 Authorization
HTTP标头中包含您的API密钥,如下所示:
# 留意Bearer OPENAI_API_KEY,Bearer的后面是有一个空格的
Authorization: Bearer OPENAI_API_KEY
2. OpenAI-Organization
Requesting organization 恳求安排
关于归于多个安排的用户,您能够传递一个 表头 来指定用于 API恳求 的安排。这些 API恳求 的运用将计入指定安排的订阅配额。
示例 curl 指令:
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Organization: org-gth0C8mT2wnKealyCkSRrpQk"
运用 openai Python包 的示例:
import os
import openai
openai.organization = "org-gth0C8mT2wnKealyCkSRrpQk"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.list()
运用 openai Node.js包 的示例:
import { Configuration, OpenAIApi } from "openai";
const configuration = new Configuration({
organization: "org-gth0C8mT2wnKealyCkSRrpQk",
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.listEngines();
能够在 安排设置 页面上找到 安排ID
三. Making requests 提出恳求
您能够将下面的指令粘贴到您的终端中,以运转您的第一个 API恳求。请保证将 $OPENAI_API_KEY 替换为您的 API密钥。
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Say this is a test!"}],
"temperature": 0.7
}'
此恳求查询 gpt-3.5-turbo模型
,以完结从提示“Say this is a test”开端的文本。您应该会收到相似以下内容的呼应:
{
"id":"chatcmpl-abc123",
"object":"chat.completion",
"created":1677858242,
"model":"gpt-3.5-turbo-0301",
"usage":{
"prompt_tokens":13,
"completion_tokens":7,
"total_tokens":20
},
"choices":[
{
"message":{
"role":"assistant",
"content":"\n\nThis is a test!"
},
"finish_reason":"stop",
"index":0
}
]
}
现在您现已生成了第一个谈天完结。咱们能够看到 finish_reason
是 stop
,这意味着API回来了模型生成的完整完结。在上面的恳求中,咱们只生成了一条音讯,但您能够将 n
参数设置为生成多个音讯选项。在此示例中,gpt-3.5-turbo
被用于更传统的 文本完结使命。该模型也针对 谈天应用 进行了优化。
四. Models 模型
列出并描绘 API 中可用的各种模型。您能够参看 模型文档 以了解可用的模型以及它们之间的差异。
1. List models 列出模型
GET
https://api.openai.com/v1/models
列出当时可用的模型,并供给有关每个模型的基本信息,例如一切者和可用性。
恳求演示:
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
呼应:
{
"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"
}
2. Retrieve model 检索模型
GET
https://api.openai.com/v1/models/{model}
检索模型实例,供给有关模型的基本信息,例如一切者和权限。
其间,model
为必填的字符串类型,用于此恳求的模型的 ID。
恳求演示:
curl https://api.openai.com/v1/models/text-davinci-003 \
-H "Authorization: Bearer $OPENAI_API_KEY"
呼应:
{
"id": "text-davinci-003",
"object": "model",
"owned_by": "openai",
"permission": [...]
}
五. Completions 完结
给定一个提示,模型将回来一个或多个猜测的完结,并且还能够在每个方位回来代替令牌的概率。
1. Create completion
POST
https://api.openai.com/v1/completions
为供给的提示和参数创立完结。
恳求演示:
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "text-davinci-003",
"prompt": "Say this is a test",
"max_tokens": 7,
"temperature": 0
}'
呼应:
{
"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
}
}
Request body(入参详解)
model
(string,必填)要运用的模型的 ID。能够运用 列表模型API (GET api.openai.com/v1/models) 检查一切可用模型,或参看 模型概述 了解它们的描绘。
prompt
(string or array,选填,Defaults to <|endoftext|>)用于生成完结、编码为字符串、字符串数组、符号数组或符号数组数组的提示。
留意 |endoftext| 是模型在练习期间看到的文档分隔符,因而假如未指定提示,模型将生成,就像重新文档的最初一样。
suffix
(string,选填,Defaults to null)完结插入文本后的后缀。
max_tokens
(integer,选填,Defaults to 16)完结时要生成的最大 token 数。
提示
max_tokens
的 token 计数不能超过模型的上下文长度。大多数模型的上下文长度为 2048 个令牌(最新模型除外,它支撑 4096)
temperature
(number,选填,Defaults to 1)运用哪个采样温度,在 0和2之间。
较高的值,如0.8会使输出更随机,而较低的值,如0.2会使其愈加会集和确定性。
咱们一般主张修正这个(
temperature
)为top_p
但两者不能一同存在,二选一。
top_p
(number,选填,Defaults to 1)一种代替温度采样的办法叫做中心采样,模型会考虑到具有 top_p 概率质量的符号成果。因而,0.1 表明只要占前 10% 概率质量的符号被考虑。
咱们一般主张修正这个(
top_p
)或许temperature
,但不要一同修正两者。
n
(integer,选填,Defaults to 1)每个
prompt
生成的完结次数。留意:由于此参数会生成许多完结,因而它会快速耗费您的令牌配额。当心运用,并保证对
max_tokens
和stop
进行合理的设置。
stream
(boolean,选填,Defaults to false)是否回来部分进展流。假如设置,令牌将作为数据服务器推送事情跟着它们变得可用而发送,流经过
data: [DONE]
音讯停止。
logprobs
(integer,选填,Defaults to null)在
logprobs
回来的最有或许的符号列表中,包含所选符号和对应的对数概率。例如,假如
logprobs
为 5,则 API 将回来一个由 5 个最有或许的符号组成的列表。API 总是会回来采样符号的对数概率,因而呼应中或许会有多达logprobs+1
个元素。
logprobs
的最大值为 5。假如您需求更多,请经过咱们的 协助中心 联系咱们并描绘您的用例。
echo
(boolean,选填,Defaults to false)除了完结之外,还回显提示
stop
(string or array,选填,Defaults to null)最多生成4个序列,API将中止生成更多的符号。回来的文本不包含中止序列。
presence_penalty
(number,选填,Defaults to 0)介于 -2.0 和 2.0 之间的数字。正值会依据它们是否呈现在文本中迄今为止来赏罚新令牌,然后添加模型谈论新主题的或许性。
请参看有关频率和状况赏罚的更多信息
frequency_penalty
(number,选填,Defaults to 0)介于-2.0和2.0之间的数字。正值会依据文本中新令牌的现有频率对其进行赏罚,然后下降模型重复相同行的或许性。
请参看有关频率和存在赏罚的更多信息
best_of
(integer,选填,Defaults to 1)在生成服务器端生成
best_of
完结,并回来“最佳”(每个符号具有最高对数概率的那一个)。成果无法流式传输。当与
n
一同运用时,best_of
操控候选完结的数量,n
指定要回来多少个 –best_of
有必要大于n
。留意:由于此参数生成许多完结,因而或许会快速耗费您的令牌配额。请当心运用并保证
max_tokens
和stop
设置合理。
logit_bias
(map,选填,Defaults to null)修正指定符号在完结中呈现的或许性。
承受一个JSON目标,将符号(由GPT分词器中的符号ID指定)映射到从 -100 到 100 的相关误差值。您能够运用此 分词器工具(适用于GPT-2和GPT-3)将文本转换为令牌ID。数学上,在采样之前,模型生成的 logits 会添加误差。切当的作用因模型而异,可是介于-1和1之间的值应该会削减或添加挑选的或许性;像 -100 或 100 这样的值应该会导致相关令牌被制止或独占挑选。
例如,您能够传递
{"50256": -100}
来避免生成
user
(string,选填)一个仅有的标识符,代表您的终端用户,能够协助OpenAI监测和检测乱用。了解更多信息。
六. Chat 谈天
给定一组描绘对话的音讯列表,模型将回来一个回复。
1. Create chat completion
POST
https://api.openai.com/v1/chat/completions
为给定的谈天对话创立模型呼应。
恳求演示:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'
呼应:
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "\n\nHello there, how may I assist you today?",
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
Request body(入参详解)
model
(string,必填)要运用的模型ID。有关哪些模型适用于Chat API的详细信息,请检查 模型端点兼容性表
messages
(array,必填)迄今为止描绘对话的音讯列表
role
(string,必填)此音讯的作者人物。
system
、user
或assistant
之一
content
(string,必填)音讯的内容
name
(string,选填)此音讯的作者的名字。能够包含 a-z、A-Z、0-9 和下划线,最大长度为 64 个字符
temperature
(number,选填,Defaults to 1)运用哪个采样温度,在 0和2之间。
较高的值,如0.8会使输出更随机,而较低的值,如0.2会使其愈加会集和确定性。
咱们一般主张修正这个(
temperature
)为top_p
但两者不能一同存在,二选一。
top_p
(number,选填,Defaults to 1)一种代替温度采样的办法叫做中心采样,模型会考虑到具有 top_p 概率质量的符号成果。因而,0.1 表明只要占前 10% 概率质量的符号被考虑。
咱们一般主张修正这个(
top_p
)或许temperature
,但不要一同修正两者。
n
(integer,选填,Defaults to 1)每个输入音讯要生成多少谈天完结选项数
stream
(boolean,选填,Defaults to false)假如设置了,将发送部分音讯增量,就像在 ChatGPT 中一样。令牌将作为数据 服务器推送事情 跟着它们变得可用而被发送,流经过
data: [DONE]
音讯停止。请参看OpenAI Cookbook 以获取 示例代码。stop (string or array,选填,Defaults to null)
最多生成4个序列,API将中止生成更多的符号。
max_tokens
(integer,选填,Defaults to inf)在谈天完结中生成的最大 tokens 数。
输入令牌和生成的令牌的总长度受模型上下文长度的限制。
presence_penalty
(number,选填,Defaults to 0)介于 -2.0 和 2.0 之间的数字。正值会依据它们是否呈现在文本中迄今为止来赏罚新令牌,然后添加模型谈论新主题的或许性。
请参看有关频率和状况赏罚的更多信息
frequency_penalty
(number,选填,Defaults to 0)介于-2.0和2.0之间的数字。正值会依据文本中新令牌的现有频率对其进行赏罚,然后下降模型重复相同行的或许性。
请参看有关频率和存在赏罚的更多信息
logit_bias
(map,选填,Defaults to null)修正完结时指定符号呈现的或许性。
承受一个JSON目标,将符号(由分词器中的符号ID指定)映射到从 -100 到 100 的相关误差值。在采样之前,模型生成的logits会加上这个误差。切当的影响因模型而异,可是 -1 到 1 之间的值应该会削减或添加挑选概率;像 -100 或 100 这样的值应该会导致相关符号被制止或独占挑选。
user
(string,选填)一个仅有的标识符,代表您的终端用户,能够协助OpenAI监测和检测乱用。了解更多信息。
七. Edits 修改
给定一个提示和一条指令,模型将回来提示的修改版别。
1. Create edit
POST
https://api.openai.com/v1/edits
为供给的输入、指令和参数创立一个新的修改。
恳求演示:
curl https://api.openai.com/v1/edits \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "text-davinci-edit-001",
"input": "What day of the wek is it?",
"instruction": "Fix the spelling mistakes"
}'
呼应:
{
"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
}
}
Request body(入参详解)
model
(string,必填)要运用的模型ID。您能够在此端点中运用
text-davinci-edit-001
或code-davinci-edit-001
模型。
input
(string,选填,Defaults to ”)用作修改起点的输入文本。
instruction
(string,必填)辅导模型怎么修改提示的说明。
n
(integer,选填,Defaults to 1)输入和指令需求生成多少次修改。
temperature
(number,选填,Defaults to 1)运用哪个采样温度,在 0和2之间。
较高的值,如0.8会使输出更随机,而较低的值,如0.2会使其愈加会集和确定性。
咱们一般主张修正这个(
temperature
)为top_p
但两者不能一同存在,二选一。
top_p
(number,选填,Defaults to 1)一种代替温度采样的办法叫做中心采样,模型会考虑到具有 top_p 概率质量的符号成果。因而,0.1 表明只要占前 10% 概率质量的符号被考虑。
咱们一般主张修正这个(
top_p
)或许temperature
,但不要一同修正两者。
八. Images 图画
给定一个提示和/或输入图画,模型将生成一张新的图画。
相关攻略:图画生成。
1. Create image
POST
https://api.openai.com/v1/images/generations
依据提示创立图画。
恳求演示:
curl https://api.openai.com/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"prompt": "A cute baby sea otter",
"n": 2,
"size": "1024x1024"
}'
呼应:
{
"created": 1589478378,
"data": [
{
"url": "https://..."
},
{
"url": "https://..."
}
]
}
Request body(入参详解)
prompt
(string,必填)所需图画的文本描绘。最大长度为1000个字符。
n
(integer,选填,Defaults to 1)要生成的图画数量。有必要在1到10之间。
size
(string,选填,Defaults to 1024×1024)生成图画的尺度。有必要是
256x256
、512x512
或1024x1024
之一。
response_format
(string,选填,Defaults to url)生成的图画回来格局。有必要是
url
或b64_json
之一。
user
(string,选填)一个仅有的标识符,代表您的终端用户,能够协助OpenAI监测和检测乱用。了解更多信息。
2. Create image edit
POST
https://api.openai.com/v1/images/edits
依据原始图画和提示创立修改或扩展的图画。
恳求演示:
curl https://api.openai.com/v1/images/edits \
-H "Authorization: Bearer $OPENAI_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"
呼应:
{
"created": 1589478378,
"data": [
{
"url": "https://..."
},
{
"url": "https://..."
}
]
}
Request body(入参详解)
image
(string,必填)要修改的图画。有必要是有用的PNG文件,小于4MB且为正方形。假如未供给遮罩,则图画有必要具有通明度,该通明度将用作遮罩。
mask
(string,选填)一个额外的图画,其完全通明的区域(例如 alpha 值为零的区域)指示应该修改图画的方位。
image
有必要是有用的 PNG 文件,小于 4MB,并且具有与image
相同的尺度。
prompt
(string,必填)所需图画的文本描绘。最大长度为1000个字符。
n
(integer,选填,Defaults to 1)要生成的图画数量。有必要在1到10之间。
size
(string,选填,Defaults to 1024×1024)生成图画的尺度。有必要是
256x256
、512x512
或1024x1024
之一。
response_format
(string,选填,Defaults to url)生成的图画回来格局。有必要是
url
或b64_json
之一。
user
(string,选填)一个仅有的标识符,代表您的终端用户,能够协助OpenAI监测和检测乱用。了解更多信息。
3. Create image variation
POST
https://api.openai.com/v1/images/variations
创立给定图画的变体。
恳求演示:
curl https://api.openai.com/v1/images/variations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F image="@otter.png" \
-F n=2 \
-F size="1024x1024"
呼应:
{
"created": 1589478378,
"data": [
{
"url": "https://..."
},
{
"url": "https://..."
}
]
}
Request body(入参详解)
image
(string,必填)用作变体基础的图画。有必要是有用的PNG文件,小于4MB,并且为正方形。
n
(integer,选填,Defaults to 1)要生成的图画数量。有必要在1到10之间。
size
(string,选填,Defaults to 1024×1024)生成图画的尺度。有必要是
256x256
、512x512
或1024x1024
之一。
response_format
(string,选填,Defaults to url)生成的图画回来格局。有必要是
url
或b64_json
之一。
user
(string,选填)一个仅有的标识符,代表您的终端用户,能够协助OpenAI监测和检测乱用。了解更多信息。
九. Embeddings 嵌入
获得一个给定输入的向量表明,能够轻松地被机器学习模型和算法运用。
相关攻略:嵌入
1. Create embeddings
POST
https://api.openai.com/v1/embeddings
创立一个嵌入向量,代表输入的文本。
恳求演示:
curl https://api.openai.com/v1/embeddings \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": "The food was delicious and the waiter...",
"model": "text-embedding-ada-002"
}'
呼应:
{
"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
}
}
Request body(入参详解)
model
(string,必填)要运用的 模型ID。您能够运用 列出模型 API检查一切可用模型,或许请参看咱们的 模型概述 以了解它们的描绘。
input
(string or array,必填)输入文本以获取嵌入,编码为字符串或令牌数组。要在单个恳求中获取多个输入的嵌入,请传递字符串数组或令牌数组的数组。每个输入长度不得超过 8192 个符号。
user
(string,选填)一个仅有的标识符,代表您的终端用户,能够协助OpenAI监测和检测乱用。了解更多信息。
十. Audio 音频
了解怎么将音频转换为文本。
相关攻略:语音转文本
1. Create transcription
POST
https://api.openai.com/v1/audio/transcriptions
将音频转录为输入言语。
恳求演示:
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/audio.mp3" \
-F model="whisper-1"
呼应:
{
"text": "Imagine the wildest idea that you've ever had, and you're curious about how it might scale to something that's a 100, a 1,000 times bigger. This is a place where you can get to do that."
}
Request body(入参详解)
file
(string,必填)要转录的音频文件,格局为以下之一:mp3、mp4、mpeg、mpga、m4a、wav 或 webm。
model
(string,必填)要运用的模型ID。现在仅有
whisper-1
可用。
prompt
(string,选填)一个可选的文本,用于辅导模型的风格或持续之前的音频片段。 prompt 应该与音频言语相匹配。
response_format
(string,选填,Defaults to json)转录输出的格局,可选项包含:json、文本、srt、verbose_json或vtt。
temperature
(number,选填,Defaults to 0)采样温度介于0和1之间。较高的值(如0.8)会使输出更随机,而较低的值(如0.2)则会使其愈加会集和确定性。假如设置为0,则模型将运用 log probability(对数概率) 自动添加温度,直到到达某些阈值。
language
(string,选填)输入音频的言语。以 ISO-639-1 格局供给输入言语将进步精确性和延迟。
2. Create translation
POST
https://api.openai.com/v1/audio/translations
将音频翻译成英语。
恳求演示:
curl https://api.openai.com/v1/audio/translations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F file="@/path/to/file/german.m4a" \
-F model="whisper-1"
呼应:
{
"text": "Hello, my name is Wolfgang and I come from Germany. Where are you heading today?"
}
Request body(入参详解)
file
(string,必填)要翻译的音频文件有必要是以下格局之一:mp3、mp4、mpeg、mpga、m4a、wav或webm。
model
(string,必填)要运用的模型ID。现在仅有
whisper-1
可用。
prompt
(string,选填)一个可选的文本,用于辅导模型的风格或持续之前的音频片段。 prompt 应该与音频言语相匹配。
response_format
(string,选填,Defaults to json)转录输出的格局,可选项包含:json、文本、srt、verbose_json或vtt。
temperature
(number,选填,Defaults to 0)采样温度介于0和1之间。较高的值(如0.8)会使输出更随机,而较低的值(如0.2)则会使其愈加会集和确定性。假如设置为0,则模型将运用 log probability(对数概率) 自动添加温度,直到到达某些阈值。
十一. Files 文件
Files 用于上传文档,可与 Fine-tuning 等功用一同运用。
1. List files
GET
https://api.openai.com/v1/files
回来归于用户安排的文件列表。
恳求演示:
curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY"
呼应:
{
"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"
}
2. Upload file
POST
https://api.openai.com/v1/files
上传包含文档的文件以在各个端点/功用之间运用。现在,一个安排上传的一切文件的巨细能够高达1 GB。假如您需求添加存储限制,请与咱们联系。
恳求演示:
curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F purpose="fine-tune" \
-F file="@mydata.jsonl"
呼应:
{
"id": "file-XjGxS3KTG0uNmNOK362iJua3",
"object": "file",
"bytes": 140,
"created_at": 1613779121,
"filename": "mydata.jsonl",
"purpose": "fine-tune"
}
Request body(入参详解)
file
(string,必填)要上传的 JSON Lines 文件名。
假如
purpose
设置为 “fine-tune”,则每行都是一个JSON记载,其间包含“prompt”和“completion”字段,表明您的 training examples(练习示例)。
purpose
(string,必填)上传文档的预期用处。
运用 “fine-tune” 进行 Fine-tuning(微调)。这样能够验证上传文件的格局。
3. Delete file
DELETE
https://api.openai.com/v1/files/{file_id}
删去文件。
恳求演示:
curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3 \
-X DELETE \
-H "Authorization: Bearer $OPENAI_API_KEY"
其间,{file_id}
为 string类型的必填项,用于此恳求的文件的 ID
呼应:
{
"id": "file-XjGxS3KTG0uNmNOK362iJua3",
"object": "file",
"deleted": true
}
4. Retrieve file
GET
https://api.openai.com/v1/files/{file_id}
回来有关特定文件的信息。
恳求演示:
curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3 \
-H "Authorization: Bearer $OPENAI_API_KEY"
其间,{file_id}
为 string类型的必填项,用于此恳求的文件的 ID
呼应:
{
"id": "file-XjGxS3KTG0uNmNOK362iJua3",
"object": "file",
"bytes": 140,
"created_at": 1613779657,
"filename": "mydata.jsonl",
"purpose": "fine-tune"
}
5. Retrieve file content
GET
https://api.openai.com/v1/files/{file_id}/content
回来指定文件的内容。
恳求演示:
curl https://api.openai.com/v1/files/file-XjGxS3KTG0uNmNOK362iJua3/content \
-H "Authorization: Bearer $OPENAI_API_KEY" > file.jsonl
其间,{file_id}
为 string类型的必填项,用于此恳求的文件的 ID
十二. Fine-tunes 微调
办理微调作业以将模型定制为您的特定练习数据。
相关攻略:Fine-tune models(微调模型)
1. Create fine-tune
POST
https://api.openai.com/v1/fine-tunes
创立一个工作,从给定的数据会集微调指定模型。
呼应包含已入队的作业的详细信息,包含 作业状况 和 完结后微调模型的称号。
了解有关微调的更多信息。
恳求演示:
curl https://api.openai.com/v1/fine-tunes \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"training_file": "file-XGinujblHPwGLSztz8cPS8XY"
}'
呼应:
{
"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,
}
Request body(入参详解)
training_file
(string,必填)包含 练习数据 的已上传文件的ID。
请参看 upload file 以了解怎么上传文件。
您的数据集有必要格局化为 JSONL文件,其间每个练习示例都是一个带有 “prompt” 和 “completion” keys 的 JSON目标。此外,您有必要上传带有
fine-tune
意图的文件。有关更多详细信息,请参看 微调攻略。
validation_file
(string,选填)包含 验证数据 的已上传文件的ID。
假如您供给此文件,则数据将在微调期间定期用于生成验证目标。这些目标能够在 微调成果文件 中检查。您的练习和验证数据应该是互斥的。
您的数据集有必要格局化为 JSONL文件,其间每个验证示例都是一个带有 “prompt” 和 “completion” keys 的 JSON目标。此外,您有必要上传带有
fine-tune
意图的文件。有关更多详细信息,请参看 微调攻略。
model
(string,选填,Defaults to curie)要微调的基础模型称号。
您能够挑选其间之一:”ada”、”babbage”、”curie”、”davinci”,或 2022年4月21日 后创立的经过微调的模型。要了解这些模型的更多信息,请参看 Models 文档。
n_epochs
(integer,选填,Defaults to 4)练习模型的时期数。一个 epoch 指的是完整地遍历一次练习数据集
batch_size
(integer,选填,Defaults to null)用于练习的批次巨细。批次巨细是用于练习单个前向和后向传递的练习示例数量。
默许情况下,批量巨细将动态装备为练习集示例数量的约 0.2%,上限为256。
一般,咱们发现较大的批量巨细关于更大的数据集作用更好。
learning_rate_multiplier
(number,选填,Defaults to null)用于练习的学习率倍增器。微调学习率 是预练习时运用的 原始学习率 乘以 此值 得到的。
默许情况下,学习率的倍增器为 0.05、0.1 或 0.2,详细取决于最终
batch_size
(较大的批量巨细一般运用较大的学习率作用更好)。咱们主张测验在 0.02 到 0.2 范围内试验不同值以找出发生最佳成果的值。
prompt_loss_weight
(number,选填,Defaults to 0.01)用于提示 tokens 丢失的权重。这操控了模型测验学习生成提示的程度(与一直具有 1.0 权重的完结相比),并且能够在完结很短时为练习添加安稳作用。
假如提示十分长(相关于完结而言),那么削减此权重或许是有意义的,以避免过度优先考虑学习提示。
compute_classification_metrics
(boolean,选填,Defaults to false)假如设置了,咱们会在每个 epoch 结束时运用验证集核算特定于分类的目标,例如精确率和 F-1 分数。这些目标能够在 成果文件 中检查。
为了核算分类目标,您有必要供给一个
validation_file(验证文件)
。此外,关于多类分类,您有必要指定classification_n_classes
;关于二元分类,则需求指定classification_positive_class
。
classification_n_classes
(integer,选填,Defaults to null)分类使命中的类别数量。
这个参数在多分类使命中是必需的。
classification_positive_class
(string,选填,Defaults to null)二元分类中的正类。
在进行二元分类时,需求此参数来生成精确度、召回率和 F1 目标。
classification_betas
(array,选填,Defaults to null)假如供给了这个参数,咱们会在指定的 beta 值上核算 F-beta分数。F-beta分数 是 F-1分数 的一般化。这仅用于二元分类。
当 beta 为1时(即F-1分数),精确度和召回率被赋予相同的权重。较大的 beta 值愈加注重召回率而不是精确度。较小的 beta 值愈加注重精确度而不是召回率。
suffix
(string,选填,Defaults to null)一个长度最多为 40个字符 的字符串,将被添加到您的 微调模型称号 中。
例如,
suffix
为 “custom-model-name” 会生成一个模型称号,如ada:ft-your-org:custom-model-name-2022-02-15-04-21-04
。
2. List fine-tunes
GET
https://api.openai.com/v1/fine-tunes
列出安排的微调作业
恳求演示:
curl https://api.openai.com/v1/fine-tunes \
-H "Authorization: Bearer $OPENAI_API_KEY"
呼应:
{
"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,
},
{ ... },
{ ... }
]
}
3. Retrieve fine-tune.
GET
https://api.openai.com/v1/fine-tunes/{fine_tune_id}
获取有关微调作业的信息。
了解更多关于微调的内容。
恳求演示:
curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F \
-H "Authorization: Bearer $OPENAI_API_KEY"
其间,fine_tune_id
为 string类型 的字符串,必传;微调作业的 ID
呼应:
{
"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,
}
4. Cancel fine-tune
POST
https://api.openai.com/v1/fine-tunes/{fine_tune_id}/cancel
立即取消微调工作。
恳求演示:
curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F/cancel \
-H "Authorization: Bearer $OPENAI_API_KEY"
其间,fine_tune_id
为 string类型 的字符串,必传;微调作业的 ID
呼应:
{
"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,
}
5. List fine-tune events
GET
https://api.openai.com/v1/fine-tunes/{fine_tune_id}/events
获取微调作业的精细状况更新。
恳求演示:
curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F/events \
-H "Authorization: Bearer $OPENAI_API_KEY"
其间,fine_tune_id
为 string类型 的字符串,必传;微调作业的 ID;
呼应:
{
"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."
}
]
}
Query parameters
stream
(boolean,选填,Defaults to false)是否对微调作业进行事情流。
假如设置为 true,则事情将作为数据 服务器发送的事情 随时可用。当作业完结(成功、取消或失利)时,流将以
data:[DONE]
音讯停止。假如设置为 false,则仅回来到现在为止生成的事情。
6. Delete fine-tune model
DELETE
https://api.openai.com/v1/models/{model}
删去微调的模型。您有必要在安排中具有一切者的人物。
恳求演示:
curl https://api.openai.com/v1/models/curie:ft-acmeco-2021-03-03-21-44-20 \
-X DELETE \
-H "Authorization: Bearer $OPENAI_API_KEY"
其间,model
为 string类型 的字符串,必传;要删去的模型
呼应:
{
"id": "curie:ft-acmeco-2021-03-03-21-44-20",
"object": "model",
"deleted": true
}
十三. Moderations 审阅
给定一个输入文本,输出模型是否将其分类为违背 OpenAI 内容方针。
相关攻略:Moderations
1. Create moderation
POST
https://api.openai.com/v1/moderations
分类判断文本是否违背 OpenAI 的内容方针
恳求演示:
curl https://api.openai.com/v1/moderations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"input": "I want to kill them."
}'
呼应:
{
"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
}
]
}
Request body(入参详解)
input
(string or array,必填)要分类的输入文本
model
(string,选填,Defaults to text-moderation-latest)有两个内容审阅模型可用:
text-moderation-stable
和text-moderation-latest
。默许情况下,运用的是
text-moderation-latest
模型,该模型会跟着时间自动升级。这保证您一直运用咱们最精确的模型。假如您运用text-moderation-stable
,则在更新模型之前咱们将供给高档告诉。text-moderation-stable
的精确性或许略低于text-moderation-latest
。
十四. Engines 引擎
引擎端点已过期。
请运用它们的代替品模型。了解更多信息。
这些端点描绘并供给了 API 中可用的各种引擎的拜访。
1. List engines <旷费的>
GET
https://api.openai.com/v1/engines
列出当时可用的(未经微调的)模型,并供给有关每个模型的基本信息,例如一切者和可用性。
恳求演示:
curl https://api.openai.com/v1/engines \
-H "Authorization: Bearer $OPENAI_API_KEY"
呼应:
{
"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"
}
2. Retrieve engine <旷费的>
GET
https://api.openai.com/v1/engines/{engine_id}
检索模型实例,供给基本信息,如 一切者 和 可用性。
恳求演示:
curl https://api.openai.com/v1/engines/text-davinci-003 \
-H "Authorization: Bearer $OPENAI_API_KEY"
其间,engine_id
为 string类型 的字符串,必传;用于此恳求的引擎ID。
呼应:
{
"id": "text-davinci-003",
"object": "engine",
"owner": "openai",
"ready": true
}
十五. Parameter details 参数细节
频率和存在赏罚
在 Completions API 中发现的频率和存在赏罚能够用于削减采样重复令牌序列的或许性。它们经过直接向 logits(未归一化的对数概率)添加贡献来进行修正。
mu[j] -> mu[j] - c[j] * alpha_frequency - float(c[j] > 0) * alpha_presence
Where:
-
mu[j]
is the logits of the j-th token -
c[j]
is how often that token was sampled prior to the current position -
float(c[j] > 0)
is 1 ifc[j] > 0
and 0 otherwise -
alpha_frequency
is the frequency penalty coefficient -
alpha_presence
is the presence penalty coefficient
正如咱们所看到的,存在赏罚是一次性的加法贡献,适用于一切现已被采样至少一次的符号,并且频率赏罚是与特定符号现已被采样的频率成份额的贡献。
假如意图只是稍微削减重复样本,那么赏罚系数的合理值大约在 0.1 到 1 之间。假如意图是激烈抑制重复,则能够将系数添加到 2,但这或许会显着下降样本质量。负值可用于添加重复呈现的或许性。