02-Token/词元:AI眼里的"字"跟你不一样

0 阅读6分钟

Token/词元:AI眼里的"字"跟你不一样

这篇文章带你理解AI最基础的概念——Token,明白为什么AI数数的方式跟你不一样。

前言

你一定遇到过这样的困惑:

"为什么API说支持4000个Token,我只能输入2000多个汉字?"

"为什么同样的内容,有时候收费高有时候收费低?"

"GPT-4的128K上下文到底是多少字?"

答案都在一个词里:Token

今天我们就来揭开AI"数数方式"的秘密。


一、黑话原文 vs 人话翻译

场景模拟

🎯 开发者讨论群:

程序员A:"这个模型上下文才4K,根本不够用"
程序员B:"你可以用Token截断策略"
程序员C:"中文太费Token了,同样的内容英文便宜一半"
程序员A:"是啊,GPT-4那个128K context window太贵了"

人话翻译表

黑话人话翻译一句话理解
Token词元/标记AI眼里的"一个字"
Context Window上下文窗口AI的"短期记忆容量"
4K/128K4000/128000个Token能处理的Token数量
Token限制字数限制能输入的最大内容量
Token计费按字数收费用多少Token付多少钱

二、Token到底是个啥?

2.1 一句话定义

Token = AI处理文本的最小单位

人话版:AI眼里的"一个字",但这个"字"跟你理解的不一样。

2.2 为什么需要Token?

计算机不认识"字",只认识数字。所以需要把文字转换成数字:

你看到的:  今 天 天 气 真 好
          ↓
Token化:  [101, 102, 102, 103, 104, 105]
          ↓
AI处理的: 一串数字

2.3 Token长什么样?

┌─────────────────────────────────────────────────────────────┐
│                    Token的不同形态                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  英文单词 tokenization:                                    │
│  "tokenization" → ["token", "ization"]                      │
│                  2个Token                                   │
│                                                             │
│  中文句子:                                                 │
│  "今天天气真好" → ["今天", "天气", "真好"]                   │
│                  3个Token(也可能更多,看分词方式)          │
│                                                             │
│  特殊情况:                                                 │
│  "GPT-4" → ["G", "PT", "-", "4"]                            │
│             4个Token                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

三、中英文Token大不同

3.1 关键差异

这是最重要的一点:中文比英文"费Token"!

内容英文中文中文Token数
Hello world2个Token你好世界~4-6个Token
I love AI3个Token我爱人工智能~6-8个Token
1000个英文单词~1300个Token1000个汉字~1500-2000个Token

3.2 经验公式

┌─────────────────────────────────────────────────────────────┐
                    Token估算公式                            
├─────────────────────────────────────────────────────────────┤
                                                             
  英文:1个单词  1.3个Token                                 
  (1000个单词  1300个Token)                               
                                                             
  中文:1个汉字  1.5-2个Token                               
  (1000个汉字  1500-2000个Token)                          
                                                             
  所以:4000个Token                                         
        英文:~3000个单词                                    
        中文:~2000-2500个汉字                               
                                                             
└─────────────────────────────────────────────────────────────┘

3.3 实际案例

# 使用 tiktoken 计算 Token 数量
import tiktoken

encoding = tiktoken.encoding_for_model("gpt-4")

text_en = "Hello, how are you today?"
text_cn = "你好,你今天怎么样?"

tokens_en = encoding.encode(text_en)
tokens_cn = encoding.encode(text_cn)

print(f"英文: {len(tokens_en)} tokens")  # 输出: 6 tokens
print(f"中文: {len(tokens_cn)} tokens")  # 输出: 9-12 tokens (看具体编码)

四、上下文窗口(Context Window)是什么?

4.1 一句话定义

Context Window = AI一次性能"记住"的内容量

人话版:AI的短期记忆容量,超过这个限制它就"忘"了前面的内容。

4.2 各模型上下文对比

模型上下文窗口约等于中文
GPT-3.54K Token~6000字
GPT-48K Token~12000字
GPT-4-32K32K Token~48000字
GPT-4-Turbo128K Token~19万字
Claude 3200K Token~30万字
Kimi200K Token~30万字

4.3 超过限制会怎样?

你的输入:
┌────────────────────────────────────────────────┐
│ 这是一段很长的文字...(超过限制)...最后的问题 │
└────────────────────────────────────────────────┘

AI看到的效果:
┌────────────────────────────────────────────────┐
│ [前面的内容被截断了] ...最后的问题             │
└────────────────────────────────────────────────┘

就像:
你让一个人读一本书,但他的记忆只能装下最后一章

4.4 生活类比

Context Window 就像:

📝 一张便利贴
- 小号便利贴(4K):只能写几句话
- 大号便利贴(128K):能写一篇论文
- 超大号便利贴(200K):能写一本书

超过容量?要么写不下,要么得擦掉前面的内容

五、Token计费的秘密

5.1 为什么按Token收费?

AI处理每个Token都需要计算资源,所以收费也按Token算。

5.2 价格对比

模型输入价格输出价格备注
GPT-3.5-Turbo$0.5/1M tokens$1.5/1M tokens最便宜
GPT-4$30/1M tokens$60/1M tokens贵10倍+
GPT-4-Turbo$10/1M tokens$30/1M tokens性价比高
Claude 3 Sonnet$3/1M tokens$15/1M tokens平衡之选

5.3 省钱技巧

Token省钱攻略:

  1. 输入优化:
     - 删除无关内容
     - 用英文代替中文(如果可以)
     - 压缩prompt,减少废话

  2. 模型选择:
     - 简单任务用小模型(GPT-3.5)
     - 复杂任务才用大模型(GPT-4)

  3. 缓存策略:
     - 相同的prompt缓存结果
     - 对话历史适当裁剪

  4. 监控用量:
     - 记录每次调用的Token数
     - 设置预算上限

六、Token的实际影响

6.1 对话场景

你:请帮我总结这篇10万字的小说《XXX》...
AI:抱歉,你的输入超过了Token限制...

为什么会这样?
- 10万字中文 ≈ 15-20万Token
- GPT-4-32K 只能处理 ~48000 Token
- 超出限制,直接报错

6.2 解决方案

# 方案1:分段处理
def process_long_text(text, chunk_size=2000):
    chunks = split_text(text, chunk_size)
    results = []
    for chunk in chunks:
        result = model.generate(chunk)
        results.append(result)
    return merge_results(results)

# 方案2:选择长上下文模型
# 使用 Claude(200K)或 Kimi(200K)处理长文本

七、动手体验Token

7.1 在线工具

7.2 代码计算

import tiktoken

def count_tokens(text, model="gpt-4"):
    encoding = tiktoken.encoding_for_model(model)
    return len(encoding.encode(text))

# 试试看
text = "今天天气真好,适合出门散步。"
print(f"Token数量: {count_tokens(text)}")

# 比较中英文
en_text = "The weather is nice today, perfect for a walk."
cn_text = "今天天气真好,适合出门散步。"
print(f"英文: {count_tokens(en_text)} tokens")
print(f"中文: {count_tokens(cn_text)} tokens")

小结

黑话人话记忆口诀
TokenAI的最小处理单位AI眼里的"一个字"
Context Window上下文窗口AI的短期记忆容量
4K/128KToken数量限制数字越大,能记住越多
Token计费按用量收费用多少Token付多少钱

关键认知

  • 中文比英文费Token(约1.5-2倍)
  • 上下文窗口是AI的记忆上限
  • Token越多,费用越高

黑话等级

⭐⭐ 入门级
├── 理解Token是什么
├── 知道为什么中文费Token
└── 明白上下文窗口的限制

下一级预告:参数/Parameters - 1750亿个参数是啥概念

思考与练习

  1. 思考题

    • 为什么中文Token化比英文复杂?
    • 如果要做中文AI产品,Token成本怎么优化?
  2. 动手练习

    • 用在线工具测试不同文本的Token数量
    • 写一段中文和一段英文,比较Token数量差异
  3. 延伸探索

    • 了解不同模型的Tokenizer有什么区别
    • 研究一下长文本处理的最佳实践

下期预告

下一篇文章,我们来聊:参数/Parameters - 1750亿个参数是啥概念

会解答这些问题:

  • 参数到底长什么样?
  • 1750亿个参数存在哪里?
  • 参数越多真的越好吗?

关注专栏,不错过后续更新!


作者:ECH00O00 本文首发于掘金专栏《AI黑话翻译官》 欢迎评论区交流讨论,点赞收藏就是最大的鼓励