Обработка ошибок и устойчивость

Пайплайн без обработки ошибок ломается на третий день — и вы узнаёте об этом от недовольного руководителя. Сделаем систему, которая работает неделями без вашего внимания.

🎯 После урока сможешь: добавить в пайплайн обработку ошибок, чтобы он работал неделями без тебя.

Где обычно ломается

Где обычно ломается пайплайн: API внешнего сервиса — лимиты, недоступность, смена API; Anthropic API — лимиты, неверный JSON в ответе; сеть — таймаут, разрыв соединения; парсер — сайт изменил вёрстку; промпт — пустой/некорректный ответ; доставка — Telegram заблокировал, Notion не отвечает.

Три стратегии устойчивости

Три стратегии устойчивости: 1) Retry — Settings → On Error → Retry on Fail (30 сек, 3 попытки), спасает от сетевых сбоев; 2) Continue on Fail — пайплайн не падает целиком, ошибка идёт в отдельную ветку; 3) Error Workflow — отдельный workflow на любую ошибку, шлёт уведомление в Telegram и лог в Google Sheets.

Валидация ответа AI

AI иногда возвращает не то, что ждём (особенно при просьбе вернуть JSON). Простая проверка ловит «битый» ответ, не роняя пайплайн:

// Нод Code в n8n
const response = $input.first().json.text;
try {
  const parsed = JSON.parse(response);
  if (!parsed.sentiment || !parsed.topics) throw new Error("Нет нужных полей");
  return [{json: parsed}];
} catch (e) {
  return [{json: {error: e.message, raw: response}}];  // сохранить для разбора
}

Логи и мониторинг расходов

Логи и мониторинг расходов: минимум логов на каждый запуск — время запуска, сколько обработано, сколько ошибок, стоимость из поля usage, ссылка на результат. Отдельный workflow раз в день считает расходы за вчера: если больше порога — уведомление, если больше двух порогов — авто-остановка всех пайплайнов.

Мониторинг расходов — защита от кошмара «забыл лимит, потратил $200 за ночь». Один сторожевой пайплайн, который следит за тратами и умеет всё выключить, стоит настроить в первую очередь.

Контрольный вопрос. Что делает Error Workflow?

АУдаляет ошибки из кода пайплайна автоматически
БЗапускается при ошибке пайплайна и шлёт уведомление
ВУскоряет пайплайн, запуская ноды параллельно

Подсказка: Аварийный обработчик.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Зачем валидировать ответ AI перед использованием?

АВалидация не нужна: модель всегда отдаёт верный JSON
БAI иногда возвращает битый JSON — иначе пайплайн упадёт
ВЧтобы замедлить работу и снизить расход токенов

Подсказка: Ответ бывает не по формату.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что защищает от «сжёг $200 за ночь»?

АПереход на более дорогую модель с большим лимитом
БСторожевой workflow расходов: уведомляет и останавливает
ВОтключение логов, чтобы не тратить место на диске

Подсказка: Мониторинг трат с авто-стопом.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Пайплайн падает из-за кратковременных сетевых обрывов раз в несколько запусков, но в остальном стабилен. Какую из трёх стратегий устойчивости применить в первую очередь?

АContinue on fail — просто пропустить ошибку
БRetry — 3 попытки с паузой спасут от случайного обрыва сети
ВError Workflow — сразу останавливать весь пайплайн

Подсказка: Смотри, какая стратегия из трёх нацелена именно на сетевые сбои.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Нод Code (см. промпт в уроке) получил ответ агента: строка Конечно! Вот твой JSON: {"sentiment": "positive"} — то есть JSON не единственное содержимое ответа. Что вернёт код из урока при попытке JSON.parse(response)?

Исходный код для этого задания:

const response = $input.first().json.text;
try {
  const parsed = JSON.parse(response);
  if (!parsed.sentiment || !parsed.topics) throw new Error("Нет нужных полей");
  return [{json: parsed}];
} catch (e) {
  return [{json: {error: e.message, raw: response}}];  // сохранить для разбора
}
АУспешно распарсит и вернёт {sentiment: ‘positive’}
БЗависнет в бесконечном цикле
ВПопадёт в catch — вернёт {error, raw: response}

Подсказка: JSON.parse ломается на лишнем тексте перед фигурной скобкой — вспомни try/catch из кода урока.

Онлайн-проверка ответа появится позже

Что дальше

Пайплайн устойчив. В финальном уроке модуля — готовые рецепты, которые можно скопировать и адаптировать под свою задачу за вечер.

← Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева