OpenAI API
OpenAI API Documentation
https://platform.openai.com/docs/models/overview
GPT 迭代过程
版本 | 发布时间 | 训练方案 | 参数量 | 是否开放接口 |
---|---|---|---|---|
GPT(GPT-1) | 2018 年 6 月 | 无监督学习 | 1.17 亿 | 是 |
GPT-2 | 2019 年 2 月 | 多任务学习 | 15 亿 | 是 |
GPT-3 | 2020 年 5 月 | 海量参数 | 1,750 亿 | 是 |
ChatGPT(GPT-3.5) | 2022 年 12 月 | 针对对话场景优化 | 1,750 亿 | 否 |
GPT-4 | 未发布 | 万亿参数 | 100万亿 | 否 |
基本模型
MODELS | DESCRIPTION |
---|---|
GPT-3.5 | GPT-3.5 模型可以理解和生成自然语言或代码。我们功能最强大、最具成本效益的模型是针对聊天进行了优化,但也适用于传统的完成任务。 |
GPT-3 | 一组可以理解和生成自然语言的模型 |
Codex Limited beta | 一组可以理解和生成代码的模型,包括将自然语言转换为代码 |
Content filter | 可以检测文本是否敏感或不安全的微调模型 |
GPT-3.5
LATEST MODEL | DESCRIPTION | MAX REQUEST | TRAINING DATA |
---|---|---|---|
gpt-3.5-turbo | Most capable GPT-3.5 model and optimized for chat at 1/10th the cost of text-davinci-003. Will be updated with our latest model iteration. | 4,096 tokens | Up to Sep 2021 |
gpt-3.5-turbo-0301 | Snapshot of gpt-3.5-turbo from March 1st 2023. Unlike gpt-3.5-turbo, this model will not receive updates, and will only be supported for a three month period ending on June 1st 2023. | 4,096 tokens | Up to Sep 2021 |
text-davinci-003 | Can do any language task with better quality, longer output, and consistent instruction-following than the curie, babbage, or ada models. Also supports inserting completions within text. | 4,000 tokens | Up to Jun 2021 |
text-davinci-002 | Similar capabilities to text-davinci-003 but trained with supervised fine-tuning instead of reinforcement learning | 4,000 tokens | Up to Jun 2021 |
code-davinci-002 | Optimized for code-completion tasks | 4,000 tokens | Up to Jun 2021 |
GPT-3
last version > 2023-3-2
LATEST MODEL | DESCRIPTION | MAX REQUEST | TRAINING DATA |
---|---|---|---|
text-curie-001 | Very capable, faster and lower cost than Davinci. | 2,048 tokens | Up to Oct 2019 |
text-babbage-001 | Capable of straightforward tasks, very fast, and lower cost. | 2,048 tokens | Up to Oct 2019 |
text-ada-001 | Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost. | 2,048 tokens | Up to Oct 2019 |
davinci | Most capable GPT-3 model. Can do any task the other models can do, often with higher quality. | 2,048 tokens | Up to Oct 2019 |
curie | Very capable, but faster and lower cost than Davinci. | 2,048 tokens | Up to Oct 2019 |
babbage | Capable of straightforward tasks, very fast, and lower cost. | 2,048 tokens | Up to Oct 2019 |
ada | Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost. | 2,048 tokens | Up to Oct 2019 |
old version < 2023-3-2
最新型号 | 描述 | 最大请求数 | 训练数据 |
---|---|---|---|
text-davinci-003 | 功能最强大的 GPT-3 模型。可以完成其他模型可以完成的任何任务,通常具有更高的质量、更长的输出和更好的指令遵循。还支持在文本中插入补全。 | 4000 tokens | 截至2021年5月 |
text-curie-001 | 非常有能力,但比达芬奇更快,成本更低。 | 2048 tokens | 截至2019年10月 |
text-babbage-001 | 能够完成简单的任务,速度非常快,成本更低。 | 2048 tokens | 截至2019年10月 |
text-ada-001 | 能够完成非常简单的任务,通常是 GPT-3 系列中最快的型号,成本最低。 | 2048 tokens | 截至2019年10月 |
Codex
LATEST MODEL | DESCRIPTION | MAX REQUEST | TRAINING DATA |
---|---|---|---|
code-davinci-002 | Most capable Codex model. Particularly good at translating natural language to code. In addition to completing code, also supports inserting completions within code. | 8,000 tokens | Up to Jun 2021 |
code-cushman-001 | Almost as capable as Davinci Codex, but slightly faster. This speed advantage may make it preferable for real-time applications. | Up to 2,048 tokens |
最新型号 | 描述 | 最大请求数 | 训练数据 |
---|---|---|---|
code-davinci-002 | 最有能力的法典模型。特别擅长将自然语言翻译成代码。除了完成代码外,还支持在代码中插入完成。 | 8000 tokens | 截至2021年5月 |
code-cushman-001 | 几乎和达芬奇手抄本一样强大,但速度略快。这种速度优势可能使其更适合实时应用程序。 | 最多 2048 tokens |
###达芬奇 davinci Davinci是最有能力的模型系列,可以执行其他模型可以执行的任何任务,而且通常只需较少的指令。对于需要对内容有充分理解的应用程序,例如针对特定受众的摘要和创意内容生成,Davinci 将产生最佳结果。这些增加的功能需要更多的计算资源,因此 Davinci 每次 API 调用的成本更高,并且不如其他模型快。
达芬奇的另一个亮点是理解文本的意图。达芬奇相当擅长解决多种逻辑问题,解释人物的动机。达芬奇已经能够解决一些涉及因果关系的最具挑战性的人工智能问题。
- 擅长:复杂的意图,因果关系,观众总结
解析下text-davinci-003
- “text-davinci-003″是OpenAI GPT-3模型的一个变种,它是GPT-3的最高级别版本之一,拥有1750亿个参数。它是当前最大、最复杂的通用语言模型之一,可以执行各种自然语言处理任务,如文本生成、翻译、问答和摘要等。
- “text-davinci-003″采用了生成式语言建模技术,基于深度学习神经网络,通过学习大量的语言数据,可以自动地产生语言文本。该模型在处理任务时具有较高的灵活性和适应性,可以自动学习任务中的模式和规律,并生成符合语言习惯和语义规范的文本输出。
- 由于其参数量之大,模型的训练和调试需要大量的计算资源和时间,因此它在性能和资源消耗方面都有较高的要求。同时,它还需要大量的数据来训练和调整模型参数,以便实现更准确和有用的语言处理功能。
- 总之,”text-davinci-003″是一种非常强大和复杂的语言模型,可以处理各种语言任务,但它需要大量的计算和数据资源来训练和调整。
###居里 curie 居里非常强大,但速度非常快。虽然达芬奇在分析复杂文本方面更强,但居里非常有能力完成许多细微的任务,如情感分类和总结。居里还非常擅长回答问题和执行问答,并作为一般服务聊天机器人。
- 擅长:语言翻译、复杂分类、文本情感、总结
什么是text-curie-001
- Text-curie-001是OpenAI GPT-3语言模型的一个变体,它是在2020年发布的。GPT-3是一个自然语言处理模型,可以完成各种任务,例如文本生成、问题回答、翻译等。GPT-3是当前最先进的自然语言处理模型之一,它是由数十亿个参数组成的深度神经网络,可以在大规模语料库上进行训练,以学习语言的规则和结构。Text-curie-001是GPT-3模型的一种变体,它具有较高的准确性和生成能力,可以生成非常流畅、自然的文本,并且可以完成各种复杂的自然语言处理任务。
###巴贝奇 babbage 巴贝奇可以执行简单的任务,比如简单的分类。在语义搜索排名文档与搜索查询的匹配程度方面,它也非常有能力。
- 擅长:中等分类、语义搜索分类
什么是text-babbage-001
- text-babbage-001是OpenAI的一个自然语言处理模型,它是一种基于GPT-2架构的大型语言模型。该模型是以英语为基础的,可以生成类似于人类写作的文章,包括文章、新闻报道、小说、对话等各种文本类型。相比于GPT-2,text-babbage-001在处理特定领域的文本时表现更好,尤其是在一些有限的任务上,如答题、简单的翻译等。由于该模型需要大量的训练数据和计算资源,因此只能由OpenAI官方提供API服务。
###阿达 Ada Ada 通常是最快的模型,可以执行解析文本、地址更正和某些不需要太多细微差别的分类任务等任务。Ada 的性能通常可以通过提供更多上下文来提高。
- 擅长:解析文本、简单分类、地址更正、关键词
注意:由像Ada这样的更快模型执行的任何任务都可以由像Curie或Davinci这样的更强大的模型执行。
什么是text-ada-001
- text-ada-001是OpenAI发布的一种自然语言处理模型,使用了类似于GPT-3的模型架构。该模型的名称是为了纪念计算机科学家Ada Lovelace。text-ada-001可以完成各种任务,例如文本生成、翻译、问答等。它可以根据输入的上下文生成文本,从而可以用于自动生成文章、电子邮件、聊天机器人等。此外,text-ada-001还具有快速学习新知识和语言的能力,可以针对不同领域进行微调,以提高其表现。
解析下Codex
- Codex是OpenAI推出的一种基于人工智能的代码生成工具,它使用了自然语言处理和机器学习技术,可以根据自然语言的描述来生成对应的代码。
- Codex的核心是一种基于深度神经网络的语言模型,该模型在训练中使用了数十亿行代码和文本数据,能够从中学习到代码语法和结构的规律,并能够生成符合这些规律的代码。
- Codex支持多种编程语言,包括Python、Java、JavaScript等。使用Codex时,用户只需在输入框中输入自然语言描述的代码功能,Codex就会根据用户的输入生成对应的代码。
- Codex可以帮助开发人员提高编写代码的效率和质量,尤其是对于一些重复性工作或者是编写一些简单的代码功能,Codex能够快速地生成代码,节省开发时间。同时,Codex也可以帮助新手程序员学习编程语言的语法和结构,缩短学习曲线。
内容过滤器
标签说明
- 0 – 文本安全。
- 1 – 此文本是敏感的。这意味着文本可能是在谈论一个敏感的话题,一些政治、宗教的东西,或者谈论一个受保护的阶级,如种族或国籍。
- 2 – 此文本不安全。这意味着文本包含亵渎性语言、偏见或仇恨语言、可能是 NSFW 的内容,或以有害方式描绘某些群体/人群的文本。
###你如何使用过滤器? 您需要将终结点与模型和以下设置一起使用:completions,content-filter-alpha
- max_tokens设置为 1
- temperature设置为 0.0
- top_p设置为 0
- logprobs设置为 10
API
介绍下openai api的接口入参,并说明每个参数的用法
OpenAI API的接口入参因不同的任务类型而异,但是大多数任务都需要以下几个通用参数:
model: 模型名称,表示要使用的模型。例如:davinci, curie, ada等。每个模型的能力和用途不同,可以在OpenAI API的官方文档中查看各个模型的介绍和用途。
prompt: 输入文本,即需要进行自然语言处理的文本。不同任务可能对输入文本的格式有要求,例如:文本长度、标点符号等。
temperature: 生成文本的随机性程度。值越大,生成的文本就越随机,但同时也越不可控。通常情况下,这个参数的取值范围为0-1之间的浮点数,建议取值在0.5左右。
max_tokens: 生成文本的长度,即最大的生成文本的长度。这个参数通常用来控制生成的文本的长度,避免生成过于冗长的文本。
stop: 停止词,用来控制生成的文本是否停止在某个指定的词或短语处。当生成的文本中包含了指定的停止词或短语时,生成文本的过程就会停止。这个参数通常用来控制生成的文本的内容和方向。
n: 生成文本的数量,即需要生成的文本的数量。这个参数通常用来控制生成的文本的多样性和数量。
best_of: 最佳生成文本数量,即从多次生成文本中选取最佳的文本数量。这个参数通常用来控制生成文本的质量和可读性。
frequency_penalty: 频率惩罚,用来控制重复的单词和短语在生成文本中的出现频率。值越大,生成文本中出现重复单词和短语的概率越小。
presence_penalty: 存在惩罚,用来控制生成文本中出现新单词和短语的概率。值越大,生成文本中出现新单词和短语的概率越大。
best_of: 最佳文本数量,即从多次生成的文本中选取最佳的文本数量。这个参数通常用来控制生成文本的质量和可读性。
logprobs: 是否返回每个单词或短语的概率值。当这个参数设置为true时,生成文本中每个单词或短语的概率值会被返回。
echo: 是否返回输入文本。当这个参数设置为true时,输入文本也会被返回。
介绍下openai api的接口返回值,并说明用法
OpenAI API的接口返回值因不同的任务和模型而异。一般而言,返回值包括以下几个字段:
- id: 该请求的唯一标识符。
- object: 返回值的类型,通常为 “text_completion”,表示文本生成任务。
- created: 请求的创建时间。
- model: 使用的模型的标识符。
- choices: 一个包含所有可能输出结果的列表,每个结果包括以下字段:
- text: 模型生成的文本。
- index: 输出结果的排序位置。
- logprobs: 对于每个token,给出其概率分布及其对数概率。
- finish_reason: 完成原因。可能的值包括 “stop”,表示生成的文本达到了指定的长度或终止标记,或者 “max_turns”,表示已达到最大的文本生成轮数。
- prompt: 模型使用的输入提示。
- created: 输出结果的创建时间。 开发者可以根据自己的需求,使用返回值中的 text 字段获取模型生成的文本。同时,还可以使用 logprobs 字段获取模型对每个token的概率分布,这对于某些应用场景非常有用。
基本参数
- model: 要使用的模型的 ID,访问 OpenAI Docs Models 页面可以查看全部可用的模型
- prompt: 生成结果的提示文本,即你想要得到的内容描述
- max_tokens: 生成结果时的最大 tokens 数,不能超过模型的上下文长度,可以把结果内容复制到 OpenAI Tokenizer 来了解 tokens 的计数方式
- temperature: 控制结果的随机性,如果希望结果更有创意可以尝试 0.9,或者希望有固定结果可以尝试 0.0
- top_p: 一个可用于代替 temperature 的参数,对应机器学习中 nucleus sampling,如果设置 0.1 意味着只考虑构成前 10% 概率质量的 tokens
temperature可以简单得将其理解为“熵”,控制输出的混乱程度(随机性),而top-p可以简单将其理解为候选词列表大小,控制模型所能看到的候选词的多少。实际使用中大家要多尝试不同的值,从而获得最佳输出效果。
- frequency_penalty: [控制字符的重复度] -2.0 ~ 2.0 之间的数字,正值会根据新 tokens 在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性(以恐怖故事为例)
- = -2.0:当早上黎明时,我发现我家现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在(频率最高字符是 “现”,占比 44.79%)
- = -1.0:他总是在清晨漫步在一片森林里,每次漫游每次每次游游游游游游游游游游游游游游游游游游游游游游游游游游游游游(频率最高字符是 “游”,占比 57.69%)
- = 0.0:当一道阴森的风吹过早晨的小餐馆时,一个被吓得发抖的人突然出现在门口,他的嘴唇上挂满血迹,害怕的店主决定给他一份早餐,却发现他的早餐里满是血渍。(频率最高字符是 “的”,占比 8.45%)
- = 1.0:一个熟睡的女孩被一阵清冷的风吹得不由自主地醒了,她看到了早上还未到来的黑暗,周围只有像诉说厄运般狂风呼啸而过。(频率最高字符是 “的”,占比 5.45%)
- = 2.0:每天早上,他都会在露台上坐着吃早餐。柔和的夕阳照耀下,一切看起来安详寂静。但是有一天,当他准备端起早食的时候发现胡同里清冷的风扑进了他的意识中并带来了不安全感…… (频率最高字符是 “的”,占比 4.94%)
- presence_penalty: [控制主题的重复度] -2.0 ~ 2.0 之间的数字,正值会根据到目前为止是否出现在文本中来惩罚新 tokens,从而增加模型谈论新主题的可能性(以云课堂的广告文案为例)
- -2.0:家长们,你们是否为家里的孩子学业的发展而发愁?担心他们的学习没有取得有效的提高?那么,你们可以放心,可以尝试云课堂!它是一个为从幼儿园到高中的学生提供的一个网络平台,可以有效的帮助孩子们提高学习效率,提升学习成绩,帮助他们在学校表现出色!让孩子们的学业发展更加顺利,家长们赶紧加入吧!(抓住一个主题使劲谈论)
- -1.0:家长们,你们是否还在为孩子的学习成绩担忧?云课堂给你们带来了一个绝佳的解决方案!我们为孩子提供了专业的学习指导,从幼儿园到高中,我们都能帮助孩子们在学校取得更好的成绩!让孩子们在学习中更轻松,更有成就感!加入我们,让孩子们拥有更好的学习体验!(紧密围绕一个主题谈论)
- 0.0:家长们,你们是否担心孩子在学校表现不佳?云课堂将帮助您的孩子更好地学习!云课堂是一个网络平台,为从幼儿园到高中的学生提供了全面的学习资源,让他们可以在学校表现出色!让您的孩子更加聪明,让他们在学校取得更好的成绩,快来云课堂吧!(相对围绕一个主题谈论)
- 1.0:家长们,你们的孩子梦想成为最优秀的学生吗?云课堂就是你们的答案!它不仅可以帮助孩子在学校表现出色,还能够提供专业教育资源,助力孩子取得更好的成绩!让你们的孩子一路走向成功,就用云课堂!(避免一个主题谈论的太多)
- 2.0:家长们,您有没有想过,让孩子在学校表现出色可不是一件容易的事?没关系!我们为您提供了一个优质的网络平台——云课堂!无论您的孩子是小学生、初中生还是高中生,都能够通过云课堂找到最合适的学习方法,帮助他们在学校取得优异成绩。快来体验吧!(最大程度避免谈论重复的主题)
- stop: 最大长度为 4 的字符串列表,一旦生成的 tokens 包含其中的内容,将停止生成并返回结果
//private final String path_base="https://api.openai.com/v1";
/**
* https://platform.openai.com/docs/api-reference/
* <p>
* models 列出 API 中可用的各种模型,并提供有关每个模型的基本信息,例如所有者和可用性。 * https://api.openai.com/v1/models
* completions 给定提示,模型将返回一个或多个预测完成,还可以返回每个位置的替代令牌的概率。 * https://api.openai.com/v1/completions
* edits 给定提示和指令,模型将返回提示的编辑版本。 * https://api.openai.com/v1/edits
* images/generations 创建映像,创建给定提示的图像。给定提示和/或输入图像,模型将生成一个新图像。* https://api.openai.com/v1/images/generations
* images/edits 创建图像编辑,在给定原始图像和提示的情况下创建编辑或扩展的图像。 * https://api.openai.com/v1/images/edits
* images/variations 创建图像变体,创建给定图像的变体。 * https://api.openai.com/v1/images/variations
* Embeddings 获取给定输入的向量表示形式,机器学习模型和算法可以轻松使用该表示形式。 * https://api.openai.com/v1/embeddings
* files 返回属于用户组织的文件列表。文件用于上传可与微调等功能一起使用的文档。 * https://api.openai.com/v1/files
* fine-tunes 管理微调作业,以根据特定训练数据定制模型。 * https://api.openai.com/v1/fine-tunes
* moderations 给定输入文本,如果模型将其归类为违反 OpenAI 的内容策略,则输出。 * https://api.openai.com/v1/moderations
* engines 提供对 API 中可用的各种引擎的访问。 * https://api.openai.com/v1/engines
Create completion
(/docs/api-reference/completions/create)
post https://api.openai.com/v1/completions
Creates a completion for the provided prompt and parameters
Request body
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
model | string | Required | ||
prompt | string or array | Optional | Defaults to </endoftext/> | |
suffix | string | Optional | Defaults to null | |
max_tokens | integer | Optional | Defaults to 16 | |
temperature | number | Optional | Defaults to 1 | |
top_p | number | Optional | Defaults to 1 | |
n | integer | Optional | Defaults to 1 | |
stream | boolean | Optional | Defaults to false | |
logprobs | integer | Optional | Defaults to null | |
echo | boolean | Optional | Defaults to false | |
stop | string or array | Optional | Defaults to null | |
presence_penalty | number | Optional | Defaults to 0 | |
frequency_penalty | number | Optional | Defaults to 0 | |
best_of | integer | Optional | Defaults to 1 | |
logit_bias | map | Optional | Defaults to null | |
user | string | Optional |
https://platform.openai.com/docs/api-reference/completions/
- ID of the model to use. You can use the List models API to see all of your available models, or see our Model overview for descriptions of them.
- The prompt(s) to generate completions for, encoded as a string, array of strings, array of tokens, or array of token arrays.
- Note that <|endoftext|> is the document separator that the model sees during training, so if a prompt is not specified the model will generate as if from the beginning of a new document.
- The suffix that comes after a completion of inserted text.
- The maximum number of tokens to generate in the completion.
- The token count of your prompt plus
max_tokens
cannot exceed the model’s context length. Most models have a context length of 2048 tokens (except for the newest models, which support 4096).
- What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
- We generally recommend altering this or
top_p
but not both.
- An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.
- We generally recommend altering this or
temperature
but not both.
- How many completions to generate for each prompt.
- Note: Because this parameter generates many completions, it can quickly consume your token quota. Use carefully and ensure that you have reasonable settings for
max_tokens
andstop
.
- Whether to stream back partial progress. If set, tokens will be sent as data-only server-sent events as they become available, with the stream terminated by a
data: [DONE]
message.
- Include the log probabilities on the
logprobs
most likely tokens, as well the chosen tokens. For example, iflogprobs
is 5, the API will return a list of the 5 most likely tokens. The API will always return thelogprob
of the sampled token, so there may be up tologprobs+1
elements in the response.- The maximum value for
logprobs
is 5. If you need more than this, please contact us through our Help center and describe your use case.
- Echo back the prompt in addition to the completion
- Up to 4 sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.
- Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model’s likelihood to talk about new topics.
- See more information about frequency and presence penalties.
- Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model’s likelihood to repeat the same line verbatim.
- See more information about frequency and presence penalties.
- Generates
best_of
completions server-side and returns the “best” (the one with the highest log probability per token). Results cannot be streamed.- When used with
n
,best_of
controls the number of candidate completions andn
specifies how many to return –best_of
must be greater thann
.- Note: Because this parameter generates many completions, it can quickly consume your token quota. Use carefully and ensure that you have reasonable settings for
max_tokens
andstop
.
- Modify the likelihood of specified tokens appearing in the completion.
- Accepts a json object that maps tokens (specified by their token ID in the GPT tokenizer) to an associated bias value from -100 to 100. You can use this tokenizer tool (which works for both GPT-2 and GPT-3) to convert text to token IDs. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 should result in a ban or exclusive selection of the relevant token.
- As an example, you can pass
{"50256": -100}
to prevent the <|endoftext|> token from being generated.
- A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. Learn more.