如何计算Token数量

tiktoken 是OpenAI推出的一个快速开源分词器。

给定一个文本字符串(例如,"tiktoken is great!")和一种编码方式(例如,"cl100k_base"),分词器可以将文本字符串拆分成一个Token列表(例如,["t", "ik", "token", " is", " great", "!"])。

将文本字符串拆分成Token对我们有很大帮助,因为GPT模型以Token的形式读取文本。了解一个文本字符串中的Token数量可以帮助我们判断:(a) 字符串是否过长,超出模型处理能力,以及 (b) OpenAI API调用的费用(因为费用按Token计费)。

编码方式

编码方式决定了文本是如何被转换成Token的。不同的模型使用不同的编码方式。

tiktoken 支持OpenAI常见模型:

  • 编码名称:cl100k_base
  • OpenAI模型:gpt-4, gpt-3.5-turbo,

字符串分词的常见方式
在英语中,Token的长度通常从一个字符到一个单词不等(例如,"t"" great"),不过在某些语言中,Token可能短于一个字符或长于一个单词。空格通常与单词的开头组合在一起(例如," is"而不是"is "" "+"is")。你可以在OpenAI Tokenizer或第三方Tiktokenizer网页应用上快速查看字符串是如何被分词的。

0. 安装 tiktoken


如果需要,可以通过pip安装tiktoken

pip install --upgrade tiktoken
pip install --upgrade openai

1. 导入 tiktoken

import tiktoken

2. 加载编码方式

使用tiktoken.get_encoding()通过名称加载编码方式。

首次运行时需要互联网连接以下载。之后的运行将不需要互联网连接。

encoding = tiktoken.get_encoding("cl100k_base")

使用tiktoken.encoding_for_model()可以自动加载给定模型名称的正确编码方式。

encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")

3. 使用 encoding.encode()将文本转为Token

.encode()方法可以将文本字符串转换为Token整数列表。

encoding.encode("tiktoken is great!")

输出:

[83, 1609, 5963, 374, 2294, 0]

通过计算.encode()返回的列表长度来统计Token数量。

import tiktoken

def num_tokens_from_string(string: str, encoding_name: str) -> int:
	"""返回文本字符串中的Token数量。"""
	encoding = tiktoken.get_encoding(encoding_name)
	num_tokens = len(encoding.encode(string))
	return num_tokens

示例:

num_tokens_from_string("tiktoken is great!", "cl100k_base")
6

如果觉得这篇文章有用,就给个👍和收藏⭐️吧!也欢迎在评论区分享你的看法!


参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值