Token 是什么:大模型计费与上下文窗口怎么算?

编程狮(w3cschool.cn) 2026-10-01 07:05:59 浏览数 (37)
反馈

Token 是什么?大模型怎么计费与记忆

你给 ChatGPT、Claude 这类大模型发一句话,账单上扣的不是字数,而是 Token。Token 是什么?简单说,它是大模型读写文本时最小的计费与计量单位,一个中文词、一个英文单词、甚至半个词都可能被拆成若干个 Token。今天这篇文章,编程狮就把 Token 的来龙去脉讲清楚:它怎么数、怎么影响你花多少钱、又怎么决定模型能“记住”多长的对话。读完你会算清一次调用到底消耗多少 Token,也能避开“对话突然失忆”的坑。

要真正用明白大模型,不能只看它回答得像不像人,还得知道底层是怎么记账的。Token 是把人类语言切成模型能处理的小块后得到的编号序列,理解了它,你才能控制成本、看懂上下文长度上限,也能判断一个 AI 工具到底贵不贵、稳不稳。下面先把核心结论摆出来,再逐层拆解。

先看结论

Token 是什么?一句话:它是大模型“按块计费、按块记忆”的基本单位。你发的内容、模型回的内容,都先被切成 Token 再计算。三件事一次记牢:算钱看 Token 数乘单价,防截断看上下文窗口上限,控成本就压缩 Prompt。

你关心的点 对应的 Token 概念 一句话结论
一次对话花多少钱 Token 数 × 单价 输入和输出分开计费,输出通常更贵
长文档为什么被截断 上下文窗口上限 总 Token 超过上限,最早的内容会被丢
怎么少花钱 压缩 Prompt 去掉废话、用更短的表达,Token 立刻变少

Token、计费、上下文窗口 三者关系

想把 AI 用进真实开发流程,建议先过一遍 Python3 教程,把调用大模型接口的基础铺平;后面讲到怎么用代码数 Token 会更顺。

一、Token 到底长什么样(直觉解释)

Token 不是字,也不是词,而是模型词表里的“一块”。英文里 "apple" 可能是一个 Token,也可能被拆成 "app" 和 "le" 两个;中文因为词与词之间没有空格,常常按字或词根切,一个“编程”可能是两个 Token。模型并不能直接读你写的汉字,它先把文本交给一个叫分词器(Tokenizer)的程序,切成一串编号,再送进神经网络。

可以把它想成快递打包:你写了一整段话,分词器像打包员,把它拆成大小不一的箱子(Token),每个箱子贴一个编号。模型只认编号,不认原文。所以同样一段意思,用更简洁的写法,箱子就更少,Token 就更省。这也是为什么提示词工程里“说短一点”真的能省钱。

关键提醒:不同模型的词表不一样,切法也不同。同一句话在 GPT 系列和 Claude 系列里,Token 数量可能差出百分之十几。所以别拿一个模型的计数去套另一个模型的账单。

二、大模型怎么“数”Token(核心原理)

模型数 Token 靠的是训练时定好的词表。分词器会把文本从左到右尽量匹配最长的已知片段,每匹配上一段就记一个 Token。规则大致是:常见词整块保留,生僻词、新词、特殊符号会被拆得更碎。比如 “w3cschool” 这种品牌词,很可能被切成 “w”、“3”、“cs”、“chool” 好几块,反而比普通英文单词更费 Token。

下面这段用 Python 的 tiktoken 库数一下 Token,这是 OpenAI 系模型常用的分词器:

import tiktoken

text = "Token 是什么?编程狮用最通俗的话讲清大模型计费。"
enc = tiktoken.get_encoding("cl100k_base")
tokens = enc.encode(text)
print("Token 数:", len(tokens))
print("拆解:", [enc.decode([t]) for t in tokens])

上面三行做了三件事:引入 tiktoken 编码表、把中文句子编码成 Token 列表、分别打印 Token 总数和每个 Token 对应的原文碎片。你跑一下会发现,中文基本是按字附近切的,所以中文的 Token 数往往接近“字数”,而英文一个词常只占一个 Token。想随时查参数,可翻 JavaScript 教程 补前端调用接口的基础。

验证要点:运行后控制台会打印一个整数 Token 数,以及一串被切开的碎片文本;如果提示缺少 tiktoken,用 pip install tiktoken 装上即可,预期能正常输出版本无关的结果。

三、Token 和计费、上下文窗口的关系

这是最影响你钱包和体验的部分。计费上,几乎所有大模型都把一次调用拆成“输入 Token”和“输出 Token”两笔账,输入输出单价不同,输出通常更贵。比如你发 1000 个输入 Token、收到 500 个输出 Token,账单就是 1000×输入价 + 500×输出价,而不是按“一轮对话”一口价。

上下文窗口则是另一道天花板。模型能同时“看见”的 Token 总量有上限,例如 8K、32K、128K 指的是大约几万到十几万 Token。当你和模型聊了很久,累计的输入加输出 Token 逼近这个上限,最早的内容就会被挤出去,表现就是“它忘了你开头说过什么”。所以上下文窗口本质上是一个会滑动的记忆长度。

⚠️ 注意:上下文窗口记的是“输入加输出”的总 Token,不是只算你发的话。长文档问答时,把整篇文档塞进 Prompt 最烧钱也最易超窗,优先用摘要或检索裁剪。

常见计费档位可以这样对照:

调用环节 计量的 Token 省钱建议
你发提问 输入 Token 问题写短、去掉客套话
模型回答 输出 Token 让模型“简要回答”,限制最大长度
历史对话回传 输入 Token 只保留关键上下文,别全量重发

四、常见误解与边界

误解一:“Token 就是字数。” 不对。英文一个词常是一个 Token,中文常按字切,符号和空格也可能单独占 Token,三者数量并不相等。误解二:“上下文窗口越大越贵。” 其实窗口是上限,不用的部分不收费,只是给你更多空间。误解三:“同样的话各家 Token 一样。” 不同分词器切法不同,跨模型比价要看各自计数。

边界上要记住两点:第一,免费额度和单价会随厂商调整,别把某一天的低价当永久;第二,Token 只是计量单位,它不衡量回答质量,Token 花得多不代表答得好。控制成本的核心动作永远是——把 Prompt 写短、把历史剪干净、把输出长度限死。

实操清单:前置、操作、验证与失败处理

为了让上面的计数在你机器上跑通,按这份清单走一遍:

  • 前置(安装/配置):本机已装 Python 3.8 及以上,并且能用 pip install tiktoken 装上分词器库。
  • 操作(命令/运行):把第二节的示例保存为 count_token.py,在终端执行 python count_token.py 查看结果。
  • 验证(检查/预期):预期打印出一个 Token 整数和碎片列表;若报模块找不到,先确认 pip 装到了当前解释器。
  • 失败处理(失败/修复):若中文计数和预期偏差很大,确认用的是对应模型的编码表(如 cl100k_base);切换模型后必须同步换编码表,否则计数失真。

Token 三件该记住的事

总结

Token 是什么?它是大模型按块计费、按块记忆的基本单位,由分词器把文本切成编号序列。Token 数量决定你花多少钱,上下文窗口上限决定模型能记住多长的对话,两者都不是“字数”能直接替代的概念。控制开销记住三件事:算钱看输入加输出分别计价、防截断看上下文窗口总上限、省钱就压缩 Prompt 并限制输出长度。

要点带走:

  • Token 不等于字数,中文常按字切、英文常按词切,跨模型别直接套用计数;
  • 计费分输入和输出两笔账,输出单价通常更高,限长回答最省钱;
  • 上下文窗口是输入加输出的总上限,长对话会“挤掉”开头内容;
  • 控制成本靠写短 Prompt、裁剪历史、限制最大输出,而不是换更贵的模型。

下一步建议把提示词工程和 API 调用补上,理解了计费单位,你才算真正能精打细算地用 AI。

延伸学习

想把这块知识系统补齐,可以按这个顺序来:

  1. 先过一遍 AI 驱动 Python 实战课程,把调用大模型接口的工程基础铺平;
  2. 概念还模糊时,翻 人工智能教程 补全底层认知;
  3. 想深挖一个具体名词,这篇 Tokens 是什么意思 讲得更细,值得延伸阅读。

常见问题

Q:Token 和字数到底差多少?

A:没有固定比例。英文一个词常占 1 个 Token,中文常接近“每字 1 个 Token”,标点、空格、特殊符号也可能单独占块。粗略估算中文时,Token 数 ≈ 字数 × 1.1 比较接近,但跨模型仍需实测。

Q:上下文窗口 128K 是说能写 12 万字吗?

A:不是。128K 指的是约 12.8 万 Token,且是输入加输出的总和,不是只算你的提问。中文按字切,12.8 万 Token 大约对应十万字出头,但一旦输出也计入,留给你的输入空间会相应缩水。

Q:有没有办法少花 Token 又不影响效果?

A:有,而且最划算的三招是:把 Prompt 里的客套话和重复指令删掉;多轮对话只回传关键历史而不是全量;用参数限制最大输出长度。既不改模型,也能把账单明显压下来。

0 人点赞