tiktoken BPE 分词器:OpenAI 模型 Token 计算比同类快 3-6 倍
tiktoken BPE 分词器OpenAI 模型 Token 计算比同类快 3-6 倍【免费下载链接】tiktokentiktoken is a fast BPE tokeniser for use with OpenAIs models.项目地址: https://gitcode.com/GitHub_Trending/ti/tiktoken你在调 OpenAI API 时账单上的 token 数和len(text.split())永远对不上逐条文本再跑一遍 HuggingFace 分词器估算成本又太慢。tiktoken 是 OpenAI 官方的 BPE 分词器专门解决和模型看到完全一致的 token 切分并且足够快这件事。一句话定位tiktoken 是为 OpenAI 模型配套的 BPE 分词器让你用本地代码精确计算任意文本的 token 数、并做无损编解码。GPT-2 分词器处理 1GB 文本比GPT2TokenizerFast快 3-6 倍encoding_for_model(gpt-4o)一行拿到与 API 一致的编码BPE 可逆无损平均每个 token 对应约 4 字节Python 3.9PyPI 预编译 wheel运行时仅依赖regex和requests3 分钟上手pip install tiktokenimport tiktoken enc tiktoken.get_encoding(o200k_base) # gpt-4o 使用的编码 tokens enc.encode(hello world) # [31373, 995] assert enc.decode(tokens) hello world # 编解码无损往返三行代码即可验证编码结果与 OpenAI API 的 token 计数一致解码后原文一字不差。它凭什么快核心逻辑在 Rust。BPE 合并的主循环由 Rust 实现src/lib.rs通过 PyO3 桥接为 Python 模块_tiktokenPython 层只负责正则切分和特殊 token 校验热点路径不经过解释器。官方 benchmark 有具体数字。用 GPT-2 分词器处理 1GB 文本tiktoken 0.2.0 对比tokenizers0.13.2的GPT2TokenizerFasttransformers 4.24.0耗时约为其 1/3 到 1/6。批处理与缓存。encode_batch默认开 8 个线程并发处理文本列表编码词表文件首次下载后按 SHA-256 校验并缓存可用TIKTOKEN_CACHE_DIR指定目录后续启动不再触网。典型使用场景Token 计数与成本估算len(enc.encode(text))给出与 API 一致的 token 数不想让特殊 token 字符串报错时用enc.encode_ordinary(text)。定位模型看到的内容enc.decode_with_offsets(tokens)返回文本和每个 token 的字符偏移方便把 token 错误映射回原文位置。按模型名取分词器tiktoken.encoding_for_model(gpt-4o)自动映射到o200k_basegpt-4映射到cl100k_base前缀匹配机制使新版模型不依赖库升级。进阶自定义与扩展两条路径。第一种直接构造Encoding拿到对象后自己传递cl100k tiktoken.get_encoding(cl100k_base) enc tiktoken.Encoding( namecl100k_im, pat_strcl100k._pat_str, mergeable_rankscl100k._mergeable_ranks, special_tokens{**cl100k._special_tokens, : 100264}, )第二种走插件机制新建tiktoken_ext命名空间包模块内定义ENCODING_CONSTRUCTORS字典编码名到构造函数的映射pip install ./my_ext后get_encoding即可发现你的编码注意不要用 editable 安装。机制细节见tiktoken/registry.py。另外tiktoken._educational提供了可训练、可可视化的纯 Python BPE 实现适合想理解合并过程的人train_simple_encoding()在少量文本上训练出分词器。选型参考维度tiktokenHuggingFace tokenizersOpenAI 编码内置 cl100k_base / o200k_base 等模型名直接映射需自行下载词表文件性能1GB GPT-2 文本分词快 3-6 倍对 GPT2TokenizerFast同为 Rust 内核性能接近适用场景OpenAI API token 计数、计费核对多语种、Llama 等非 OpenAI 模型如果你只服务 OpenAI 模型选 tiktoken 省掉词表搬运和映射维护如果分词目标是多模型多语种HF tokenizers 覆盖面更广。常见问题离线环境能用吗编码词表文件首次get_encoding时下载一次并缓存之后不再触网。离线机器可把词表文件放进TIKTOKEN_CACHE_DIR目录或直接用本地路径加载。支持哪些 Python 版本要求 Python 3.9PyPI 提供 manylinux 和 macOS 的预编译 wheelx86_64 与 arm64无 win32 wheel32 位 Linux 不支持。License 和依赖MIT 协议运行时仅regex与requests两个依赖BPE 核心是 Rust 编译的扩展模块。开头那个本地估算和 API 计费对不上的问题换成enc.encode之后逐条对齐批量估算的速度也能扛住 GB 级文本。下一步可以克隆仓库 https://gitcode.com/GitHub_Trending/ti/tiktoken 跑一遍tests/验证你的环境行为。【免费下载链接】tiktokentiktoken is a fast BPE tokeniser for use with OpenAIs models.项目地址: https://gitcode.com/GitHub_Trending/ti/tiktoken创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考