Ошибка 429: что делать, если doubao-seed-1-8-251228 не отвечает

Код 429 означает, что сработало ограничение скорости: число запросов или токенов за единицу времени превысило квоту вашего тарифа.

429 Too Many Requests — это ответ об ограничении скорости, а не ошибка. Сам запрос корректен, но превышена допустимая скорость или параллельность для вашего тарифа. Достаточно повторить запрос с задержкой в пределах окна из заголовков ответа; менять тело запроса не нужно.

doubao-seed-1-8-251228 предоставляется компанией Volcengine Ark. Всё на этой странице — причины, решения и измеренные данные — собрано по реальной работе этой модели на уровне шлюза.

В этом шлюзе самая частая причина — Слишком много параллельных запросов. Рекомендуемое первое действие: Ограничьте параллельность и добавьте экспоненциальную задержку.

Возможные причины

  • Слишком много параллельных запросов
  • Квота текущего тарифа исчерпана
  • Повтор без задержки после отказа

Как исправить

  • Ограничьте параллельность и добавьте экспоненциальную задержку
  • Переключитесь на тариф с большей квотой
  • Кэшируйте повторяющиеся запросы

Повтор с экспоненциальной задержкой

Ниже — пример повтора, когда doubao-seed-1-8-251228 возвращает 429: до 5 попыток, ожидание растёт и добавляется случайный джиттер, чтобы параллельные запросы не повторялись одновременно. Base URL и API key читаются из переменных окружения — не хардкодьте их.

import os, time, random
import requests

BASE  = os.getenv("OPENAI_BASE_URL")   # e.g. https://<your-gateway>/v1
KEY   = os.getenv("OPENAI_API_KEY")
MODEL = 'doubao-seed-1-8-251228'


def chat(messages, retries=5):
    """Retry with exponential backoff + jitter."""
    for i in range(retries):
        try:
            r = requests.post(
                BASE + "/chat/completions",
                headers={"Authorization": "Bearer " + KEY},
                json={"model": MODEL, "messages": messages, "stream": True},
                timeout=60,
            )
            if r.status_code == 429 or r.status_code >= 500:
                time.sleep(min(2 ** i + random.uniform(0, 1), 30))
                continue
            r.raise_for_status()
            return r.json()
        except requests.exceptions.Timeout:
            time.sleep(min(2 ** i + random.uniform(0, 1), 30))
    raise RuntimeError("gave up after " + str(retries) + " retries")


print(chat([{"role": "user", "content": "hello"}]))

Ключевые данные этой модели

API-эндпоинтhttps://api.airai.cc/v1
Совместимо с OpenAIOpenAI-compatible
ПроизводительVolcengine Ark
Контекст256K
ВозможностиReasoning, Tools, Files, Vision
Форматы APIopenai, openai-response, openai-response-compact, anthropic, gemini, openai-alpha-search
Формула биллингаp * 0.109589 + cr * 0.0219178 + c * 1.09589) : len <= 128000 ? tier("32k_128k", p * 0.164384 + cr * 0.0219178 + c * 2.19178) : tier("128k_plus", p * 0.328767 + cr * 0.0219178 + c * 3.28767

Частые вопросы

В тесте всё хорошо, а в проде 429 — в чём может быть разница?

Сгруппируйте ошибки по времени и узлу: закономерность обычно видна сразу. Модель предоставляется Volcengine Ark, поэтому статус upstream определяется объявлениями вендора. Логируйте идентификатор запроса при каждом отказе — он полезнее кода состояния. Сначала воспроизведите это в тестовом окружении с тем же телом запроса.

Связан ли 429 с тарификацией doubao-seed-1-8-251228?

Списания не будет: в استخدام идёт только реально сгенерированный вывод. Тарификация: p * 0.109589 + cr * 0.0219178 + c * 1.09589) : len <= 128000 ? tier("32k_128k", p * 0.164384 + cr * 0.0219178 + c * 2.19178) : tier("128k_plus", p * 0.328767 + cr * 0.0219178 + c * 3.28767, поэтому без вывода нет списания. Цена ввода — около $0.11 за миллион токенов. Оценивая стоимость по p * 0.109589 + cr * 0.0219178 + c * 1.09589) : len <= 128000 ? tier("32k_128k", p * 0.164384 + cr * 0.0219178 + c * 2.19178) : tier("128k_plus", p * 0.328767 + cr * 0.0219178 + c * 3.28767, учитывайте и бюджет на повторы.

Сколько попыток повтора считать разумным?

Повтор — самый эффективный первый шаг. При тарифе p * 0.109589 + cr * 0.0219178 + c * 1.09589) : len <= 128000 ? tier("32k_128k", p * 0.164384 + cr * 0.0219178 + c * 2.19178) : tier("128k_plus", p * 0.328767 + cr * 0.0219178 + c * 3.28767 неудачные запросы не идут в использование. Установите лимит повторов 3–5 и добавьте jitter. Для повторяемых ошибок используйте экспоненциальную задержку, для остальных возвращайте ошибку сразу.

Стоит ли при 429 переключаться на резервную модель?

Имейте наготове резервную модель. Резерв на уровне архитектуры надёжнее, чем латать каждую ошибку по отдельности. У этой модели от Volcengine Ark несколько upstream-узлов, между которыми шлюз может переключаться. Держите наготове более лёгкую резервную модель, и основной поток не прервётся.

Другие ошибки этой модели

Другие модели с той же ошибкой

Данные обновлены: 2026-10-11 13:20

Техническая поддержкаОнлайн-поддержка
Наверх