ChatGPT丨使用tiktoken计算tokens

fe6478fb44d531a1d16ff0ad46952079.png

现在我们使用tiktoken来计算对应的tokens,tiktoken是OpenAI开源的一个快速分词工具。它将一个文本字符串(例如“tiktoken很棒!”)和一个编码(例如“cl100k_base”)作为输入,然后将字符串拆分为标记列表(例如["t","ik","token"," is"," great","!"])。

编码

编码指定如何将文本转换为tokens。不同的模型使用不同的编码。

9dba59104d3d4f8158f157351de90dfc.jpeg

可以使用tiktoken.encoding_for_model()检索模型的编码,如下所示:

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

请注意,p50k_base与r50k_base重叠很大,在非代码应用中,它们通常会给出相同的tokens。

字符串通常如何进行分词

在英语中,标记的长度通常从一个字符到一个单词不等(例如“t”或“great”),尽管在某些语言中,标记可以比一个字符更短或比一个单词更长。空格通常与单词的开头分组(例如“is”而不是“ is”或“+”“is”)。您可以在OpenAI Tokenizer(https://platform.openai.com/tokenizer)上快速检查字符串的分词方式。

0. 安装 tiktoken

%pip install --upgrade tiktoken

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. 放入文本

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

encoding.encode("tiktoken is great!")

0e8e59fced65096320991e27b3020e66.png

4.计算调用的token消耗

通过计算.encode()方法返回的列表长度来计算tokens。

def num_tokens_from_string(string: str, encoding_name: str) -> int:
    """Returns the number of tokens in a text string."""
    encoding = tiktoken.get_encoding(encoding_name)
    num_tokens = len(encoding.encode(string))
    return num_tokens
    
num_tokens_from_string("tiktoken is great!", "cl100k_base")

37bd4659686ddfc882056eda875f60c9.png

这里”tiktoken is great!“ 使用了6个tokens

与openAI的Tokenizer对比:

b6e5aab4af51960d9d3c4f55b5aef947.png

发现18个字符,使用了6个Tokens。

总结:

官网已经有了Tokenizer,可以计算出使用Tokens,而为什么还要写这篇文章来自己计算tokens呢?

将文本字符串拆分成tokens是有价值的,因为GPT模型使用tokens表示文本。了解文本字符串中有多少tokens可以告诉我们:

  1. 该字符串是否太长以至于文本模型无法处理;

  2. OpenAI API调用的费用(因为使用费用按token计算)。

最后,想入群ChatGPT嗨玩俱乐部一起抱团学习的欢迎添加我的微信,备注入群ChatGPT

911962f2a0ca740a0349bc06c71c06b9.png

创作不易,您的关注转发点赞在看是我坚持下来的动力

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值