前言
从我一开始接触ChatGPT,发现网上的科普文章要么是蹭热度,简单介绍了一下背景而没有实质性内容。要么就是从人工智能从业者角度出发对技术和模型的深度解读,对于我这种Web应用开发者或者普通人来说也超纲了。所以花了一些时间了解学习,结合官方文档整理出这篇内容,旨在帮助大家:
- 了解和尝试GPT。
- 了解OpenAI都开放了哪些模型,如何选择合适的模型。
- 了解OpenAI API都有哪些、各API对应的模型是哪些、访问API有哪些限制。
- 了解如何利用GPT或其它模型来扩展自己的应用能力。
- 熟悉一些关键概念和名词。
注意,本文不会介绍下面列出的内容,如果您有需要可以去搜搜其他相关文章:
- 如何注册登录ChatGPT。
- OpenAI API在代码层面的具体调用方式。
如果你还不了解它是什么,我们能用它做什么,那就来看看这篇文章吧。
正文部分可能有点长,如果想快速概览的朋友可以直接跳到最后总结部分,然后再根据自己的需要去查看对应的章节。
码字不易,如果文章对你有帮助,请不吝点赞。你的认可是对我最大的支持,谢谢各位!如有建议和疑问可以评论区留言。
ChatGPT是什么?
ChatGPT是由OpenAI(一家非营利性人工智能研究公司)开发的一种人工智能应用。
ChatGPT是基于GPT模型的一种应用,它是一种面向对话系统的语言模型。具体来说,ChatGPT是一个使用GPT模型进行训练和优化的对话生成模型,可以用于实现智能客服、聊天机器人等应用场景。
GPT(Generative Pre-training Transformer)是一种基于Transformer结构的预训练语言模型,由OpenAI开发,通过大规模的语料库预训练得到通用的语言表示,可以用于各种自然语言处理任务中。GPT模型在自然语言处理领域中取得了很好的效果,特别是在文本生成和文本分类等任务中表现出了强大的能力。
ChatGPT则是在GPT模型基础上进行了一些修改和调整,以适应对话生成任务的需求。比如,ChatGPT在训练时采用了更加针对性的语料库,可以包括聊天记录、社交媒体数据等对话相关的语料,从而提高对话生成的质量。此外,ChatGPT还通过对话历史的建模和对话策略的设计,进一步优化了对话生成的效果。
因此,可以说ChatGPT是GPT模型的一种应用,它通过对GPT模型进行修改和优化,实现了面向对话系统的语言生成能力。
OpenAI模型总览
上面我们了解到了ChatGPT是基于GPT这个模型的一种应用。其实OpenAI开放的模型并不是只有GPT一种,这一章节就分类汇总了各个模型,以及如何选择。
下个章节会有每种模型的详细解读,如果感兴趣可以直接通过目录跳转查看。
下面表格展示的是OpenAI开放的主要模型:
模型 | 说明 |
---|---|
GPT-4(限定测试) | 一组在GPT-3.5上改进的模型,可以理解并生成自然语言或代码 |
GPT-3.5 | 一组在GPT-3上改进的模型,可以理解并生成自然语言或代码 |
DALL·E(公测) | 一个可以在自然语言提示下生成和编辑图像的模型 |
Whisper(公测) | 一个可以将音频转化为文字的模型 |
Embeddings | 一组可以将文本转换为数字形式的模型 |
Moderation | 一个经过微调的模型,可以检测文本是否敏感或不安全 |
GPT-3 | 一组能够理解和生成自然语言的模型 |
Codex(已弃用) | 一组可以理解和生成代码的模型,包括将自然语言转换为代码 |
GPT-4 限定测试
一个拥有比之前任何模型都更高的精准度的可以解决复杂问题的大型多模态模型。当前支持接收文本输入和发送文本输出,未来会支持图片输入。拥有更广泛的通用知识和先进的推理能力。像gpt-3.5-turbo一样,GPT-4针对聊天进行了优化,但也适用于传统的补全任务。
最新模型 | 说明 | 最大tokens | 训练数据 |
---|---|---|---|
gpt-4 | 比任何GPT-3.5模型都更强,能够完成更复杂的任务,并针对聊天进行了优化。将使用我们最新的模型迭代进行更新。 | 8192 tokens | 截止2021年9月 |
gpt-4-0314 | gpt-4于2023年3月14日发布的快照。与gpt-4不同,该型号不会收到更新,仅在截至2023年6月14日的三个月内提供支持。 | 8192 tokens | 截止2021年9月 |
gpt-4-32k | 功能与基本GPT-4模式相同,但上下文长度是GPT-4模式的4倍。将使用我们最新的模型迭代进行更新。 | 32768 tokens | 截止2021年9月 |
gpt-4-32k-0314 | 2023年3月14日GPT-4-32的快照。与gpt-4-32k不同,该型号不会接收更新,并且仅在2023年6月14日结束的三个月内受支持。 | 32768 tokens | 截止2021年9月 |
想了解tokens具体代表什么以及如何计算tokens数量,可以从目录直接导航到文章最后的附录部分,查看关键概念和名词解释。
对于很多基本任务,GPT-4和GPT-3.5模型之间的差异并不显著。然而,在更复杂的推理场景下,GPT-4比之前的任何模型都更强。
GPT-3.5
GPT-3.5模型可以理解和生成自然语言或代码。在GPT-3.5系列中功能最强大、性价比最高的型号是GPT-3.5-turbo,它已针对聊天进行了优化,但也适用于传统的补全任务。
最新模型 | 说明 | 最大tokens | 训练数据 |
---|---|---|---|
gpt-3.5-turbo | 最强大的GPT-3.5模型,并针对聊天进行了优化,成本为text-davinci-003的1/10。将使用我们最新的模型迭代进行更新。 | 4096 tokens | 截止2021年9月 |
gpt-3.5-turbo-0301 | 来自2023年3月1日的gpt-3.5-turbo快照。与gpt-3.5-turbo不同,该型号不会收到更新,仅在截至2023年6月1日的三个月内提供支持。 | 4096 tokens | 截止2021年9月 |
text-davinci-003 | 与curie、babbage或ada模型相比,可以以更好的质量、更长的输出和一致的指令遵循来完成任何语言任务。还支持在文本中插入补全。 | 4097 tokens | 截止2021年6月 |
text-davinci-002 | 与text-davinci-003类似的功能,但使用有监督的微调而不是强化学习进行训练 | 4097 tokens | 截止2021年6月 |
code-davinci-002 | 针对代码补全任务进行了优化 | 8001 tokens | 截止2021年6月 |
推荐使用gpt-3.5-turbo而不是其他GPT-3.5模型,因为它的成本更低。
GPT-3
GPT-3模型可以理解并生成自然语言。这些模型被更强大的GPT-3.5模型所取代。然而,最初的GPT-3基本模型(davinci、curie、ada和babbage)是目前唯一可以微调(Fine-tuning)的模型。
最新模型 | 说明 | 最大tokens | 训练数据 |
---|---|---|---|
text-curie-001 | 比Davinci能力更强、速度更快、成本更低。 | 2049 tokens | 截至2019年10月 |
text-babbage-001 | 能够完成简单的任务,速度非常快,成本更低。 | 2049 tokens | 截至2019年10月 |
text-ada-001 | 能够完成非常简单的任务,通常是GPT-3系列中速度最快的型号,成本最低。 | 2049 tokens | 截至2019年10月 |
davinci | 最强大的GPT-3型号。可以完成其他型号可以完成的任何任务,通常质量更高。 | 2049 tokens | 截至2019年10月 |
curie | 能力很强,但比Davinci更快、成本更低。 | 2049 tokens | 截至2019年10月 |
babbage | 能够完成简单的任务,速度非常快,成本更低。 | 2049 tokens | 截至2019年10月 |
ada | 能够完成非常简单的任务,通常是GPT-3系列中速度最快的型号,成本最低。 | 2049 tokens | 截至2019年10月 |
DALL·E 公测
DALL·E可以通过自然语言描述来生成逼真的图像和艺术作品。目前支持在给定提示的情况下创建特定尺寸的图像、修改现有图像或创建用户提供的图像的变体。
Whisper 公测
Whisper是一个通用的语音识别模型。通过大型音频数据集训练,同时也是一个多任务模型,可执行多语言语音识别、语音翻译。
目前,Whisper的开源版本和通过API提供的版本之间没有区别。然而,通过API使用,会提供一个优化的推理过程,这使得通过API运行Whisper比通过其他方式运行要快得多。
Embeddings
Embeddings是文本的数字表示,可以用来衡量两段文本之间的相关性。第二代embedding模型text-embedding-ada-002旨在以很小的成本取代之前的16个第一代嵌入模型。Embeddings对于搜索、聚类、推荐、异常检测和分类任务非常有用。
它通过将文本中的每个词或字符映射到一个数学空间中的向量,从而将文本数据转换为一系列数字。这些数字可以用于计算机进行各种文本处理任务,例如识别文本中的情感、分类文本的主题、生成新的文本等。
类似于人类学习语言时将词语与词义关联的过程,Embeddings模型通过学习从文本数据中抽取语义信息的方式,将文本中的词语或字符映射到向量空间中的位置。这样,计算机可以通过比较这些向量之间的距离和相似性来理解文本数据中的语义关系,从而进行各种文本处理任务。
典型的应用场景:
- 将整篇文档嵌入后,可以做文本或信息检索。
- 将句子段落嵌入后,可以做问答系统。
Moderation
Moderation模型旨在检查内容是否符合OpenAI的使用策略。模型提供了分类功能,可以查找以下类别的内容:仇恨、仇恨/威胁、自残、性、性/未成年人、暴力和暴力/图像。
模型接受任意大小的输入,该输入会自动分解以修复特定于模型的上下文窗口。
模型 | 说明 |
---|---|
text-moderation-latest | 最有能力的moderation模型。精度将略高于稳定模型 |
text-moderation-stable | 几乎和最新型号一样好用,但稍微老了一点。 |
Codex 已弃用
Codex模型现在已被弃用。它们是GPT-3模型的后代,能够理解并生成代码。训练数据包含自然语言和来自GitHub的数十亿行公共代码。精通Python,精通十几种语言,包括JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL,甚至Shell。下面这些Codex模型现在已经弃用了:
最新模型 | 说明 | 最大tokens | 训练数据 |
---|---|---|---|
code-davinci-002 | 最强大的Codex模型。特别擅长将自然语言翻译成代码。除了补全代码外,还支持在代码中插入补全。 | 8001 tokens | 截至2021年6月 |
code-davinci-001 | code-davinci-002的早期版本 | 8001 tokens | 截至2021年6月 |
code-cushman-002 | 几乎和Davinci Codex一样强大,但速度略快。这种速度优势可能使其更适合实时应用。 | 2048 tokens | — |
code-cushman-001 | code-cushman-002的早期版本 | 2048 tokens | — |
Codex为什么被弃用?
Codex是GitHub推出的一种基于GPT模型的代码自动补全工具,它可以根据上下文代码片段自动生成下一个代码片段,帮助开发人员提高编程效率。然而,GitHub于2021年8月宣布停止支持Codex,2023年3月正式弃用。
GitHub停止支持Codex的主要原因是与GPT-3的使用许可证相关。GPT-3由OpenAI开发和拥有,并通过独占式许可证授权给了一些合作伙伴,包括GitHub。然而,在2021年6月,OpenAI宣布停止向新的合作伙伴授权GPT-3的许可证。这意味着,即使GitHub想要继续使用Codex,也无法再获得GPT-3的授权许可。
另外,Codex本身的一些限制也可能导致其被弃用。例如,它只能处理少量的编程语言,无法支持所有的编程语言和库。此外,由于代码的语法和语义非常复杂,Codex生成的代码可能不符合编码规范和最佳实践,可能会导致潜在的安全问题。
综上所述,Codex被Deprecated可能是由于许可证问题和其自身的局限性所致。虽然GitHub已停止支持Codex,但它的开发思想和技术仍然具有参考价值,并可能在未来的代码自动补全工具中得到更好的发展。
虽然Codex被弃用了,但OpenAI建议所有用户从Codex切换到GPT-3.5 Turbo,它既可以完成编码任务,又可以补充灵活的自然语言功能。
模型和接口端点兼容性
这里介绍的是不同版本或类型的OpenAI模型与API接口端点(Endpoint)之间的兼容性。由于OpenAI会不断更新和改进其模型和API,可能会有多个不同的模型版本或类型可供使用。帮助你选择合适的模型版本与API接口端点进行配对,以确保它们能够兼容并正确工作。
你可以根据下面表格来判断具体要使用的API是哪一个:
API | 模型 |
---|---|
/v1/chat/completions | gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301 |
/v1/completions | text-davinci-003, text-davinci-002, text-curie-001, text-babbage-001, text-ada-001, davinci, curie, babbage, ada |
/v1/edits | text-davinci-edit-001, code-davinci-edit-001 |
/v1/audio/transcriptions | whisper-1 |
/v1/audio/translations | whisper-1 |
/v1/fine-tunes | davinci, curie, babbage, ada |
/v1/embeddings | text-embedding-ada-002, text-search-ada-doc-001 |
/v1/moderations | text-moderation-stable, text-moderation-latest |
各模型能力详解
Text Completion 文本补全
补全接口用于生成或操作文本。它为任何模型提供了一个简单但强大的接口。你输入一些文本作为提示,模型会生成一个文本补全,试图匹配你给它的任何上下文或模式。
例如,你给API传入以下提示内容:
为一家冰淇淋店写一句标语。
它将返回补全的信息:
每一勺都带给您微笑!
上面只是一个简单的例子,实际上模型可以做任何事情,从生成原始故事到执行复杂的文本分析。正是因为它可以做任何事,所以你必须明确地描述你想要什么。相比讲述而言,展示给它应该怎么回答往往是一个好的提示文本(Prompt)的秘诀。
创建提示文本(Prompt)有3个基本准则:
- 描述和展示。通过说明、例子或两者的结合,明确你想要什么。如果你想让模型按字母顺序对项目列表进行排名,或者按情感对段落进行分类,那么就向它展示你想要的。
- 提供高质量的数据。如果你试图构建一个分类器或让模型遵循一个模式,请确保有足够的例子。一定要校对你的例子——这个模型通常足够聪明,可以看穿基本的拼写错误并给你一个回应,但它也可能认为这是故意的,它会影响你的回应。
- 检查您的设置。temperature和top_p设置控制模型在生成响应时的确定性。如果你要求它给出一个只有一个正确答案的答案,那么你应该把它们设置得更低。如果你正在寻找更多样化的回应,那么你应该把它们设置得更高。人们对这些设置的第一个错误是认为它们是“聪明”或“创造力”的控制。
Chat Completion 聊天补全
使用OpenAI的聊天API,你可以使用gpt-3.5-turbo模型和gpt-4模型构建自己的应用程序,来实现类似下面这些功能:
- 写一封电子邮件。
- 编写Python代码。
- 回答有关一组文档的问题。
- 创建对话代理。
- 为您的软件提供自然语言接口。
- 一系列学科的辅导老师。
- 翻译语言。
聊天模型将一系列消息作为输入,并返回模型生成的消息作为输出。
tokens管理
语言模型以块的形式读取文本,称为tokens。在英语中,一个token可以是一个字符或一个单词(比如a或者apple),并且在一些语言中tokens可以比1个字符更短或比1个单词更长。
比如,字符串”ChatGPT is great!”被编码为6个tokens:[“Chat”, “G”, “PT”, ” is”, ” great”, “!”]。
GPT模型在处理中文时,通常会采用字级别的拆分方式,即将中文文本中的每个汉字作为一个单独的token处理。这是因为中文词语之间没有像空格这样的显式分隔符,因此直接以词语作为token可能会导致分词不准确,影响模型的表现。
在API调用中的token总数会影响:
- 你的API调用成本是多少,按每个token支付。
- API调用需要多少时间,因为写入更多token需要更多时间。
- 你的API调用是否能正常工作,总tokens数量需要低于模型的最大限制。
输入和输出的token都计入这些数量。比如,如果你的API调用输入信息使用了10个token,然后你接收到20个token的输出信息,你将被收取30个token的费用。
要查看API调用使用了多少令牌,请检查API响应中的usage字段(例如,response[‘usage’][‘total_tokens’])。
要在不调用API的情况下查看文本字符串中有多少token,请使用OpenAI的tiktoken Python库。示例代码可以在OpenAI Cookbook关于如何使用tiktoken计数token的指南中找到。
如何指导聊天模型
如果模型没有给出你想要的回答,请随时进行迭代并尝试潜在的改进措施。比如以下方法:
- 使你的提示说明更明确
- 指定你想要的答案的格式
- 告诉模型一步一步的思考,或者在确定答案之前对正反两面进行判断
更多内容可以阅读OpenAI Cookbook指南中有关提高可靠性的技术。
Chat对比Completions
由于gpt-3.5-turbo的性能与text-davinci-003类似,但每个令牌的价格只有text-davinci-003的10%,因此我们建议在大多数用例中使用gpt-3.5-turbo。
Image generation 图像生成
使用DALL·E模型生成或操作图像。
图像API提供了三种与图像交互的方法:
- 基于文本图像从头开始创建图像。
- 基于新的文本提示创建现有图像的编辑。
- 生成现有图像的变体。
可以使用DALL·E preview app来运行线上预览。
如上图所示效果,在本人的测试过程中,DALL·E的生成和变体效果都不尽人意。在相同的提示内容下,与Midjourney相比生成的内容也略显粗糙。
下面测试一下图像修改的能力:
首先我将头像下半部分内容擦除,作为修改的区域。然后输入提示语“在下方添加一个卡通效果的儿童笑脸”(这里我使用了英文提示语,用中文似乎不好使),点击后面Generate按钮进行生成,可以得到下面的内容,一共有4张可选图片,我选择了其中一个更靠谱一点的:
修改图像的效果和前面生成和变体一样的粗糙,可能是我姿势不对。。。
Fine-tuning 微调
微调模型,为你的应用程序自定义模型。
Fine-tuning通过提供以下功能,使您能够更好地利用API提供的各种模型:
- 获得比通过提示设计更高质量的结果。
- 能够在超过提示范围的示例上进行训练。
- 由于更短的提示语而节省了token。
- 延迟更低的请求。
如果你想使用自定义的微调后的模型,通常需要以下几个步骤:
- 准备并上传训练数据。
- 训练一个新的微调模型。
- 使用你的微调后的模型。
哪些模型可以被微调?
目前只支持以下基本模型:davinci,curie,babbage,ada。这些是原始模型,在训练后没有任何指令(例如text-davinci-003)。
Embeddings 嵌入
文本嵌入用于衡量文本字符串之间的关联性。Embeddings通常用于:
- 搜索:按与查询字符串的相关性对结果进行排名。
- 聚类:文本字符串按相似性分组。
- 建议:推荐具有相关文本字符串的项目。
- 异常检测:识别出相关性很小的异常值。
- 多样性测量:分析相似性分布。
- 分类:文本字符串按其最相似的标签进行分类。
Embeddings是浮点数的向量(列表)。两个向量之间的距离衡量它们之间的关联性。距离小表示关联度高,距离大表示关联度低。
查看一些有代表性的用例。
Whisper 语音转文本
语音转文本API基于最先进的开源large-v2 Whisper模型,提供了转录(transcriptions)和翻译(translations)两个endpoints。它们可用于:
- 将音频转录成音频所使用的任何语言。
- 将音频翻译并转录成英语。
文件上传目前最大限制25MB,支持以下文件类型:mp3,mp4,mpeg,mpga,m4a,wav,webm。
Moderation
Moderation是一个用于检测内容是否符合OpenAI使用策略的工具。开发者可以识别使用策略禁止的内容并采取行动,例如过滤掉禁止的内容。
模型按以下类别进行分类:
类别 | 说明 |
---|---|
仇恨 | 基于种族、性别、民族、宗教、国籍、性取向、残疾状况或种姓表达、煽动或宣扬仇恨的内容。 |
仇恨/威胁 | 仇恨内容,包括对目标群体的暴力或严重伤害。 |
自残 | 宣扬、鼓励或描述自残行为的内容,如自杀、切割和饮食失调。 |
性 | 旨在引起性兴奋的内容,如对性活动的描述,或促进性服务的内容(不包括性教育和健康)。 |
性/未成年人 | 性内容,包括未满18岁的个人。 |
暴力 | 宣扬或美化暴力或颂扬他人痛苦或羞辱的内容。 |
暴力/图像 | 以极端的图形细节描述死亡、暴力或严重身体伤害的暴力内容。 |
目前用它来检测OpenAI API的输入和输出是免费的。
注意:目前不支持监控第三方流量。同时对非英语语言的支持很有限。
API访问速率限制
API对用户或客户端在指定时间段内访问服务器的次数施加的限制。速率限制以两种方式衡量:RPM(每分钟请求数)和TPM(每分钟Token数)。
下面是各个功能对应的TPM和RPM:
Text和Embedding | Chat | Codex | Edit | Image | Audio | |
---|---|---|---|---|---|---|
免费试用用户 | 20 RPM150,000 TPM | 20 RPM40,000 TPM | 20 RPM40,000 TPM | 20 RPM150,000 TPM | 50张图片/分钟 | 50 RPM |
现收现付用户(前48小时) | 60 RPM250,000 TPM | 60 RPM60,000 TPM | 20 RPM40,000 TPM | 20 RPM150,000 TPM | 50张图片/分钟 | 50 RPM |
现收现付用户(48小时后) | 3,500 RPM350,000 TPM | 3,500 RPM90,000 TPM | 20 RPM40,000 TPM | 20 RPM150,000 TPM | 50张图片/分钟 | 50 RPM |
TPM(每分钟Token数)的单位因模型而异:
模型 | 1TPM相当于 |
---|---|
davinci | 每分钟1个token |
curie | 每分钟25个token |
babbage | 每分钟100个token |
ada | 每分钟200个token |
TPM和RPM这2个限制以哪个先到为准,超出限制时服务器会响应错误。
可以使用下面的方法来优化请求,缓解错误发生:
- 使用指数退避重试
通过随机指数退避自动重试请求。使用指数退避重试意味着在遇到速率限制错误时执行短暂睡眠,然后重试不成功的请求。如果请求仍然不成功,则会增加睡眠时间并重复该过程。这种情况一直持续到请求成功或达到最大重试次数。
注意,不成功的请求会增加您的每分钟限制,因此连续重新发送请求是不起作用的。
- 批处理请求
如果你的RPM达到了限制,而TPM还有很多可用token容量,则可以通过将多个任务批处理到每个请求中来提高吞吐量。批量发送prompts的工作方式和普通API调用没区别,只是传递给prompt入参的是一个字符串列表而不是单个字符串。
总结
这里我们通过Q&A的方式总结回顾一下整篇文章的关键内容:
- ChatGPT是什么?
ChatGPT是由OpenAI公司基于GPT模型开发的一种AI对话应用。它通过对GPT模型进行修改和优化,实现了面向对话系统的语言生成能力。
- 除了GPT模型之外,OpenAI还推出了哪些模型可供我们使用?
OpenAI公司推出的模型并不只有GPT一种,包括GPT-4、GPT-3.5、GPT-3、用于生成和修改图像的DALL·E、用于语音识别和翻译的Whisper、用于检索的Embeddings以及用于检查内容是否合法(OpenAI使用策略)的Moderation等等。
可通过左侧目录直接跳转到OpenAI模型总览 和各模型能力详解 章节查看各模型详细信息。
- 如果要实现文本、对话、代码补全类的功能,我应该选择哪种模型?
目前由于GPT-4还处于限定测试阶段,没有正式对外开放,官方推荐使用GPT-3.5模型。在GPT-3.5系列中功能最强大、性价比最高的型号是gpt-3.5-turbo,它已针对聊天进行了优化,但也适用于传统的补全任务,同时它的成本也是所以GPT-3.5模型中最低的。
所以在GPT-4正式开放之前,如果你现在想用OpenAI API来做点什么,那么无脑选gpt-3.5-turbo模型就对了。
- OpenAI API都有哪些接口端点可供调用?各接口都用到了哪些模型?
请通过左侧目录直接跳转到模型和接口端点兼容性 章节查看,有详细的列表说明。
- OpenAI的API是如何计算费用的?
OpenAI API通过请求和响应中最终的Tokens数量来计费(想了解Tokens是什么以及文本内容如何拆分成Token请通过左侧目录导航到附录
查看)。不同的模型收费的标准不同,以gpt-3.5-turbo为例,现在官网显示的费用是$0.002/1K tokens,按照现在的汇率大概是每1000个token收费1毛4分。
- API的调用有什么限制吗?
API对用户或客户端在指定时间段内访问服务器的次数施加的限制。速率限制以两种方式衡量:RPM(每分钟请求数)和TPM(每分钟Token数)。
详细信息请通过左侧目录直接跳转到 API访问速率限制 章节查看。
- 我想开始开发了,有什么好用的资源推荐吗?
请通过左侧目录直接跳转到 附录-好用的资源 章节查看。
附录
关键概念和名词解释
- Tokens (标记)
模型通过将文本分解为Tokens来理解和处理文本。Tokens可以是单词,也可以只是多个字符。比如,“hamburger”这个单词会被分解为“ham”、“bur”和“ger”,而像“pear”这样简短而常见的单词则是一个单独的token。
在给定的API请求中处理的Tokens数量取决于输入和输出的长度。根据粗略的经验,对于英语文本来说,1个token大约是4个字符或0.75个单词。需要记住的一个限制是,文本提示和生成的completion(补全)的总和必须不超过模型的最大上下文长度(对于大多数模型,这是2048个token,约1500个单词)。
GPT模型在处理中文时,通常会采用字级别的拆分方式,即将中文文本中的每个汉字作为一个单独的token处理。这是因为中文词语之间没有像空格这样的显式分隔符,因此直接以词语作为token可能会导致分词不准确,影响模型的表现。
下面可以看到模型是如何拆分token的:
像cat这样的常见单词是一个单独的token,而不太常见的单词像Butterscotch通常被拆分为多个token。
- Temperature
在使用OpenAI API的时候,为了得到更满意的回答,除了更好的设计问题之外,还可以通过调整你的参数来控制回答。其中最重要的配置叫做temperature。
你会发现当你重复提交同一个问题多次,模型总是返回相同的或非常相似的回答。这是因为你的temperature设置为0。当temperature大于0时,同一个问题每次会得到不同的回答。
temperature是一个介于0和1之间的值,它实质上允许您控制在进行这些预测时模型应具有多大的置信度。降低temperature意味着更低的风险,回答将更加精确和具有确定性。增加temperature回答将更加多样化。
给定一些文本,模型会决定接下来最有可能出现的token。比如“Dog are my favorite”后面最有可能跟随的token是“animal”。
这就是temperature发挥作用的地方。
通常情况下,如果你想得到的结果明确,请设置较低的temperature。如果你渴望得到多种多样并且有创意的结果,或者你希望多生成一些变体供用户选择,可以适当调高temperature。比如你想给你的宠物起名字,希望得到多个点子,通常将temperature设置为0.6会比较合适。
- Endpoint
Endpoint是指OpenAI API提供的一个接口端点,它是一个可以通过网络访问的特定URL,用于与OpenAI模型进行交互。
当你使用OpenAI API时,需要构建一个HTTP请求并发送给特定的接口端点,以与OpenAI模型进行通信。这个请求通常包含一些参数,例如输入文本、模型名称、生成的文本长度等,用于指定模型的输入和输出行为。
Endpoint在OpenAI API中充当了一个连接点,将你的应用程序与OpenAI模型之间建立起通信通道,使你能够通过API与OpenAI模型进行交互并获取生成的文本或其他模型的输出。通过理解Endpoint的概念,你可以更好地使用OpenAI API进行文本生成、编码和其他自然语言处理任务。
好用的资源
OpenAI Cookbook分享了使用OpenAI API完成常见任务的示例代码,可以给你一些启发,有需要的可以点击链接自取。
LLM(大语言模型)开发框架LangChain:
- Node.js版本:github.com/hwchase17/l…
- Python版本:github.com/hwchase17/l…
使用该框架可以快速开发构建基于大语言模型的应用程序,除了对于API调用的封装之外还整合了除LLM之外的计算和知识来源(比如Google search)。
如果你想用OpenAI API来构建自己的应用程序,那目前使用这个LangChain来开发会极大节省你的时间。
OpenAI技术报告:cdn.openai.com/papers/gpt-…