Практический гайд: как агентами собрать AI-продавца своей компании

Пошаговый маршрут от «у меня просто звонки и переписки» до «в WhatsApp/на сайте работает бот, который знает компанию и протестирован на бенчах». Делается агентами — ты в основном ставишь задачи и ревьюишь.

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


Карта пути (запомни эти 6 шагов)

1. ДОБЫТЧИК     собирает сырьё        → raw/
2. ОБЖИМКА      NotebookLM + Упаковщик → obrabotano/ + dannye/ + baza/faq.json
3. КАРТОЧКИ     (опц.) векторизация    → Pinecone
4. ТЕСТИРОВЩИК  бенчи до 100%          → tests/etalon.jsonl
5. n8n          подключаем бота        → WhatsApp / сайт / Telegram
6. CLOUDFLARE   публикуем результат    → читаемая ссылка для команды

Главный закон на весь путь: 1 роль = 1 инструкция = 1 массив данных. Не сваливай всё одному агенту в одну кучу — будет галлюцинировать. Поэтому у нас три агента-работяги: добытчик, упаковщик, тестировщик.

Память агента, чтобы было понятно, что мы вообще собираем: у бота есть краткосрочная память (контекстное окно — что он видит в этом диалоге) и долгосрочная (всё, что знает компания). Долгосрочную мы и пакуем — так, чтобы из неё легко доставалось нужное. Это и есть RAG: «сбегать в библиотеку и принести нужную страницу».


Шаг 0. Завести проект (5 минут)

  1. Создай папку проекта, открой в ней Claude Code (или Cursor).
  2. Положи в корень CLAUDE.md — правила для агентов. Готовый возьми из upakovka_dlya_agenta.md (он рядом): там контракт папок, схемы и критерии приёмки.
  3. Создай скелет папок:
raw/zvonki/audio/   raw/zvonki/text/   raw/perepiski/
obrabotano/         dannye/            baza/   tests/

raw/ — святое. После сбора его никто не правит руками, даже агент. Захотел убрать мусор — попроси агента игнорировать его при разборе, но файл не трогай. Если завтра модели станут умнее — перезапустишь разбор поверх того же сырья.


Шаг 1. Добытчик — собрать сырьё

Не пытайся сразу всё. Возьми один тип источника. 20–30 звонков уже хватает на первого работающего бота — не жди сотни.

Дай агенту задачу (полный промпт — в konvejer_agentov.md, агент «Добытчик»). Своими словами это звучит так:

«На диске есть коннектор к Битриксу. Сходи, скачай звонки за последний месяц (КЦ-продажи), положи аудио в raw/zvonki/audio/. Потом затранскрибируй их через Grok/AssemblyAI/Whisper и тексты сложи в raw/zvonki/text/. Дальше возьми мою выгрузку переписок WhatsApp вот отсюда и положи в raw/perepiski/. Наша задача — собрать сырьё для виртуального продавца. Действуй.»

Грабли из реальной практики:

Параллельно агент это делает фоном — звонки качаются и транскрибируются, можно идти дальше.


Шаг 2. Обжимка — NotebookLM + Упаковщик

Сырьё собрано. Теперь его надо обжать в инструкции и знания. Сначала реши, зачем тебе бот и какую роль он играет — от этого зависит, что обжимать. Одна роль → одна инструкция → один массив сырья.

2a. NotebookLM (снимает «проблему чистого листа»). Заходишь в notebooklm.google.com → Create new → грузишь весь raw/ (до ~50 источников; если переписка не лезет — обрежь). Просишь первичную выжимку:

«Я запускаю нового сотрудника. Составь должностную инструкцию: что он должен уточнять у клиента, какие у нас основные цены и условия, какие есть клиентские пути в компании. Собери всё воедино в одну инструкцию, постарайся ничего не упустить.»

NotebookLM выдаёт mind-карты и таблицы. Это затравка, не финал. Подои его: «А покопай ещё переписки — что ты не упомянул? А вот этот сегмент описал? А температурные/спецгрузы?» — так вытаскиваются твёрдые данные, о которых сам бы не вспомнил.

2b. Упаковщик (доводит до файлов проекта). Отдаёшь агенту выжимку из NotebookLM + шаблоны и просишь разложить по папкам (полный промпт — в konvejer_agentov.md, агент «Упаковщик»):

Ключевое в задаче упаковщику: черпать только из raw/ и верифицировать по нему, сырьё не трогать. На выходе — должностная инструкция + база знаний (память) агента.


Шаг 3. Карточки, а не чанки (и зачем Pinecone)

Когда базу нарезают на куски — обычно режут на чанки (просто куски текста). Мы режем на карточки: вопрос + ответ + ключевые слова. Ключевые слова берём из реальных переписок — теми словами, которыми клиенты правда пишут (с опечатками и сленгом). Именно карточки с keywords дают точные ответы — бот находит нужную, даже если вопрос задан криво.

Хочешь долгосрочную векторную память — векторизуй карточки в Pinecone (pinecone.io). Полный рецепт с кодом — в pinecone_shpargalka.md, но суть в трёх правилах, чтобы агент сделал это правильно:

  1. Сначала дай агенту актуальную доку: curl -o PINECONE_AGENTS.md https://docs.pinecone.io/AGENTS-PYTHON.md → «прочитай и следуй ей». Это заставит его взять текущий SDK (pip install pinecone, не старый pinecone-client).
  2. Эмбедим то, как клиент спрашивает. 1 карточка = 1 запись: в вектор идёт question + все keywords, а templates/category/tags — в плоские метаданные. Размерность индекса обязана совпадать с моделью (боевой rosperevozki-faq = 1536, OpenAI). Всегда namespace (у Росперевозки — faq_v1).
  3. Ключ — одноразовый, через переменную PINECONE_API_KEY, в код не хардкодить; после заливки удаляешь.

Для русского с нуля проще взять интегрированную модель multilingual-e5-large (Pinecone сам считает векторы); если используешь готовый n8n-сценарий — он на OpenAI-эмбеддингах 1536. Оба пути с кодом — в шпаргалке.

И базовое: многим вообще без Pinecone — карточка фактов целиком в системный промпт + кэширование (см. kak_sobrat_bazu_znaniy.md). Pinecone — когда карточек реально много.


Шаг 4. Тестировщик — бенчи до 100% (это и отделяет «вроде работает» от «пускаю на клиентов»)

Не угадывай, как бот поведёт себя в проде. Форкни упаковщика в тестировщика (отдельная сессия Claude Code в той же папке / Fork чата в Cursor) — ему нужен тот же контекст и те же данные. Полный промпт — в konvejer_agentov.md, агент «Тестировщик». Суть:

  1. Спроектируй продакшн-агента из obrabotano/ + dannye/ (системный промпт по форме realny_primer_sistemny_promt.md + нужные tools).
  2. Собери из raw/ 30–40 эталонных тестов tests/etalon.jsonl: фраза клиента → что бот обязан сказать → чего говорить нельзя.
  3. Прогони, найди провалы, минимально поправь промпт/карточку, перепрогоняй — до 100% PASS. Это можно оставить агенту крутиться автономно.

Бенчи обязаны ловить твои corner cases: стоп-лист (животные/мелочь/не РФ), битый телефон, «дорого → догруз», вопрос не по теме → зови менеджера, попытку выманить точную цену. Пример строки бенча:

{"id":"t01","input":"скока стоит диван мск-спб","expect":"pricing","must_include":["логист","10 000"],"must_not":["точная цена","гарантирую"]}

Шаг 5. Подключить бота в n8n

Бери готовый боевой сценарий realny_primer_n8n.json (импортируешь в n8n, подставляешь свои креды) и системный промпт realny_primer_sistemny_promt.md. Архитектура там ровно про память агента:

Цифры (минималка, стоп-лист, «только РФ») прибиты прямо в промпт — бот их не выдумывает. FAQ отвечает на вопрос и возвращает диалог к сбору заявки, чтобы бот не растекался.

Экономика: у Claude/GPT/Gemini есть кэширование запроса — первое обращение платится полностью, дальше 5 минут эта же часть стоит в ~10 раз дешевле. Если бот получает хотя бы сообщение в 5 минут — кэш горячий, каждое сообщение копейки.


Шаг 6. Опубликовать результат на Cloudflare

Финал — превратить то, что собрал агент (должностную инструкцию, базу знаний, этот гайд), в читаемую ссылку, которую кидаешь команде. Дальше любой сотрудник может это почитать — и сам отдать агенту.

Скажи агенту дословно:

«Преврати файл obrabotano/instrukciya.md в аккуратную веб-страницу и опубликуй на Cloudflare Pages. Дай мне постоянную ссылку.»

Что под капотом (агент сделает сам):

Цикл, к которому всё ведёт: скинул текст → почитал собранное → отдал агенту → опубликовал ссылку команде. Команда читает по ссылке, а дальше тоже отдаёт агенту. Маховик закручен.


Чек-лист «от и до» — бот готов к живым клиентам, когда:


Чего НЕ делать


Файлы рядом (всё для этого пути)

Файл Зачем
upakovka_dlya_agenta.md CLAUDE.md для проекта: контракт папок, схемы, критерии приёмки
konvejer_agentov.md Готовые промпты трёх агентов (добытчик/упаковщик/тестировщик) + бенчи
shablon_faq.json + shablon_baza_znaniy_faq.md Болванка карточек FAQ и разбор каждого поля
pinecone_shpargalka.md Точный рецепт векторизации: маппинг карточка→запись, код, грабли
realny_primer_n8n.json Боевой n8n-сценарий Росперевозки (импортируй и подставь креды)
realny_primer_sistemny_promt.md Боевой системный промпт продакшн-агента
kak_sobrat_bazu_znaniy.md Человеческое руководство «на пальцах» (теория + 6 шагов)
sravnenie_podhodov.md Когда карточек хватит, а когда нужен настоящий RAG/граф
rosperevozki_faq.json Живой пример базы на 32 карточки

Раздаточный гайд встречи 4 мастермайнда «Вайбкодинг для предпринимателей».