Skip to content

Tiktoken库

1. 什么是Tiktoken

  • Tiktoken是由OpenAI开发的一个快速进行 BPE 分词算法的分词器库,使用 Rust 语言开发,能够将文本编码为Token ids,也能够将Token ids解码为文本,此外,还可以用来计算文本编码后的Token数量,用于评估LLM的使用成本
  • 优点:速度快,准确,轻量级

2. 安装

python
# 可以使用 `pip` 直接安装 `tiktoken`:
pip install tiktoken

3. 核心功能

3.1 编码文本到 Token ids

python
# 将文本转换为 Token ids
# 如:我爱你  --> [22755, 239, 163, 230, 109, 19526, 254]
import tiktoken

text = '我爱你'
tokenizer = tiktoken.get_encoding('gpt2')	# 使用GPT2的分词器
tokens = tokenizer.encode(text)
print(tokens)	# 输出:[22755, 239, 163, 230, 109, 19526, 254]

3.2 解码 Token ids 到文本

python
# 将Token ids转换为文本
# 如:[22755, 239, 163, 230, 109, 19526, 254] --> 我爱你
import tiktoken

tokenizer = tiktoken.get_encoding('gpt2')	# 使用GPT2的分词器
token_ids = [22755, 239, 163, 230, 109, 19526, 254]
text = tokenizer.decode(token_ids)
print(text)		# 输出:我爱你

3.3 计算token数量

  • 可以在使用LLM前评估token的长度,控制成本,避免超出模型所支持的上下文长度
python
# 文本 --> token_ids --> 使用len获取长度
import tiktoken

tokenizer = tiktoken.get_encoding('gpt2')	# 使用GPT2的分词器
text = '人工智能正在改变世界'
token_ids = tokenizer.encode(text)

print('Token length:', len(token_ids))		# 输出:Token length: 21

4. 核心 API 方法

4.1 获取分词器

  • 使用模型名称获取分词器

    • python
      # 使用 gpt-4 模型明来加载对应的分词器
      encoding = tiktoken.encoding_for_model("gpt-4")
  • 使用编码名称获取分词器

    • python
      # 使用编码名称 cl100k_base 来加载对应的分词器
      encoding = tiktoken.get_encoding("cl100k_base")

4.2 编码方法

  • encode():将文本转换为 token ids 列表
  • encode_ordinary():不处理特殊 token
  • encode_with_unstable_special_tokens():处理特殊 token

4.3 解码方法

  • decode(): 将 token ID 列表转换回文本
  • decode_single_token_bytes():解码单个 token

千里之行,始于足下。