Урок 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):
- Добавьте узел HTTP Request (вызов API)
- В настройках узла включите Retry On Fail:
- Max Tries: 3
- Wait Between Tries: 2000ms
- Если 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 для узла
- Откройте узел (например, HTTP Request)
- В настройках узла (справа) найдите раздел Settings
- Включите Retry On Fail
- Настройте:
- Max Tries: 3 (сколько раз пытаться)
- Wait Between Tries: 2000ms (задержка между попытками)
Шаг 2. Настроить Error Workflow
- Создайте новый workflow с триггером Error Trigger
- Добавьте логику обработки ошибок:
- если ошибка «Rate limit exceeded» → подождать 60 секунд и повторить
- если ошибка «Service unavailable» → переключиться на резервный API
- если другая ошибка → отправить уведомление в Telegram
Graceful Degradation (плавная деградация)#
Graceful Degradation — это когда агент продолжает работать, но с ограниченной функциональностью.
Пример:
- основная функция агента — генерировать персонализированные ответы через OpenAI
- если OpenAI недоступен → агент отвечает шаблонными ответами из базы знаний
- пользователь получает ответ (не идеальный, но всё же ответ)
Реализация:
- Основная ветка: OpenAI → персонализированный ответ
- Fallback-ветка: если OpenAI вернул ошибку → ищем ответ в базе знаний (Google Sheets) → отправляем шаблонный ответ
- Последний fallback: если и база знаний недоступна → отправляем: «Извините, сейчас сервис недоступен. Попробуйте позже.»