复制成功
请遵守本站许可
REPORT
Chapter_Post // Field_Report

Post_Ref: RL-TOKEN与LL

2026.03.21

Token与LLM上下文管理完全指南

Echo HaoRan
Echo HaoRan
#技术手册
ANALYSIS

概述#

Token(词元)是 AI 模型处理文本的最小单元。理解 Token 对于控制 AI 使用成本和优化输入至关重要。

当你说”你好”时,模型实际处理的不是这 2 个字,而是若干个 Token。理解 Token 的计算方式,能帮助你:

  • 准确估算 API 成本
  • 优化 Prompt,减少浪费
  • 合理规划上下文使用

Token 的基本原理#

什么是 Tokenization#

Tokenization(分词)是将文本转换为 Token 的过程。

主流 Tokenizer 类型:

类型代表模型特点
BPEGPT 系列、ChatGPT子词级别,平衡效果好
WordPieceBERT基于词频的子词切分
SentencePiece多语言模型无预分词,支持混合语言
UnigramLlama概率模型,更灵活

Token 的划分方式#

英文 Token:

  • 1 个 Token ≈ 4 个英文字符
  • 1 个英文单词 ≈ 1-2 个 Token
  • “hello world” → 约 2 个 Token

中文 Token:

  • 中文 Tokenization 更复杂
  • 1 个汉字 ≈ 1-2 个 Token
  • “人工智能” → 约 2-4 个 Token

特殊情况:

内容Token 消耗说明
普通标点1 个, . ! ?
空格通常不计部分模型会计入
URL可能大量通常被拆分为多个 Token
代码视内容而定缩进、空行也会消耗

为什么 Token 很重要#

按 Token 计费#

大多数 LLM API 按 Token 总数计费:

模型输入价格输出价格单位
GPT-4o$2.5$10每 1M Token
GPT-4o-mini$0.15$0.6每 1M Token
Claude 3.5 Sonnet$3$15每 1M Token
Claude 3 Haiku$0.25$1.25每 1M Token

成本计算示例:

PRTCL // PLAINTEXT
场景:处理一篇 2000 字的中文文章
Token 估算:2000 × 1.8 = 3600 Token(输入)
假设需要生成 1000 字回答:1000 × 1.8 = 1800 Token(输出)
总 Token:5400
费用(GPT-4o-mini):
输入:5400 / 1,000,000 × $0.15 = $0.00081
输出:1800 / 1,000,000 × $0.6 = $0.00108
总计:约 $0.002

上下文窗口限制#

每个模型有最大 Token 限制(Context Window):

模型上下文窗口约等于
GPT-4o128K约 10 万汉字
Claude 3.5200K约 16 万汉字
Gemini 2.0 Flash1M约 80 万汉字
Llama-3.1 8B128K约 10 万汉字
Qwen-7B32K约 2.5 万汉字

超出上下文的代价:

  • 无法输入超长内容
  • 早期信息可能被”遗忘”
  • 需要额外的截断 / 摘要处理

Token 计算方法#

精确计算工具#

Python(tiktoken):

PRTCL // PYTHON
import tiktoken
# GPT-4/ChatGPT 使用 cl100k_base 编码
enc = tiktoken.get_encoding("cl100k_base")
tokens = enc.encode("Hello, world!")
print(f"Token 数: {len(tokens)}") # 2
# 中文的 Token 数估算
chinese_text = "人工智能是未来的发展趋势"
tokens_zh = enc.encode(chinese_text)
print(f"中文 Token 数: {len(tokens_zh)}") # 通常 6-10 个

Python(中文推荐):

PRTCL // PYTHON
# 使用 jina-tokenizer
from jina import Tokenizer
tok = Tokenizer()
tokens = tok.encode("人工智能")
print(f"Token 数: {len(tokens)}") # 约 4 个

在线工具#

工具链接特点
OpenAI Tokenizerplatform.openai.com/tokenizer官方,可视化
Tokenizer Calculatortiktokenizer.vercel.app快速,支持批量
Llama Tokenizerhuggingface.co/…Llama 专用

估算公式#

语言公式示例
英文Token ≈ 字符数 / 41000 字符 ≈ 250 Token
中文Token ≈ 字数 × 1.5~2.01000 字 ≈ 1800 Token
混合使用工具精确计算

Token 与上下文窗口#

对话历史的 Token 消耗#

PRTCL // PLAINTEXT
对话示例:
用户:你好,请介绍一下 Python [50 Token]
助手:Python 是一种高级编程语言... [200 Token]
用户:它和 Java 有什么区别? [80 Token]
助手:Python 和 Java 的区别主要在... [300 Token]
当前对话总 Token:630
上下文窗口:128K
可用 Token:128K - 630 = 127,370

超长对话的问题#

当对话历史超过上下文窗口时:

  • 早期消息被截断(丢失上下文)
  • 模型”遗忘”之前的讨论
  • 回答变得不一致

解决方案#

方案说明适用场景
摘要压缩定期总结对话历史长对话
滑动窗口只保留最近 N 条消息资源受限
分话题对话新话题开启新会话多主题讨论
RAG将历史存入外部知识库需要参考历史

成本优化策略#

Prompt 精简#

优化方法效果示例
删除冗余描述减少输入 Token”请帮我” → 直接描述任务
使用缩写减少字符”Machine Learning” → “ML”
移除格式标记减少辅助内容移除多余空行
合并请求减少重复上下文多个问题合并为一个

模型选择#

任务类型推荐模型原因
简单问答GPT-4o-mini便宜 90%
代码生成GPT-4o能力更强
长文本总结Claude 3.5上下文更长
创意写作GPT-4o质量更高

缓存策略#

策略说明节省比例
系统提示缓存固定系统提示只传一次取决于系统提示长度
对话摘要定期压缩历史取决于压缩比
结果复用相似问题用缓存取决于重复率

输出控制#

PRTCL // PYTHON
# 方法 1:限制 max_tokens
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "写一篇 500 字文章"}],
max_tokens=1000 # 限制输出长度
)
# 方法 2:在 Prompt 中明确字数
"请用不超过 200 字回答"

Token 与模型能力的关系#

Token 数典型场景模型能力
< 2K简单问答、翻译单轮简单任务
8K邮件撰写、代码片段中等长度任务
32K文档分析、短篇文章较复杂任务
128K书籍总结、代码库分析复杂长程任务
200K+多文档对比、长篇小说超长上下文任务

常见问题#

问题解答
为什么中文 Token 数比英文多?中文一个字符就是一个词根,不像英文有空格分词
URL 消耗多少 Token?取决于 URL 长度,通常几十到上百个 Token
表格消耗 Token 吗?消耗,转换为文本后按字符计
代码注释计 Token 吗?计入,所有文本都计 Token
max_tokens 和 Token 总数是一回事吗?不是,max_tokens 限制输出,Token 总数 = 输入 + 输出

总结#

理解 Token 是高效使用 AI 的基础。它决定了你能输入多少内容、花多少钱、处理多复杂的任务。掌握 Token 的概念,能帮你更好地规划 AI 应用的成本和效果。


关于我#

项目内容
编辑echowang
来源echospace
邮箱echohaoran@gmail.com
简介AI 爱好者,专注于大语言模型应用与智能体开发,分享技术与实践心得
社交欢迎交流讨论,共同成长
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.03.21
// END OF POST

订阅

通过 RSS 订阅本站,新文章发布时第一时间收到通知。

Follow
Classified
Chapter_06
Protocol_Ref: CC-BY-NC-SA-4.0

Token与LLM上下文管理完全指南

Author: CHONGXIReleased: 2026.03.21

Licensed under CC BY-NC-SA 4.0

评论

© 2025-2026 EchoSpace
Powered by Astro & echohaoran Non-Collaborative_Entity // Protocol_V.4.21