Skip to content

レート制限

TriggerfishはLLMプロバイダーのAPIの制限に達するのを防ぐスライディングウィンドウレートリミッターを 備えています。任意のプロバイダーを透過的にラップします — エージェントループはレート制限を知る必要が ありません。容量が枯渇すると、ウィンドウが十分にスライドして容量を解放するまで呼び出しが自動的に遅延します。

仕組み

レートリミッターはスライディングウィンドウ(デフォルト60秒)を使用して2つのメトリクスを追跡します:

  • トークン毎分(TPM) — ウィンドウ内で消費された合計トークン(プロンプト + 補完)
  • リクエスト毎分(RPM) — ウィンドウ内の合計API呼び出し

各LLM呼び出しの前に、リミッターは両方の制限に対して利用可能な容量を確認します。どちらかが枯渇した場合、 最古のエントリがウィンドウからスライドして十分な容量が解放されるまで呼び出しを待ちます。各呼び出しが 完了した後、実際のトークン使用量が記録されます。

ストリーミングと非ストリーミングの両方の呼び出しは同じ予算から消費します。ストリーミング呼び出しの場合、 ストリームが終了したときにトークン使用量が記録されます。

レートリミッターフロー:エージェントループ → レートリミッター → 容量確認 → プロバイダーに転送または待機

OpenAIの階層制限

レートリミッターはOpenAIの公開された階層制限のビルトインデフォルトを持ちます:

階層GPT-4o TPMGPT-4o RPMo1 TPMo1 RPM
Free30,00050030,000500
Tier 130,00050030,000500
Tier 2450,0005,000100,0001,000
Tier 3800,0005,000100,0001,000
Tier 42,000,00010,000200,00010,000
Tier 530,000,00010,000200,00010,000

これらはOpenAIの公開された制限に基づくデフォルトです。実際の制限はOpenAIアカウントの

階層と使用履歴によって異なります。他のプロバイダー(Anthropic、Google)はサーバー側で独自のレート制限を 管理します — リミッターはクライアント側のスロットリングが429エラーを防ぐOpenAIに最も有用です。 :::

設定

ラップされたプロバイダーを使用する場合、レート制限は自動的です。デフォルト動作にはユーザー設定は不要です。 リミッターはプロバイダーを検出して適切な制限を適用します。

上級ユーザーはtriggerfish.yamlのプロバイダー設定を通じて制限をカスタマイズできます:

yaml
models:
  providers:
    openai:
      model: gpt-4o
      rate_limit:
        tpm: 450000 # トークン毎分
        rpm: 5000 # リクエスト毎分
        window_ms: 60000 # ウィンドウサイズ(デフォルト60秒)

レート制限は429エラーと予期しない請求からあなたを守ります。フェイルオーバーチェーンと

連携して機能します — レート制限に達してリミッターが待機できない場合(タイムアウト)、フェイルオーバーが 開始して次のプロバイダーを試みます。 :::

使用量の監視

レートリミッターは現在の使用量のライブスナップショットを公開します:

{tokensUsed, requestsUsed, tpmLimit, rpmLimit, windowMs}

CLIとTide Poolのコンテキストプログレスバーはコンテキスト使用量を表示します。レート制限ステータスは デバッグログで確認できます:

[DEBUG] [provider] Rate limiter: 12,450/30,000 TPM, 8/500 RPM (window: 60s)

リミッターが呼び出しを遅延させると、待機時間をログに記録します:

[INFO] [provider] Rate limited: waiting 4.2s for TPM capacity

チャンネルレート制限

LLMプロバイダーのレート制限に加えて、Triggerfishはメッセージングプラットフォームへのフラッディングを 防ぐためにチャンネルごとのメッセージレート制限を強制します。各チャンネルアダプターはアウトバウンド メッセージの頻度を追跡し、制限に近づいたときに送信を遅延させます。

これは以下から保護します:

  • 過剰なメッセージ量によるプラットフォームAPIのバン
  • 暴走したエージェントループによる偶発的なスパム
  • Webhookによるメッセージストーム

チャンネルレート制限はチャンネルルーターによって透過的に強制されます。エージェントがチャンネルが 許可するよりも速く出力を生成した場合、メッセージはキューに入れられて最大許可レートで配信されます。

関連項目