初級管理者

プロバイダーごとに複数のキー:重み付き分散、スティッキーな紐付け、待機キーの引き継ぎ

ひとつのアップストリームに複数の API キーを紐付けます。重み付き分散、呼び出し元ごとのスティッキーな紐付け、weight=0 の待機キーを最後の砦として、429 で待たされることがなくなります。

コミュニティが実際に不満を言っていること

Reddit の人気トピック:「OpenAI のキー 1 つでは RPM が足りない。複数アカウントでローテーションするには」「キーが 429 に達して業務が待たされる」「キーを切り替えるとセッションのキャッシュ親和性が失われる」。

自前でローテーションを実装すると、粘着性、重み、待機、障害時の除外を自分で扱う必要があり、相応のエンジニアリング工数がかかります。

GateLLM の実現方法

GateLLM のアップストリーム設定は複数の API キーを受け付けます。決定論的な重み付きハッシュ(FNV-1a)が各呼び出し元を同じアップストリームキーに固定し(TTL 内で安定。キーをその場でローテーションしても粘着性は壊れません)、重みが分散比率を決めます。キーが失敗すると、ゲートウェイはそのアップストリーム内の未試行の次のキーでリトライし、元のスティッキーな紐付けを上書きしません。

weight=0 のキーは待機系で、weight>0 のすべてのキーが失敗した後にのみ有効になります。紐付け状態(binding / predicted / stale)はコンソールで行単位に確認できます。

この仕組みはロードバランサーと直交して積み重なります。Smooth WRR がエントリ間でアップストリームを選び、次にスティッキー選択がその中のキーを選びます。

実際に効果が出る 5 つのレバー

  • 重み付きマルチキー:決定論的な重み付きハッシュが呼び出し元を分散し、重みは比率
  • スティッキーな紐付け:各呼び出し元は TTL 内で同じアップストリームキーに固定され、キャッシュ親和性を保つ
  • 待機キー:weight=0 のキーは通常の分散から外れ、すべての有効なキーが失敗した後にのみ有効化
  • 可視化された紐付け:binding / predicted / stale の状態を行単位で表示し、3 秒ごとに自動更新
  • LB と直交:アップストリーム内のキー選択と、アップストリーム間の Smooth WRR が 2 層として積み重なる
詳細リファレンス:アップストリームとモデルのフィールド(docs)

FAQ