Token Cost

成本核算

输入和输出 token 单价不同,要算清才能控制账单。

详解

Token Cost(成本核算)是指 LLM API 按输入和输出 token 分别计费,且两者单价不同——输出 token 通常比输入贵 3–5 倍。以 claude-sonnet-4-6 为例,普通输入约 $3/百万 token,输出约 $15/百万 token;5 分钟缓存写入约 $3.75/百万,缓存命中读取约 $0.30/百万,1 小时缓存写入约 $6/百万。这个差价意味着:让模型"多说"的成本远高于"多读"。实际项目中成本失控的常见原因:对话历史无限积累导致每次输入 token 暴增;System Prompt 过长却未启用缓存;未设置 max_tokens 上限导致模型漫无边际地输出。核算成本的正确姿势:从 API 响应的 usage 字段中读取 input_tokens 和 output_tokens,乘以对应单价,并按功能模块聚合。

一个类比
就像发快递:寄件重量(输入)和尺寸(输出)分别计费,大件包裹(长回复)费用贵得多。你问快递员一句话(短输入),他写了两页说明(长输出),账单就是按他写的页数收的,不是按你问的字数。所以精确的问题加上明确的字数限制,才是控制快递费的关键。
举个例子
import anthropic

client = anthropic.Anthropic()

# 单价(美元 / 百万 token),按 claude-sonnet-4-6 定价
INPUT_PRICE_PER_M  = 3.00
OUTPUT_PRICE_PER_M = 15.00

resp = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=256,
    messages=[{"role": "user", "content": "用一句话解释什么是强化学习"}]
)

in_tok  = resp.usage.input_tokens
out_tok = resp.usage.output_tokens
cost    = (in_tok * INPUT_PRICE_PER_M + out_tok * OUTPUT_PRICE_PER_M) / 1_000_000

print(f"输入: {in_tok} tokens,输出: {out_tok} tokens")
print(f"本次费用: ${cost:.6f}")
PYTHON 示例
相关概念