每次跟 AI 聊天都在花钱?一文搞懂 Tokens 到底是什么

cover

你有没有注意过,ChatGPT、Claude 这些 AI 工具的定价页面上,写的都是”每百万 tokens 多少钱”?

第一次看到这个词的时候,我也懵了。什么是 token?为什么不直接按字数收费?输入 token、输出 token、缓存 token 又是什么鬼?

后来搞明白之后我才意识到:理解 tokens,是理解 AI 定价的钥匙。 不懂 tokens,你就不知道自己的钱花在了哪里,更不知道怎么省钱。

Token 是什么?一个比方就够了

先忘掉所有技术术语。

想象你去一家餐厅点菜。菜单上的价格不是按”一道菜”标的,而是按”食材克数”标的。你点了一份红烧肉,厨房不看”这是一道菜”,而是拆开看——猪肉 200 克、酱油 30 毫升、糖 15 克——然后按食材的总量给你算钱。

Token 就是 AI 世界里的”食材克数”。

你发给 AI 的每一句话,AI 不是”读一句话”,而是先把这句话拆成一个一个的小碎片——这些碎片就叫 token。AI 按 token 的数量来计算工作量和费用。

举个例子:”我想学编程” 这五个汉字,大概会被拆成 3-5 个 token。”I want to learn programming” 这句英文,大概是 5-6 个 token。

一个粗略的换算:

  • 英文:1 个 token ≈ 0.75 个单词(4 个字母左右)
  • 中文:1 个 token ≈ 1-2 个汉字

所以中文用户要注意——同样的意思,中文消耗的 token 数量通常比英文多。

Token 类型详解

为什么 AI 要用 Token,不直接用”字”?

你可能会问:干嘛搞这么复杂,直接按字数收费不好吗?

因为 AI 不认识”字”。

AI 的大脑是一个数学模型,它只能处理数字。所以在处理你的文字之前,必须先把文字转换成数字。这个转换的过程叫做分词(tokenization)

NVIDIA 的技术博客举了一个很直观的例子:英文单词 “darkness” 会被拆成两个 token——“dark”(编号 217)和 “ness”(编号 655)。而 “brightness” 也被拆成 “bright”(编号 491)和 “ness”(编号 655)。

注意到了吗?**”ness” 的编号是一样的。** 这就是 token 的聪明之处——通过共享的编号,AI 学会了 “darkness” 和 “brightness” 之间有某种结构上的关系。如果按整个单词来编号,AI 就发现不了这种规律。

所以 token 不是 AI 故意为难你,而是它理解世界的方式。

三种 Token:输入、输出、缓存

现在你知道 token 是什么了。但在实际使用中,token 还分三种类型,价格各不相同。

输入 Token(Input Tokens)

你发给 AI 的所有内容,都算输入 token。

包括:你打的文字、上传的文件、贴的图片、系统提示词(system prompt),甚至之前的对话历史——全部都要转成 token 喂给 AI。

但这里有一个坑,我一开始也不知道:AI 的 API 是无状态的。 什么意思?就是 AI 其实不记得你之前说了什么。每次你发新消息,系统都会把之前所有的对话历史重新发一遍。

FinOps 基金会管这个叫 “上下文窗口蔓延”(Context Window Creep)——随着对话越来越长,每发一条新消息,重复发送的历史内容就越多,输入 token 像滚雪球一样越来越大。

这就是为什么你聊到后面会觉得越来越贵、速度越来越慢。

输出 Token(Output Tokens)

AI 回复你的内容,就是输出 token。

输出 token 是最贵的——通常是输入 token 价格的 3 到 5 倍

为什么?因为生成回复比理解问题消耗的算力大得多。读一篇文章和写一篇文章,哪个更累?写当然更累。AI 也一样。

看一组真实价格对比(2026 年 3 月数据):

模型 输入价格(每百万 token) 输出价格(每百万 token)
GPT-4o $2.50 $10.00
Claude Sonnet 4.6 $3.00 $15.00
Claude Opus 4.6 $5.00 $25.00

一眼就能看出来——输出永远比输入贵。 所以如果你希望 AI 写一篇 5000 字的长文,那个输出 token 的账单会很可观。

缓存 Token(Cached Tokens)

如果你发送的内容跟上次有大量重复,重复的部分可以走缓存,价格便宜一半甚至更多。

举个例子:你用 AI 写代码,每次都会带上同样的系统提示词(比如”你是一个 Python 专家,代码要简洁”)。这段提示词第一次发送时是普通输入 token,但从第二次开始,AI 发现”这段我刚处理过”,就会自动缓存,按更便宜的价格计费。

以 OpenAI 的定价为例:

  • 普通输入:$2.50 / 百万 token
  • 缓存输入:$1.25 / 百万 token(半价

Anthropic 的缓存更狠——缓存命中的价格只有正常输入的 **10%**。

简单说:用法越固定、重复越多,缓存省得越多。 这对写代码的开发者来说是个好消息——你的系统提示词和项目上下文天然就是高度重复的。

一个真实场景:你跟 AI 聊 10 轮,到底花了多少 token?

说了这么多概念,来算一笔真实的账。

假设你跟 AI 聊天,每轮你说 100 个 token,AI 回复 300 个 token。

轮次 输入 token(含历史) 输出 token 累计输入
第 1 轮 100 300 100
第 2 轮 500 300 600
第 3 轮 1,100 300 1,700
第 5 轮 2,900 300 6,600
第 10 轮 6,700 300 30,900

看到没有?到第 10 轮的时候,单次输入就要 6700 个 token——其中绝大部分是重复发送的历史对话。 累计输入已经超过 3 万 token 了。

这就是”上下文窗口蔓延”的威力。你以为自己只打了 1000 个字,实际上 AI 处理了 3 万多个 token。

省 Token 的实用技巧

明白了 token 的运作方式,省钱就有了方向。我自己踩了不少坑之后,总结出几条最管用的。

话题一换就开新窗口

这是效果最立竿见影的一条。上面那个 10 轮对话的表格已经说明了——对话越长,每轮重复发送的历史越多,token 消耗指数级增长。我以前习惯在一个窗口里从早聊到晚,后来看了一次 API 账单才发现,最后几轮每条消息的 token 消耗是第一轮的几十倍。现在我的习惯是:话题一变就开新对话,绝不留恋。

需求一次说清楚,别挤牙膏

这条也是血泪教训。很多人(包括以前的我)习惯这样跟 AI 聊:

“帮我写个函数”
“用 Python”
“要处理 JSON”
“加上错误处理”

四轮对话,四次重复发送历史。换成一句话:

“用 Python 写一个处理 JSON 的函数,包含完整的错误处理”

一轮搞定,token 消耗立刻降到四分之一。把 AI 当一个刚入职的同事——你交代任务的时候,一次说清楚比让人来回问强。

控制输出长度

输出 token 最贵,这条很多人忽略了。AI 默认会尽量详细地回复,你不限制它就会一直写。所以如果你只需要一个简短的答案,明确告诉它:”用三句话总结”比”帮我总结一下”省钱得多。

其他几条也值得知道

选对模型。 简单的问答、翻译、格式转换,用 GPT-4o-mini 或者 Claude Haiku 就够了,价格只有旗舰模型的几十分之一。我的经验是先用便宜模型试,不满意再换贵的——80% 的日常任务,便宜模型完全能搞定。

别贴无关内容。 你贴给 AI 的每一个字都在消耗 token。只贴相关的部分,把无关内容删掉再发。

用英文提问可以省 30%-50% 的 token。 同样的意思,中文比英文消耗更多 token。当然如果你需要中文回复,省下的输入可能被输出吃掉,具体看情况。

通过 API 调用的话,善用系统提示词缓存。 把不变的提示词放在最前面,更容易命中缓存,享受半价甚至更低的价格。

写在最后

Token 听起来是一个技术概念,但它其实就是 AI 世界的”度量衡”——就像用水按吨计费、用电按度计费一样,用 AI 按 token 计费。

我上个月的 Claude 账单是 87 美元,其中大概有三分之一是”上下文窗口蔓延”贡献的——就是那些重复发送的对话历史。搞清楚这件事之后,我养成了两个习惯:话题一换就开新窗口,需求一次说完不分三条发。光这两个改变,这个月的消耗就降了 40% 左右。

而且省 token 不光省钱,AI 的回复质量也会更好——上下文越干净,它越不容易跑偏。这可能是最划算的”免费升级”了。

你每个月在 AI 工具上花多少钱?有没有注意过自己的 token 消耗?评论区聊聊你的使用习惯。