跳转到主要内容

概述

LemonData 实施速率限制以确保公平使用和平台稳定性。限制会因账户层级而异。

速率限制层级

层级请求数/分钟描述
User1,000所有账户的默认层级
Partner3,000适用于集成合作伙伴
VIP10,000适用于高吞吐量用户
速率限制可能会发生变化。如需自定义限制,请联系 [email protected]

速率限制响应

当你超出速率限制时,API 会返回 429 状态码,并附带一个 Retry-After header,用于指示在重试前需要等待多长时间。

超出速率限制

当你超出限制时,你将收到一个 429 响应:
{
  "error": {
    "message": "Rate limit exceeded. Please retry later.",
    "type": "rate_limit_exceeded",
    "code": "rate_limit_exceeded"
  }
}
响应中包含一个 Retry-After header:
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

最佳实践

跟踪速率限制 header,以便主动保持在限制范围内。
为相同请求缓存响应,以减少 API 调用。
更快的模型(如 gpt-5-mini)可支持更高的吞吐量。
如果你需要更高的限制,请联系 [email protected]

升级你的层级

要申请升级层级:
  1. 登录你的 Dashboard
  2. 前往 Settings → Account
  3. 联系支持团队并说明你的使用场景
或者发送邮件至 [email protected],并提供:
  • 你的账户邮箱
  • 预期请求量
  • 使用场景描述