Claude и OpenAI снова упали: как строить отказоустойчивые LLM-продукты при массовых сбоях API

Я — Денис Шохирев, Enterprise AI architect из Фрайбурга, Германия. В DennisCraft AI Studio я за последние полгода внедрил 14 production AI-агентов для клиентов в DACH (логистика, финтех, индустриальная автоматизация), весь стек — Claude, Supabase, n8n, Doppler, self-hosted Postgres. Неделю назад — 2 часа подряд и OpenAI, и Anthropic были недоступны. Это не первый случай: 2024 год — серия массовых сбоев API для LLM, и каждый раз это прямые простои и SLA-штрафы.

Почему массовые сбои LLM — это новая реальность

Если вы строите AI-проекты под DACH B2B с жесткими SLA, то массовый outage OpenAI/Claude — не теория, а статистика. За последние 6 месяцев я фиксировал в проде 4 крупных сбоя (от 20 до 90 минут), причём они затрагивали и OpenAI, и Anthropic одновременно (см. https://status.openai.com/ и https://status.anthropic.com/). Причины — перегрузка, обновления, DDoS, логистические сбои на стороне провайдеров.

Типовые сценарии отказа

  • OpenAI API (gpt-4o/gpt-4-turbo) отвечает 5XX и timeouts 20+ минут
  • Claude API (claude-3-opus, sonnet) выдаёт degraded performance, иногда silent failures
  • В пиковые моменты — массовый rate limit даже при легитимной нагрузке

В результате — у клиентов падают автоматические отчеты, не формируются счета, ломается автоматизация. Особенно чувствительно для финтеха и логистики, где SLA = деньги.

Архитектурные паттерны для отказоустойчивых LLM-продуктов

1. Multi-vendor fallback (переключение между провайдерами)

Классический паттерн — если основной API недоступен, мгновенно переключаемся на запасной. Но нюансы:

  • Должны совпадать input/output форматы. Claude и OpenAI имеют отличия в system prompt, токенизации, лимитах.
  • Проверять feature parity — поддерживаются ли функции (например, function calling).
  • В реальности оба API могут упасть одновременно.

В моих рабочих пайплайнах fallback реализован через n8n с кастомными блоками на Node.js:


const callClaude = async (input) => {
  // Anthropic SDK
  /* ... */
};
const callOpenAI = async (input) => {
  // OpenAI SDK
  /* ... */
};

let result;
try {
  result = await callClaude(payload);
} catch (e) {
  // Логируем, пробуем OpenAI
  result = await callOpenAI(payload);
}
return result;

2. Queue и повторные попытки через брокер

Вместо синхронных вызовов — ставим задания в очередь (Supabase, RabbitMQ, self-hosted Postgres LISTEN/NOTIFY). Это позволяет:

  • Не терять задачи при кратковременных сбоях
  • Повторять попытки с backoff (например, 1, 5, 15 минут)
  • Сохранять state — если задача не обработалась, можно восстановить

import time
import supabase

def process_task(task):
    try:
        # call LLM API
        pass
    except Exception as e:
        # requeue with delay
        time.sleep(300)
        process_task(task)

3. Кэширование результатов (Result cache)

Реальный кейс: 40% LLM-запросов в моих продуктах — повторяющиеся (одинаковые входные). Построив кэш на Postgres (hash input → output, TTL=7 дней), удаётся снизить нагрузку и уменьшить проблемы при сбоях. Особенно эффективно для задач генерации шаблонных писем, отчетов, FAQ.


CREATE TABLE llm_cache (
  prompt_hash VARCHAR PRIMARY KEY,
  result TEXT,
  created_at TIMESTAMP DEFAULT NOW()
);

SELECT result FROM llm_cache WHERE prompt_hash = $1 AND created_at > NOW() - INTERVAL '7 days';

4. Graceful degradation — подмена на “fallback” сценарии

В проде не все функции критичны. Если LLM недоступен — можно временно подменять генерацию на стандартные шаблоны (“Извините, сервис временно недоступен, повторите позже”), либо переключать часть пайплайна на rule-based обработку. Это лучше, чем полный отказ сервиса.

Валидация и мониторинг — что реально работает

Мониторинг API статусов

Не полагайтесь на ручное отслеживание. Я интегрирую status endpoints (https://status.openai.com/api/v2/status.json и аналог Anthropic) прямо в мониторинг через n8n и оповещения в Slack/Telegram.


const fetch = require('node-fetch');
const url = "https://status.openai.com/api/v2/status.json";

async function checkStatus() {
  const res = await fetch(url);
  const data = await res.json();
  if (data.status.indicator !== 'none') {
    // send alert
  }
}

Анализ логов ошибок

Логируйте ВСЕ ошибки и таймауты с деталями: endpoint, payload, время. Для поиска корневых причин используйте semgrep и bandit для анализа инцидентов (например, массовые 5XX из-за неправильной сериализации payload).

Реальный SLA и коммуникация с клиентом

Транслируйте клиенту реальный SLA: “LLM-компоненты могут быть недоступны 0.5–2% времени в месяц”. Не обещайте 100% uptime — иначе получите штрафы за force majeur чужого API.

ПаттернПлюсыМинусы
Multi-vendor fallbackМгновенное переключениеТребует дублирования логики, не всегда совпадает parity
Queue + retryСохраняет задачи, снижает потериУвеличивает latency, требует очереди
КэшированиеСнижает нагрузку, ускоряет ответыНе всегда применимо для custom задач
Graceful degradationСервис не падает полностьюФункционал ограничен

FAQ

Что делать, если и OpenAI, и Claude недоступны одновременно?

Готовьте “graceful degradation” — переключение на шаблоны, rule-based обработку, информирование пользователя о задержке. В критичных местах — временно отключайте автоматизацию.

Можно ли self-hosted LLM (Llama, Mistral) считать отказоустойчивым решением?

Частично. Для узкоспециализированных задач — да. Но для сложных генераций (код, документы) self-hosted LLM пока уступают по качеству (см. Stanford HELM 2024).

Как интегрировать мониторинг статусов API?

Используйте готовые endpoints статуса провайдера, интегрируйте в n8n или любой alerting-стек. Автоматизация критична — ручной мониторинг не работает.

Какую очередь использовать для ретраев?

В small-mid проектах Supabase или Postgres, в high-load — RabbitMQ, Redis Streams. Принцип: очередь должна быть доступна вне LLM API.

Что говорить клиенту о рисках?

Открыто: массовые outage — не баг вашей системы, а реальность облачных LLM. В договоре фиксируйте SLA на уровне 98–99%, не выше.

В вашей прод-архитектуре где чаще всего возникают сбои — на уровне API, очереди, кэша или бизнес-логики? Интересно услышать реальные кейсы. Я делаю бесплатный аудит архитектуры для DACH-команд, кто строит AI под строгие регуляции. Пишите в LinkedIn или @ger_dennis_ai.

Read more

Computer-Use-Agenten scheitern an Pixeln: wie Sie auf stabile UI-Referenzen über Accessibility Trees umstellen und fehleranfällige Desktop-Automatisierung nicht mehr ständig reparieren

von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau Ich bin Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, Germany, und bei DennisCraft AI Studio setze ich produktive KI-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst betriebenem Postgres um. Die teuersten Fehler in

By Denis Shokhirev

Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая дорогая поломка в desktop automation, которую я вижу у клиентов, почти никогда не связана с моделью: агент

By Denis Shokhirev