開発解説
LLM APIのrate limitで詰まる前に|RPM・TPM・同時数を別々に見積もる

目次
結論
RPMだけでなくinput/output TPM、concurrency、burst、retryを実trafficから変換し、provider/accountのcurrent limitへ照合します。
このテーマでは、サービス名や流行語から先に結論を出すより、何を決める記事なのかを固定してから必要な事実を集める方が安全です。価格、plan、API、policy、求人、地域など変わる情報には観測日を付け、性能や収益のように環境依存の数字は自分のraw dataと分離します。
まず作るもの:実トラフィックをRPM/TPM/concurrencyへ変換する表
traffic → quota conversion
| Window | Requests | Avg input tokens | Avg output tokens | Peak concurrency | RPM | ITPM/TPM | OTPM | 429/retry |
|---|---|---|---|---|---|---|---|---|
| normal | log | log | log | log | calc | calc | calc | log |
| burst | log | log | log | log | calc | calc | calc | log |
provider/accountのdashboard limitへ照合する。
この表で重要なのは、空欄を埋めることではありません。一次情報で確認できない条件、まだ測っていない値、契約前にしか分からない条件は未確認のまま残すことです。空欄は次の問い合わせ・PoC・measurementの入口になります。
なぜ単純な「おすすめ順」で決めないのか
API比較ではmodel名より、課金単位、limit、data control、feature semantics、deprecationをcurrent docsで固定します。同じ『streaming』『structured output』『cache』でもproviderごとに条件が違います。
性能・品質はproviderの説明と自分のmeasurementを分けます。TTFT、WER、retrieval quality、schema errorのようなworkload依存値は実際の観測結果なしに比較表へ入れません。
本番設計ではcostとcapacityを同時に見ます。単価が安くてもrate limit、retry、batch window、cache invalidationがworkloadに合わなければ総原価が上がります。
そのため、候補を並べる順番は「有名」「安い」「新しい」ではなく、必須条件を満たすか→未確認riskは何か→総費用/運用負荷が見合うか、の順にします。
比較するときに最初に見る3項目
1. RPM
RPM はproviderのcurrent仕様とworkload依存の観測値を分離します。billing/limit/featureは公式docs、latency・quality・error率はraw observationsがある場合だけ数値化します。
2. TPM
TPM はproviderのcurrent仕様とworkload依存の観測値を分離します。billing/limit/featureは公式docs、latency・quality・error率はraw observationsがある場合だけ数値化します。
3. concurrency
concurrency はproviderのcurrent仕様とworkload依存の観測値を分離します。billing/limit/featureは公式docs、latency・quality・error率はraw observationsがある場合だけ数値化します。
4・5番目の軸も同じ証拠形式でそろえる
残る burst / upgrade も判断表へ同じ粒度で入れます。候補Aだけ細かく調べ、候補Bはmarketing pageの要約だけ、という比較は避けます。条件が揃わないセルは「不明」とし、その不明点が判断を左右するなら公開結論を弱めるか確認を待ちます。
実務での進め方
- この記事で決めたいことを1文にする。
LLM API rate limit 対策で読者が最後に何を選ぶ・止めるのかを明確にします。 - 必須条件を先に固定する。 価格を見る前にsecurity、権利、地域、latency、運用責任者など外せない条件を決めます。
- 公式一次情報で変わり得る 項目を埋める。 plan、fee、limit、feature、policyはスクリーンショットや転載記事ではなくcurrent公式sourceへ戻ります。
- workload依存値は自分のdataへ分離する。 実測が必要な項目は検証 protocolを先に作り、結果がない段階では空欄にします。
- 除外条件を適用する。 必須条件を満たさない候補を先に外し、残った候補だけでTCOや工数を比べます。
- 確認日時を残す。 後日refreshするときに、何が変わったかを差分で確認できるようにします。
選ばない・進めない条件
公開された一般limitを自分のaccount quotaとして本番capacityに使いません。
「買わない」「契約しない」「公開しない」「本番化しない」という条件を持つと、比較記事が単なる紹介記事になりにくくなります。選択肢を増やすより、危険な前提を落とすことの方が読者の意思決定には有効です。
参考にした一次情報
- OpenAI Platform — Rate limits
- Anthropic — Rate limits
- Google AI — Gemini API docs
- OpenAI — API Pricing
- Google AI — Gemini API Pricing
まとめ
RPMだけでなくinput/output TPM、concurrency、burst、retryを実trafficから変換し、provider/accountのcurrent limitへ照合します。
条件が変わりやすい領域ほど、結論そのものより再判定できる表を残すことに価値があります。次回更新では、判断表の変わったセルだけを公式sourceまたは実際の観測結果で更新し、同じ判断基準でもう一度判定してください。
まとめ
- RPMだけでなくinput/output TPM、concurrency、burst、retryを実trafficから変換し、provider/accountのcurrent limitへ照合します。 条件が変わりやすい領域ほど、結論そのものより**再判定できる表**を残すことに価値があります。次回更新では、判断表の変わったセルだけを公式sourceまたは実際の観測結果で更新し、同じ判断基準でもう一度判定してください。