Лимиты запросов
Лимиты запросов OfoxAI обеспечивают стабильность платформы. Ознакомьтесь с правилами ограничений и оптимизируйте стратегию вызовов.
Лимиты по умолчанию
OfoxAI работает по модели оплаты за использование, все пользователи имеют единую политику лимитов:
| Параметр | Лимит |
|---|---|
| RPM (запросов/мин) | 100 (на уровне команды) |
| TPM (токенов/мин) | Без ограничений |
Агрегация на уровне команды: RPM рассчитывается суммарно по всей организации (команде). Несколько API Key одной команды разделяют общую квоту, что предотвращает обход лимитов вышестоящих провайдеров за счёт накопления Key. Если вам необходима более высокая квота RPM, свяжитесь с [email protected] для её корректировки.
Rate Limit Header
Каждый ответ API содержит информацию о лимитах:
x-ratelimit-limit-requests: 100
x-ratelimit-remaining-requests: 95
x-ratelimit-reset-requests: 12s| Заголовок | Описание |
|---|---|
x-ratelimit-limit-requests | Значение лимита RPM |
x-ratelimit-remaining-requests | Оставшееся количество запросов |
x-ratelimit-reset-requests | Время сброса лимита запросов |
Обработка ошибки 429
При срабатывании ограничения API возвращает 429 Too Many Requests:
from openai import RateLimitError
import time
try:
response = client.chat.completions.create(...)
except RateLimitError as e:
retry_after = float(e.response.headers.get("retry-after", 1))
print(f"Сработал лимит, ожидание {retry_after}s...")
time.sleep(retry_after)Стратегии оптимизации
1. Использование Prompt Caching
Для повторяющихся системных промптов включение кэширования помогает снизить потребление токенов:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
# Длинные системные промпты кэшируются автоматически
{"role": "system", "content": "Вы — профессиональный... (длинный текст опущен)"},
{"role": "user", "content": "Вопрос пользователя"}
]
)Подробности см. в разделе Кэширование промптов.
2. Пакетная обработка
Объединяйте несколько коротких запросов в один:
# ❌ Не рекомендуется: отдельный запрос для каждого вопроса
for question in questions:
client.chat.completions.create(messages=[{"role": "user", "content": question}])
# ✅ Рекомендуется: объединить в один запрос
combined = "\n".join(f"{i+1}. {q}" for i, q in enumerate(questions))
client.chat.completions.create(
messages=[{"role": "user", "content": f"Пожалуйста, ответьте на следующие вопросы по порядку:\n{combined}"}]
)3. Выбор подходящей модели
Рекомендуемые модели см. в Маркетплейсе моделей .
4. Управление max_tokens
Устанавливайте разумные ограничения max_tokens, чтобы избежать ненужного расхода токенов:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Резюмируйте одним предложением"}],
max_tokens=100 # Ограничение длины вывода
)5. Использование аварийного переключения моделей
Автоматическое переключение на резервную модель при достижении лимита основной:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[...],
extra_body={
"provider": {
"fallback": ["anthropic/claude-sonnet-4.6", "google/gemini-3.1-flash-lite-preview"]
}
}
)Подробности см. в разделе Аварийное переключение.