无论是使用ChatGPT、Claude还是国产大模型的API,文档里反复出现的那个词一定是Token。计费按Token算,输入超长报错也是因为Token超限,上下文窗口的大小还是用Token衡量。如果你一直没弄清楚这个词到底指什么,这篇文章会把它彻底讲明白。

Token到底是什么:模型眼中的文字单位
人类读文字是以字、词为单位的,但大模型在底层处理文本时,会把输入的字符串切分成一个个小片段,这些小片段就是Token。切分的工作由一个叫Tokenizer(分词器)的组件完成,模型实际看到和生成的不是字符,而是Token序列。换句话说,Token是模型与世界交换文字的最小货币单位。
一个Token不一定等于一个字。对于英文,一个常见单词通常是1个Token,比如hello就是一个Token;较长或罕见的词会被拆开,比如internationalization可能被切成多个Token。对于中文,由于大多数模型的基础分词器是为英文设计的BPE算法,一个汉字常常被切成1到2个Token,这取决于该汉字在训练语料中出现的频率。常用字如"的""是""了"往往一个字一个Token,而生僻字可能一个字占两三个Token。
举个例子,同样表达"今天天气不错"这个意思,中文原文可能是6到10个Token,英文"Nice weather today"可能是4个Token左右。这就是为什么中文用户调用同一模型时,往往感觉同样的内容花的钱更多——中文的Token化效率普遍低于英文。
为什么按Token计费而不是按字数
模型的计算成本与Token数量直接相关。Transformer架构在处理文本时,每个Token都要参与注意力计算,计算量随Token数线性增长(注意力部分甚至随Token数平方增长)。因此厂商按Token收费,本质上是按实际消耗的计算资源收费,这比按字数或按次数收费更精确。
计费通常分为两部分:输入Token(Prompt)和输出Token(Completion)。输出的单价一般是输入的3到5倍,因为生成内容需要逐Token自回归推理,每生成一个Token都要完整跑一遍模型前向计算。以某主流模型为例,输入每百万Token几美元,输出每百万Token十几美元,这种价格差直接决定了使用策略。
由此可以推出一个实用结论:长提示词不一定是坏事,但如果你的提示词里有大量与任务无关的内容,那就是纯烧钱。压缩提示词、去掉冗余的示例和重复说明,是最直接的降本手段。另外,像"请一步一步思考"这类引导模型输出长篇推理的提示词,也会显著推高输出Token数量,需要在效果和成本之间权衡。
上下文窗口:一次能塞进多少内容
上下文窗口(Context Window)指模型单次请求能处理的最大Token数量,包含输入和输出的总和。早期模型只有4K Token的窗口,现在已经普遍达到128K甚至更高。窗口越大,你能一次性塞进去的文档越长、对话历史越完整,模型"忘事"的情况就越少。
估算时可以粗略记忆几个换算关系:1K Token约等于750个英文单词,中文大约是500到700个汉字;一本十万字的中文小说,大约需要15万到20万Token,已经超出多数模型的窗口。所以在做长文档问答、代码库分析这类任务时,必须配合检索增强(RAG)或分段摘要的方案,而不是把全部内容硬塞进上下文。
还需要注意,上下文窗口大不等于免费。窗口越大,输入Token越多,费用越高,而且很多模型在上下文超过一定长度后,对中间部分内容的召回能力会下降,即所谓的"迷失在中间"现象。把关键信息放在提示词的开头或结尾,往往比堆在中间效果更好。
如何估算和控制Token消耗
最可靠的方法是使用官方提供的分词工具。OpenAI提供了tiktoken库,可以精确计算一段文本的Token数:
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
text = "今天天气不错,适合出去走走。"
tokens = enc.encode(text)
print(len(tokens)) # 输出该段中文的Token数量
# 反向操作:把Token解码回文本
decoded = enc.decode(tokens)
print(decoded)如果是快速估算,中文可以按一个字1.5个Token粗算,英文按一个单词1.3个Token粗算,误差在正负20%以内,对预估费用来说足够用了。
控制成本还有几个常用技巧:一是缓存重复的固定提示词部分,一些API提供商对命中的缓存输入按折扣价计费;二是设置max_tokens参数限制输出长度,防止模型跑飞;三是在多轮对话中及时裁剪历史消息,只保留与当前问题相关的上下文;四是把长文档先做摘要压缩,再把摘要送入模型。这些手段组合使用,通常能把调用成本压缩到原来的一半以下。
理解了Token,你就理解了大模型API计费和长文本处理的基本逻辑。它不是什么玄学概念,只是模型处理文字的方式在商业和工程层面的直接映射。下次看到账单或Token超限报错时,你就知道该从哪里下手优化了。