1. ChatGPT
1.1 模型介绍:
DALL·E 可以在给定自然语言提示的情况下生成和编辑图像的模型
Whisper 可以将音频转换为文本的模型,语音转文字
Embeddings 可以将文本转换为数字形式的模型,用于高级搜索、聚类、主题建模和分类功能。
Moderation 一种微调模型,可以检测文本是否敏感或不安全,可以查找以下类别的内容:仇恨、仇恨/威胁、自残、性行为、性行为/未成年人、暴力和暴力/图形。
Fine-tuning 通过使用训练数据微调基本模型,创建自己的自定义模型。
GPT-3 一套能够理解并生成自然语言的模型,已弃用
GPT-3.5 一组在 GPT-3 基础上改进的模型,可以理解并生成自然语言或代码
GPT-4 一组在 GPT-3.5 基础上改进的模型,可以理解并生成自然语言或代码
1.2 价格:按模型和输入输出的内容收费
GPT-4
Model | Input | Output |
---|---|---|
8K context | $0.03 / 1K tokens | $0.06 / 1K tokens |
32K context | $0.06 / 1K tokens | $0.12 / 1K tokens |
GPT-3.5 Turbo
Model | Input | Output |
---|---|---|
4K context | $0.0015 / 1K tokens | $0.002 / 1K tokens |
16K context | $0.003 / 1K tokens | $0.004 / 1K tokens |
Embedding
Model | Usage |
---|---|
Ada v2 | $0.0001 / 1K tokens |
DALL·E
Resolution | Price |
---|---|
1024×1024 | $0.020 / image |
512×512 | $0.018 / image |
256×256 | $0.016 / image |
Whisper
Model | Usage |
---|---|
Whisper | $0.006 / minute (四舍五入到最接近的秒) |
什么是 tokens
可以把标记看作是用于自然语言处理的单词片段。对于英语文本,1个标记大约是4个字符或0.75个单词。作为参考,莎士比亚的作品集约有90万字,即120万代币。
1.3 收费方式:账号绑定美国信用卡,按月自动扣费
注: 国内办的 VISA卡,Master卡无法使用
1.4 使用限制
速率限制
这些应用于每分钟令牌(TPM)、每分钟请求(RPM)(在某些情况下为每天请求 JOBS PER DAY),或者在图像模型的情况下为每分钟图像(IMG / MIN)。
MODEL | TPM | RPM |
---|---|---|
CHAT | ||
gpt-3.5-turbo | 90,000 | 3,500 |
gpt-3.5-turbo-0301 | 90,000 | 3,500 |
gpt-3.5-turbo-0613 | 90,000 | 3,500 |
gpt-3.5-turbo-16k | 180,000 | 3,500 |
gpt-3.5-turbo-16k-0613 | 180,000 | 3,500 |
gpt-4 | 10,000 | 200 |
gpt-4-0314 | 10,000 | 200 |
gpt-4-0613 | 10,000 | 200 |
TEXT | ||
ada | 250,000 | 3,000 |
ada-code-search-code | 250,000 | 3,000 |
ada-code-search-text | 250,000 | 3,000 |
ada-search-document | 250,000 | 3,000 |
ada-search-query | 250,000 | 3,000 |
ada-similarity | 250,000 | 3,000 |
babbage | 250,000 | 3,000 |
babbage-002 | 250,000 | 3,000 |
babbage-code-search-code | 250,000 | 3,000 |
babbage-code-search-text | 250,000 | 3,000 |
babbage-search-document | 250,000 | 3,000 |
babbage-search-query | 250,000 | 3,000 |
babbage-similarity | 250,000 | 3,000 |
code-davinci-edit-001 | 150,000 | 20 |
code-search-ada-code-001 | 250,000 | 3,000 |
code-search-ada-text-001 | 250,000 | 3,000 |
code-search-babbage-code-001 | 250,000 | 3,000 |
code-search-babbage-text-001 | 250,000 | 3,000 |
curie | 250,000 | 3,000 |
curie-instruct-beta | 250,000 | 3,000 |
curie-search-document | 250,000 | 3,000 |
curie-search-query | 250,000 | 3,000 |
curie-similarity | 250,000 | 3,000 |
davinci | 250,000 | 3,000 |
davinci-002 | 250,000 | 3,000 |
davinci-instruct-beta | 250,000 | 3,000 |
davinci-search-document | 250,000 | 3,000 |
davinci-search-query | 250,000 | 3,000 |
davinci-similarity | 250,000 | 3,000 |
text-ada-001 | 250,000 | 3,000 |
text-babbage-001 | 250,000 | 3,000 |
text-curie-001 | 250,000 | 3,000 |
text-davinci-001 | 250,000 | 3,000 |
text-davinci-002 | 250,000 | 3,000 |
text-davinci-003 | 250,000 | 3,000 |
text-davinci-edit-001 | 150,000 | 20 |
text-embedding-ada-002 | 1,000,000 | 3,000 |
text-search-ada-doc-001 | 250,000 | 3,000 |
text-search-ada-query-001 | 250,000 | 3,000 |
text-search-babbage-doc-001 | 250,000 | 3,000 |
text-search-babbage-query-001 | 250,000 | 3,000 |
text-search-curie-doc-001 | 250,000 | 3,000 |
text-search-curie-query-001 | 250,000 | 3,000 |
text-search-davinci-doc-001 | 250,000 | 3,000 |
text-search-davinci-query-001 | 250,000 | 3,000 |
text-similarity-ada-001 | 250,000 | 3,000 |
text-similarity-babbage-001 | 250,000 | 3,000 |
text-similarity-curie-001 | 250,000 | 3,000 |
text-similarity-davinci-001 | 250,000 | 3,000 |
FINE-TUNING | ||
babbage-002 | 250,000 | 3,000 |
davinci-002 | 250,000 | 3,000 |
gpt-3.5-turbo-0613 | 90,000 | 3,500 |
FINE-TUNING | JOB CREATION ACTIVE / QUEUED JOBS | JOBS PER DAY |
Limit per model | 1 | 12 |
MODERATION | ||
text-moderation-latest | 150,000 | 1,000 |
text-moderation-stable | 150,000 | 1,000 |
IMAGE | IMG / MIN | |
DALL·E 2 | 50 | |
AUDIO | ||
whisper-1 | 25,000,000 | 50 |
OTHER | ||
Default limits for all other models | 250,000 | 3,000 |
tokens 限制
GPT-4
LATEST MODEL | MAX TOKENS | TRAINING DATA |
---|---|---|
gpt-4 | 8,192 tokens | Sep 2021 |
gpt-4-0613 | 8,192 tokens | Sep 2021 |
gpt-4-32k | 32,768 tokens | Sep 2021 |
gpt-4-32k-0613 | 32,768 tokens | Sep 2021 |
gpt-4-0314 (Legacy) | 8,192 tokens | Sep 2021 |
gpt-4-32k-0314 (Legacy) | 32,768 tokens | Sep 2021 |
GPT-3.5
LATEST MODEL | MAX TOKENS | TRAINING DATA |
---|---|---|
gpt-3.5-turbo | 4,097 tokens | Sep 2021 |
gpt-3.5-turbo-16k | 16,385 tokens | Sep 2021 |
gpt-3.5-turbo-0613 | 4,097 tokens | Sep 2021 |
gpt-3.5-turbo-16k-0613 | 16,385 tokens | Sep 2021 |
gpt-3.5-turbo-0301 (Legacy) | 4,097 tokens | Sep 2021 |
text-davinci-003 (Legacy) | 4,097 tokens | Jun 2021 |
text-davinci-002 (Legacy) | 4,097 tokens | Jun 2021 |
code-davinci-002 (Legacy) | 8,001 tokens | Jun 2021 |
1.5 API
url: https://api.openai.com
端点可选择的模型
ENDPOINT | MODEL NAME |
---|---|
/v1/audio/transcriptions | whisper-1 |
/v1/audio/translations | whisper-1 |
/v1/chat/completions | gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo, gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613 |
/v1/completions (Legacy) | text-davinci-003, text-davinci-002, text-davinci-001, text-curie-001, text-babbage-001, text-ada-001, davinci, curie, babbage, ada |
/v1/embeddings | text-embedding-ada-002, text-similarity--001, text-search---001, code-search--*-001 |
/v1/fine_tuning/jobs | gpt-3.5-turbo, babbage-002, davinci-002 |
/v1/fine-tunes | davinci, curie, babbage, ada |
/v1/moderations | text-moderation-stable, text-moderation-latest |
授权
所有 API 请求都应在 HTTP头中包含 API密钥,如下所示:
Authorization: Bearer OPENAI_API_KEY
Audio
POST
https://api.openai.com/v1/audio/transcriptions
//将音频转录为输入语言。
POST
https://api.openai.com/v1/audio/translations
//将音频翻译成英语。
Request body
-
file 二进制文件 必填
要转录的音频文件对象(而不是文件名),格式如下:flac、mp3、mp4、mpeg、mpga、m4a、ogg、wav或webm。 -
model string 必填
要使用的模型。目前只有whisper-1可用。 -
prompt string 可选
可选文本,用于指导模型的风格或继续上一个音频片段。提示应与音频语言相匹配。 -
response_format string 可选 默认json
输出的格式,在以下选项之一中:json, text, srt, verbose_json, vtt. -
temperature number 可选 默认 0
采样温度,介于0和1之间。值越高(如0.8),输出越随机,而值越低(如0.2),输出就越集中和确定。如果设置为0,模型将使用对数概率自动提高温度,直到达到特定阈值。 -
language string 可选
输入音频的语言。提供ISO-639-1格式的输入语言将提高准确性和延迟。
Chinese zh
English en
French fr
German de
Italian it
Japanese ja
Korean ko
Russian ru
Spanish, Castilian es
Chat
POST
https://api.openai.com/v1/chat/completions
//为给定的聊天会话创建一个模型响应。参阅端点可选择的模型。
Request body
-
model string 必填
要使用的模型。可选择gpt-3.5-turbo-16k,gpt-3.5-turbo 等, -
messages array 必填
到目前为止,包含对话的消息列表。-
role string 必填
消息的角色。system, user, assistant, function 其中之一 -
content string or null 必填
消息的内容。 -
name string 可选
如果角色是 function ,则 name 是必需的,并且它应该是其响应在内容中的函数的名称。可以包含a-z、A-z、0-9和下划线,最大长度为64个字符。 -
function_call object 可选
应调用的函数的名称和参数,由模型生成。
-
user: 代表用户发的消息,即用户的提问或者指令
assistant: 就是GPT,需要将GPT上一次的回复或者反馈加入到messages中
system: 设置chatgpt的角色。系统消息的目的是给 assistant 提供进一步的指导或者指示,从而让assistant 作出更好的响应。
function: 函数调用结果
-
functions array 可选
模型可以为其生成JSON输入的函数列表。当前应用可调用的函数的列表。函数信息中包含了函数的名称、自然语言描述、以及函数所支持传入的参数信息。-
name string 必填
函数名称。后续模型会在需要调用函数时返回此名称。必须是a-z、A-Z、0-9,或包含下划线和短划线,最大长度为64。 -
description string 可选
函数功能描述。模型通过该描述理解函数能力,并判断是否需要调用该函数。 -
parameters object 必填
函数所需的参数。以对象的形式描述函数所需的参数,其中对象的 key 即为参数名。
-
functions=[{"name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}, }, "required": ["location"] } } ]
-
function_call string or undefined 可选
控制模型应该如何响应函数调换。支持几种输入:- “none”:模型不调用函数,直接返回内容。没有提供可调用函数时的默认值。
- “auto”:模型根据用户输入自行决定是否调用函数以及调用哪个函数。提供可调用函数时的默认值。
- {“name”: “function_name”}:强制模型调用指定的函数。
-
temperature number or null 可选 默认 1
使用什么样的采样温度,介于0和2之间。值越高(如0.8),输出越随机,而值越低(如0.2),输出就越集中和确定。 -
top_p number or null 可选 默认 1
一种替代温度采样的方法,称为核采样,其中模型考虑具有 top_p 概率质量的令牌的结果。因此,0.1 意味着只考虑包含前 10%概率质量的代币。
改变 temperature 或 top_p ,但不能同时改变。
-
n integer or null 可选 默认 1
为每条输入消息生成多少聊天完成选项。 -
stream boolean or null 可选 默认 false
如果设置了,将发送部分消息增量,就像在ChatGPT中一样逐字返回结果。流由 data:[DONE] 消息终止。 -
stop string / array / null 可选 默认 null
最多4个序列,API将停止生成更多令牌。 -
max_tokens integer 可选 默认 inf
聊天输出时生成的最大令牌数。
输入令牌和生成令牌的总长度受模型上下文长度的限制。 -
presence_penalty number or null 可选 默认 0
介于-2.0和2.0之间的数字。正值会根据到目前为止新标记是否出现在文本中来惩罚它们,从而增加模型谈论新主题的可能性。 -
frequency_penalty number or null 可选 默认 0
介于-2.0和2.0之间的数字。到目前为止,正值会根据新标记在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性。 -
logit_bias map 可选 默认 null
修改指定令牌出现在输出中的可能性。
接受一个json对象,该对象将令牌(由令牌生成器中的令牌ID指定)映射到从-100到100的相关偏差值。从数学上讲,在采样之前,将偏差添加到模型生成的logits中。每个模型的确切效果会有所不同,但-1到1之间的值应该会降低或增加选择的可能性;像-100或100这样的值应该导致相关令牌的禁止或独占选择。 -
user string 可选
代表最终用户的唯一标识符,可以帮助OpenAI监控和检测滥用。
Images
给定提示和/或输入图像,模型将生成新图像。
POST
https://api.openai.com/v1/images/generations
//在给定提示的情况下创建图像。
Request body
-
prompt string 必填
所需图像的文本描述。最大长度为1000个字符。 -
n integer or null 可选 默认 1
要生成的图像数。必须介于1和10之间。 -
size string or null 可选 默认 1024x1024
生成的图像的大小。必须是256x256、512x512或1024x1024中的一个。 -
response_format string or null 可选 默认 url
返回生成图像的格式。必须是 ur l或 b64_json 之一。 -
user string 可选
代表最终用户的唯一标识符,可以帮助OpenAI监控和检测滥用。
POST
https://api.openai.com/v1/images/edits
//在给定原始图像和提示的情况下创建经过编辑或扩展的图像。
Request body
-
image string 必填
要编辑的图像。必须是有效的 PNG文件,小于4MB,并且为方形。若不提供遮罩,图像必须具有透明度,透明度将用作遮罩。 -
mask string 可选
一个附加图像,其完全透明的区域(例如,alpha为零的区域)指示应在何处编辑图像。必须是有效的 PNG文件,小于4MB,并且具有与图像相同的尺寸。 -
prompt string 必填
所需图像的文本描述。最大长度为1000个字符。 -
n integer or null 可选 默认 1
要生成的图像数。必须介于1和10之间。 -
size string or null 可选 默认 1024x1024
生成的图像的大小。必须是256x256、512x512或1024x1024中的一个。 -
response_format string or null 可选 默认 url
返回生成图像的格式。必须是 url 或 b64_json 之一。 -
user string 可选
代表最终用户的唯一标识符,可以帮助OpenAI监控和检测滥用。
POST
https://api.openai.com/v1/images/variations
//创建给定图像的变体。
Request body
-
image string 必填
要用作变体基础的图像。必须是有效的 PNG文件,小于4MB,并且为方形。 -
n integer or null 可选 默认 1
要生成的图像数。必须介于1和10之间。 -
size string or null 可选 默认 1024x1024
生成的图像的大小。必须是256x256、512x512或1024x1024中的一个。 -
response_format string or null 可选 默认 url
返回生成图像的格式。必须是 url 或 b64_json 之一。 -
user string 可选
代表最终用户的唯一标识符,可以帮助OpenAI监控和检测滥用。
1.6 函数调用(Function Calling)
OpenAI 在 Chat Completions API 中添加了新的函数调用(Function Calling)能力,帮助开发者通过 API 方式实现类似于 ChatGPT 插件的数据交互能力。这个功能允许开发者描述函数给AI模型,然后模型可以智能地决定输出一个包含调用这些函数的参数的 JSON 对象。
根据模型返回的函数和函数参数,在本地完成函数计算,然后再将计算过程和结果保存为 message 并追加到messages 后面,并第二次调用 Chat Completion 模型分析函数的计算结果,并最终根据函数计算结果输出用户问题的答案。
-
在请求参数中向聊天 API 传递信息,描述应用所提供的可调用函数的信息。(functions)
-
解析聊天 API 响应的消息类型,若模型决定需要调用函数,则根据模型返回的函数信息和函数传参调用函数,并获得返回结果。
-
根据模型返回的函数和函数参数,在本地完成函数计算
-
将函数返回的结果添加到消息列表中,并再次调用聊天 API。(function)
注意:向消息列表中追加函数调用响应消息前,还需要首先将上一步模型返回的消息追加到消息列表中,以保证消息列表中的上下文完整。