Лимиты запросов
Понимание лимитов запросов и способов их корректной обработки.
Лимиты запросов
Следующие лимиты применяются на пользователя:
| Лимит | Значение | Область |
|---|---|---|
| Запросов в минуту | 100 | На пользователя |
| Токенов в минуту | 100,000 | На пользователя |
| Запросов в день | 10,000 | На пользователя |
Заголовки лимитов
При превышении лимита (статус 429) ответ включает заголовок Retry-After:
Retry-After: 30
Число указывает секунды ожидания перед повторной попыткой.
Обработка лимитов
Реализуйте логику повторных попыток с экспоненциальной задержкой:
Используйте экспоненциальную задержку
Начните с малой задержки (1 сек), затем удваивайте её при каждой попытке. Проверяйте заголовок Retry-After.
retry-with-backoff.ts
async function retryWithBackoff<T>(
fn: () => Promise<T>,
maxRetries = 3
): Promise<T> {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (error: any) {
if (error.status === 429 && i < maxRetries - 1) {
// Get retry delay from header or use exponential backoff
const retryAfter = error.headers?.get("Retry-After");
const delay = retryAfter
? parseInt(retryAfter) * 1000
: Math.pow(2, i) * 1000;
console.log(`Rate limited. Retrying in ${delay}ms...`);
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
throw error;
}
}
throw new Error("Max retries exceeded");
}
// Usage
const response = await retryWithBackoff(() =>
client.chat.completions.create({
model: "Qwen/Qwen3-235B",
messages: [{ role: "user", content: "Hello!" }]
})
);Лучшие практики
Следуйте этим рекомендациям для избежания превышения лимитов:
- Реализуйте клиентское ограничение — Добавляйте задержки между запросами.
- Группируйте запросы — Объединяйте несколько операций в меньшее число API-вызовов.
- Кешируйте ответы — Сохраняйте и повторно используйте ответы для идентичных запросов.