Модуль 11Урок 4

Урок 4. Отказоустойчивость: что делать, если что-то сломалось

Практика: n8n

Урок 4. Отказоустойчивость: что делать, если что-то сломалось#

Цель: научиться делать агентов, которые продолжают работать даже при сбоях.

Что такое отказоустойчивость#

Отказоустойчивость (fault tolerance) — это способность системы продолжать работать при сбое одного из компонентов.

Пример:

  • API OpenAI недоступен → агент переключается на резервную модель (Claude, Gemini)
  • Google Sheets недоступен → агент сохраняет данные в локальный файл и попробует позже
  • Webhook не сработал → агент повторяет попытку через 5 секунд

Типичные сбои и как их обрабатывать#

1. API вернул ошибку (500, 503, Rate Limit)

Что делать:

  • Retry (повтор): попробовать снова через несколько секунд
  • Exponential Backoff: увеличивать задержку между попытками (1s, 2s, 4s, 8s)
  • Fallback (резервный вариант): переключиться на другой API

Пример (n8n):

  1. Добавьте узел HTTP Request (вызов API)
  2. В настройках узла включите Retry On Fail:
    • Max Tries: 3
    • Wait Between Tries: 2000ms
  3. Если API вернёт ошибку, n8n автоматически попробует ещё 2 раза

2. Внешний сервис недоступен (Google Sheets, Airtable)

Что делать:

  • Queue (очередь): сохранить запрос в очередь и обработать позже
  • Fallback: использовать резервное хранилище (например, сохранить в локальный файл)

Пример:

Если Google Sheets недоступен → агент сохраняет данные в JSON-файл → позже (когда Google Sheets снова доступен) агент читает JSON и загружает данные в таблицу.

3. Агент не понял запрос пользователя

Что делать:

  • Уточнение: попросить пользователя переформулировать
  • Fallback: передать запрос оператору (человеку)

Пример:

Пользователь: «хочу то самое»
Агент: «Я не понял ваш запрос. Уточните, пожалуйста, что именно вы хотите?»

Если пользователь не может уточнить → агент: «Сейчас подключу оператора».

4. Агент превысил лимит API

Что делать:

  • Throttling (ограничение скорости): добавить задержку между запросами
  • Fallback: переключиться на другой API

Пример:

Если OpenAI вернул «Rate limit exceeded» → агент переключается на Claude API.

Как реализовать Retry в n8n#

Шаг 1. Настроить Retry для узла

  1. Откройте узел (например, HTTP Request)
  2. В настройках узла (справа) найдите раздел Settings
  3. Включите Retry On Fail
  4. Настройте:
    • Max Tries: 3 (сколько раз пытаться)
    • Wait Between Tries: 2000ms (задержка между попытками)

Шаг 2. Настроить Error Workflow

  1. Создайте новый workflow с триггером Error Trigger
  2. Добавьте логику обработки ошибок:
    • если ошибка «Rate limit exceeded» → подождать 60 секунд и повторить
    • если ошибка «Service unavailable» → переключиться на резервный API
    • если другая ошибка → отправить уведомление в Telegram

Graceful Degradation (плавная деградация)#

Graceful Degradation — это когда агент продолжает работать, но с ограниченной функциональностью.

Пример:

  • основная функция агента — генерировать персонализированные ответы через OpenAI
  • если OpenAI недоступен → агент отвечает шаблонными ответами из базы знаний
  • пользователь получает ответ (не идеальный, но всё же ответ)

Реализация:

  1. Основная ветка: OpenAI → персонализированный ответ
  2. Fallback-ветка: если OpenAI вернул ошибку → ищем ответ в базе знаний (Google Sheets) → отправляем шаблонный ответ
  3. Последний fallback: если и база знаний недоступна → отправляем: «Извините, сейчас сервис недоступен. Попробуйте позже.»