OpenAI Token计算方式

如果用 ChatGPT API 去做问答的话是需要付费的,OpenAI 的收费方式是通过 token 数量进行收费,API 价格根据不同模型有所不同,可以看到 GPT4 最贵,GPT3.5 最便宜。这让我想起以前用 Aliyun 中台,每个 SQL 都有个运行价格,ChatGPT 也有一个计算token 的 API,调用 API 之前可以计算一下token 数量。那么问题来了,这个 token 是怎么算的呢?先看官网怎么定义 token 的:

文本生成和嵌入模型通过称为“令牌(tokens)”的文本块来处理文本。令牌代表经常出现的字符序列。例如,字符串“tokenization”被拆分为“ token”和“ization”,而像“the”这样短小且常见的词则表示为单一令牌。请注意,在句子中,每个词的第一个令牌通常以空格字符开始。您可以查看我们的分词工具,以测试特定字符串并查看它们如何被转换为令牌。作为一个大致的经验法则,1个令牌大约等于4个字符或0.75个英文单词。

需要记住的一个限制是,对于文本生成模型,提示和生成的输出加起来不能超过模型的最大上下文长度。对于嵌入模型(不输出令牌),输入必须短于模型的最大上下文长度。每个文本生成和嵌入模型的最大上下文长度可以在模型说明中找到。

官方提供了一个工具可以检查token 数,我尝试了一下,官网说英文差不多是一个token 对应 0.75 个 word,中文有可能被拆成两个,均下来可能也差不多。由于中文是 unicode,有时可能会被拆成两个 token,显示时就是乱码。
在这里插入图片描述

通过 API,检查 token 数量

import tiktoken
enc = tiktoken.encoding_for_model("gpt-4") #按需修改模型名称
len(enc.encode("上午5日游计划")) #返回的也是 8 个

Token 就是对输入进行分词,像 ES 中就有很多分词器。LLM 主要用的是 Subword分词,可以通过Byte-Pair Encoding (BPE), SentencePiece, 或者 WordPiece进行分词,下次可以看看他们都有什么区别。

下面是调用不同模型的价格,假设中文和英文一样的算法,1M 就是差不多 75 万字,GPT Turbo 输出100个字差不多是0.4 美分。如果准确率高的话,也不算贵。

GPT 4 Turbo

在这里插入图片描述

GPT 4

在这里插入图片描述

GPT 3.5

在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值