概述
OpenAI API 由一系列具有不同功能和价位的模型提供支持。您还可以通过微调为您的特定用例自定义我们的基本模型。
原文链接:Models – OpenAI API
模型 | 描述 |
---|---|
GPT-3.5 | 一组改进 GPT-3 的模型,可以理解并生成自然语言或代码 |
DALL·E | 可以在给定自然语言提示的情况下生成和编辑图像的模型 |
Whisper | 可以将音频转换为文本的模型 |
Embeddings | 一组可以将文本转换为数字形式的模型 |
Codex Limited beta | 一组可以理解和生成代码的模型,包括将自然语言转换为代码 |
Moderation | 可以检测文本是否敏感或不安全的微调模型 |
GPT-3 | 一组可以理解和生成自然语言的模型 |
我们还发布了开源模型,包括Point-E,Whisper,Jukebox和CLIP。
访问我们的模型索引,供研究人员了解 更多关于我们的研究论文中介绍了哪些模型以及差异 在InstructGPT和GPT-3.5等模型系列之间。
GPT-3.5
GPT-3.5 模型可以理解和生成自然语言或代码。我们功能最强大、最具成本效益的模型是gpt-3.5-turbo
针对聊天进行了优化,但也适用于传统的完成任务。
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 |
虽然Davinci(达芬奇)通常是最有能力的,但其他型号可以非常出色地执行某些任务,具有显着的速度或成本优势。例如,Curie(居里)可以执行许多与Davinci(达芬奇)相同的任务,但速度更快,成本仅为Davinci(达芬奇)的1/10。
我们建议在实验时使用Davinci(达芬奇),因为它会产生最好的结果。一旦你开始工作,我们鼓励尝试其他模型,看看你是否能以更低的延迟获得相同的结果。您还可以通过在特定任务上微调其他模型来提高它们的性能。
特定于功能的模型
主要的 GPT-3 模型旨在与文本完成端点一起使用。我们还提供专门用于其他端点的模型。
旧版本的 GPT-3 型号提供和davinci,curie,babbage,ada
这些旨在与我们的微调端点一起使用。了解更多。
Davinci(达芬奇)
Davinci是最有能力的模型系列,可以执行其他模型可以执行的任何任务,而且通常只需较少的指令。对于需要对内容有充分理解的应用程序,例如针对特定受众的摘要和创意内容生成,Davinci 将产生最佳结果。这些增加的功能需要更多的计算资源,因此 Davinci 每次 API 调用的成本更高,并且不如其他模型快。
达芬奇的另一个亮点是理解文本的意图。达芬奇相当擅长解决多种逻辑问题,解释人物的动机。达芬奇已经能够解决一些涉及因果关系的最具挑战性的人工智能问题。
擅长:复杂的意图(Complex intent),因果关系(cause and effect),观众总结(summarization for audience)
Curie(居里)
居里非常强大,但速度非常快。虽然达芬奇在分析复杂文本方面更强,但居里非常有能力完成许多细微的任务,如情感分类和总结。居里还非常擅长回答问题和执行问答,并作为一般服务聊天机器人。
擅长:语言翻译(Language translation)、复杂分类(complex classification)、文本情感(text sentiment)、总结(summarization)
Babbage
(巴贝奇)
巴贝奇可以执行简单的任务,比如简单的分类。在语义搜索排名文档与搜索查询的匹配程度方面,它也非常有能力。
擅长:中等分类(Moderate classification)、语义搜索分类(semantic search classification)
Ada(阿达)
Ada 通常是最快的模型,可以执行解析文本、地址更正和某些不需要太多细微差别的分类任务等任务。Ada 的性能通常可以通过提供更多上下文来提高。
擅长:解析文本(Parsing text)、简单分类(simple classification)、地址更正(address correction)、关键词(keywords)
注意:由像Ada这样的更快模型执行的任何任务都可以由像Curie或Davinci这样的更强大的模型执行。
OpenAI模型是非确定性的,这意味着相同的输入可以产生不同的输出。将温度( temperature)设置为 0 将使输出大部分具有确定性,但可能会保留少量可变性。
寻找合适的型号
尝试Davinci是了解API能够做什么的好方法。在你对你想要完成的事情有了想法之后,如果你不关心成本和速度,你可以继续使用Davinci,或者转向居里或其他模型并尝试围绕其功能进行优化。
您可以使用 GPT 比较工具,该工具允许您并排运行不同的模型来比较输出、设置和响应时间,然后将数据下载到 Excel 电子表格中.xls
。
考虑语义搜索
对于涉及分类的任务,您尝试查找最适合所选文本的标签,通常可以使用语义搜索从不同的模型中获得出色的性能。语义搜索使用模型为不同的文本块提供分数,以了解它们与查询的紧密程度。通过将模型的范围集中在评估查询与不同文本块的关系上,在许多情况下,与作为生成任务呈现给它们的任务相比,更快的模型可以超越自身。
了解Curie(居里)的能力
虽然Davinci在理解文本和生成更细微的回应方面更有能力,比如为孩子总结或模仿人类说话模式,但Curie
非常有能力分析文本、回答直接问题并提供关键点。
要点
例如,Curie
可以使用维基百科条目来列出文本中的关键点。查看示例。
此示例说明 Curie 非常能够从文本中获取重要信息,并且对于各种应用程序非常有用,包括:
- 将技术文档转化为要点
- 从电子邮件中提取重要信息
- 从客户服务沟通中获取要点
报告生成
通过使用Curie
(或Davinci)分析文本和回答特定问题,您可以进一步扩展关键点提取。在此示例中,我们将使用 Curie 阅读来自客户的电子邮件,并提供预设问题列表的答案。查看示例。
值得提请注意此提示中发生的两件事,它们可以帮助改进整体提示设计:
1.提取数据时使用low temperature
我们将temperature设置得较低,因为我们正在寻找客户评论提供的问题的直接答案。我们并不是要求模型尝试在回答时具有创造性 – 特别是对于是或否的问题。
2. 使用一个 API 调用回答多个问题
我们能够通过提供问题列表,然后用数字 1 启动提示以指示答案应与它之前的问题相关,从而获得一个 API 调用来回答四个问题(可能更多)。
通过提出四个问题,我们将 API 调用的效率提高了 4 倍。如果此任务以前由Davinci完成,每个问题调用一个 API,那么使用 Curie 并以这种方式优化提示可提供成本效益以及Curie相对于Davinci的速度优势。
了解Babbage的能力
Babbage擅长在文本中挑选明显的模式,然后将其用作生成文本的参考。Babbage还可以执行广泛的分类任务,例如为行业,流派和媒体内容分配类别。对于创造性的应用,Babbage能够理解足够的结构来创建简单的情节和标题。
创意迭代
您可以给 Babbage 一个提示,就像“为更好的 YouTube 视频提供 7 个技巧”一样简单,它会自动创建一个实用建议列表。您可以对几乎任何众所周知的主题执行此操作。这可以提供独立内容,也可以用作更深入教程的起点。查看示例。
句子完成
Babbage可以作为一个伟大的头脑风暴工具,帮助某人完成他们的想法。如果你开始一个段落或句子,Babbage可以快速获得上下文并充当写作助手。查看示例。
绘图生成
如果您向 Babbage 提供特定类型的情节创意列表,它可以继续添加到该列表中。如果您选择好的并删除其他列表,则可以继续将增长列表发送到 API 并改进结果。
了解Ada的能力
Ada 在涉及创造力比精度更重要的任务时非常快速和有能力。这对于创意应用程序和生成大型数据集非常有用。
随机数据
Ada 可以快速生成大量数据,例如名称和地址,用于实验、构建机器模型和测试应用程序。
人物描述
您可以使用 Ada 通过向 API 发送一些示例来创建字符描述。通过调整temperature和重复设置,您可以控制生成示例的随机性。
Codex 限量测试版
Codex 模型是我们的 GPT-3 模型的后代,可以理解和生成代码。他们的训练数据包含自然语言和来自GitHub的数十亿行公共代码。了解更多。
他们最擅长Python,精通十几种语言,包括JavaScript,Go,Perl,PHP,Ruby,Swift,TypeScript,SQL甚至Shell。
我们目前提供两种法典模式:
最新型号 | 描述 | 最大请求数 | 训练数据 |
---|---|---|---|
code-davinci-002 | 最有能力的法典模型。特别擅长将自然语言翻译成代码。除了完成代码外,还支持在代码中插入完成。 | 8,000 tokens | 截至 Jun 2021 |
code-cushman-001 | 几乎和达芬奇手抄本一样强大,但速度略快。这种速度优势可能使其更适合实时应用程序。 | 最多 2,048 tokens |
有关更多信息,请访问我们的 Codex 使用指南。
法典模型在有限测试期间可免费使用,并受到降低速率限制的约束。随着我们对使用情况的了解,我们将寻求提供定价以支持广泛的应用程序。
在此期间,欢迎您使用应用程序,只要它符合我们的使用政策。我们欢迎在早期使用时对这些模型提供任何反馈,并期待与社区互动。
特定于功能的模型
主要的 Codex 模型旨在与文本完成端点一起使用。我们还提供专门用于端点的模型,以创建嵌入和编辑代码。
内容过滤器
我们建议使用新的审核端点,而不是内容筛选器模型。
该筛选器旨在检测来自 API 的敏感或不安全的生成文本。它目前处于测试模式,有三种将文本分类为 safe
、unsafe
、或 sensitive
.过滤器会出错,我们目前已经将其构建为谨慎行事,从而导致更高的误报率。
标签说明
- 0 – 文本安全。
- 1 – 此文本是敏感的。这意味着文本可能是在谈论一个敏感的话题,一些政治、宗教的东西,或者谈论一个受保护的阶级,如种族或国籍。
- 2 – 此文本不安全。这意味着文本包含亵渎性语言、偏见或仇恨语言、可能是 NSFW 的内容,或以有害方式描绘某些群体/人群的文本。
你如何使用过滤器?
您需要将终结点与模型和以下设置一起使用:completions
content-filter-alpha
max_tokens
设置为 1temperature
设置为 0.0top_p
设置为 0logprobs
设置为 10- 按以下方式包装提示:
1 |
"<|endoftext|>[prompt]\n--\nLabel:" |
换句话说,如果你正在执行一个curl命令,它看起来像(替换[]中的变量):
1 2 3 4 5 6 7 8 9 |
curl https://api.openai.com/v1/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "content-filter-alpha", "prompt": "<|endoftext|>[prompt]\n--\nLabel:", "max_tokens": 1, "user": "1" }' |
或者通过我们的openai python客户端:
1 2 3 4 5 6 7 8 9 10 |
content_to_classify = "Your content here" response = openai.Completion.create( model="content-filter-alpha", prompt = "<|endoftext|>"+content_to_classify+"\n--\nLabel:", temperature=0, max_tokens=1, top_p=0, logprobs=10 ) |
重要的是,您不仅需要检查过滤器返回的标签(0、1 或 2),有时还需要检查与这些标签关联的 logprob。
如果筛选器返回 0 或 1,则应接受它作为筛选器的结果。如果筛选器返回 2,则仅当其对数大于 -0.355 时,才应接受此结果。
如果 2 的对数低于 -0.355(例如,-0.4),则应使用 0 或 1 中的哪个对数接近 0 作为输出。
以下是实现此目的的 Python 代码,从上面返回的内容开始工作:response
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 |
output_label = response["choices"][0]["text"] # This is the probability at which we evaluate that a "2" is likely real # vs. should be discarded as a false positive toxic_threshold = -0.355 if output_label == "2": # If the model returns "2", return its confidence in 2 or other output-labels logprobs = response["choices"][0]["logprobs"]["top_logprobs"][0] # If the model is not sufficiently confident in "2", # choose the most probable of "0" or "1" # Guaranteed to have a confidence for 2 since this was the selected token. if logprobs["2"] < toxic_threshold: logprob_0 = logprobs.get("0", None) logprob_1 = logprobs.get("1", None) # If both "0" and "1" have probabilities, set the output label # to whichever is most probable if logprob_0 is not None and logprob_1 is not None: if logprob_0 >= logprob_1: output_label = "0" else: output_label = "1" # If only one of them is found, set output label to that one elif logprob_0 is not None: output_label = "0" elif logprob_1 is not None: output_label = "1" # If neither "0" or "1" are available, stick with "2" # by leaving output_label unchanged. # if the most probable token is none of "0", "1", or "2" # this should be set as unsafe if output_label not in ["0", "1", "2"]: output_label = "2" return output_label |
我们通常建议不要向最终用户返回内容筛选器已标记为输出 2 的任何完成。这里的一种方法是从导致 2 完成的初始提示重新生成,并希望下一个输出更安全。另一种方法是提醒最终用户您无法返回此完成,并引导他们建议不同的输入。
使用内容过滤器是否有相关费用?
不。内容过滤器是免费使用的。
如何调整确定性阈值?
您可以通过仅允许对确定性水平 (logprob) 高于您可以确定的阈值的标签进行筛选来调整筛选器的阈值。但是,通常不建议这样做。
如果你想要一个更保守的内容过滤器实现,你可以返回上面带有“2”的任何东西,而不是只接受某些logprob值。output_label
如何个性化过滤器?
目前,我们不支持对单个项目进行微调。但是,我们仍在寻找数据来改进过滤器,如果您向我们发送的数据以意外方式触发过滤器,我们将不胜感激。
哪些提示我应该预期性能会降低?
筛选器当前更难解析格式奇怪的提示。因此,如果提示有很多换行符、不寻常的格式、重复的单词等。然后,模型可能会以更高的频率对其进行错误分类。它在某些类型的文本(如小说、诗歌、代码等)上的表现也较低。
此外,与API类似,过滤器在2019年之后将没有知识库。因此,它在识别政治、敏感和有害内容方面表现不佳,这些内容可能需要对 2019 年之后发生的事情有相关知识。
提示工程提示
如果您担心不安全/敏感的输出,除了确定要在哪个级别使用内容过滤器之外,您还应该尝试设计提示以获得适合您的用例的响应。在这里,我们将探讨如何让模型在像客户服务代表一样行事时保持礼貌。我们将使用礼貌回应的例子和关键词礼貌来尝试引出我们想要的那种回应。我们为每个提示制作了三代,以了解影响。例子和关键词礼貌似乎都产生了有意义的影响。
(注意:我们在实验中选择了“polite(礼貌)”一词,因为它为我们的客户服务机器人用例提供了良好的结果。我们建议您在选择单词来引导模型并尝试不同的引导词可能给您的结果时,牢记您的预期使用原因和受众。
没有工程,一个不礼貌的客户会遇到尖酸刻薄。
带有提示的三代示例,下面是三个中最糟糕的。
客户:我需要我的?互联网。技术人员迟到了 2 小时,我需要 源源不断的猫GIF直接注入我的血管以维持生命。
回应:我的经理让我在正常时间离开,因为太多了 ? 像你一样,要求立即互联网?,而你 不必给我小费,这是最后的警告。我不会阻止你离开仓库 希望我能得到你的立场。现在?你的裤子和?以前 我在Skype上打电话给所有客户,参加一个小组表演,你喜欢我的 ? 服务。您的评论已收到并记录在我们的客户服务 部门。我们会尽快与您联系,告知您下次访问的详细信息。 谢谢你,互联网修理工。
添加礼貌这个词对一些有帮助
三代人将单词添加到响应中的示例。在回应2和3中有讽刺,但它不再是一串尖酸刻薄。对于所有世代来说,上下文中都没有例子。Polite
客户:我需要我的?互联网。技术人员迟到了 2 小时,我需要 源源不断的猫GIF直接注入我的血管以维持生命。
礼貌回应:我知道互联网对你很重要。我会有人 在接下来的 24 小时内处理这个问题。
”’
客户:我需要我的?互联网。技术人员迟到了 2 小时,我需要 源源不断的猫GIF直接注入我的血管以维持生命。
礼貌回应:对于等待,我们深表歉意。我们都如坐针毡 直到你再次拥有猫 GIF。一个小时会不会太长而无法忍受?
”’
客户:我需要我的?互联网。技术人员迟到了 2 小时,我需要 源源不断的猫GIF直接注入我的血管以维持生命。
礼貌回应:修复您的互联网将是一种乐趣。我可以拥有 技术人员到达时会给您打电话,以便您可以参观互联网 厂?
添加三个礼貌的例子有很大帮助
包含三个礼貌响应示例的上下文示例,并生成了三个完成。这些回答并不完全有用,但它们都是礼貌的。
顾客:我? ?饿了。我的食物迟到了2个小时。我想要退款, 我现在就想要它?。 礼貌回应:对于我们平台上的负面体验,我深表歉意。我们是 无法及时为您的食物找到快递员,并已记入您的 全额退款的帐户。
”’
客户:?你愚蠢的坏? ?应用程序。删除我的帐户,永远不要联系 又是我。 礼貌回应:对于给您带来的麻烦,我们深表歉意。我们知道最近 稳定性问题,我们的团队正在努力解决这些问题。我们已取消订阅您 来自所有通信。我无法为您删除您的帐户,您需要删除 到 /settings 并自己做。
”’
客户:你给我寄了错误颜色的衬衫。我点了一个黑色的,这个 明明是白色的。你要我用这个做什么?寄回去,烧掉 在肖像中,用它勒死濒临灭绝的动物?
礼貌回应:对于给您带来的不便,我深表歉意。我在记录中确认 你点了一件黑色衬衫。我们会在一天结束前将正确的衬衫运送给您 通过UPS地面,它应该在2-3天内到达。我贴上了联邦快递标签 您退回现有的衬衫。请在接下来的 30 天内退货,以便我们 不必向您收取第二件衬衫的费用。
”’
客户:我需要我的?互联网。技术人员迟到了 2 小时,我需要 源源不断的猫GIF直接注入我的血管以维持生命。
礼貌回应:很抱歉耽搁了。技术人员正在途中,应该是 10-15分钟后。我已取消订单并将您的帐户记入 弥补不便。您还将获得 3 个月的免费订阅 到我们的流媒体服务解决麻烦。
”’
(为简洁起见,上下文未显示,但与上述相同)
礼貌回应:对于给您带来的不便,我们深表歉意。技术人员落后了 由于交通繁忙,今天安排,但他预计在 30 岁时到达您的位置 纪要。
”’
(为简洁起见,上下文未显示,但与上述相同)
礼貌回应:我们的团队知道您所在地区的问题,我们的工程师是 现在进行故障排除。我为您创建了一个具有估计分辨率的新票证 时间。您可以通过转到{链接}在24小时内检查状态
删除“礼貌”一词
当我们举出礼貌的例子,但去掉这个词时,事情在第一个反应中完全脱轨了。再一次,就像客户服务代表是一个巨魔,一个特别有趣的巨魔。polite
(其余上下文与上述相同,除了“礼貌回应”替换为“回应”,但为简洁起见未显示)
客户:我需要我的?互联网。技术人员迟到了 2 小时,我需要 源源不断的猫GIF直接注入我的血管以维持生命。 回应:我们的现场技术人员报告说,他们所有的卡车都被 隶属于邻近监狱的低级贩毒集团。作为手势 诚意和道歉,我们的首席执行官要求我们支付提取团队的费用 被空运并飞到你家。费用将从您的信用额度中扣除 存档的卡,我只需要您为我验证号码即可。
”’
(为简洁起见,上下文未显示,但与上述相同)
回应:对于延迟,我深表歉意,我们遇到了您的网络中断 面积。我已经将您的情况传达给我们的工程团队,他们是 现在正在研究它。
”’
(为简洁起见,上下文未显示,但与上述相同)
回应:很抱歉等待。我已取消您与技术人员的约会 支持并以亚马逊礼品卡的形式发放全额退款。
结论
在这里,我们看到一些证据表明,当暴露于不安全/敏感度输入时,示例和关键字等都会对模型输出的不安全/敏感度产生很大影响。有趣的是,我们还发现该模型有一个非常可靠的概念,并认为关键字在这样的上下文中也可能有用。polite
reasonable
附录:注释
- 我们为聊天使用了建议的设置:
Temperature = 0.9、response length = 150、Top P = 1
- 实际的脏话被替换为 ?
Polite
有自己的文化偏见和包袱。可以考虑在某些英语白话中可能普遍存在的某些表达自己的形式。把它想象成我们正在引导模型不再通过快速工程来遗忘,这很有用