模型经济学
Token 计费:AI API 的账本设计与预算控制
设计可解释的 Token 计费系统,处理 credits、预留、退款、重试和每日对账。
token based billing方案比较US编辑简报更新 2026-08-27

你将学会
- Name the billing unit and keep immutable ledger entries.
- Use reservation and settlement for long or streaming requests.
- Make every debit traceable and idempotent.
开始前需要
- Basic HTTP and API knowledge
Leave with a concrete implementation checklist and a testable starting point.
先看结论
- 明确计费单位并使用不可变账本。
- 长请求采用预留与结算。
- 扣费必须可追溯且幂等。
先定义单位
明确按输入、输出、缓存、生成次数还是货币钱包计费,并在产品文案与 API 响应中使用同一名称。
用不可变账本记录发放、预留、扣减、退款和调整。
预留、结算、释放
长请求或流式请求先预留上限,再按实际用量结算并释放余额;安全失败时补偿预留。
支付 webhook 与用量扣减都要使用幂等键,避免重试重复收费。
让争议可回答
每次扣费保存模型、端点、Token、费率快照、请求 ID 和账本条目,客服才能从账单追到响应。
每天对账支付、用量和供应商发票,并告警重复或未关联事件。
如何选择
| 比较维度 | 方案 A | 方案 B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
实施步骤
- 1
选择客户看到的单位。
- 2
实现预留和结算。
- 3
加入幂等与 trace ID。
- 4
每日对账。
可复制示例
ts
await ledger.reserve({ requestId, maxTokens });
const usage = await providerResult.usage;
await ledger.settle({ requestId, inputTokens: usage.input_tokens, outputTokens: usage.output_tokens });常见问题
可以在响应前扣费吗?
可以先预留,但应按实际用量结算,并释放未使用余额。
资料来源
- Ahrefs Keywords Explorer来源核查 2026-08-27
- EasyAI pricing reference来源核查 2026-08-27