首页 / 文章 / Token 成本控制:怎么算钱、怎么省

Token 成本控制:怎么算钱、怎么省

把 usage 字段换算成美元,用 claude-sonnet-5 与 glm-5.3-flash 的真实倍率算一遍账,再从输入和输出两侧给出能直接落地的省钱做法。

一次请求的钱怎么算

计费只有两个乘数:输入 token 和输出 token,单位都是每百万 token 的美元价。定价页给的是 model_ratio,输入价 = model_ratio × 2 × 分组倍率,输出价 = 输入价 × completion_ratio。

claude-sonnet-5 的 model_ratio 是 1.5,completion_ratio 是 5。倍率 1 时输入 3 美元、输出 15 美元每百万 token。放进 Claude Max 分组(倍率 0.85),实付是输入 2.55 美元、输出 12.75 美元。同一条请求换个分组就是另一个价格,模型页和定价页都会标出可用分组。

常用型号可以先列成一张表,单位是美元每百万 token:

模型分组输入输出
claude-sonnet-5Claude Max(0.85)2.5512.75
claude-opus-5Claude Max(0.85)4.2521.25
glm-5.3-flash稳定国模(0.2)0.160.56
gemini-3.8-flashGemini Antigravity(0.65)0.9754.875

表里输入价最高和最低差了二十多倍,选型的第一步就是判断这个差距能不能用效果补回来。

用 usage 字段对账

账本在响应的 usage 里,不在你的字符数估算里。prompt_tokens 包含系统提示、历史消息、工具定义;completion_tokens 是模型写出来的部分。流式请求的用量在收尾的数据块里,有些实现要显式传 stream_options 才会带 usage。

下面这段把每次调用的花费算成美元,价格表按分组填:

python
PRICES = {
    "claude-sonnet-5":  {"in": 2.55, "out": 12.75},   # Claude Max 分组
    "glm-5.3-flash":    {"in": 0.16, "out": 0.56},    # 稳定国模分组
    "gemini-3.8-flash": {"in": 0.975, "out": 4.875},  # Gemini Antigravity 分组
}

def cost(model: str, usage: dict) -> float:
    p = PRICES[model]
    return (
        usage["prompt_tokens"] * p["in"]
        + usage["completion_tokens"] * p["out"]
    ) / 1_000_000

# 一次 claude-sonnet-5 调用:8000 输入 + 1200 输出
print(round(cost("claude-sonnet-5", {"prompt_tokens": 8000, "completion_tokens": 1200}), 6))
# 0.0357

八千输入加一千二输出是 0.0357 美元。一天一千次同样的调用,账单 35.7 美元。

输入侧:先删再省

输入单价低,但量最大。三个动作最有效:

  • 历史只带最近 N 轮,早期内容压成一句摘要。
  • 工具定义只挂当前任务用得到的,二十个函数的 schema 经常比用户问题还长。
  • 固定内容放最前面且不加时间戳,前缀稳定才能吃到缓存。

以 glm-5.3-flash 为例,稳定国模分组输入 0.16 美元每百万 token。一次塞 5 万 token 的文档是 0.008 美元,一天 2000 次就是 16 美元;把文档裁到 3000 token,同样的调用量降到 0.96 美元。

输出侧:把长度写死

max_tokens 是预算开关,不是建议值。不设它,模型会在该停的地方继续写。

  • 要数据就让它输出 JSON,字段化能砍掉大半解释性文字。
  • 分类、抽取这类批量任务交给便宜模型,贵的模型只处理疑难样本。
  • 长文先要提纲,确认结构再展开,比整篇重写便宜。
  • 把"请详细说明"换成"给出三条,每条不超过 20 字",输出能少一半。
  • 输出价普遍是输入价的几倍。claude-opus-5 的 completion_ratio 是 5,同样一百万 token,输出比输入贵五倍。

按业务算单位成本

总成本除以业务量,才知道贵不贵。一封客服邮件平均 1200 输入、400 输出:用 glm-5.3-flash 是 0.0004 美元,用 claude-sonnet-5(Claude Max 分组)是 0.0082 美元。一天一万封,前者 4 美元,后者 82 美元。

算出单位成本,再决定哪些环节必须用贵模型。分类、打标签、抽取字段这类任务,便宜型号的准确率通常够用;需要长链条推理的环节才值得上高价型号。预算按月倒推:日预算除以单次成本,就是每天能跑的次数,超过这个数就得排队、降级或者换模型。

把成本做成一个数

给请求封装加一层:每次调用记一条日志,字段包括模型、分组、prompt_tokens、completion_tokens 和算出来的 cost。跑一周,成本会集中在少数几个调用点上,优化那几处就够。

价格表从 定价页 抄,别写死在业务代码里;模型清单见 模型总览,claude-sonnet-5 的上下文长度和输出上限见 模型页,更多核算思路在 文章列表。

把 cost() 挂进请求封装,超过日预算直接抛异常。等到月底对账,钱已经花完了。

用 二五云API 跑通这些模型

OpenAI 兼容接口,一个 Key 调用 GPT、Claude、Gemini、DeepSeek、Kimi 等模型,按量计费。

免费注册查看模型价格

相关文章