429 Too Many Requests в Heli бывает по нескольким причинам, и лечатся они по-разному. Повтор после паузы помогает при превышении частоты, но бесполезен, если исчерпан бюджет. Различить случаи можно по полям error.code и error.message в ответе — формат такой же, как у OpenAI.
Какие бывают 429
- code rate_limit_exceeded, «Rate limit reached for requests» — слишком много запросов от аккаунта за короткое время. В ответе есть заголовок Retry-After.
- code rate_limit, «Rate limit reached for this API key» — сработал лимит RPM, который вы задали ключу во вкладке «Лимиты». Тоже с Retry-After.
- code budget, тип insufficient_quota — достигнут лимит расходов на день, неделю или месяц для аккаунта, проекта или ключа. Повторы не помогут: поднимите бюджет во вкладке «Лимиты» или дождитесь нового периода.
- Лимит со стороны модели — у вендора модели закончилась пропускная способность. В сообщении будет его текст; помогает пауза или другая модель.
- «Too many authentication failures» — серия ответов 401. Сначала исправьте ключ.
Повтор с паузой на Python
Официальные SDK OpenAI по умолчанию сами повторяют 429 пару раз с паузой. В примере ретраи SDK выключены, чтобы управлять ими явно. В продакшне ограничьте параллельность очередью или семафором: поток запросов пачками даёт 429 чаще, чем тот же объём, растянутый во времени.
import os, random, time
import openai
from openai import OpenAI
client = OpenAI(base_url="https://getheli.ru/v1",
api_key=os.environ["HELI_API_KEY"], max_retries=0)
def ask(messages, attempts=5):
for i in range(attempts):
try:
return client.chat.completions.create(
model="google/gemini-3.5-flash-lite", messages=messages)
except openai.RateLimitError as e:
if e.code == "budget":
raise # лимит расходов: повтор не поможет
retry_after = e.response.headers.get("retry-after")
delay = float(retry_after) if retry_after else 2 ** i
time.sleep(min(delay, 60) + random.random())
raise RuntimeError("429 после всех попыток")Какие модели выбрать для массовой нагрузки
Для пакетной обработки тысяч коротких текстов лучше подходят лёгкие быстрые модели: запросы завершаются быстрее, и окно лимита освобождается раньше.
Gemini 3.5 Flash Lite — классификация и короткие ответы.
GPT-5.4 nano — простые массовые задачи.
DeepSeek V4 Flash — обработка текстов в очереди.
Как не упираться в лимиты
- Разделите ключи по сервисам и задайте каждому свой RPM во вкладке «Лимиты» — фоновая задача не отнимет лимит у чат-бота.
- Включите письма о расходе бюджета: Heli присылает уведомления на 50, 80, 90 и 100%.
- Проверяйте агентов на зацикливание: агент, повторяющий один и тот же вызов, быстро выбирает и лимит, и бюджет.
- Ошибки 401 и 402 не повторяйте автоматически — это не временные сбои.
Оплата — пополнение баланса.
Попробуйте Heli
Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.