Token 计算器
估算文本在 AI 模型中的 Token 数量,支持主流大模型定价计算
统计结果
预估成本
$2.50 / 1M Token 输入
$10.00 / 1M Token 输出
什么是 Token?
Token 是 AI 模型处理文本的基本单位。简单来说,模型不是按字符或单词来处理文本,而是将文本切分成更小的片段(Token),每个 Token 可能是一个字符、一个单词的一部分,或者一个完整的单词。不同模型使用不同的分词算法。例如,GPT-4 使用的是基于 BPE(Byte Pair Encoding)的分词方式,英文单词通常被分成 1-2 个 Token,而中文字符通常每个字占 1-2 个 Token。DeepSeek 等国产模型对中文有更好的优化。
使用说明
基本操作
- 在输入区输入或粘贴文本
- 选择目标 AI 模型(如 GPT-4、Claude、Gemini 等)
- 在右侧面板查看 Token 数量估算
- 设置预估输出长度以测算 API 成本
分词规则
- GPT 系列:约 4 个英文字符 = 1 个 Token,约 1.5 个中文字符 = 1 个 Token
- Claude 系列:与 GPT 类似,存在细微差异
- DeepSeek 系列:针对中文优化,约 2 个字符 = 1 个 Token
- 特殊字符、标点符号和换行符也会消耗 Token
- 代码和 JSON 等结构化文本通常具有更高的 Token 密度
使用场景
技术原理
现代 LLM 分词器使用子词算法——主要是 Byte Pair Encoding(BPE)和 SentencePiece——而非按空格切分。BPE 从单个字节出发,迭代合并出现频率最高的相邻字节对,生成通常包含 32k-200k 个符号的固定词表。常见词成为单个 Token,罕见词被拆分为多个子词,任意字节(emoji、控制字符)仍可安全编码,因为字母表覆盖了全部 256 个字节。SentencePiece(Llama、Mistral、Gemini 变体使用)通过 `▁` 标记将空格视为普通字符,因此前导空格成为下一个 Token 的一部分,这就是为什么 ` hello` 和 `hello` 通常是不同的 Token ID。 OpenAI 通过 `tiktoken` 库发布三种主要 BPE 词表:`p50k_base`(50,281 个 Token,GPT-3/Codex)、`cl100k_base`(100,277 个 Token,GPT-3.5 Turbo 和 GPT-4)以及 `o200k_base`(约 200k 个 Token,GPT-4o 和 o1),后者增加了非英文覆盖并将中文/日文 Token 数减少约 1.4-1.7 倍。Claude 使用相关但专有的分词器,词汇规模类似。粗略的工作比例:英文文本平均约 4 个字符对应 1 个 Token,中文在 cl100k_base 上约 1.5-2 个字符/Token,在 o200k_base 上约 2 个字符/Token,单个 emoji 通常消耗 2-5 个 Token,因为它编码为多个 UTF-8 字节。 Token 数量决定了上下文窗口使用量和成本。当前窗口包括 GPT-4o 128k、Claude 3.5 Sonnet 200k 和 Gemini 1.5 Pro 2M;计费公式为 `tokens × price_per_1M`,输入和输出分别定价(如 GPT-4o 为 $2.50/$10.00 每 1M,Claude 3.5 Sonnet 为 $3.00/$15.00)。本计数器使用基于各模型系列的启发式系数,因为加载每个分词器的词表文件会产生数兆字节的负载,所以结果是工作估算——权威数据是模型 API 响应中的 `usage` 字段。
- BPE 将频繁的字节对合并为固定词表;OpenAI 词表包括 `cl100k_base`(GPT-4/3.5)、`o200k_base`(GPT-4o/o1)、`p50k_base`(Codex)。
- SentencePiece 将前导空格编码为 `▁`,因此 ` world` 和 `world` 在 Llama/Mistral/Gemini 中映射为不同的 Token ID。
- 英文启发式约 4 字符/Token;CJK 在 cl100k_base 上约 1.5-2 字符/Token,在 o200k_base 上约 2 字符/Token;emoji 通常每个 2-5 个 Token。
- 成本公式:`(input_tokens / 1_000_000) × input_price + (output_tokens / 1_000_000) × output_price`,输入和输出分别定价。
- 2025 年上下文窗口:GPT-4o 128k、GPT-4 Turbo 128k、Claude 3.5 Sonnet 200k、Gemini 1.5 Pro 2M、DeepSeek V3 128k。
- 相同文本在不同厂商下 Token 数不同:分词器词表、字节回退规则和空格处理方式均有差异。
- 权威计数来自 API 响应的 `usage.prompt_tokens` / `usage.completion_tokens`(OpenAI)或 `usage.input_tokens` / `usage.output_tokens`(Anthropic)。
示例
GPT-4 下的英文短句
输入: Hello, world!
模型: GPT-4 (cl100k_base)
Token: 4 -> ["Hello", ",", " world", "!"]
字符数: 13
比例: 3.25 字符/token中文每个字消耗的 token 更多
输入: 你好,世界!
GPT-4: 约 8 个 token(1.5 字/token)
DeepSeek V3: 约 4 个 token(2 字/token,针对 CJK 优化)
Claude 3.5: 约 7 个 token估算一篇 1,000 字英文文章的成本
输入: 1,000 个英文单词(约 1,330 token)
预期输出: 500 token
模型: GPT-4o(输入 $2.50 / 输出 $10.00 每 100 万 token)
输入费用: 1,330 / 1,000,000 * $2.50 = $0.00333
输出费用: 500 / 1,000,000 * $10.00 = $0.00500
合计: 每次请求约 $0.0083经验法则:英文约 75 词 ≈ 100 token
段落(75 词):
"The quick brown fox jumps over the lazy dog. Pack my box with five
dozen liquor jugs. How vexingly quick daft zebras jump! The five
boxing wizards jump quickly. Sphinx of black quartz, judge my vow."
GPT-4 token 数:约 100
Claude token 数:约 95嵌入向量数据库前的分块大小
目标分块:512 token(text-embedding-3-small 上限:8191)
英文文本:每块约 384 词
中文文本:每块约 768 字(GPT 分词器)
重叠: 块间 50 token(保留上下文)常见问题
计数器使用的是哪种分词器?
通常是 OpenAI 的 tiktoken(GPT-4、GPT-3.5 用 cl100k_base,GPT-4o 用 o200k_base),有时还会用到 Anthropic 的 Claude 分词器或 Hugging Face 上开源模型的分词器。不同模型的切分方式不同,因此 token 数量会因模型而异。
为什么 token 数和单词数对不上?
Token 是子词单位。「Hello world」是 2 个 token;「antidisestablishmentarianism」是 5-6 个 token。英文平均每个 token 约 0.75 个单词(即 1000 token ≈ 750 词)。其他语言更密集——汉字往往单字就要占 1-2 个 token,尽管它只是一个字符。
我的提示词会被上传吗?
不会。分词器在你的浏览器里运行——tiktoken 有 JavaScript 版本可以本地完成编码。提示词不会经过网络。
费用估算有多准?
Token 数量是精确的。费用取决于所选模型每千 token 的价格,页面读取的是已发布的价目表。模型方调价后会在页面更新时反映;对预算敏感的决策,请以最新官方价格为准核对。
为什么我这边的计数和 OpenAI Playground 略有差异?
不同版本的 tiktoken 之间会存在细小差异。特殊 token(聊天消息中包含 role/system 框架 token)会让每条消息多出几个 token,普通的非结构化计数器可能没有计入。如果要精确对应 API 调用的计费,请按你代码实际发送的内容来计数。
代码、JSON 和结构化数据是怎么处理的?
分词器会把标点、括号和空白字符切成许多小 token。JSON 非常密集——一个小型 JSON 对象就可能用掉 50 多个 token;代码也比同等长度的散文消耗更多 token。当上下文窗口紧张时,发送 JSON 或代码时要预留足够空间。
可以为列表里没有的模型计 token 吗?
只有当它的分词器能在浏览器中运行时才行。常见的(GPT、Claude、Llama)都有 JS 实现。对于冷门或私有模型,请使用模型方提供的官方计数器,或粗略估算(英文中约 4 个字符 ≈ 1 个 token)。