Как собрать в n8n ИИ-агента«бриф → черновик КП»
Webhook с сырым брифом → извлечение требований → структура → черновик коммерческого предложения → правка человеком до отправки
Менеджер получает сырой бриф: «нужен сайт, срочно, бюджет примерно как у конкурента». Через час начинается переписка: что входит в объём, какие интеграции, какая цена. ИИ-агент в n8n как раз закрывает эту дыру — но не «красивым письмом клиенту», а цепочкой: требования → структура → черновик → человек.
Коротко. Надёжный сценарий «бриф → черновик КП» в n8n — это не один большой промпт. Это два узких вызова нейросети (извлечь поля и написать текст) плюс обычные ноды между ними: проверка, шаблон, запись, уведомление. Клиенту КП без правки менеджером не уходит.
Два узких LLM, не один «сделай КП»
Extract фиксирует поля. Generate пишет текст по каркасу. Между ними — код и шаблон: цифры не рождаются «из воздуха».
Зачем агенту отдавать бриф, а не просить «сразу красивое КП»
Если скормить нейросети весь бриф и сказать «напиши коммерческое предложение», она часто:
- додумает цену и сроки;
- смешает «хотелки» клиента с вашим оффером;
- красиво сформулирует то, чего в брифе не было.
Для отдела продаж это опасно: черновик выглядит уверенно, а цифры — выдуманные. Поэтому цель автоматизации другая: сначала зафиксировать требования, потом собрать каркас КП, и только потом дать модели написать текст по уже известным полям.
Где команда теряет часы на переписке по требованиям
Типичный цикл без агента:
- Заявка или письмо с сырым текстом.
- Менеджер вручную выписывает услугу, срок, бюджет, ограничения.
- Пишет КП в Google Docs / CRM.
- Согласовывает с коллегой.
- Отправляет клиенту.
Шаги 2–3 повторяются на каждой заявке. Именно их имеет смысл отдать n8n: извлечение полей и черновик текста. Согласование и отправка — человеку.
Чем черновик КП отличается от готового письма клиенту
| Черновик КП | Готовое письмо клиенту | |
|---|---|---|
| Кто автор | сценарий + модель | менеджер |
| Цифры и сроки | из брифа или пометка «уточнить» | проверенные |
| Тон | черновой, можно править | финальный |
| Отправка | только внутрь команды | клиенту |
Правило продакшена: публикует КП всегда человек, не воркфлоу.
Карта пайплайна: вход → требования → структура → текст → человек
Ниже — рабочая карта, которую можно собрать в n8n workflows без «магии одного агента».
Webhook / почта / форма
↓
Нормализация текста (Code)
↓
Проверка: бриф не пустой? (IF)
↓
Ключ идемпотентности (хеш брифа)
↓
LLM №1: извлечь JSON-требования
↓
Валидация полей (Code / IF)
↓
Сборка структуры КП по шаблону (Set / Code)
↓
LLM №2: черновик Markdown по полям
↓
Запись в таблицу / CRM
↓
Telegram / email менеджеру → HITL-правкаДва вызова LLM и детерминированные ноды между ними
У модели в этом пайплайне ровно две задачи:
- Extract — вытащить структурированные требования.
- Generate — написать текст по уже собранному каркасу.
Всё остальное делают обычные ноды: IF, Set, Code, запись в БД, Telegram. Так вы снимаете с модели ответственность за повторы, формат и «не отправить лишнее».
Альтернатива — один Tools Agent, который сам решает, какие инструменты вызвать. Он уместен, если нужен диалог уточнений («спросить бюджет в CRM»). Для документа с ценой и сроками свободный цикл агента чаще вреден: модель может «дописать» факты через tool или зациклиться.
Где ставить HITL, чтобы модель не «отправила сама»
В n8n есть два уровня HITL — их легко перепутать:
- Tool-level — нативный Approve/Deny перед опасным инструментом (например, «отправить email клиенту»). Есть в документации n8n для Human review через Telegram, Slack, Gmail и др.
- Workflow-level — агент вообще не шлёт клиенту: кладёт черновик менеджеру («доработай и отправь сам»).
Для коммерческого предложения обязателен второй уровень. Первый — дополнительная страховка, если в Tools Agent вообще есть tool отправки наружу.
Визуал статьи · не hero · n8n
Бриф → JSON → каркас КП → HITL: где останавливается модель
Сцена — карта нод, не первый экран: пакет брифа проходит extract, детерминированную сборку структуры и ждёт человека перед клиентом.
- LLM №1 — только поля требований (JSON), без «красивого КП».
- Set / Code — фиксирует скелет коммерческого предложения.
- HITL — менеджер правит черновик; отправка клиенту не в руках модели.
Дальше — окружение n8n и первая нода триггера.
Что поднять до первой ноды: cloud, docker или уже живой n8n
Вам нужен любой рабочий инстанс n8n, куда можно повесить Webhook и credentials к LLM. Варианты:
- n8n Cloud — быстрее старт, меньше возни с сервером.
- Self-host / Docker — если важны данные брифов клиентов на своей стороне.
- Уже развёрнутый n8n в команде — просто новый workflow.
Оплата зарубежных LLM и Cloud из России часто идёт через карты/посредников — заложите это в бюджет. Для текста КП часто хватает OpenAI-совместимого API или моделей через провайдера, к которому у вас уже есть доступ; если доступов нет, сначала решите credentials, потом рисуйте ноды.
Минимальный чеклист доступов к LLM и почте/Telegram
- API-ключ LLM (или credential в n8n).
- Telegram-бот и chat_id менеджера или почта для уведомлений.
- Место хранения: Google Sheets / Postgres / Airtable — куда писать черновик и статус.
- Секрет webhook (не публиковать URL без токена в query/header).
Какие ноды понадобятся по именам (Webhook, AI Agent/LLM, Set/Code, IF)
Минимальный набор имён в редакторе n8n:
- Webhook — вход брифа.
- Respond to Webhook — ответ 200/202/422.
- Code или Set — нормализация, хеш, шаблон.
- IF / Switch — валидация и ветки ошибок.
- Basic LLM Chain / OpenAI / AI Agent — два вызова модели (extract и generate).
- Telegram / Email — уведомление менеджеру.
- Error Trigger (отдельный workflow) — ловить падения ночью.
Memory (память диалога) для one-shot «бриф → КП» обычно не нужна: важнее structured output и запись результата в таблицу.
Триггер входа: webhook, письмо или форма с сырым брифом
Три рабочих входа:
- Форма на лендинге → Webhook с полем
brief. - Письмо → IMAP/Gmail trigger, тело письма = бриф.
- Telegram-бот продаж → сообщение менеджера или лида.
На старте проще всего webhook: один POST с текстом, удобно тестировать из Postman или curl.
Как принять повторный бриф без дублей (идемпотентность)
Клиент (или сам webhook при таймауте) часто пришлёт один и тот же бриф дважды. Без защиты вы дважды заплатите за LLM и получите два черновика.
Практика:
- Нормализуйте текст (обрезать пробелы, привести переносы).
- Посчитайте SHA-256 от текста — это ключ.
- Перед LLM проверьте: ключ уже есть? → не вызывайте модель снова.
Таймауты webhook и ответ 202, когда генерация долгая
Два вызова LLM легко выходят за ~60 секунд — типичный лимит ожидания webhook. Если режим ответа «ждать конца флоу», клиент формы получит таймаут и нажмёт «отправить» ещё раз.
Рабочий приём:
- сразу ответить 202 Accepted («принято, обрабатываем»);
- дальше гнать async-ветку: extract → generate → Telegram менеджеру;
- клиенту/форме отдать ссылку на статус или просто «менеджер свяжется».
LLM №1: вытащить требования, а не пересказывать бриф
Первый вызов модели — не «перескажи бриф красиво», а заполни JSON-схему. Модель должна вернуть только поля, без маркетингового текста.
Пример набора полей (адаптируйте под услугу):
client_goal— цель клиентаpain_points— болиscope— объём работintegrations— интеграцииbudget— бюджет (или null)deadline— срок (или null)tone— тон общенияmissing_fields— чего не хватает
Какие поля обязательны: услуга, срок, бюджет, ограничения, тон
Минимум для КП-черновика:
- Что продаём (услуга / пакет).
- Что входит и что не входит (
scope). - Срок или явный пробел.
- Бюджет или явный пробел.
- Ограничения (стек, регион, SLA — если упомянуты).
- Тон: деловой / дружеский / коротко.
Если срока или бюджета нет — модель не придумывает, а пишет в missing_fields и в шаблон подставляет [уточнить у клиента].
Валидация JSON: что делать, если модель «додумала» цену
После LLM №1 всегда ставьте Code/IF:
- JSON парсится?
- обязательные ключи на месте?
budget/deadlineлибо число/дата из брифа, либо null + запись вmissing_fields?- нет «магических» сумм, которых не было во входном тексте?
Если проверка провалена — Respond 422 / ветка «вернуть менеджеру сырой бриф», а не идти в генерацию КП.
Таблица: чего модели нельзя додумывать
| Поле | Можно из брифа | Нельзя «от себя» |
|---|---|---|
| Цена / скидка | да, если явно сказано | нет |
| Срок сдачи | да | нет |
| Состав работ | да, как формулировка клиента | нельзя обещать лишнее |
| Юр. формулировки / SLA | только цитата/шаблон компании | нет свободной генерации |
| Контакты / PII | передавать минимально | не логировать лишнее во внешние сервисы |
Сборка каркаса КП без генерации «из воздуха»
Между двумя LLM — детерминированная сборка. Вы маппите JSON в блоки шаблона коммерческого предложения. Здесь ещё нет «красивого текста» — только каркас.
Блоки: оффер, объем, сроки, цена, next step
Базовый каркас:
- Оффер — что предлагаем под цель клиента.
- Объём — scope + исключения.
- Сроки — дата или
[уточнить у клиента]. - Цена — сумма или
[уточнить у клиента]. - Next step — «созвон / уточнение / счёт».
Шаблон храните в Set/Code или в таблице — так легче версионировать без правки промпта.
Почему структуру лучше собрать кодом/шаблоном, а не одним промптом
Если структура «живёт» только в голове модели, каждый запуск даёт другой порядок блоков и другие акценты. Код фиксирует скелет: менеджер знает, где искать цену и срок. Модель во втором вызове лишь формулирует абзацы внутри готовых секций.
LLM №2: черновик текста по уже зафиксированным полям
Второй вызов получает только собранный каркас (+ краткий ToV, если нужен). Задача — написать читаемый Markdown/текст КП, не меняя цифры.
Промпт, который запрещает менять цифры и сроки
В system/user prompt явно пропишите:
- не добавляй цены, сроки и услуги, которых нет во входных полях;
- если видишь
[уточнить у клиента]— оставь маркер, не заменяй на число; - не обещай SLA и гарантии сверх шаблона;
- длина: 1–1,5 страницы, без воды.
Так вы получаете «коммерческое предложение с помощью нейросети», но без иллюзии, что модель «знает ваш прайс».
Стоимость двух вызовов vs один «всё сразу» Tools Agent
Два коротких вызова обычно дешевле и предсказуее одного длинного ReAct-цикла с tools: меньше итераций, меньше лишних tool-call. Один Tools Agent может уйти в Max Iterations, повторить tools и внезапно вырасти в цене — особенно на «болтливых» брифах.
Max Iterations (лимит циклов агента) в n8n по умолчанию часто равен 10: столько раз агент может «подумать и дернуть tool» за один запуск. Если лимит исчерпан, смотрите ветку ошибок — в части версий при Continue On Fail статус мог выглядеть как Success. Проверяйте логи и версию инстанса.
Когда один Tools Agent всё же уместен: нужен диалог уточнений с CRM/календарём до сборки КП. Тогда tool-level HITL на отправку письма обязателен, а цену лучше брать из справочника tool'ом, а не из «памяти» модели.
HITL: кто и где правит черновик до клиента
После LLM №2 сценарий должен:
- сохранить черновик;
- прислать менеджеру превью;
- остановиться с точки зрения клиента.
Approve в Telegram или email: кнопка «ок / вернуть»
Практичные варианты:
- Telegram: сообщение с текстом КП + кнопки «ок, беру в работу» / «вернуть на доработку» (через Wait / Send and Wait или просто статус в таблице).
- Email: письмо себе/отделу с черновиком; отправка клиенту — вручную из CRM.
- Нативный Human review у tool «send email» — только если отправка автоматизирована и вы сознательно включаете авто-outbox.
Не смешивайте «менеджер правит черновик» и «агент сам шлёт клиенту после Approve» без явной политики команды.
Что нельзя отдавать без глаз: PII, скидки, обещания SLA
Перед отправкой человек обязан проверить:
- персональные данные и внутренние пометки клиента;
- любые скидки и «особые условия»;
- формулировки про сроки, штрафы, SLA;
- что маркеры
[уточнить]либо закрыты фактом, либо убраны из клиентской версии.
Брифы часто содержат контакты и бюджеты: на self-host проще контролировать, что уходит во внешнюю LLM; сырой текст лучше не светить в лишних логах.
Типичные поломки: Continue On Fail, память, циклы агента
Max iterations и зацикливание tools
Если всё же используете AI Agent с tools:
- ограничьте список tools (least privilege);
- не давайте tool «отправить клиенту» без HITL;
- следите за Max Iterations;
- при ошибке tool — fallback на человека, а не «тихий Success».
Логи ошибок, которые экономят ночь дебага
Включите отдельный Error Trigger-workflow: падение LLM, таймаут, 422 валидации → сообщение в Telegram с execution id и кратким reason. Логируйте:
- ключ идемпотентности;
- какие поля ушли в
missing_fields; - сколько токенов съели два вызова (хотя бы приблизительно).
Так вы отличите «модель глючит» от «webhook пришёл дважды» и от «протух API-ключ».
Коротко: n8n vs Make, если цель — именно черновик КП
Когда проще остаться в n8n
- Нужны Code-ноды под хеш, JSON-валидацию и шаблон.
- Важен self-host и данные брифов «у себя».
- Уже есть стек LangChain-нод / AI Agent в n8n.
- Сценарий документный: extract → validate → generate → HITL.
Когда имеет смысл перенести сценарий в Make
- Команда уже живёт в Make и быстро клеит CRM ↔ почта ↔ мессенджеры.
- Нужен быстрый прототип без сервера.
- AI Agents в Make удобны как визуальная оркестрация SaaS; для жёсткой валидации JSON и идемпотентности чаще всё равно упрётесь в кастомный код.
Развёрнутый гайд по Make AI Agents у нас уже отдельной страницей — здесь достаточно выбора: КП с фактами и проверками → n8n; быстрый SaaS-прототип продаж → Make.
Если команде ближе визуальные сценарии в Make и нужен практический разбор автоматизации с ИИ — смотрите обучение по автоматизации и вайбкодингу: от процесса к рабочим связкам, без «магии вместо схемы».
Как встроить сценарий в контент-завод и продажи
Паттерн тот же, что в контент-заводе: сырьё → структура → черновик → человек → публикация. Меняется только «пакет» на выходе: вместо статьи — коммерческое предложение.
Бриф с лендинга/бота → черновик КП → менеджер
- Лид оставляет заявку (форма / бот).
- n8n собирает черновик КП за минуты.
- Менеджер правит и отправляет из CRM.
- Статус «КП отправлено» возвращается в воронку.
Так автоматизация продаж начинается не с «робота-клоузера», а с снятия рутины первого ответа.
Тот же каркас для статей и коммерческих писем
Тот же extract→template→draft→HITL годится для:
- коммерческих follow-up писем;
- одностраничных офферов на сайт;
- брифов для контент-команды («о чём статья / для кого»).
Контент-завод и отдел продаж начинают говорить на одном языке процессов: черновик всегда проходит человека.
Пошаговая сборка: от пустого workflow до первого черновика
Шаг 1. Создайте workflow и Webhook
- В n8n: New workflow → нода Webhook.
- Method: POST. Path: например
brief-to-kp. - Включите заголовок/токен проверки (header
X-Hook-Secret). - Добавьте Respond to Webhook пока с простым
{"status":"accepted"}.
Признак успеха: тестовый POST возвращает 200/202 и execution появляется в логе.
Шаг 2. Нормализация и идемпотентность
- Code: взять
body.brief, trim, отказ если длина < N символов. - Посчитать хеш брифа.
- Проверить в Sheets/БД: хеш есть? → Respond «already processed» и стоп.
- Иначе записать строку со статусом
processing.
Признак успеха: повтор того же брифа не создаёт вторую строку и не дергает LLM.
Шаг 3. LLM №1 + валидация JSON
- Нода LLM с system: «верни только JSON по схеме…; неизвестные поля — null; пробелы — в missing_fields».
- Code:
JSON.parse, проверка ключей. - IF: если
budget/deadlineвыдуманы относительно исходного текста — в ошибку.
Признак успеха: на брифе без цены в выходе budget: null и [уточнить у клиента] в каркасе.
Шаг 4. Каркас + LLM №2 + HITL
- Set/Code: собрать блоки оффер/объём/сроки/цена/next step.
- LLM №2: «напиши КП по полям, цифры не меняй».
- Сохранить Markdown в таблицу.
- Telegram менеджеру с текстом и ссылкой на запись.
- Никакой ноды «Email клиенту» в этой версии.
Признак успеха: в Telegram приходит черновик; в таблице статус draft_ready; клиент ничего не получил.
Типичные ошибки новичка
- Один промпт «сделай КП» — лечится разделением extract/generate.
- Sync-webhook без 202 — форма отваливается по таймауту, бриф шлётся дважды; включите ранний 202 + идемпотентность.
- Continue On Fail на валидации — битый JSON проходит дальше; на критичных нодах лучше падать в Error Trigger.
- Автоотправка клиенту — уберите tool/ноду отправки наружу до отдельного согласованного процесса.
Частые вопросы
Короткие ответы для поиска и ИИ-выдачи
Что такое ИИ-агент в n8n и чем он отличается от «просто ChatGPT»?
В ChatGPT вы вручную вставляете бриф и копируете ответ. В n8n ИИ-агент/LLM встроен в workflow: сам принимает заявку, вызывает проверки, пишет черновик в таблицу и зовёт человека. Разница — оркестрация и контроль, а не «более умная модель».
Можно ли собрать сценарий без Docker?
Да. n8n Cloud или уже поднятый инстанс достаточно. Docker нужен, если хотите self-host и контроль данных; для обучения схемы нод он не обязателен.
Нужен ли HITL всегда?
Для КП — да, на выходе к клиенту. Полностью автоматическая отправка коммерческих условий без глаз менеджера — риск для денег и репутации. HITL можно упростить до «менеджер копирует из Telegram», но точка человека должна быть.
Сколько стоят два LLM-вызова?
Зависит от модели и длины брифа. Два коротких structured/generate вызова обычно дешевле одного агента с кучей итераций tools. Закладывайте учёт токенов в логах с первого дня.
Чем этот пайплайн отличается от «создать коммерческое предложение онлайн» в конструкторе?
Конструкторы дают шаблон документа. Здесь — автоматизация входа заявки, извлечения требований и черновика под ваш процесс продаж, с повторяемостью и защитой от дублей.
n8n бесплатный для такого сценария?
Есть бесплатные/trial-режимы и self-host, но LLM API и время команды всё равно стоят денег. Считайте стоимость модели + сопровождение workflow, а не только лицензию n8n.
---
Что проверяли по источникам
- Практическая схема «два LLM + детерминированные ноды + HITL» и маркеры
[уточнить]— по открытому кейсу бриф→КП на n8n (Habr). - Поведение AI Agent / Tools Agent, Max Iterations и Human review — по документации n8n.
- HITL на уровне tool call — по разделу Human-in-the-loop.
