惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
U
Unit 42
Y
Y Combinator Blog
I
InfoQ
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
量子位
Microsoft Security Blog
Microsoft Security Blog
B
Blog
The Cloudflare Blog
F
Fortinet All Blogs
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
C
Check Point Blog
S
SegmentFault 最新的问题
爱范儿
爱范儿
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
T
Tailwind CSS Blog

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解
4. Token(词元),5分钟彻底搞懂
老陈说编程 · 2026-04-30 · via 博客园_首页

Token(词元)是 AI 处理信息的最小单位。它既不是字,也不是词,而是由模型自行切分出来的 “文字碎片”。通常来说,1 个 Token 约等于 4 个字母,或 1~2 个汉字。

如果你习惯看视频,就看《4. Token(词元),看会动画敲下代码,就彻底搞懂了》,喜欢看文章就接着往下看。

image

 Token的优化过程如下

image

 大模型单次调用的总消耗 Token 由两部分组成:总消耗 Token = 输入 Token + 输出 Token。其中,输入 Token 的构成更为细致,包括当前用户提问 Token、系统提示词 Token、历史对话上下文 Token,以及消息格式开销 Token。

image

需要注意的是,Token 的实际切分由各模型厂商自研的 Tokenizer(分词器)独立完成,因此相同文本在不同模型上会产生不同的 Token 数量与序列。以上提及的换算比例等数据,均为行业通用估算参考。

image

 下面通过代码实战,带你彻底搞懂。首先打开命令行窗口,使用 pip 命令安装 transformers和PyTorch 开发库。

pip install transformers torch

安装完成后,我们便可以借助 transformers 库加载主流的分词器,直观地观察文本到 Token 的切分过程。以下是具体代码示例:

# 首先从 transformers 库中导入 AutoTokenizer 类,它能自动适配不同大模型的分词规则
from transformers import AutoTokenizer
 
# 接着从预训练权重加载 Qwen2 模型的分词器
# 注意: "Qwen2_tokenizer"是下载到本地自命名的分词器 ,下载地址见文章最后链接
tokenizer = AutoTokenizer.from_pretrained("Qwen2_tokenizer")
 
# 定义待处理的输入文本
text = "你好,我是cool。"
 
# ---------------------------------------------------------
# 第1步:分词 (Tokenization)
# ---------------------------------------------------------
# 使用 BPE算法将文本切分为“子词单元”
# 规则是:常见词为1个Token,复杂词会拆开,标点也算Token。
bpe_codes = tokenizer.tokenize(text)
# 先打印出来看一下结果
print(bpe_codes)
 
# 为了让分词结果可读,需要做一下处理
decoded_result = []
for bpe_code in bpe_codes:
    # 先将子词转换为模型词汇表中的ID
    id = tokenizer.convert_tokens_to_ids(bpe_code)
# 再将单个ID解码回文本并将结果存起来
decoded = tokenizer.decode([id])
    decoded_result.append(decoded)
 
# 输出最终的分词列表
print("分词结果:", decoded_result)
 
# ---------------------------------------------------------
# 第2步:向量化 (Numericalization)
# ---------------------------------------------------------
# 将字符串形式的 Token 列表转换为模型能处理的整数 ID 列表
# 这是大模型的“输入语言”(模型只认识数字,不认识文字)
token_ids = tokenizer.convert_tokens_to_ids(bpe_codes)
print("向量ID:", token_ids)
 
# ---------------------------------------------------------
# 第3步:统计 Token 数量
# ---------------------------------------------------------
# 计算 Token 总数
count = len(token_ids)
print("Token总数:", count)
 
# 将 ID 列表完整解码回原始文本
print("解码结果:", tokenizer.decode(token_ids))

Qwen2_tokenizer分词器下载:分词器