3分钟搞懂Token和上下文
Token = AI理解文字的基本单位(不是字也不是词),上下文窗口 = AI能"记住"多长内容的工作台
FTD DevClub
3 分钟阅读
AIToken上下文窗口Context Window大语言模型ChatGPT
一句话定义
Token = AI理解文字的基本单位(不是字也不是词),上下文窗口 = AI能"记住"多长内容的工作台
打个比方
Token和上下文就像存储和工作台:
- Token = 存储单位: 像硬盘的"MB",衡量文字大小
- 上下文窗口 = 工作台大小: 台面越大,能同时摊开的资料越多
举个例子:
场景: 让AI帮你写论文
小工作台(4K上下文):
只能放几页参考资料 → 需要分段处理 → 可能遗漏关键信息
大工作台(100K上下文):
能摊开整本书+所有笔记 → 全局理解 → 更连贯的输出
核心理念: Token不是字数,上下文不是记忆力。Token是AI的"计量单位",上下文是AI的"短期工作记忆",超出就会"失忆"(丢掉前面的内容)。
核心要点(3个)
1. Token是什么: AI的基本单位
Token定义:
- AI理解文字的最小单元
- 不是"字",也不是"词",而是"词块"(subword)
- 中文: 1个字 ≈ 1.5-2个token
- 英文: 1个词 ≈ 0.5-1个token
为什么不是"字"或"词":
如果按"字":
- 英文: "ChatGPT" = 7个字母,太碎片
- 中文: 可以,但新词汇处理困难
如果按"词":
- 词典太大(几十万词),效率低
- 新词无法处理(如"ChatGPT")
按Token(词块):
- 平衡: 常见词整个保留,罕见词拆分
- 灵活: 可以处理新词和拼写错误
- 高效: 词典适中(5万左右)
Token计算示例:
| 文本 | Token数 | 说明 |
|---|---|---|
| "你好" | 2-3 | 中文每个字约1.5-2 token |
| "Hello" | 1 | 常见英文词1 token |
| "ChatGPT" | 2-3 | 特殊词会拆分: "Chat" + "GPT" |
| "1000字中文文章" | ~1500-2000 | 约字数的1.5-2倍 |
| "1000 words English" | ~1200-1500 | 约词数的1.2-1.5倍 |
| 代码(Python) | ~1.3倍字符数 | 代码通常token数更多 |
实际例子:
输入: "我爱ChatGPT"
Token分解: ["我", "爱", "Chat", "GPT"] = 4个token
输入: "I love ChatGPT"
Token分解: ["I", " love", " Chat", "GPT"] = 4个token
(注意英文空格也算在token里)
2. 上下文窗口: AI的工作记忆
上下文窗口定义:
- Context Window = AI能同时处理的token数量上限
- 包括: 你的输入 + AI的输出 + 对话历史
- 超出上限: 早期内容会被丢弃("失忆")
工作台类比:
4K上下文 = 小工作台
→ 约3000中文字
→ 能处理: 短对话/单篇文章
→ 类比: 学生宿舍小桌
8K上下文 = 中等工作台
→ 约6000中文字
→ 能处理: 中等长度文档
→ 类比: 家用书桌
32K上下文 = 大工作台
→ 约24000中文字
→ 能处理: 长文档/多轮对话
→ 类比: 办公室大桌
100K上下文 = 超大工作台
→ 约75000中文字 = 一本中等长度的书
→ 能处理: 整本书/海量资料
→ 类比: 图书馆阅览桌
200K上下文 = 巨型工作台(Claude)
→ 约15万中文字 = 一本长篇小说
→ 能处理: 多本书/整个代码库
→ 类比: 会议室长桌
主流模型上下文对比:
| 模型 | 上下文窗口 | 约等于(中文) | 适用场景 |
|---|---|---|---|
| GPT-3.5 | 4K tokens | ~3000字 | 日常聊天/短文档 |
| GPT-3.5-16K | 16K tokens | ~12000字 | 中等文档 |
| GPT-4 | 8K tokens | ~6000字 | 复杂任务(基础版) |
| GPT-4-32K | 32K tokens | ~24000字 | 长文档分析 |
| GPT-4 Turbo | 128K tokens | ~96000字 | 超长文档/代码库 |
| GPT-4o | 128K tokens | ~96000字 | 多模态+长文本 |
| Claude 3 | 200K tokens | ~15万字 | 整本书分析 |
| Kimi(月之暗面) | 200K tokens | ~15万字 | 长文本首选(国内) |
| Gemini 1.5 Pro | 1M tokens | ~75万字 | 超长文本(实验性) |
3. Token和成本: 直接影响费用
为什么Token影响成本:
- AI API按token计费
- 输入token + 输出token = 总费用
- 上下文越长 = token越多 = 费用越高
价格示例(2024年底):
| 模型 | 输入价格 | 输出价格 | 1000字约 |
|---|---|---|---|
| GPT-3.5 Turbo | $0.5/1M tokens | $1.5/1M tokens | ¥0.01 |
| GPT-4o | $2.5/1M tokens | $10/1M tokens | ¥0.05 |
| GPT-4 Turbo | $10/1M tokens | $30/1M tokens | ¥0.2 |
| Claude 3.5 Sonnet | $3/1M tokens | $15/1M tokens | ¥0.08 |
成本计算例子:
任务: 总结一篇5000字的文章
Token消耗:
- 输入: 5000字 × 1.5 = 7500 tokens
- 输出: 500字摘要 × 1.5 = 750 tokens
- 总计: 8250 tokens
使用GPT-4o:
- 输入成本: 7500 × $2.5/1M = $0.01875
- 输出成本: 750 × $10/1M = $0.0075
- 总成本: ~$0.026 ≈ ¥0.19
如果每天处理10篇:
- 日成本: ¥1.9
- 月成本: ¥57
节省成本技巧:
- 精简Prompt: 去掉多余内容
- 选对模型: 简单任务用便宜模型(3.5)
- 控制输出长度: 限制AI回复字数
- 避免重复: 不要反复发送相同内容
为什么重要
理解Token和上下文,才能高效使用AI和控制成本。
实际影响:
影响使用体验
场景1: 长文档分析
错误做法(小上下文):
把100页报告分10次提问
→ AI每次只看一部分
→ 缺乏全局视角
→ 结论可能片面
正确做法(大上下文):
选择Claude(200K)或Kimi
→ 一次性上传整份报告
→ AI全局理解
→ 更准确的分析
场景2: 多轮对话
小上下文(4K):
对话20轮后,AI忘记最初的设定
→ 前后矛盾
→ 需要重新提醒
大上下文(128K):
对话100轮也不会忘
→ 保持一致性
→ 更流畅的体验
影响成本
场景3: API开发
未优化:
每次请求都发送完整历史对话
→ Token浪费严重
→ 成本高10倍
优化后:
只保留最近N轮对话+关键摘要
→ Token减少80%
→ 成本大幅降低
常见误解
误解1: Token就是字数
真相:
- 中文: 1个字 ≈ 1.5-2 token(不是1:1)
- 英文: 1个词 ≈ 0.5-1 token
- 标点/空格也算token
- 建议: 用1.5-2倍字数估算中文token
误解2: 上下文越长越好
真相:
- 越长越贵: 成本按token计费
- 可能影响效果: 信息过多AI也会"晕"
- 速度更慢: 处理更多内容需要时间
- 建议: 按需选择,够用就好
- 日常聊天: 4K-8K够了
- 长文档: 32K-128K
- 整本书: 200K
误解3: 超出上下文会报错
真相:
- 不会报错,会自动截断
- 早期内容被丢弃(从对话开头删除)
- AI"失忆",忘记前面说过的话
- 表现: 前后矛盾/重复问题/忘记设定
误解4: 上下文 = AI的长期记忆
真相:
- 上下文是"短期工作记忆",只管当前对话
- 关闭对话就清空(除非有记忆功能)
- 不同对话之间不共享
- ChatGPT记忆功能: 另一种机制,不是上下文
实用技巧
1. 选对模型省钱
任务类型 → 推荐模型
日常聊天/简单问题:
→ GPT-3.5(4K)免费/便宜
分析5-10页文档:
→ GPT-4(8K)或GPT-4o(128K)
分析50-100页报告:
→ GPT-4 Turbo(128K)或Claude 3(200K)
分析整本书/代码库:
→ Claude 3(200K)或Kimi(200K)
→ Gemini 1.5 Pro(1M,实验性)
2. 查看Token消耗
OpenAI API:
response = openai.ChatCompletion.create(...)
tokens_used = response['usage']['total_tokens']
print(f"使用了{tokens_used}个tokens")在线工具:
- OpenAI Tokenizer: https://platform.openai.com/tokenizer
- 输入文字,立即看到token数
3. 优化Prompt减少Token
❌ 浪费token:
请你作为一个资深的、经验丰富的、专业的、优秀的编辑,
帮我写一篇关于AI的文章,要求文章内容丰富、逻辑清晰、
语言流畅、结构完整...
(100字Prompt = 150+ tokens)
✅ 精简版:
你是资深编辑,写一篇800字AI文章,要求:逻辑清晰,3段结构。
(20字 = 30 tokens,节省80%)
4. 处理长文档策略
方法1: 分块总结(小上下文)
1. 把文档分成N段
2. 每段总结要点
3. 最后综合所有要点
方法2: 一次性处理(大上下文)
使用Claude/Kimi
→ 上传完整文档
→ 直接提问
方法3: MapReduce(超长文档)
1. 分块处理(Map)
2. 汇总结果(Reduce)
3. 综合分析
3秒总结
记住这3点就够了:
- Token = AI的计量单位,中文1字≈1.5-2token,决定成本
- 上下文 = 工作台大小,越大能处理越长内容,但越贵
- 按需选择: 日常4K够,长文档32K-200K,控制成本
💬 互动话题: 你用AI时遇到过"失忆"问题吗?(对话太长,AI忘记前面说的)