图片

什么是token

token 是DeepSeek模型处理文本的基本单位,也是API计费的核心依据。虽然可理解为“字词”,但实际分词规则比表面更复杂,通常 1 个中文词语、1 个英文单词、1 个数字或 1 个符号计为 1 个 token。

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

往期文章推荐:

一般情况下模型中 token 和字数的换算比例大致如下:

1 个英文字符 ≈ 0.3 个 token。
1 个中文字符 ≈ 0.6 个 token。

但因为不同模型的分词不同,所以换算比例也存在差异,每一次实际处理 token 数量以模型返回为准,您可以从返回结果的 usage 中查看。

关键认知:分词结果取决于训练语料和算法策略,同样的文本在不同模型中可能产生不同的token数量

动手实战

计算 Tokens 用量

import transformers
from pathlib import Path


chat_tokenizer_dir = str(Path(__file__).parent.resolve())

tokenizer = transformers.AutoTokenizer.from_pretrained( 
    chat_tokenizer_dir, trust_remote_code=True
)

prompt = u"大千世界无奇不有,大千AI智探万象!"
print(prompt)

# 分词结果 (token id列表)
result = tokenizer.encode(prompt)
print("Encoded tokens:", result)
# 输出: Encoded tokens: [547, 3563, 3427, 1265, 4481, 422, 450, 303, 547, 3563, 13503, 4386, 4968, 99339, 3]

# token长度
print("token length:", len(result))
# 输出: token length: 15

# 分词结果
print([tokenizer.decode(i) for i in result])
# 输出: ['大', '千', '世界', '无', '奇', '不', '有', ',', '大', '千', 'AI', '智', '探', '万象', '!']

实测解析:

  1. 1. 文本"大千世界无奇不有,大千AI智探万象!"共18个字符

  2. 2. 被拆分为15个token,但并非逐字拆分:

  • • 中文单字:"大"、"千"等独立成token

  • • 复合词:"世界"、"万象"被识别为整体

  • • 标点符号:感叹号和逗号各占1token

  1. 3. 字母组合"AI"被视为独立token

  2. 4. 关键发现:相同词语"大千"在文本中出现两次,但分词结果相同(ID一致),说明分词具有一致性


本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐