Langsung ke konten utama

Ringkasan

LemonData menerapkan batas rate untuk memastikan penggunaan yang adil dan stabilitas platform. Batas bervariasi berdasarkan tier akun.

Tier Batas Rate

TierRequests/minDeskripsi
User1,000Tier default untuk semua akun
Partner3,000Untuk partner integrasi
VIP10,000Pengguna dengan volume tinggi
Batas rate dapat berubah. Hubungi [email protected] untuk batas kustom.

Respons Batas Rate

Ketika Anda melampaui batas rate, API mengembalikan status code 429 dengan header Retry-After yang menunjukkan berapa lama harus menunggu sebelum mencoba lagi.

Batas Rate Terlampaui

Ketika Anda melampaui batas, Anda akan menerima respons 429:
{
  "error": {
    "message": "Rate limit exceeded. Please retry later.",
    "type": "rate_limit_exceeded",
    "code": "rate_limit_exceeded"
  }
}
Respons menyertakan header Retry-After:
Retry-After: 60  # Seconds to wait before retrying

Menangani Batas Rate

Exponential Backoff

Terapkan exponential backoff untuk percobaan ulang otomatis:
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)

Antrean Request

Untuk aplikasi dengan volume tinggi, terapkan antrean request:
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
        )

Pemrosesan Batch

Untuk operasi massal, proses dalam batch dengan jeda:
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

Praktik Terbaik

Lacak header batas rate untuk tetap berada di bawah batas secara proaktif.
Cache respons untuk request yang identik guna mengurangi panggilan API.
Model yang lebih cepat (seperti gpt-5-mini) memungkinkan throughput yang lebih tinggi.
Jika Anda memerlukan batas yang lebih tinggi, hubungi [email protected].

Meningkatkan Tier Anda

Untuk mengajukan peningkatan tier:
  1. Masuk ke Dashboard Anda
  2. Buka Settings → Account
  3. Hubungi support dengan use case Anda
Atau kirim email ke [email protected] dengan:
  • Email akun Anda
  • Perkiraan volume request
  • Deskripsi use case