Token是什么?
Token(中文常叫"词元"或"标记")是大语言模型处理文本的基本单位。
你可以把它理解成AI阅读的"最小碎片"。你发给ChatGPT的一段话,会被拆成一串Token,模型再逐个处理。
但Token不等于一个字,也不等于一个词。
Token和字数有什么区别?
这是最容易踩坑的地方。
英文中,1个Token大约对应4个字符,或3/4个单词。比如:
"hello"→ 1个Token"unhappiness"→ 可能被拆成"un"+"happi"+"ness",共3个Token
中文中,1个汉字通常约1-2个Token,具体取决于模型的分词方式。
来看几个直观对比:
| 内容 | 大约Token数 | 大约汉字/字数 |
|---|---|---|
| “你好世界” | 4-8 | 4个汉字 |
| “Hello, world!” | 3-4 | 13个字符 |
| 一段500字的中文文章 | 700-1000 | 500个汉字 |
| 1万英文单词 | 约13000 | 10000词 |
简单记:中文1字≈1-2 Token,英文1词≈0.75 Token。
Token怎么来的?
每个模型内部有一个"分词器"(Tokenizer),负责把文字切分成Token。
这个过程有点像拆积木:
- 先把文字转成字节
- 按常见组合优先切分(比如"the"作为一个整体)
- 不认识的片段拆成更小的单元
所以同一个句子,不同模型的Token数量可能不一样。GPT-4的分词器和Claude的不一样,数字就不一样。
Token和上下文窗口
每个模型都有一个上下文窗口,也就是单次对话最多能塞多少Token。
比如:
- GPT-4o:128K Token
- Claude 3.5 Sonnet:200K Token
- 一些开源小模型:4K-8K Token
这意味着什么?
假设一个模型的上下文是8K Token,你发一段2000字的中文提问,可能就已经吃掉大半了。剩下的空间要给模型的回复。
对话越长,留给新问题的空间就越少。
Token和钱的关系
大部分AI服务按Token计费:
- 输入Token:你发给模型的文本
- 输出Token:模型回复的文本
两边都算钱。
举个例子,假设某模型定价为:
- 输入:每百万Token ¥3
- 输出:每百万Token ¥6
你问一个问题,输入用了500 Token,模型回复了1000 Token:
- 输入费用:500 / 1,000,000 × 3 = ¥0.0015
- 输出费用:1000 / 1,000,000 × 6 = ¥0.006
- 合计:¥0.0075
看起来很少,但如果你每天大量使用,一个月下来也是一笔开支。
这也是为什么了解Token很重要——它直接决定了你的使用成本。
怎么估算自己用了多少Token?
有几个实用方法:
方法一:在线工具
很多网站提供Token计数器,粘贴文本就能看到数量。搜索"OpenAI tokenizer"就能找到。
方法二:API返回
调用API时,响应里通常会包含usage字段,告诉你这次请求用了多少输入和输出Token。
方法三:粗略估算
- 中文:字数 × 1.5 ≈ Token数
- 英文:单词数 × 1.3 ≈ Token数
这个估算法不够精确,但日常够用。
Token截断怎么办?
当文本超过上下文窗口时,会发生截断。
不同产品处理方式不同:
- 有些会直接报错:“超出长度限制”
- 有些会自动丢弃最早的内容
- 有些会提示你缩短输入
如果你遇到这个问题,可以:
- 精简提问,去掉冗余信息
- 分段发送,不要一次塞一大段
- 换用上下文窗口更大的模型
- 用摘要的方式保留关键信息
常见问题
Q:Token是固定不变的吗?
不是。同一个模型更新后,分词器可能改进,同样的文本Token数会变。
Q:标点符号算Token吗?
算。空格、标点、换行符都会占用Token。
Q:代码的Token更多还是更少?
代码通常比自然语言更"紧凑",因为变量名、括号等会被优先识别为完整Token。但长文件仍然会快速消耗Token。
Q:为什么我的文本Token数总是对不上?
因为不同模型的Tokenizer不一样。不要用A模型的计数去套B模型。
总结
Token是大模型世界的"货币"。
它决定了你能说多少、模型能回多少、你要花多少钱。
记住三个关键点:
- Token ≠ 字数,中文1字约1-2 Token
- 上下文窗口以Token计算,不是字符数
- 费用按Token算,输出通常比输入贵
下次和AI对话前,不妨想想:这段话值多少个Token?