这个坑值得记一笔。账号里还有 3 美元额度,调免费模型 meta-llama/llama-3.1-8b-instruct:free 时偶发 402,原文 Insufficient credits,付费模型反而正常,日志里同一分钟内既有 200 也有 402。
刚开始盯着「并发高于免费档限制,多余请求直接拒绝」,折腾了半个多小时,排掉了。
排查方向其实有限,先把可能性排一排。免费模型有单独的每日请求上限,超出后按 402 返回;请求被路由到了付费端点,slug 少了 :free 后缀;账号有未支付的欠款,所有调用被临时冻结。
第一件事是查当前 key 的额度和限流状态
curl -s https://openrouter.ai/api/v1/key -H "Authorization: Bearer $OPENROUTER_KEY" | jq '.data | {limit,usage,limit_remaining}'
随后确认 slug 是否带 free 后缀
python -c "print(open('cfg.py').read().split('model=')[1][:60])"
接着把并发从 10 降到 2 再压测一轮
python bench.py --concurrency 2 --rounds 20 --model meta-llama/llama-3.1-8b-instruct:free
末了对 402 单独做降级,不再原样重试
python fallback.py --on-402 switch_model --fallback openai/gpt-4o-mini
改完先别撤,确认这几项。免费模型连续二十次请求全部 200,key 接口里 limit_remaining 与实际扣费一致,日志里没有 402。
免费额度是独立计数,和账号余额不是一回事,看账单页正常并不代表免费档没超。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
