> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# 速率限制

> 了解并处理速率限制

## 概述

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

## 速率限制层级

| 层级          | 请求数/分钟 | 描述        |
| ----------- | ------ | --------- |
| **User**    | 1,000  | 所有账户的默认层级 |
| **Partner** | 10,000 | 适用于集成合作伙伴 |
| **VIP**     | 10,000 | 适用于高吞吐量用户 |

<Note>
  速率限制可能会发生变化。如需自定义限制，请联系 [support@tokenlab.sh](mailto:support@tokenlab.sh)。
</Note>

## 速率限制响应

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

## 超出速率限制

当你超出限制时，你将收到一个 `429` 响应：

```json theme={null}
{
  "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
```

## 处理速率限制

### 指数退避

为自动重试实现指数退避：

```python theme={null}
import time
from openai import OpenAI, RateLimitError

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.tokenlab.sh/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)
```

### 请求排队

对于高吞吐量应用，请实现请求队列：

```python theme={null}
import asyncio
from collections import deque

class RateLimitedClient:
    def __init__(self, requests_per_minute=1000):
        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
        )
```

### 批处理

对于批量操作，请分批处理并添加延迟：

```python theme={null}
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
```

## 最佳实践

<AccordionGroup>
  <Accordion title="监控你的使用情况">
    跟踪速率限制 header，以便主动保持在限制范围内。
  </Accordion>

  <Accordion title="实现缓存">
    为相同请求缓存响应，以减少 API 调用。
  </Accordion>

  <Accordion title="使用合适的模型">
    更快的模型（如 gpt-5-mini）可支持更高的吞吐量。
  </Accordion>

  <Accordion title="联系我们以获取更高限制">
    如果你需要更高的限制，请联系 [support@tokenlab.sh](mailto:support@tokenlab.sh)。
  </Accordion>
</AccordionGroup>

## 升级你的层级

要申请升级层级：

1. 登录你的 [Dashboard](https://tokenlab.sh/dashboard)
2. 前往 **Settings → Account**
3. 联系支持团队并说明你的使用场景

或者发送邮件至 [support@tokenlab.sh](mailto:support@tokenlab.sh)，并提供：

* 你的账户邮箱
* 预期请求量
* 使用场景描述
