Я — техлид группы разработки шины обмена данными в компании «Передовые Платежные Решения» и неформальный лидер команды внутренних ИИ-проектов. В этой статье делюсь опытом внедрения ИИ с нуля: как за 6 месяцев команда из 12 backend-разработчиков, не имевших опыта в ML и AI, создала и запустила в пилот голосового ИИ-ассистента.
Материал будет полезен компаниям, которые рассматривают внедрение ИИ и выбирают между «сделать самим» и «привлечь внешних экспертов», а также тем, кто планирует похожие внутренние продукты.
Технические параметры ассистента:
- Задача: классификация услуг + детекция возражений → RAG → генерация ответа.
- Входные данные: поток текстовых сегментов от встроенного транскрайбера телефонии.
- Задержка: 1,5–2 секунды на генерацию ответа.
- Стек: Python, FastAPI, PostgreSQL, дообученные BERT, локальная Qwen 8B.
- Архитектура: on-premise (требование ИБ), интеграция с Voximplant API.
Далее — подробный разбор эволюции проекта от переусложнённого монолита до работающей системы. Расскажу о технических компромиссах, вызовах и практических выводах для команд, которые начинают путь в ИИ без штатных data scientists.
Что делает «Суфлёр»
«Суфлёр» — голосовой ИИ-ассистент, который в реальном времени помогает менеджерам по продажам и сервису во время звонков. Он анализирует диалог, определяет, о каком продукте идёт речь, фиксирует наличие возражений и мгновенно выводит релевантную текстовую подсказку на экран.
В нашей экосистеме более 35 продуктов. Это огромный объём информации, который нужно держать в голове, чтобы эффективно отвечать на возражения и закрывать сделки. B2B-цикл длинный, и важно, чтобы у сотрудника на каждом этапе были под рукой нужные скрипты и аргументы.
AI-ассистент помогает повысить эффективность продаж за счёт зашитых в модель лучших практик и сокращает время выхода новых сотрудников на KPI.
Этапы разработки: от обучения до прототипа
Путь от идеи до MVP занял около двух лет. Активная разработка уложилась в 6 месяцев.
12 инженеров (бэкенд-разработчики, тимлиды, техлиды) прошли обучение: освоили архитектуру нейросетей, работу с LLM, эмбеддинги и векторные базы. К концу курсов у нас была команда с общим пониманием RAG, fine-tuning и классификаторов.
Проект начали с простого рабочего контура. За первые три недели:
- Взяли транскрипты звонков как входные данные.
- Разработали два классификатора на BERT — для услуг и возражений. Обучили на полутора тысячах транскриптов.
- Подготовили две векторные базы знаний на FAISS: описание услуг и скрипты отработки возражений.
- Связали всё через промпты с облачной моделью GPT.
- За день собрали интерфейс на Django для вывода подсказок.
Через три недели мы представили proof-of-concept бизнесу. Прототип работал с задержкой 10–15 секунд из-за облачной модели, но идея получила зелёный свет. После этого начали дорабатывать систему под требования: скорость, стабильность, интеграции.
От монолита к реальности
Вдохновлённые курсами, мы сначала спроектировали сложный монолитный архитектурный проект, включавший:
- Собственный аудиоконвейер: захват аудио с микрофона и колонок, транскрибация через локальный Whisper. Но это было медленно и нестабильно.
- Несколько классификаторов: параллельная обработка текста для определения услуги и типа возражения. Разметка данных заняла больше всего времени.
- Дообученная LLM: планировали fine-tuning Qwen или Llama на скриптах продаж. Отказались из-за высоких трудозатрат и риска ухудшения качества.
- Самообучающаяся система: успешные ответы должны были попадать в базу знаний и дообучать модель. Но реализация заняла бы 12–18 месяцев.
Мы пересмотрели подход и отказались от всего, что не вписывалось в сроки и требования.
Отказ от fine-tuning
Fine-tuning требовал большого объёма размеченных диалогов. У нас не было ни данных, ни разметчиков. Вместо этого выбрали RAG — Retrieval-Augmented Generation. Модель не учится всему заранее, а получает релевантную информацию из базы знаний в нужный момент.
Это сократило время разработки и снизило риск галлюцинаций.
Отказ от собственной транскрибации
В нашей телефонии Voximplant уже есть встроенный и качественный модуль транскрибации. Мы начали использовать его REST-интерфейс, получая готовые текстовые сегменты.
Это сэкономило минимум 2 месяца разработки и дало стабильный входной поток.
Упрощение классификаторов
Изначально у нас был многоклассовый классификатор возражений. Но после анализа реальных диалогов мы поняли: для MVP важнее не тип возражения, а его наличие.
Заменили классификатор на бинарный (есть/нет). Это резко повысило точность. Детализацией теперь занимается LLM, ищущая релевантные скрипты по ключевым словам.
Запуск на удалённой машине с мощным GPU ускорил обработку.
Замена векторной БД на JSON-словари
Для RAG мы подготовили базы знаний: справочник услуг и скрипты отработки возражений. Объём — несколько мегабайт.
Подключать тяжёлые векторные базы (Weaviate, Qdrant) было избыточно. Вместо этого загрузили структурированные JSON-файлы в память.
Поиск стал быстрым и не требовал сетевых вызовов. Сработал принцип KISS.
Облако vs локальная модель
Сначала тестировали GPT и другие облачные модели. Задержка — 7–20 секунд. Кроме того, ИБ запрещает передавать транскрипты во внешние сервисы.
Решение — развернуть модель на своём сервере. Установили Qwen 8B на GPU-сервер.
Ответы были чуть короче, чем у 32B-версии, но для подсказок этого хватало. Задержка стабилизировалась на уровне 2 секунд, все данные остались внутри периметра.
Вместо CRM — простой интерфейс за день
Интеграция с CRM была бы идеальной, но система переживала миграцию. Чтобы не ждать, бэкендер за день собрал интерфейс на Django: одна кнопка и поле вывода.
Этого хватило, чтобы показать прототип.
Финальная архитектура
Система превратилась в конвейер, отрабатывающий за 2 секунды:
- Транскрибация через Voximplant → текстовые сегменты.
- Классификация услуги и бинарная детекция возражения (BERT).
- Поиск релевантных скриптов в JSON-базе.
- Генерация подсказки через локальную Qwen 8B.
- Вывод результата на интерфейс.
Ключевые сложности и решения
Каждый ИИ-проект сталкивается с тремя вызовами: данные, инфраструктура, дедлайны. Вот как мы справились с основными.
Разметка — тонны ручной работы
Мы взяли 200 звонков и разделили их между 12 разработчиками. Уперлись в стену: разметка диалогов — кропотливый процесс, требующий понимания контекста и экспертизы.
Менеджеры-наставники размечали в разы быстрее. Мы поняли: в живом диалоге главное — понять, есть ли критическое возражение прямо сейчас.
Переформулировали задачу: не «научить ИИ думать», а «дать доступ к нужной информации в нужный момент».
Заменили многоклассовый классификатор на бинарный. Классификацию возражения теперь делает LLM при генерации подсказки. Это чуть увеличило задержку, но ускорило прогресс и улучшило качество.
2 секунды — не пожелание, а физическое ограничение
Подсказка должна приходить за 1,5–2 секунды. Иначе рушится динамика разговора.
Облачные API (GPT, DeepSeek) давали задержку 7–20 секунд. Плюс зависимость от внешней нагрузки и необходимость маскировки данных.
Развернули Qwen 8B на своём GPU-сервере. Ответы уложились в 2 секунды. Пожертвовали детализацией ради скорости и предсказуемости.
Безопасность данных — не бюрократия, а необходимость
Передача транскриптов с персональными данными во внешние сервисы нарушала политики ИБ. Рассматривали PII-маскер, но это добавило бы:
- Месяц разработки для загруженной команды ИБ.
- 200–500 мс задержки на запрос.
- Риск искажения контекста при маскировке.
Согласовали архитектуру с обработкой внутри периметра:
- Транскрибация — в облаке (Voximplant), но данные приходят в периметр.
- Обработка текста — на наших серверах.
- Генерация — локальной моделью на нашем железе.
Решение удовлетворило ИБ и решило проблему скорости.
Сложности связаны между собой
Мы поняли: проблемы взаимосвязаны. Задержки облачных моделей и требования безопасности — нашли единое решение в локальном развёртывании. Сложности с разметкой и скоростью — побеждены упрощением архитектуры.
Мы не боролись с проблемами — перепроектировали систему так, чтобы их не было. Этот подход оказался эффективнее точечных решений.
Метрики по итогам пилота
Технические показатели:
- Средняя задержка — 2 секунды. В 2–3% случаев — до 3 секунд (не критично).
- Точность классификации услуг — более 70%. Достаточно для MVP; знаем, как поднять до 90%.
- Качество распознавания речи — от 92%, зависит от качества связи.
«Суфлёр» прошёл пилот. Есть первые качественные результаты: обратная связь, юзабилити, снижение нагрузки на наставников. Для статистически значимых данных по конверсии и KPI нужно масштабирование. Сейчас фокус — на доработке архитектуры и интеграции в CRM. Как накопим данные — вернёмся с цифрами.
Выводы и рекомендации
Поделимся принципами, которые помогли нам и могут быть полезны другим командам.
Лучший ИИ решает конкретную боль
Начинайте не с «что можно сделать с ИИ», а с «какую проблему, которая стоит денег или времени, мы можем решить?».
Когда за технологией видна бизнес-цель, поддержку и ресурсы получить проще.
Чтобы провалидировать идеи, задавайте шесть вопросов:
- Рискуем ли деньгами или чем-то ещё из-за проблемы?
- Повторяется ли она массово?
- Можно ли получить эффект за 6–12 месяцев? Или решить без ИИ быстрее?
- Что даст применение ИИ в этом проекте? (если эффект разовый и дорогой — смысл теряется)
- Можно ли встроить решение в текущие процессы без революции?
- Можно ли масштабировать результат?
Инвестиции в своих людей окупаются
Можно было нанять внешних ML-инженеров. Вместо этого мы обучили своих IT-специалистов.
Получили экспертов, которые понимают ML и глубоко знают бизнес-процессы: CRM, телефонию, ограничения ИБ.
Они говорят на одном языке с заказчиками. Внешний эксперт потратил бы месяцы на погружение.
Внутренние ИИ-проекты — это не только продукт, но и инструмент развития экспертизы и удержания талантов. Команда, вырастившая решение с нуля, будет его защищать, развивать и масштабировать эффективнее подрядчиков.
Двигайтесь маленькими, но быстрыми шагами
Ключевой результат — рабочий прототип уже через 3 недели. Пусть с задержкой и простым интерфейсом — но он работал. Это дало команде уверенность, а бизнесу — веру в проект.
Мы придерживались правила: «сначала закройте 90% потребности простым способом». Последовательно отказывались от «важных, но не критичных» функций — fine-tuning, векторные базы, петля обратной связи — ради скорости.
Разбивали путь на короткие итерации с явным результатом. Делали не «идеально», а «работоспособно и полезно».
Коммуникация — часть технического дизайна
Сначала хотели молча разработать решение за несколько месяцев. Вовремя остановились и начали регулярно синхронизироваться с ИБ, инфраструктурой и бизнесом.
Рекомендуем с первого спринта включать ключевых стейкхолдеров: ИБ, инфраструктуру, комплаенс. Короткие демо и встречи раз в 1–2 недели помогают избежать переделок и ускоряют разработку.
Вместо MLOps — ML-стек под задачу
Наш финальный стек: FastAPI, PostgreSQL, локальная LLM, BERT-классификаторы. Без сложных MLOps-пайплайнов на старте.
Это дало контроль над производительностью и безопасностью.
«Коробочное» решение потребовало бы почти столько же усилий по интеграции, но лишило бы гибкости и скорости.
Выбирайте самый простой и контролируемый стек, который решает задачу сейчас. Например, локальная быстрая модель часто лучше облачной — продвинутой, но нестабильной.
Итог
Внедрение ИИ — это больше об инженерной культуре, управлении ожиданиями и умении делать сложные выборы. Главный навык, который мы получили, — отличать must have от could have и без сожаления отказываться от второго ради скорости и результата.
Команда прошла путь от группы разработчиков до внутреннего центра компетенций. Сейчас адаптируем «Суфлёра» для работы с оттоком — это лишь один из новых ИИ-проектов.
Если вы задумываетесь, можно ли стартовать ИИ-проект с бэкенд- или фулстек-разработчиками — наш опыт говорит: да, можно. Но готовьтесь к вызовам не в алгоритмах, а в системном дизайне, инфраструктуре и управлении данными.