ToolAct工具行动

Token 计算器

估算文本在 AI 模型中的 Token 数量,支持主流大模型定价计算

输入文本

统计结果

Token 数量0
字符数0
中文字数0
单词数(估算)0
字符/Token 比值0

预估成本

输入 Token0
输出 Token1,000
总成本$0.0100

$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 等国产模型对中文有更好的优化。

使用说明

基本操作

  1. 在输入区输入或粘贴文本
  2. 选择目标 AI 模型(如 GPT-4、Claude、Gemini 等)
  3. 在右侧面板查看 Token 数量估算
  4. 设置预估输出长度以测算 API 成本

分词规则

  • GPT 系列:约 4 个英文字符 = 1 个 Token,约 1.5 个中文字符 = 1 个 Token
  • Claude 系列:与 GPT 类似,存在细微差异
  • DeepSeek 系列:针对中文优化,约 2 个字符 = 1 个 Token
  • 特殊字符、标点符号和换行符也会消耗 Token
  • 代码和 JSON 等结构化文本通常具有更高的 Token 密度

使用场景

跨模型系列估算 Prompt 大小粘贴文本后选择 OpenAI、Claude、Gemini、Llama、Mistral 或 DeepSeek 模型预设。估算器会根据不同系列对中文字符、英文单词、标点和空格使用不同的启发式系数。切换预设可以快速看到为某个厂商设计的 Prompt 在另一个厂商上如何计费,这在商谈供应商合同时很有用。
预估粗略的输入和输出成本面板将预估的输入 Token 数与用户输入的预期输出 Token 数以及模型特定的千 Token 定价相结合,显示输入 Token、输出 Token 和预估总成本,方便快速进行预算检查。对于长时间运行的批量任务,可将单次请求的估算乘以计划请求次数,在确定使用某个模型之前预估月度开支。
了解多语言文本的构成除了 Token 估算外,工具还会报告总字符数、中文字符数、英文单词数和字符/Token 比值。这在精简 Prompt、对比中英文草稿或为模型上下文限制准备内容时非常实用。较高的字符/Token 比值意味着分词器在每个 Token 中打包了更多文本,通常会降低每页成本。
并排对比不同分词器的估算在相同文本上切换 GPT、Claude 和 Gemini 模型预设,观察中英文成本如何变化,这在跨厂商移植 Prompt 或为 RAG 管道估算分块大小时很有用。BPE 和 SentencePiece 分词器的差异会变得明显:BPE 倾向于将罕见词拆分为更多子词 Token,而 SentencePiece(Llama 和 Mistral 使用)对空格的处理方式不同,并将中文字符视为更大的单元。
在嵌入或检索前确定分块大小将每个段落控制在所选模型上下文切片附近(如 512 或 1024 Token),将边界句子复制到分词器中,并为每个分块标记 Token 数量以便下游检索索引使用。GPT-4o 使用的 cl100k_base 词表、较新 OpenAI 模型使用的 o200k_base 词表以及 Claude 大约 10 万符号的 SentencePiece 词表在同一文档上会产生不同的分块边界。

技术原理

现代 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)。