token 估算 上下文与记忆
别名:
estimateTokens
在调用前估计一段文本会占多少 token 的启发式近似:英文大致 4 个字符 1 token、中文大致 1 个字 1~2 token。它和 API 的 `usage` 实测值通常只有几个百分点的差距——估算用于调用前做决策(要不要压缩),实测用于调用后记账校准。
它是什么
token 估算是在调用前估计一段文本会占多少 token 的启发式近似:英文大致 4 个字符 1 token、中文大致 1 个字 1~2 token(取中间值 1.5),结果向上取整。它和 API 响应里的 usage 实测值通常只有几个百分点的差距——这正好是它的定位:估算用于在调用前做决策(要不要压缩),实测用于调用后记账校准。生产系统两种都用:决策时估算,事后拿 usage 对账、把估算系数调到更准。
为什么不用精确 tokenizer
tiktoken 这类精确 tokenizer 很准,但它是个依赖、还要下载词表。大多数时候你只需要一个够做预算决策的近似值——一行正则、零依赖,浏览器沙箱里也能跑。精确计数的场景(计费、严格限额)再上 tiktoken 不迟。
决策链路上的位置
估算在上下文管理流水线的最前端(第 09 章):preflight 估算 → 超预算才截断 / 滑动窗口 → 仍超阈值才触发摘要——「便宜的先跑贵的后跑」的顺序里,最便宜的永远是不触发贵的那一步。注意估算的是「字符数换算」的近似值,token 的实际切分还受编码与模型影响(英文里一个词通常 1~2 token,空格常与词首合并)。