在线工具

上下文与 token 换算器

token 数 ↔ 中文字数/英文单词 ↔ 调用成本换算。

8,000
≈ 中文字符数
6,154
≈ 英文单词数
0.016000
本次调用成本(元)

换算为近似值,精确以各厂商 tokenizer 为准

估算说明:本工具的结果完全由你填入的参数按固定系数算出,属于数量级参考,不是精确计量。 不同模型的 tokenizer 切分方式不同,同一段文字换算出的 token 数会有出入; 具体的上下文窗口大小,请以你所用模型的官方规格为准,本页不提供任何模型的窗口数值。

先说怎么用

这个工具做的是一件很小但很常用的事:token 数 ↔ 中文字符数 / 英文单词数 ↔ 调用成本的单项换算。 你在左边填一个 token 数,右边填「每百万 token 多少钱」的单价,下面三格就分别给出近似的中文字符数、 近似的英文单词数,以及这么多 token 按你填的单价折算下来是多少钱。换算系数是固定的: 中文字符按 1 个 token 约 1 个字符估,英文单词按 token 数除以 1.3 估,成本按 token 数除以一百万再乘单价算。

不会替你判断有没有超窗口,也不会自动帮你把各部分加起来。这不是偷懒——上下文预算这道题, 真正难的从来不是除法,而是你有没有把该算的都算进去。所以正确的用法是:把下面说的每一块分别换算一遍, 自己列个清单加起来,再拿总数去对照你所用模型的官方窗口规格。

一次调用的上下文,到底由哪几部分组成

很多人对「上下文」的印象就是「我这次发过去的那段话」,这是把窗口占用严重低估的根源。实际送进模型的, 至少有五块:

一、系统提示词。角色设定、语气要求、输出格式约束、禁止事项……这块是每一次请求都要重发一遍的固定开销。 它不会因为对话进行到第二十轮就消失,反而常常是团队里越写越长、没人敢删的那部分。先把它单独换算一次, 你大概率会被这个数字吓一跳。

二、工具定义(function calling schema)。如果你的应用挂了工具,每个工具的名称、描述、参数结构、 参数说明都要作为文本一起发过去。挂十几个工具、每个都写了详细描述,这一块吃掉的额度可能比系统提示词还多, 而它在你的代码里通常是散落在各处的配置,最容易被漏算。

三、对话历史。多轮对话里,之前每一轮的用户提问和模型回复默认都要重新带上,否则模型就失忆了。 这块是随轮次线性增长的,也是唯一一个「你什么都不做它也会自己变大」的部分。 单轮问答场景可以忽略,聊天类应用里它迟早会变成占比最大的一块。

四、本次输入。用户这一轮真正说的话,加上你塞进去的检索结果、文档片段、数据表、代码文件。 做 RAG 或文档问答的话,这里往往才是大头——召回十段各两千字的资料,一次就是好几万 token 的量级。

五、输出预留。这一块最常被漏掉,后果也最直接。绝大多数模型的窗口是输入和输出共用一个额度, 不是输入一个、输出另给一个。很多人只算输入,算完发现「刚好塞满,太完美了」,结果模型没有地方生成了—— 表现出来就是回答写到一半断掉,或者请求直接被拒。所以务必先估这个任务最长要写多少字, 换算成 token 从总额里先扣掉,剩下的才是你能用来装输入的预算。

装不下的时候,四条路怎么排序

加完发现超了,别急着换更大窗口的模型。按「改动成本从低到高、效果从确定到不确定」排,应该是这个顺序:

第一条,压缩固定开销。先动系统提示词和工具定义——它们是每次请求都重发的,省一次就是省全部。 把啰嗦的角色描写删掉、把重复的格式说明合并、把当前场景用不到的工具从 schema 里摘掉。 这条路改动最小、见效最快,而且不损失任何有效信息。

第二条,管理对话历史。不要无脑全量拼接。常见做法是只保留最近 N 轮原文,更早的内容做摘要压缩成一小段; 或者按「重要信息提取到结构化状态里」的思路,把历史换成一份不断更新的要点清单。 这条路稍微费点工程,但它治的是那个唯一会自己膨胀的部分,长期收益最大。

第三条,缩减单次输入。该做检索就做检索,别把整份文档一股脑塞进去;召回结果做重排后只取真正相关的几段; 长文档改成分段处理再汇总。这条路要动数据链路,但它换来的是每次调用都更便宜、更快、更准。

第四条,才是换更大窗口的模型。把它放最后,是因为它解决不了根因,只是把撞墙的时间推后, 而代价是每次调用都按更多的 token 计费。前三条都做过了还是不够,才轮到它——那时候你至少知道钱花在了刀刃上。

延伸阅读

关于超限时的成本代价和排查思路,可以看 上下文超限的成本与应对; 对话历史怎么设计才不至于越滚越大,可以看 应用侧的对话历史管理。 这两篇分别对应上面第一段和第二条路,建议连起来读。

常见问题

token 与中文字数怎么换算?

本工具按「1 个 token ≈ 1 个中文字符」「1 个 token ≈ 1/1.3 个英文单词」这组近似系数换算,也就是说填入 8000 token,大致对应 8000 个中文字符或约 6154 个英文单词。不同模型的 tokenizer 切分方式不同,同样一段中文,有的模型算下来会比 1:1 多、有的会少,所以这里给出的是数量级参考。要拿精确数字,请以你所调用模型 API 返回的 usage 字段为准。

上下文窗口与 token 有什么关系?

上下文窗口(context window)是模型单次能处理的最大 token 数,输入和输出都要从这一个额度里扣。超出窗口的内容会被截断或直接报错。本工具可帮助你把字数换算成 token 数,再和你所用模型的官方规格对照,判断是否会超限。注意:本工具不内置任何模型的窗口大小,具体数值请查该模型的官方文档。

这个工具会自动帮我算出上下文有没有超吗?

不会,它只做单项换算:你填一个 token 数,它给出对应的中文字符数、英文单词数和按单价折算的成本。上下文预算需要你自己做加法——把系统提示词、工具定义、对话历史、单次输入分别换算一遍再相加,最后加上给输出预留的额度,得到的总数才是你实际要占用的窗口。这样反而更清楚,因为你能看到到底是哪一块把窗口撑爆了。

为什么要给输出单独预留 token?

因为绝大多数模型的上下文窗口是输入和输出共用的。如果你把输入塞到刚好等于窗口上限,模型就没有位置生成回答了,表现出来往往是回复只写了一两句就戛然而止,或者请求直接被拒。稳妥的做法是先估计这个任务最长要写多少字,换算成 token 后从窗口里先扣掉,剩下的才是留给输入的预算。写长文、出长报告、大段改写代码这类任务,输出预留要留得比你直觉的更多。

成本那一栏的单价该怎么填?

单价的口径是「每百万 token 多少钱」,成本 = token 数 ÷ 1000000 × 单价。要注意真实计费里输入和输出通常是两个不同的单价,本工具一次只算一种,所以想算一次完整调用的花费,需要分两次填:先按输入 token 数配输入单价算一遍,再按输出 token 数配输出单价算一遍,两个结果相加。具体单价请以你所用服务商当前的官方价格表为准。

一个 Key,接入所有主流模型

力达云聚合 API 内测开放中:统一接口调多家模型、按量计费、稳定合规接入。

申请内测

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。