メインコンテンツまでスキップ

レート制限

Shisa サービスは、​プラットフォームを​すべての​人に​とって​高速かつ​公平に​保つために、​レート制限と​クォータを​適用します。​本ガイドでは、​制限に​達した​ときに​何が​起こるか、​そして​それを​適切に​処理する​方​法を​説明します。

制限と​クォータ

リクエストには​ 2 種類の​スロットリングが​適用されます。

  • レート制限は、​特定の​時間枠内で​送信できる​リクエスト数​(およびスループット)に​上限を​設けます。
  • クォータは​利用​可能な​残高です — 新規アカウントは​ $10 分の​無料クレジットから​始まり、​プレミアムプランでは​有料残高と​より​高い​制限が​追加されます。

アカウントに​適用される​正確な​制限は​プランに​よって​異なります。​現在の​制限と​使用状況は​ Shisa プラットフォーム で​確認してください。​より​高い​制限が​必要な​場合は、​プランを​アップグレードするか、​プラットフォームから​営業に​お問い​合わせください。

注記

レート制限は、https://api.shisa.ai ホストを​共有する​すべての​サービスに​わたって、​アカウントごとに​適用されます。​LLM、​ASR、​TTS、​翻訳の​トラフィックが​同時に​バースト的に​発生すると、​同じ​アカウントレベルの​予算を​消費します。

制限を​超えた​とき

レート制限を​超えると、​API は​ HTTP ステータス 429(rate limit exceeded)で​応答します。429 を​処理する​正しい​方​法は、​リクエストを​すぐに​再送信するのではなく、待ってから​リトライすることです。​すぐに​再送信すると​負荷を​増やすだけです。

指数バックオフを​使用してください。​短い​遅延を​待ち、​その​後リトライの​たびに​遅延を​ 2 倍にし、​最大試行回数まで​繰り返します。​少し​ランダムな​ジッターを​加える​ことで、​多くの​クライアントが​足並みを​そろえて​リトライするのを​避けられます。

Python

import time
import random
import requests

def post_with_backoff(url, headers, json, max_retries=5):
delay = 1.0 # seconds
for attempt in range(max_retries):
response = requests.post(url, headers=headers, json=json)
if response.status_code != 429:
return response
# Rate limited — back off before retrying
sleep_for = delay + random.uniform(0, 0.5)
time.sleep(sleep_for)
delay *= 2
raise RuntimeError("Rate limit not cleared after retries")

JavaScript

async function postWithBackoff(url, options, maxRetries = 5) {
let delay = 1000; // milliseconds
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, { ...options, method: 'POST' });
if (response.status !== 429) {
return response;
}
// Rate limited — back off before retrying
const jitter = Math.random() * 500;
await new Promise((resolve) => setTimeout(resolve, delay + jitter));
delay *= 2;
}
throw new Error('Rate limit not cleared after retries');
}
ヒント

バック​オフを​クライアントに​一度​組み込み、​すべての​ Shisa 呼び出しで​再利用してください。Shisa LLM で​ OpenAI SDK を​使用している​場合、​それらは​すでに​ 429 レスポンスを​バックオフ付きで​自動的に​リトライします。

制限に​達する​頻度を​減らす

  • 多数の​小さな​リクエストを​タイトな​ループで​送信する​代わりに、可能な​限りバッチ処理してください
  • リクエスト間で​変化しない​レスポンスをキャッシュしてください
  • バック​グラウンドジョブをずらして、​すべてが​同じ​瞬間に​発火しないように​してください。
  • プラットフォーム使用状況を​監視し、​ローンチの​最中ではなく、​その前に​より​高い​制限を​リクエストしてください。

次の​ステップ

  • エラー — ステータスコードと​ JSON エラーの​形の​完全な​リスト。
  • 認証 — キー、​クレジット、​サービスごとの​ヘッダー。