token 用量核算是什么
token 用量核算指把一次请求拆成系统提示、少样本示例、检索内容、对话历史、输出预留几段,逐段统计 token 数,再与预算上限对照。它回答的是「钱和上下文被谁吃掉了」:同一个功能上线后费用缓慢上涨,通常不是模型涨价,而是示例与检索片段悄悄变长。核算对象是渲染完成、真正发送给模型的最终文本,不是仓库里的模板文件。
基本信息
| 适用平台 | 按 token 计费的推理 API(OpenAI、Anthropic、通义、Kimi 等)与自建推理服务 |
|---|---|
| 计量工具 | OpenAI 系可用 tiktoken 估算;其他厂商分词表不同,应以官方 tokenizer 或响应中的 usage 字段为准 |
| 计量口径 | input 与 output 分开计费,输出单价通常高于输入 |
| 权限要求 | 读取接口响应里的 usage 字段即可,无需额外权限 |
典型使用场景
- 新功能上线前估算单次调用成本与月度预算,用于决定模型档位
- 排查「费用上涨但没人改提示」:逐段对比历史占比,定位膨胀段
- 制定截断策略:超预算时明确先裁示例还是先裁检索片段
- 多轮对话产品决定历史压缩方式与保留轮数
- 按业务线或租户分摊调用成本,做内部结算
预算表模板(单请求估算)
预算表模板(单请求估算)
# 逐段登记;每段都要有上限与裁剪策略
系统提示 320 token # 角色、约束、输出契约
few-shot 示例 900 token # 条数一旦增加即线性增长,先定条数上限
检索内容 1600 token # 按相关度截断,保留来源标记
对话历史 600 token # 超出后改滚动摘要
输出预留 400 token # 预留不足则回答被截断
合计约 3820 token
预算上限 4000 token;示例或检索超限时先裁剪该段各段位核算口径
| 段位 | 核算口径 | 超标处理 |
|---|---|---|
| 系统提示 | 固定成本,换提示才变 | 精简措辞;约束类条款不删 |
| 少样本示例 | 条数 × 单条长度 | 先减条数,再压单条长度 |
| 检索内容 | top_k × 单片段长度 | 降 top_k、缩短片段、去重 |
| 对话历史 | 轮数 × 平均长度 | 滚动摘要,仅保留最近若干轮原文 |
| 输出预留 | 与输入独立计费 | 按最长合法输出设定,不挪用 |
估算工具只用于事前规划,接口返回的 usage 才是真实计量。上线后按会话做一次对账,若估算与实测持续偏差大,说明模板渲染或裁剪逻辑与设想不一致。
多轮会话的成本按累计上下文计算:第 N 轮的输入包含前面所有轮的累积内容,所以「单轮均价 × 轮数」会明显低估总成本,对账要按会话汇总而不是按请求平均。