AI API 空回复扣费和失败请求扣费怎么检测?

可以通过读取 New API / One API 的 raw quota,在请求前、请求后 3 秒、请求后 10 秒分别记录原始额度,再对比失败请求或空回复是否导致最终额度减少。

1. 什么是预扣费?

部分 AI API 中转站会在请求开始时先按模型、上下文、max_tokens 或本地估算 token 预扣额度。请求结束后,再根据真实 usage 结算并返还差额。

2. 什么是 raw quota?

raw quota 是后台记录的原始额度,通常比前台余额显示更细。前台余额可能只显示两位小数,而 raw quota 可以观察到更小的额度变化。

3. 为什么前台余额看不出来?

一次失败请求可能只变化 $0.0001 级别,前台显示 $0.25 可能完全看不出变化。raw quota 可以避免只靠页面余额判断。

Chrome 插件可以自动读取 New API / One API 的 raw quota,网页版则需要手动填写。

4. 失败请求扣费怎么判断?

如果满足以下条件,则属于失败请求扣费异常信号:

  • HTTP 状态码 ≥ 400,或上游返回 503 / 502 / 504 / timeout
  • 没有有效输出(completion_tokens = 0 或缺失)
  • 10 秒后 raw quota 减少

这种情况属于失败请求扣费异常信号。

5. 空回复扣费怎么判断?

如果满足以下条件,则属于空回复扣费异常信号:

  • HTTP 状态码为 200
  • 可见输出为空(visible output 为空)
  • completion_tokens = 0 或缺失
  • 没有 tool call / image / audio / search 等有效产物
  • 10 秒后 raw quota 减少

这种情况属于空回复扣费异常信号。

6. 为什么要等 10 秒?

一些站点会先预扣额度,随后再返还。等待 10 秒可以区分"临时预扣"和"最终扣费"。如果 10 秒后 raw quota 恢复,则更可能是预扣已返还。

部分站点结算时间可能更长。如果 10 秒后额度仍未完全恢复,建议等待更长时间后再记录最终 raw quota。

7. 如何解读 AI API Doctor 的报告?

AI API Doctor 报告有五种结果:

✓ 正常
失败请求未扣费
请求失败,但 10 秒后原始额度未减少。
✓ 正常
预扣已返还
请求后曾预扣额度,但 10 秒内已返还。
⚠ 风险
无法读取原始余额
raw quota 不可用,报告只能作为风险参考。
✕ 异常
失败请求扣费异常
请求失败且无有效输出,但 10 秒后 raw quota 减少。
✕ 异常
空回复扣费异常
请求无有效输出,但 10 秒后 raw quota 减少。

8. 插件版和网页版有什么区别?

插件版:自动读取 raw quota,适合桌面端精确检测。需要安装 Chrome 插件。

网页版:不需要输入 API Key,适合手动生成报告、手机分享和客服沟通。手动填写 raw quota 数据即可生成报告。

9. 站长侧修复建议

失败请求、无效模型、上游 503、超时、无可用通道等无有效产物请求不应最终扣费。如果已预扣,应在最终结算阶段返还。

以下是一个参考实现逻辑:

if (completion_tokens == 0 && visible_output == "" && !has_tool_call && !has_image && !has_audio && !has_search) { // This request produced no valid output actual_quota = 0 refund_precharge() log("empty_response_no_charge") }

10. 安全边界

AI API Doctor 只展示本次测试中的可复现信号,不证明服务商故意多扣费。报告更适合用于排查、客服沟通和站长修复。

如有疑问,建议:

  • 使用短 prompt 测试,减少单次测试金额
  • 记录多次测试报告,对比结果一致性
  • 联系站长或客服核对后台数据
  • 对比服务商官方账单

现在开始检测