メインコンテンツへスキップ

概要

LemonDataは、公平な利用とプラットフォームの安定性を確保するためにレート制限を導入しています。制限はアカウントのティアによって異なります。

レート制限ティア

ティアリクエスト/分説明
User60すべてのアカウントのデフォルトティア
Partner300統合パートナー向け
VIP1,000大量のリクエストを行うユーザー
レート制限は変更される場合があります。カスタム制限については [email protected] までお問い合わせください。

レート制限ヘッダー

すべての API レスポンスには、レート制限に関する情報が含まれています。
X-RateLimit-Limit: 60          # Your limit per minute
X-RateLimit-Remaining: 55      # Requests remaining
X-RateLimit-Reset: 1234567890  # Unix timestamp when limit resets

レート制限の超過

制限を超えると、429 レスポンスが返されます。
{
  "error": {
    "message": "Rate limit exceeded. Please slow down.",
    "type": "rate_limit_exceeded"
  }
}
追加のヘッダー:
Retry-After: 60  # Seconds to wait before retrying

レート制限への対応

指数バックオフ

自動再試行のために指数バックオフを実装します。
import time
from openai import OpenAI, RateLimitError

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.lemondata.cc/v1"
)

def make_request_with_backoff(messages, max_retries=5):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model="gpt-4o",
                messages=messages
            )
        except RateLimitError as e:
            if attempt == max_retries - 1:
                raise

            wait_time = 2 ** attempt  # 1, 2, 4, 8, 16 seconds
            print(f"Rate limited. Waiting {wait_time}s...")
            time.sleep(wait_time)

リクエストキューイング

大量のリクエストを処理するアプリケーションの場合は、リクエストキューを実装してください。
import asyncio
from collections import deque

class RateLimitedClient:
    def __init__(self, requests_per_minute=60):
        self.rpm = requests_per_minute
        self.interval = 60 / requests_per_minute
        self.last_request = 0

    async def request(self, messages):
        # Wait if needed to respect rate limit
        now = asyncio.get_event_loop().time()
        wait_time = max(0, self.last_request + self.interval - now)
        if wait_time > 0:
            await asyncio.sleep(wait_time)

        self.last_request = asyncio.get_event_loop().time()
        return await self.client.chat.completions.create(
            model="gpt-4o",
            messages=messages
        )

バッチ処理

一括操作の場合は、遅延を挟みながらバッチ処理を行います。
def process_batch(items, batch_size=50, delay=1):
    results = []
    for i in range(0, len(items), batch_size):
        batch = items[i:i + batch_size]
        for item in batch:
            result = client.chat.completions.create(
                model="gpt-4o",
                messages=[{"role": "user", "content": item}]
            )
            results.append(result)
        time.sleep(delay)  # Pause between batches
    return results

ベストプラクティス

レート制限ヘッダーを追跡し、プロアクティブに制限内に収まるようにします。
同一のリクエストに対するレスポンスをキャッシュし、API 呼び出し回数を削減します。
より高速なモデル(gpt-4o-mini など)を使用することで、スループットを向上させることができます。
より高い制限が必要な場合は、[email protected] までご連絡ください。

ティアのアップグレード

ティアのアップグレードをリクエストするには:
  1. ダッシュボードにログインします
  2. Settings → Account に移動します
  3. ユースケースを添えてサポートに連絡します
または、以下の内容を [email protected] までメールでお送りください:
  • アカウントのメールアドレス
  • 予想されるリクエスト量
  • ユースケースの説明