Openai开源的对文本进行Token编码、解码的库:Tiktoken 库
Tiktoken 是由 OpenAI 开源的 Python 库,主要用于字节对编码(Byte Pair Encoding, BPE),即将文本高效地转换为 Token 序列(编码)或将 Token 序列还原为文本(解码)。
主要功能
-
文本编码与解码:
- 编码:将输入的文本字符串转换为模型可以理解的数字序列(Token ID 列表)。例如,将 "hello" 转换为 [31373]。
- 解码:将数字序列(Token ID 列表)转换回人类可读的文本。例如,将 [31373, 995] 转换为 "hello world"。
-
统计 Token 数量:
- 通过计算
.encode()
方法返回的列表长度,快速统计文本的 Token 数量。这对于优化模型输入、控制成本或估计 API 调用费用非常有用。
- 通过计算
-
支持多种编码方案:
- 支持不同模型的编码方案,例如
gpt2
、cl100k_base
(用于 GPT-4 和 GPT-3.5)等。
- 支持不同模型的编码方案,例如
使用场景
- 与 OpenAI 模型配合使用:Tiktoken 是专门为 OpenAI 的语言模型(如 GPT 系列)设计的,提供了高性能的 Token 处理能力。
- 估算 API 成本:OpenAI 按 Token 数量收费,Tiktoken 可以精准估算 API 调用成本。
- 文本处理与分析:在自然语言处理和文本挖掘领域,Tiktoken 可以帮助开发者对文本数据进行处理和分析。
示例代码
import tiktoken# 选择编码方案
enc = tiktoken.get_encoding("cl100k_base")# 编码:文本 → Token ID 列表
text = "Tiktoken 是什么?"
tokens = enc.encode(text)
print("Tokens:", tokens)# 解码:Token ID 列表 → 文本
decoded_text = enc.decode(tokens)
print("Decoded Text:", decoded_text)# 统计 Token 数量
token_count = len(tokens)
print("Number of Tokens:", token_count)