这类问题我又碰上了一次。项目跑了两周,累计消费刚过 100 美元,TPM 还是初始档位,文档说达标会自动升级,控制台里 tier 一直显示免费档,高峰照样 429。
第一反应是「组织下有多个项目时按组织汇总计算,单个项目花再多也不算」,验证下来不成立。
原因不止一个,得分开看。升级看的是过去若干天的累计消费与付款记录,不是账户余额;首次付款之后有等待期,等待期内额度不会调整;账户被风控标记时升级会暂停,界面上不会有任何提示。
拉近 30 天消费总额核对是否达标
curl -s "https://api.openai.com/v1/organization/costs?start_time=$(date -d '-30 day' +%s)&bucket_width=1d" -H "Authorization: Bearer $ADMIN_KEY" | jq '[.data[].results[].amount.value]|add'
接着读响应头确认当前档位的 TPM 上限
curl -s -D - -o /dev/null https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"hi"}]}' | grep -i 'x-ratelimit-limit-tokens'
随后查近 7 天账单里有没有未结清的记录
curl -s "https://api.openai.com/v1/organization/costs?start_time=$(date -d '-7 day' +%s)" -H "Authorization: Bearer $ADMIN_KEY" | jq '.data|length'
末了按当前档位压测确认余量是否够用
hey -z 30s -c 4 -m POST -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"hi"}]}' https://api.openai.com/v1/chat/completions
恢复的判定其实很直接。响应头里的 TPM 上限提升到下一档数值,同样并发压测不再出现 429,用量页面的 tier 标识与响应头口径一致。
容易忽略的是,升级是账期驱动的,不是充值驱动,钱到了额度也不会立刻变,做上线计划时把这段等待期算进去,比临时提工单靠谱。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
