問題の説明
OpenClaw の使用中、複数のユーザーが同時にメッセージを送信したり、メッセージ量が多い場合に、ログに以下のようなエラーが表示されることがあります。
[openclaw:gateway] Error calling model API: 429 Too Many Requests
[openclaw:gateway] Rate limit exceeded. Retry after 20 seconds.
[openclaw:gateway] Headers: x-ratelimit-remaining-requests: 0, x-ratelimit-reset-requests: 20s
ユーザー側では、ボットの応答遅延が著しく増加したり、エラーメッセージが表示されたりします。
ボットの応答:サービスが一時的に混雑しています。しばらくしてからお試しください。
429 エラーは、API リクエストがモデルプロバイダーのレート制限を超えたことを意味します。AI モデルプロバイダーごとに異なる制限ポリシーが設定されており、通常は1分あたりのリクエスト数(RPM)、1分あたりの Token 数(TPM)、および1日あたりの総呼び出し量が含まれます。
各プロバイダーの制限基準
一般的な制限(無料/低ティアの例):
| プロバイダー | RPM | TPM | 日次制限 |
|---|---|---|---|
| OpenAI (Tier 1) | 500 | 30,000 | なし |
| Anthropic (Build) | 50 | 40,000 | なし |
| Google Gemini (Free) | 15 | 32,000 | 1,500 |
実際の制限はアカウントのティアと使用するモデルによって異なります。
診断手順
OpenClaw のレート制限統計を確認します。
openclaw stats rate-limit
出力例:
Provider Model RPM Used RPM Limit Status
openai gpt-4o 45/60 60 ⚠️ Warning
anthropic claude-sonnet 12/50 50 ✓ OK
詳細な API ログを有効にしてリクエスト頻度を追跡します。
DEBUG=openclaw:api* openclaw start
直近1時間のリクエストログを確認します。
openclaw logs --filter "api" --since 1h
解決策
方法1:組み込みレートリミッターの有効化
OpenClaw にはレートリミッターが組み込まれており、リクエスト送信前に積極的に頻度を制御して、プロバイダーの制限を回避できます。
{
"api": {
"rateLimiter": {
"enabled": true,
"strategy": "sliding-window",
"limits": {
"openai": {
"requestsPerMinute": 50,
"tokensPerMinute": 25000
},
"anthropic": {
"requestsPerMinute": 40,
"tokensPerMinute": 35000
}
}
}
}
}
制限値はプロバイダーの実際の上限の80%に設定し、余裕を持たせることをお勧めします。
方法2:自動リトライとバックオフの設定
429 エラーが発生した場合に、OpenClaw が自動的に待機してリトライするよう設定します。
{
"api": {
"retry": {
"enabled": true,
"maxRetries": 3,
"backoff": {
"type": "exponential",
"initialDelay": 5000,
"maxDelay": 60000,
"factor": 2
},
"retryOn": [429, 500, 502, 503]
}
}
}
この設定により、429 レスポンスを受け取った場合、OpenClaw は5秒後に1回目のリトライ、10秒後に2回目、20秒後に3回目のリトライを行います。
方法3:ユーザーレベルのレート制限設定
各ユーザーのメッセージ送信頻度を制限し、API 呼び出しをソースから削減します。
{
"users": {
"rateLimit": {
"messagesPerMinute": 10,
"cooldownMessage": "メッセージの送信頻度が高すぎます。{remaining}秒後にお試しください。"
}
}
}
方法4:複数 API キーのローテーション
複数の API キーをローテーションで使用して、利用可能なクォータを倍増させます。
{
"providers": {
"openai": {
"apiKeys": [
"sk-key-1-xxxxx",
"sk-key-2-xxxxx",
"sk-key-3-xxxxx"
],
"keyRotation": "round-robin"
}
}
}
OpenClaw は2つのローテーション戦略をサポートしています。
round-robin:順番に各キーを使用least-used:現在の使用量が最も少ないキーを優先使用
いずれかのキーで 429 エラーが発生した場合、OpenClaw は自動的にそのキーをスキップして次の利用可能なキーを使用します。
方法5:モデルフォールバックの設定
メインモデルがレート制限を受けた場合に、代替モデルに自動的にフォールバックします。
{
"models": {
"default": {
"provider": "openai",
"model": "gpt-4o",
"fallback": [
{
"provider": "anthropic",
"model": "claude-sonnet-4-20250514"
},
{
"provider": "openai",
"model": "gpt-4o-mini"
}
]
}
}
}
gpt-4o が 429 エラーを返した場合、OpenClaw は自動的にフォールバックリストの次のモデルでリクエストを処理します。
方法6:リクエストキューの設定
同時リクエストをキューに入れ、順次処理することで、瞬間的なリクエスト数の急増を防ぎます。
{
"api": {
"queue": {
"enabled": true,
"concurrency": 3,
"maxQueueSize": 100,
"timeout": 120000
}
}
}
concurrency は同時に行う API リクエストの数を制御し、超過したリクエストはキューで待機します。
モニタリングの推奨事項
ダッシュボードやアラートを設定して API の使用状況を監視します。
# リアルタイムのAPI使用統計を確認
openclaw stats api --watch
# 使用レポートのエクスポート
openclaw stats api --export csv --period 7d > api-usage.csv
定期的に API 使用レポートを確認することで、クォータの適切な計画や API アカウントティアのアップグレードタイミングの判断に役立ちます。