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

大模型 Token 是什么?一文讲透分词、计费与上下文窗口 大模型 Token 是什么一文讲透分词、计费与上下文窗口一、为什么要搞懂 Token只要你用大模型就绕不开Token。它是大模型处理文本的最小单位也是计费、限流、上下文窗口的基础。但很多人对它一知半解“为什么 API 账单按 Token 算1000 个 Token 到底是多少字”“上下文窗口 128K 是什么意思我能塞多少内容进去”“为什么同样一句话中文比英文更费 Token”“明明没写多少字怎么就超出长度限制了”搞懂 Token你才能算清成本、用好上下文、避免踩坑。本文一次讲透。读完你会获得Token 的本质和分词Tokenization原理中英文 Token 数的换算经验计费、上下文窗口、限流的底层逻辑实用的 Token 计算代码和 6 个省钱避坑技巧二、原理分析2.1 什么是 TokenToken 是大模型处理文本的最小单位。模型不直接读字符而是先把文本切成一个个 Token再转换成数字 ID 输入模型。文本 我爱编程 分词 [我, 爱, 编程] → 3 个 Token 转 ID [1234, 5678, 9012] → 模型实际处理的输入 文本 Hello, world! 分词 [Hello, ,, world, !] → 4 个 TokenToken 不等于字也不等于单词。它可能是一个字、一个词、半个单词甚至一个标点。2.2 分词是怎么做的主流大模型用BPEByte 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 数包括输入和输出。上下文窗口 输入 TokenSystem 历史 提问 输出 Token回答 例如 128K 窗口 ┌──────────────────────────────────────┐ │ System Prompt 2K │ │ 对话历史 50K │ ← 输入部分 │ 检索文档/提问 60K │ ├──────────────────────────────────────┤ │ 模型回答 最多 16K │ ← 输出部分 └──────────────────────────────────────┘ 总和不能超过 128K常见模型的上下文窗口模型上下文窗口约等于Claude200K200,000 Token约 15 万汉字 / 一本中篇小说Claude1M1,000,000 Token约 75 万汉字 / 多本书GPT-4o128,000 Token约 10 万汉字常见开源模型8K ~ 32K几千到几万字2.5 Token 决定了什么维度与 Token 的关系计费API 按输入 输出 Token 数分别计价上下文上限输入 输出总 Token 不能超过窗口大小速度/延迟Token 越多处理越慢首字延迟越高限流TPM很多 API 按每分钟 Token 数TPM限流三、实践如何计算 Token3.1 用 tiktoken 计算OpenAI 系用 tiktoken 精确计算 Token 数# pip install tiktokenimporttiktoken# 加载 GPT-4 的编码器encodingtiktoken.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 计算 TokenClaude 系Claude 提供专门的 Token 计数接口fromanthropicimportAnthropic clientAnthropic()responseclient.messages.count_tokens(modelclaude-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/百万costestimate_cost(10000,2000,price_in3.0,price_out15.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 是大模型的计量单位搞懂它能帮你算清成本、用好上下文本质Token 是模型处理文本的最小单位不等于字也不等于词换算英文 1 Token≈4 字符中文 1 汉字≈1~2 Token中文更费窗口输入 输出总 Token 不能超过上下文窗口计费按输入/输出 Token 分别计价输出通常更贵省钱精简 Prompt 缓存 控制输出 压缩历史理解 Token是用好大模型 API 的基本功。它直接关系到你的账单、性能和能塞进去多少内容。推荐实践路径用 tiktoken 或 count_tokens 测一测你常用文本的 Token 数对比中英文同义内容的 Token 差异建立直觉给你的 API 调用加上成本估算和 max_tokens 限制结合 Prompt Caching 等技巧系统性优化成本延伸阅读OpenAI Tokenizer 在线工具tiktoken 库Anthropic Token Counting 文档下次再看到128K 上下文或按 Token 计费你就能心里有数了。