tiktoken
OpenAI开发的分词库,基于BPE算法,用于ChatGPT等模型的文本分词
核心事实
时间轴 (近 90 天)
项目方在modelmarket.dev/tools/tool-list-cost提供了免费计数器,使用与统计相同的分词器,并在HISTOR的120份工具列表(共260万token)上与tiktoken比对,结果零差异。
tiktoken 是 OpenAI 开源的分词库,cl100k_base 是其常用编码方案,一个英文词通常对应 1–2 个 token,中文则更多。
OpenAI API的logit_bias参数不接受单词本身作为键,而要求token ID字符串,需要用与模型匹配的tokenizer(如tiktoken库)编码获取。
LLM网关需要解析请求载荷中的model字段做路由决策,借助tiktoken等分词器统计messages中的token数以实现按token限流,把OpenAI格式的tools定义翻译成Anthropic的input_schema,并从响应流的每个chunk中抽取usage字段累加成本。
作者实测显示:18个工具的JSON Schema定义消耗2,388个Token,平均每个工具133个Token,在10步Agent运行中可占输入Token的36%、总账单的32%。
使用tiktoken库和o200k_base编码计数时,最小的git_status工具(无参数)仅54个Token,最大的search_code工具(五个参数)达到193个Token。
tiktoken 的 README 给出平均值约为每个 token 4 字节文本。
OpenAI 的分词器是开源的,JavaScript 中可用 js-tiktoken 在任何环境(包括浏览器)运行,Python 中对应 tiktoken 包。
tiktoken 的 encode 在处理包含特殊 token 的文本时会报错,除非传递 disallowed_special=()。
tiktoken 是编译包,会下载词表文件,在轻量库、无网络 CI 环境或受限环境中并不总是合适。
还有 16 条时间轴事件
全部知识事实 (20)
Token是大语言模型处理文本的基本单位,大约对应0.75个英文单词或1.5个汉字
90%已验证GPT系列使用tiktoken(基于BPE编码)进行Token化
80%已验证OpenAI提供了开源工具tiktoken,开发者可以在调用API前预先估算Token数量
80%已验证OpenAI从GPT-2开始使用BPE的变体,GPT-4的cl100k_base词汇表包含约10万个token
65%已验证OpenAI使用tiktoken分词器进行Token计量
65%已验证同样的中文文本在不同大模型服务商处消耗的 Token 数量可能相差 30%-50%
65%待验证LLaMA 3的分词器从SentencePiece升级为基于tiktoken的BPE分词器,词表大小扩展至128,256
90%待验证OpenAI's GPT series uses the tiktoken library, with vocabulary sizes typically ranging between 50,000 and 100,000 Tokens
85%待验证OpenAI 使用 tiktoken 分词算法,Google 使用 SentencePiece 分词算法
60%待验证tiktoken 是 OpenAI 开源的分词库,cl100k_base 是其常用编码方案,一个英文词通常对应 1–2 个 token,中文则更多。
50%待验证OpenAI API的logit_bias参数不接受单词本身作为键,而要求token ID字符串,需要用与模型匹配的tokenizer(如tiktoken库)编码获取。
50%待验证LLM网关需要解析请求载荷中的model字段做路由决策,借助tiktoken等分词器统计messages中的token数以实现按token限流,把OpenAI格式的tools定义翻译成Anthropic的input_schema,并从响应流的每个chunk中抽取usage字段累加成本。
50%待验证使用tiktoken库和o200k_base编码计数时,最小的git_status工具(无参数)仅54个Token,最大的search_code工具(五个参数)达到193个Token。
50%待验证作者实测显示:18个工具的JSON Schema定义消耗2,388个Token,平均每个工具133个Token,在10步Agent运行中可占输入Token的36%、总账单的32%。
50%待验证tiktoken 的 README 给出平均值约为每个 token 4 字节文本。
50%待验证OpenAI 的分词器是开源的,JavaScript 中可用 js-tiktoken 在任何环境(包括浏览器)运行,Python 中对应 tiktoken 包。
50%待验证将 tiktoken 的导入放在构造函数内部而非模块顶部,可实现优雅降级:导入模块本身不需要依赖,ImportError 只在请求无法满足的功能时才出现。
50%待验证tiktoken 是编译包,会下载词表文件,在轻量库、无网络 CI 环境或受限环境中并不总是合适。
50%待验证绝不要用启发式方法向客户计费或执行硬性上下文限制,涉及后果的场景必须使用 tiktoken。
50%待验证工厂函数的 auto 模式优先使用精确的 tiktoken 计数,静默降级到启发式方法。
50%