现在我们使用tiktoken来计算对应的tokens,tiktoken是OpenAI开源的一个快速分词工具。它将一个文本字符串和一个编码作为输入,然后将字符串拆分为标记列表。
编码指定如何将文本转换为tokens。不同的模型使用不同的编码。
可以使用tiktoken.encoding_for_model检索模型的编码,如下所示:
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
请注意,p50k_base与r50k_base重叠很大,在非代码应用中,它们通常会给出相同的tokens。
字符串通常如何进行分词
%pip install --upgrade tiktoken
import tiktoken
加载编码
使用tiktoken.get_encoding方法按名称加载一种编码。
第一次运行此方法时,需要连接互联网下载,之后的运行将不需要网络连接。
encoding = tiktoken.get_encoding("cl100k_base")
使用tiktoken.encoding_for_model方法,自动加载给定模型名称对应的正确编码。
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
放入文本
.encode方法将文本字符串转换为标记整数列表。
encoding.encode("tiktoken is great!")
计算调用的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")
这里”tiktokenisgreat!“使用了6个tokens
与openAI的Tokenizer对比:
发现18个字符,使用了6个Tokens。
总结:
官网已经有了Tokenizer,可以计算出使用Tokens,而为什么还要写这篇文章来自己计算tokens呢?
将文本字符串拆分成tokens是有价值的,因为GPT模型使用tokens表示文本。了解文本字符串中有多少tokens可以告诉我们:
该字符串是否太长以至于文本模型无法处理;OpenAIAPI调用的费用。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点