AI cost spike в n8n: runbook для LLM-расходов ¶
Обновлено: 2026-05-29
Intent: runbook AI cost spike: резкий рост LLM расходов, loops, retry, model routing, token budget, cache, approvals и cost guardrails
H1: AI cost spike в n8n: как остановить рост LLM-расходов и найти дорогой workflow
Schema: TechArticle, HowTo, FAQPage, BreadcrumbList
Old word count: 672
New word count: 788
Короткий ответ ¶
AI cost spike в n8n почти всегда связан с одним из четырёх факторов: бесконечный loop, слишком широкий RAG-контекст, дорогая модель без routing или повторные retry после ошибки. Сначала остановите источник запросов, затем найдите workflow, execution и node с ростом token usage. После этого введите лимиты: budget per execution, max tokens, batch size, model routing, cache для повторяющихся задач и manual approval для дорогих операций.
Когда применять этот runbook ¶
Используйте runbook, если расходы на LLM/API внезапно выросли за часы или сутки, хотя бизнес-нагрузка не менялась. Для n8n это часто происходит после запуска AI Agent, RAG, массовой классификации лидов, email triage, генерации контента или поддержки через чат-бота.
Симптомы:
- provider показывает резкий рост spend или token usage;
- очередь executions растёт вместе с AI-вызовами;
- одна ошибка запускает повторную генерацию;
- RAG отдаёт слишком много chunks;
- агент вызывает tool много раз для одного вопроса;
- модель высокого класса используется для простой классификации;
- workflow обрабатывает исторические данные как новые.
Главная цель — не просто “перейти на дешёвую модель”, а найти причину всплеска и поставить ограничители, чтобы он не повторился.
1. Остановить расход ¶
В первые минуты нужно снизить burn rate.
| Ситуация | Что сделать |
|---|---|
| Cron массово вызывает AI | деактивировать workflow или увеличить интервал |
| Webhook принимает поток сообщений | включить лимит на входе или временный maintenance response |
| Queue mode продолжает AI jobs | снизить workers/concurrency для AI-очереди |
| Retry повторяет дорогие вызовы | отключить агрессивный retry для AI node |
| Agent вызывает tools циклом | отключить tool или включить approval |
| RAG отдаёт большой контекст | уменьшить top_k/chunk limit |
Если процесс бизнес-критичный, переключите его на degraded mode: шаблонный ответ, human queue или дешёвую классификацию без генерации.
2. Найти виновника ¶
Соберите таблицу по последним executions:
- workflow name;
- AI node/agent name;
- model;
- prompt type;
- number of items;
- estimated input/output tokens;
- retries;
- tool calls;
- RAG chunks;
- trigger source;
- execution duration;
- external object ID.
Частые root causes:
| Причина | Как выглядит |
|---|---|
| Loop over items без лимита | тысячи однотипных AI-вызовов |
| Retry after validation error | каждый невалидный JSON вызывает новую генерацию |
| RAG без фильтра | в prompt летит слишком много документов |
| Agent tool loop | агент много раз вызывает один и тот же tool |
| Wrong trigger | старые события считаются новыми |
| No cache | одинаковые тексты классифицируются повторно |
| Expensive default model | простые задачи идут в дорогую модель |
Для расследования важно смотреть не только failed executions. Дорогие AI-вызовы часто завершаются успешно.
3. Поставить бюджет на execution ¶
Для production AI workflow нужен явный cost contract:
max_items_per_run = 100
max_ai_calls_per_item = 1-3
max_input_chars = 6000
max_rag_chunks = 3-5
max_output_tokens = task-specific
fallback_model = cheaper model
manual_approval_threshold = high_cost_or_high_risk
В n8n это обычно делается комбинацией Set/Code node, IF, Split in Batches/Loop Over Items, Wait, model routing и отдельного error path. Для AI Agent добавьте ограничение tool-веток и проверку, что агент не может бесконечно вызывать внешний workflow.
4. Развести модели по задачам ¶
Не каждая AI-задача требует самой дорогой модели.
| Задача | Подход |
|---|---|
| Классификация lead/email | дешёвая модель + короткая схема |
| Извлечение полей | structured output + retry только на validation fail |
| Сложный ответ клиенту | более сильная модель + approval |
| RAG по базе знаний | retrieval + краткий контекст + ссылки |
| Контент/аналитика | batch limit + queue + review |
| Высокорисковое действие | AI предлагает, человек подтверждает |
Model routing снижает расходы и одновременно улучшает контроль качества: простые задачи не должны конкурировать с дорогими reasoning/long-context задачами.
5. Уменьшить лишние токены ¶
Проверьте prompt hygiene:
- не передаётся ли весь JSON вместо нужных полей;
- не добавляется ли история диалога без лимита;
- не попадают ли HTML, base64, вложения или подписи email;
- не тащит ли RAG устаревшие chunks;
- не повторяется ли системная инструкция в каждом item;
- есть ли summarization перед дорогим вызовом;
- кэшируются ли ответы на одинаковые входы.
Простой выигрыш часто даёт предварительная нормализация: очистить HTML, обрезать quoted replies, оставить только тему, вопрос, order_id и последние сообщения.
6. Вернуть workflow в работу ¶
Перед повторным включением:
- понятен trigger всплеска;
- дорогая модель заменена или ограничена;
- добавлены лимиты на batch/items/tokens;
- retry не повторяет невалидный payload бесконечно;
- RAG top_k и metadata filters проверены;
- есть alert на spend/usage;
- владелец процесса согласовал degraded mode;
- replay запускается малыми партиями.
FAQ ¶
Почему расходы выросли, хотя пользователей мало?
Один loop, retry или cron-backfill может создать больше AI-вызовов, чем реальные пользователи за месяц.
Стоит ли просто отключить дорогую модель?
Не всегда. Лучше маршрутизировать задачи: простые — в дешёвую модель, сложные — в сильную, рискованные — через approval.
Как ограничить RAG-расходы?
Снизить количество chunks, добавить metadata filters, убрать длинные документы из prompt и использовать reranking только там, где он действительно нужен.
Нужно ли считать стоимость внутри n8n?
Да, хотя бы приблизительно. Храните model, input/output size, item count и execution ID, чтобы быстро найти дорогие workflow.
Как применять playbook в команде ¶
Playbook «AI cost spike в n8n» должен быть понятен человеку, который не писал workflow. Поэтому в нём нужны входной сигнал, частота запуска, критерий тревоги, ответственный и ожидаемое действие после срабатывания.
Используйте этот материал как операционную инструкцию: что проверить, где посмотреть логи, как понять масштаб проблемы и когда эскалировать.
| Слой | Что зафиксировать | Зачем |
|---|---|---|
| Вход | нормализованный prompt, контекст, список источников, версия промпта и ожидаемый JSON-ответ | позволяет повторить проблему без доступа к production-секретам |
| Контроль | validation_error_rate, token_cost, fallback_usage, human_review_rate, source_coverage | показывает деградацию раньше, чем пользователи начинают писать в поддержку |
| Безопасность | получить уверенный, но непроверенный ответ модели, сломанный JSON или дорогой цикл retry | снижает риск скрытых дублей, утечки данных и неконтролируемых write-действий |
| Готовность | есть тест на happy path, пустой вход, повтор и сбой внешнего сервиса для «AI cost spike в n8n» | делает статью пригодной для runbook, а не только для чтения |
Пример безопасного входного контракта ¶
{
"request_id": "req_demo_001",
"prompt_version": "2026-05-29",
"input": "краткое нормализованное сообщение пользователя",
"allowed_actions": ["read", "draft", "classify"],
"forbidden_actions": ["send_without_review", "change_payment"],
"expected_output": {
"intent": "technical|support|sales|unknown",
"confidence": 0.0,
"needs_human_review": true,
"sources": []
}
}
Критерий готовности ¶
- есть понятный вход, выход и владелец процесса
- проверены пустой input, повтор события и ошибка внешнего сервиса
- результат логируется без секретов и персональных данных
- страница связана с соседними рецептами, ошибками или playbook по теме