大模型 Token 是什么?一文讲透分词、计费与上下文窗口
2026/6/11 10:22:57 网站建设 项目流程

大模型 Token 是什么?一文讲透分词、计费与上下文窗口

一、为什么要搞懂 Token?

只要你用大模型,就绕不开Token。它是大模型处理文本的最小单位,也是计费、限流、上下文窗口的基础。但很多人对它一知半解:

  • “为什么 API 账单按 Token 算?1000 个 Token 到底是多少字?”
  • “上下文窗口 128K 是什么意思?我能塞多少内容进去?”
  • “为什么同样一句话,中文比英文更费 Token?”
  • “明明没写多少字,怎么就超出长度限制了?”

搞懂 Token,你才能算清成本、用好上下文、避免踩坑。本文一次讲透。

读完你会获得:

  • Token 的本质和分词(Tokenization)原理
  • 中英文 Token 数的换算经验
  • 计费、上下文窗口、限流的底层逻辑
  • 实用的 Token 计算代码和 6 个省钱避坑技巧

二、原理分析

2.1 什么是 Token?

Token 是大模型处理文本的最小单位。模型不直接读字符,而是先把文本切成一个个 Token,再转换成数字 ID 输入模型。

文本: "我爱编程" 分词: ["我", "爱", "编程"] → 3 个 Token 转 ID: [1234, 5678, 9012] → 模型实际处理的输入 文本: "Hello, world!" 分词: ["Hello", ",", " world", "!"] → 4 个 Token

Token 不等于字,也不等于单词。它可能是一个字、一个词、半个单词,甚至一个标点。

2.2 分词是怎么做的?

主流大模型用BPE(Byte Pair Encoding,字节对编码)或类似算法做分词。核心思想是:把高频出现的字符组合合并成一个 Token

英文示例: "tokenization" → 可能切成 ["token", "ization"] (2 个 Token) "unbelievable" → 可能切成 ["un", "believ", "able"] (3 个 Token) 常见单词通常是 1 个 Token,生僻词/长词会被拆成多个。

这就解释了一个现象:常用词省 Token,生僻词/拼写错误费 Token。

2.3 中文为什么更费 Token?

这是中文用户最容易踩的坑:

语言经验换算说明
英文1 Token ≈ 4 个字符 ≈ 0.75 个单词1000 Token ≈ 750 单词
中文1 个汉字 ≈ 1 ~ 2 个 Token1000 Token ≈ 500~700 汉字

为什么中文更费?大模型的分词器主要基于英文语料训练,对中文支持相对粗糙,很多汉字要用 1-2 个 Token 表示。所以同样长度的内容,中文消耗的 Token 往往比英文多。

经验法则:估算成本时,中文按"1 汉字 ≈ 1.5 Token"粗算比较稳妥。

2.4 Token 和上下文窗口

上下文窗口(Context Window)是模型一次能处理的最大 Token 数,包括输入和输出。

上下文窗口 = 输入 Token(System + 历史 + 提问)+ 输出 Token(回答) 例如 128K 窗口: ┌──────────────────────────────────────┐ │ System Prompt (2K) │ │ 对话历史 (50K) │ ← 输入部分 │ 检索文档/提问 (60K) │ ├──────────────────────────────────────┤ │ 模型回答 (最多 16K) │ ← 输出部分 └──────────────────────────────────────┘ 总和不能超过 128K

常见模型的上下文窗口:

模型上下文窗口约等于
Claude(200K)200,000 Token约 15 万汉字 / 一本中篇小说
Claude(1M)1,000,000 Token约 75 万汉字 / 多本书
GPT-4o128,000 Token约 10 万汉字
常见开源模型8K ~ 32K几千到几万字

2.5 Token 决定了什么?

维度与 Token 的关系
计费API 按输入 + 输出 Token 数分别计价
上下文上限输入 + 输出总 Token 不能超过窗口大小
速度/延迟Token 越多,处理越慢,首字延迟越高
限流(TPM)很多 API 按每分钟 Token 数(TPM)限流

三、实践:如何计算 Token

3.1 用 tiktoken 计算(OpenAI 系)

"""用 tiktoken 精确计算 Token 数"""# pip install tiktokenimporttiktoken# 加载 GPT-4 的编码器encoding=tiktoken.encoding_for_model("gpt-4o")defcount_tokens(text:str)->int:returnlen(encoding.encode(text))print(count_tokens("Hello, world!"))# 4print(count_tokens("我爱编程"))# 中文通常更多print(count_tokens("人工智能正在改变世界"))# 观察中文 Token 数

3.2 用 Anthropic API 计算 Token(Claude 系)

"""Claude 提供专门的 Token 计数接口"""fromanthropicimportAnthropic client=Anthropic()response=client.messages.count_tokens(model="claude-sonnet-4-6",messages=[{"role":"user","content":"请帮我总结这篇文章的要点"}])print(f"输入 Token 数:{response.input_tokens}")

3.3 估算成本

"""根据 Token 数估算 API 调用成本"""defestimate_cost(input_tokens:int,output_tokens:int,price_in:float,price_out:float)->float:"""price_in/out:每百万 Token 的价格(美元)"""cost=(input_tokens/1_000_000)*price_in cost+=(output_tokens/1_000_000)*price_outreturncost# 假设输入 10000 Token,输出 2000 Token# 价格示例:输入 $3/百万,输出 $15/百万cost=estimate_cost(10000,2000,price_in=3.0,price_out=15.0)print(f"本次调用约花费: ${cost:.4f}")# $0.0600

四、省钱避坑指南

#坑/技巧说明
1输出比输入贵输出 Token 单价通常是输入的 3-5 倍,控制回答长度更省钱
2中文费 Token估算成本时中文按 1 汉字≈1.5 Token,别用字数直接估
3多轮对话累积历史消息每轮都重新计费,长对话要定期裁剪或摘要
4善用 Prompt Caching固定前缀(System/文档)缓存后命中只收 10% 费用
5设置 max_tokens限制输出长度上限,避免模型啰嗦烧钱
6精简 Prompt去掉冗余的客套、重复说明,每个 Token 都是钱

一个典型的省钱组合:

精简 System Prompt + Prompt Caching 缓存固定部分 + 控制 max_tokens 输出长度 + 多轮对话定期摘要压缩历史 = 成本可降低 50%~90%

五、总结

Token 是大模型的"计量单位",搞懂它能帮你算清成本、用好上下文:

  1. 本质:Token 是模型处理文本的最小单位,不等于字也不等于词
  2. 换算:英文 1 Token≈4 字符,中文 1 汉字≈1~2 Token(中文更费)
  3. 窗口:输入 + 输出总 Token 不能超过上下文窗口
  4. 计费:按输入/输出 Token 分别计价,输出通常更贵
  5. 省钱:精简 Prompt + 缓存 + 控制输出 + 压缩历史

理解 Token,是用好大模型 API 的基本功。它直接关系到你的账单、性能和能塞进去多少内容。

推荐实践路径:

  1. 用 tiktoken 或 count_tokens 测一测你常用文本的 Token 数
  2. 对比中英文同义内容的 Token 差异,建立直觉
  3. 给你的 API 调用加上成本估算和 max_tokens 限制
  4. 结合 Prompt Caching 等技巧,系统性优化成本

延伸阅读:

  • OpenAI Tokenizer 在线工具
  • tiktoken 库
  • Anthropic Token Counting 文档

下次再看到"128K 上下文"或"按 Token 计费",你就能心里有数了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询