How Much Does It Cost to Use GPT? GPT-3 Pricing Explained
ChatGPT 的发布引发了对其背后技术的巨大炒作:Generative Pretrained Transformer-3(通常称为 GPT-3)。难怪!能够高精度地执行 NLP 任务,它可以自动化许多与语言相关的任务,例如文本分类、问答、机器翻译和文本摘要;它可用于生成内容、分析客户数据或开发高级对话式 AI 系统。
如果您正在阅读本文,您可能已经有机会尝试使用 ChatGPT,或者已经在 Youtube、博客和社交媒体帖子上看到它的实际应用,现在您正在考虑将其提升到一个新的水平并为您自己的项目利用 GPT-3 的力量。
在您深入研究所有令人兴奋的可能性并规划您的产品路线图之前,让我们先解决一个重要问题:
OpenAI 承诺简单灵活的定价。
我们可以从四种语言模型中进行选择:Ada、Babbage、Curie 和 Davinci。 Davinci 是最强大的(在 ChatGPT 中使用),但其他三个仍然可以成功地用于更简单的任务,例如编写摘要或执行情感分析。
价格按每 1K 代币计算。使用 Davinci 模型,您将为每使用 5 万个代币支付 1 美元。很多吗?如OpenAI 定价页面所述:
您可以将标记视为用于自然语言处理的单词片段。对于英文文本,1 个标记大约为 4 个字符或 0.75 个单词。这相当于大约 ¾ 个单词(因此 100 个标记 ~= 75 个单词)。作为参考,莎士比亚全集约有 900,000 字或 120 万个令牌。
因此,只需 100 美元,您就可以对约 3,750,000 个英语单词执行操作,即约 7500 页单倍行距文本。但是,正如我们可以进一步阅读的那样,
答复请求根据您提供的输入中的标记数量和模型生成的答复计费。在内部,此端点调用搜索和完成 API,因此其成本是这些端点成本的函数。
因此,我们 7500 页的文本包括输入、输出和带有模型“说明”的提示。这使得整个估计过程有点棘手,因为我们不知道输出可能是什么。
为了找出答案,我们决定进行一项实验。
目的是通过三个示例提示检查实际代币使用情况,了解哪些因素对输出有影响,并学会更好地估算 GPT-3 项目的成本。
该实验涉及将提示与文本语料库相结合,将它们发送到 API,然后计算返回的标记数。
然后在使用情况视图中监控 API 请求的成本——由于每个计费窗口限制有一个请求——实施了至少 5 分钟的等待时间。然后手工计算成本,并将成本与使用情况视图中记录的成本进行比较,以查看是否存在任何差异。
计划很简单。我们需要收集几个语料库(约 10 个)、准备提示、估计令牌使用情况并多次调用 API 以查看实际结果。
根据结果,我们计划搜索输入(语料库 + 提示)和输出之间的相关性。我们想发现哪些因素会影响输出的长度,看看我们是否能够仅根据输入和提示来预测令牌的使用情况。
首先,我们想检查 OpenAI 定价页面上信息的准确性。为此,我们获取了Tokenizer的结果——OpenAI 提供的官方工具,用于计算一段文本将如何被 API 标记化以及该段文本中的标记总数——因此我们稍后可以将它们与数据进行比较从使用视图和实际计费。
作为我们的语料库,我们采用了十大下载应用程序的描述:TikTok、Instagram、Facebook、WhatsApp、Telegram、Snapchat、Zoom、Messenger、CapCut 和 Spotify。
这些将使我们能够对文本运行多个操作并针对不同的用例测试语料库,例如关键字搜索、总结较长的文本片段以及将文本转换为项目需求。描述的长度从 376 到 2060 个单词不等。
让我们来看看它的样子。这是 TikTok 描述的片段:
文本样本由 1609 个单词和 2182 个标记组成,根据所选的 GPT-3 模型,它们的成本应该是:
我们对我们语料库中的十个应用程序描述中的每一个都做了同样的事情。
这是我们使用 GPT-3 API 进行实际测试的参考。
下一步,我们准备了提示。出于本实验的目的,我们希望针对三个不同的用例使用三个提示。
第一个提示是关于根据给定的应用程序描述收集项目需求。
Describe in detail, using points and bullet points, requirements strictly related to the project of an application similar to the below description:
我们的提示有 22 个单词(148 个字符)长,相当于 26 个令牌。我们将这些值添加到语料库中,并再次计算每个模型的估计令牌使用情况。
第二个提示是关于编写长文本片段的摘要。该模型的“工作”是识别文本中最重要的部分并写出简明的摘要。
Create a short summary consisting of one paragraph containing the main takeaways of the below text:
我们的提示有 16 个单词(99 个字符)长,相当于 18 个令牌。同样,我们将这些值添加到语料库中。
最后一个提示应该是从文本中查找和分类关键字,然后以某种形式呈现它们。
Parse the below content in search of keywords. Keywords should be short and concise. Assign each keyword a generic category, like a date, person, place, number, value, country, city, day, year, etc. Present it as a list of categories: keyword pairs.
它有 41 个单词(250 个字符)长,相当于 61 个标记。连同语料库文本,它给了我们:
下一步应该最终给我们一些答案。我们打算将带有语料库文本的提示发送到 API,计算输出中返回的令牌数量,并在使用情况视图中监控我们的 API 请求。
在这个阶段,我们决定只关注最先进的 GPT 模型:Davinci——ChatGPT 的核心。
由于 OpenAI 平台上的代币使用以 5 分钟为单位进行衡量,因此我们的脚本每 5 分钟仅发送一个 API 请求。每个请求都是一段文本(语料库)和一个提示的组合。这样,我们可以获得有关每个组合的令牌使用情况的准确信息,并将结果与估计值进行比较。
我们总共测试了 30 种组合:3 条提示 x 10 条应用说明。为了这个实验,我们没有在模型设置中添加任何额外的变量,例如模型的温度,因为它会显着增加组合的数量和实验的成本。
发送这 30 个请求后,我们将 Usage 视图中显示的结果与直接从 API 调用的元数据中获取的结果进行了比较。
结果彼此一致。此外,提示的标记使用——包括提示和语料库——也与之前使用 Tokenizer 估计的使用情况一致。
在这一点上,我们知道我们能够高精度地估计输入的令牌使用情况。下一步是检查输入长度和输出长度之间是否存在任何相关性,并确定我们是否能够估计输出的令牌使用情况。
输入令牌数量和输出令牌数量之间的相关性非常弱*。测量输入令牌的数量不足以估计单个请求中使用的令牌总数。
* 斜率在 TL;DR 摘要中的 0,0029 和项目需求请求中的 0,0246 之间变化。
虽然输入标记的数量(提示 + 语料库)和输出标记的数量(响应)之间没有明显的相关性,但我们可以清楚地看到实际影响输出标记数量的因素是提示本身——指令被给了一个模型。
在所有分析的案例中,生成项目需求比提取和分组关键字需要更多的标记。然而,这些情况下的差异相当小,并没有真正影响单个请求的成本,约为 0.04 美元。如果提示要求 GPT-3 模型根据摘要创建更长的文本(例如博客文章),它可能会改变。
除了特定的用例(我们使用该模型的目的)之外,还有其他因素会影响在您的项目中使用 GPT-3 的成本。其中包括:
温度参数控制模型输出的随机性,将其设置为更高的值可以导致更多样化和不可预测的输出。这会增加运行模型所需的计算资源,从而影响成本。
一个好的提示将最大限度地降低收到错误响应的风险。
使用 GPT-3 的成本也可能受到模型可用性的影响。如果对该模型的需求很高,则成本可能会因可用性有限而增加。
使用 GPT-3 的成本也会受到所需定制级别的影响。如果您需要特定功能,则可能需要额外的开发工作,这会增加成本。
作为用户,您可以通过设置软限制和硬限制来控制预算。使用软限制,一旦您超过特定的使用阈值,您将收到一封电子邮件警报,而硬限制将在达到后拒绝任何后续 API 请求。也可以在请求中设置max_tokens
参数。
但是,您需要记住,您设置的限制会对模型的效率产生影响。如果限制太低,API 请求根本不会发送,因此您和您的用户将得不到任何响应。
实验表明,仅根据语料库和提示提供令牌使用的精确估计是非常困难的。
使用 GPT-3 的成本会受到多种因素的影响,包括具体用例、提示质量、定制级别、API 调用量以及运行模型所需的计算资源。
根据进行的实验,我们可以粗略估计仅在某些用例中使用 GPT-3 的成本,例如关键字提取、收集项目需求或撰写摘要。
让我们看一下第一种情况,假设您的网站上有一个客服聊天机器人,您想知道用户通常会问什么。要获得此类见解,您需要:
您每月有大约 15,000 名访问者,每个访问者每周两次发送 3 个请求。在这种情况下,我们每月有 360K 个请求。如果我们以实验中输入和输出的平均长度(~1800 和 80 个令牌)作为代表值,我们可以很容易地计算出一个请求的价格。
在分析案例中使用 GPT-3(Davinci 模型)的成本约为每月 14,400 美元。
然而,值得注意的是,这只是一个简化的模拟,其结果并不完全具有代表性。
由于构建任何基于 GPT-3 的产品的实际成本取决于多种因素(项目的复杂性、数据的数量和质量、提示、模型设置、用户数量),因此此类估算的安全误差范围甚至会达到 50-100%。
为了获得更可靠的估计,运行概念验证项目并在特定数据集(您自己的语料库样本)上测试不同场景会很有用。
GPT-3是一项相对较新的技术,其商业化应用还有很多未知数。使用它的成本就是其中之一。
虽然可以在输入端测量代币使用及其价格(在最先进的达芬奇模型中每 1000 个代币 0.04 美元),但很难预测输出中的这些值。影响它们的变量很多,投入与产出的相关性很低。
因此,任何“原始”估计都是纯粹的猜测。为了提高估计的准确性(同时也是为了验证在特定用例中使用 GPT-3 的可行性),有必要进行概念验证。在这样的 PoC 中,我们采用样本语料库并使用不同的提示和不同的模型设置测试模型以找到最佳组合。
2 月 21 日,有关名为 Foundry 的新 OpenAI 产品的信息迅速传播,从Twitter传播到最知名的科技媒体,例如 Techcrunch 和CMS Wire 。
根据产品简介,运行轻量级 GPT-3.5 的三个月承诺费用为 78,000 美元,一年承诺费用为 264,000 美元。运行最先进版本的 Davinci 模型(令牌限制超过我们在 GPT-3 中的 8 倍!)三个月的承诺费用为 468,000 美元,一年的承诺费用为 1,584,000 美元。
但这到底是怎么回事?正如我们在Techcrunch上看到的那样:
如果屏幕截图可信,Foundry——无论何时启动——都将提供一个“静态分配”的计算能力(……)专用于单个客户。 (…)
Foundry 还将提供服务级别承诺,例如正常运行时间和日历工程支持。租金将基于具有三个月或一年承诺的专用计算单元;运行单个模型实例将需要特定数量的计算单元。
不过,服务水平承诺似乎不应被视为固定价格合同。
目前,可以安全地假设价格仅涵盖“完全控制模型配置和性能配置文件”的专用容量上的特定模型的访问权限,正如我们在产品简要屏幕截图上看到的那样。
新模型中的代币价格——预计将被广泛期待的 GPT-4——尚未公布。不过,在最近的OpenAI 文档更新中,我们可以了解到 GPT-3.5 Turbo 的成本是 GPT-3 Davinci 模型成本的 1/10——在 GPT-3.5 Turbo 中每 1k 代币给我们 0,002 美元。