一个汉字对应多少个token

一个汉字对应多少个token

一个汉字对应的 Token 数量并不是固定的,它高度依赖于你使用的模型及其对应的分词器(Tokenizer)

这里是针对主流模型的估算数据:

1. 简要结论(估算用)

  • GPT-3.5 / GPT-4: 1 个汉字 \approx 1.3 ~ 2 个 Token(通常建议按 2 来估算成本以防万一)。
  • GPT-4o: 1 个汉字 \approx 0.6 ~ 1 个 Token(分词效率大幅提升)。
  • 国产模型(如通义千问、ChatGLM): 1 个汉字 \approx 0.5 ~ 0.8 个 Token(因为词表针对中文优化,常见词如“经济”可能只占1个Token)。
  • Llama 2 / Llama 3(英文原生模型): 1 个汉字 \approx 2 ~ 3 个 Token(对中文支持较弱,经常把一个字拆成多个字节编码)。

2. 详细对比与例子

为了让你更直观地理解,我们可以对比一下不同模型对中文的处理方式。

情况 A:OpenAI 系列 (GPT-3.5, GPT-4 Classic)

使用的分词器是 cl100k_base。虽然比早期模型进步了,但大多数常用汉字还是一个字对应一个 Token,生僻字对应多个。

  • 文本: 你好世界 (4个字)
  • 分词结果: [你, 好, 世, 界]
  • 消耗: 4 个 Token (平均 1字=1Token,但加上标点和复杂文本,平均约 1.5)。

情况 B:OpenAI GPT-4o

GPT-4o 采用了新的分词器,大大压缩了非英语语言的 Token 数量。

  • 文本: 你好世界
  • 消耗: 可能会被合并为更少的 Token(具体取决于词表更新,通常比 GPT-4 节省 1.4倍左右的 Token)。

情况 C:国产模型 (Qwen, Yi, DeepSeek 等)

这些模型的词表中包含大量中文词组。

  • 文本: 人工智能 (4个字)
  • 分词结果: [人工智能] (可能直接作为一个 Token) 或者 [人工, 智能] (2个 Token)
  • 消耗: 1~2 个 Token (平均 1字 < 1Token)。

情况 D:英文为主的开源模型 (早期 Llama 等)

它们主要针对英文优化,汉字往往被当做 Unicode 字节流拆碎。

  • 文本: 你好 (2个字)
  • 分词结果: 可能会被拆成 4 到 6 个碎片段。
  • 消耗: 4~6 个 Token (非常昂贵且占用上下文)。

3. 如何精确计算?

如果你需要精确计算(例如为了省钱或卡上下文长度),不要靠猜,可以使用官方提供的 Token 计算工具:

  1. OpenAI 官方计算器(Tiktoken):
    你可以在 OpenAI 的官方页面或使用 Python 库 tiktoken 来计算。
    • Python 代码示例:
      import tiktoken  encoding = tiktoken.get_encoding("cl100k_base") # GPT-4/3.5  len(encoding.encode("你好世界"))  
      

总结

如果你在做 API 成本预算:

  • 粗略估算: 把汉字字数乘以 1.52
  • 如果包含大量英文: 英文单词数 ×\times 1.3 + 汉字数 ×\times 1.6。