Кейс. ДаБанкрот. ИИ-консультант. Как мы заменили половину штата технической поддержки искусственным интеллектом
В декабре 2024 к нам обратился Александр, руководитель ИТ-департамента федеральной компании ДаБанкрот.рф, с запросом на создание виртуального помощника. Идеальный конечный результат (ИКР) сформулировали так — ускорить время реакции и снизить нагрузку на службу сервиса компании ДаБанкрот.рф в ключевых процессах:
- Обработка лидов
- Заключение договора на поддержку в прохождении процедуры банкротства
- Юридическое сопровождение, подготовка к судебному заседанию
- Поддержка в процессе банкротства
Ежедневно служба поддержки обрабатывала от 100 до 300 обращений в рабочее время. Ключевая задача поддержки — окружить клиентов максимальным теплом и заботой, сохранить и усилить уверенность клиента в правильности принятого решения.
Ключевое требование заказчика — сохранить тёплые человеческие отношения с клиентом, сохранив инкогнито виртуального помощника — «Майя Аилова — Помощник по сопровождению».
Обучить виртуального помощника возможностям, релевантно и оперативно отвечать на вопросы — о взаимодействии клиента и компании в рамках процедуры банкротства, готовить ответ с опорой на контекст текущего процесса и данные в CRM.
Ожидаемый экономический эффект — внедрение ИИ сопоставимо с наймом четырёх сотрудников технической поддержки, работающих 24/7 без праздников и выходных.
Стек технологий
# | Сервис | Адрес сервиса | Описание |
---|---|---|---|
1
#
|
|
n8n.io | ИИ-агент с обучаемыми модулями — Retrieval-Augmented Generation (RAG). |
2
#
|
|
supabase.com | Платформа для запуска приложений на базе искусственного интеллекта с открытым исходным кодом. Интеграция проектов ИИ с базами данных Postgres, аутентификацией, мгновенными API, пограничными функциями, подписками в реальном времени, хранилищем данных и векторными внедрениями. |
3
#
|
|
openai.com | Искусственный интеллект № 1 в мире, выбор модели, распознавание текста, аудио, скриншотов с текстом. Имитация ответов, максимально приближенных к эксперту в заданной отрасли. |
4
#
|
|
cloud.llamaindex.ai | Сервис распознавания многострочных документов. |
На первом этапе собрали базу для обучения языковой модели.
# | Файл | Описание |
---|---|---|
1
#
|
Cases.txt | Пользовательские истории и сценарии общения с клиентом из реальной жизни. На основе которых осуществляется тестирование на этапе разработки и принимается решение об успешности проекта. |
2
#
|
FAQ.txt | Ответы на частые вопросы — накопленный опыт компании ДаБанкрот, собранный на основе статей с сайта и транскрибации видеороликов с YouTube-канала компании ДаБанкрот. |
3
#
|
Zakon.txt | Гражданский кодекс РФ. |
4
#
|
Книга знаний | Учебное пособие — документ, созданный для адаптации новых специалистов поддержки. |
На втором этапе провели разметку данных, преобразовав входные данные к приемлемому для ИИ виду:
# | Название | Описание | Тип таблицы |
---|---|---|---|
1
#
|
FAQ1 | FAQ1 — сценарии процесса № 14. | Пользовательская таблица |
2
#
|
Сценарии | Сценарии с переменными из CRM. | Пользовательская таблица |
3
#
|
n8n_chat_history | Создаётся n8n — при установке глубины контекста. | Системная таблица |
4
#
|
people_history | Определяем первое обращение за день. | Пользовательская таблица |
Три месяца разработки и тестирования закончились созданием схемы ИИ.
Общее количество узлов: 175
Уникальных типов узлов: 23
Таблица узлов:
# | Тип узла | Количество | Описание |
---|---|---|---|
1
#
|
n8n-nodes-base.httpRequest | 10 | Выполняет HTTP-запросы (GET, POST и др.) к внешним API. Используется для отправки данных или получения информации, например, к https://bitrix.da-bankrot.ru или api.cloud.llamaindex.ai. |
2
#
|
n8n-nodes-base.webhook | 2 | Принимает входящие вебхуки, запуская рабочий процесс. Примеры: «файлы» и «текст» с уникальными webhookId для обработки разных типов данных. |
3
#
|
n8n-nodes-base.wait | 2 | Приостанавливает выполнение процесса на заданное время или до события. Используется для синхронизации, например, «Wait» перед проверкой статуса. |
4
#
|
n8n-nodes-base.switch | 2 | Условно разделяет поток данных на основе заданных правил. Например, «Switch1» проверяет статус (SUCCESS, ERROR) для маршрутизации. |
5
#
|
n8n-nodes-base.aggregate | 7 | Объединяет данные из нескольких элементов в один набор. Пример: «Aggregate1» собирает все данные для дальнейшей обработки. |
6
#
|
n8n-nodes-base.merge | 18 | Комбинирует данные из нескольких источников. Пример: «Merge» объединяет данные по позиции для передачи в следующий узел. |
7
#
|
n8n/n8n-nodes-langchain.agent | 6 | Выполняет сложные задачи с использованием ИИ-агента. Пример: «AI Agent» обрабатывает текст с подключением к векторному хранилищу и OpenAI. |
8
#
|
n8n/n8n-nodes-langchain.lmChatOpenAi | 14 | Интеграция с OpenAI для обработки текста (чат-модель). Пример: «OpenAI Chat Model» использует gpt-4o с настройками температуры и penalty. |
9
#
|
n8n/n8n-nodes-langchain.memoryPostgresChat | 11 | Управляет памятью чата, сохраняя контекст в PostgreSQL. Пример: «Postgres Chat Memory1» привязан к dialog_id для сохранения истории. |
10
#
|
n8n/n8n-nodes-langchain.embeddingsOpenAi | 10 | Создаёт векторные представления текста с помощью OpenAI. Пример: «Embeddings OpenAI1» использует модель text-embedding-3-large. |
11
#
|
n8n-nodes-langchain.toolVectorStore | 3 | Инструмент для работы с векторным хранилищем. Пример: «Vector Store Tool» извлекает данные о банкротстве из Supabase. |
12
#
|
n8n/n8n-nodes-langchain.vectorStoreSupabase | 9 | Хранит и извлекает векторные данные из Supabase. Пример: «Supabase Vector Store» подключён к таблице documents. |
13
#
|
n8n/n8n-nodes-langchain.openAi | 5 | Выполняет задачи анализа текста, изображений или аудио через OpenAI. Пример: «OpenAI_Photo1» анализирует изображения. |
14
#
|
n8n/n8n-nodes-langchain.textClassifier | 5 | Классифицирует текст по заданным категориям. Пример: «Text Classifier» определяет, относится ли текст к office или Aggressive. |
15
#
|
n8n-nodes-base.postgres | 13 | Выполняет запросы к базе данных PostgreSQL. Пример: «Postgres» записывает данные в таблицу people_history. |
16
#
|
n8n-nodes-base.set | 3 | Устанавливает или изменяет значения полей в данных. Пример: «Edit Fields» задаёт параметры, такие как dialog_id, text1. |
17
#
|
n8n-nodes-base.if | 17 | Условное ветвление потока на основе заданных условий. Пример: «If» проверяет тип файла (image) для дальнейшей обработки. |
18
#
|
n8n/n8n-nodes-langchain.chainSummarization | 1 | Выполняет суммаризацию текста. Пример: «Summarization Chain» сокращает текст с помощью подключённой модели OpenAI. |
19
#
|
n8n-nodes-base.code | 34 | Выполняет пользовательский JavaScript-код для обработки данных. Пример: «Code3» может преобразовывать данные перед merge. |
20
#
|
n8n/n8n-nodes-langchain.chatMemoryManager | 19 | Управляет памятью чата, связывая данные с внешними запросами. Пример: «Chat Memory Manager» отправляет данные в HTTP-запрос. |
21
#
|
n8n-nodes-base.limit | 1 | Ограничивает количество элементов в потоке данных. Пример: «Limit1» ограничивает вывод из векторного хранилища. |
22
#
|
n8n/n8n-nodes-langchain.chainQuestionAnswering | 2 | Отвечает на вопросы, используя данные из векторного хранилища. Пример: «Question and Answer Chain» отвечает на запросы. |
23
#
|
n8n/n8n-nodes-langchain.vectorStoreRetriever | 1 | Извлекает данные из векторного хранилища для ответа на запросы. Пример: «Vector Store Retriever2» работает с Supabase. |
Как усовершенствовали блок CRM:
# | Что изменили |
---|---|
1
#
|
Управление использованием ИИ в открытых линиях на двух уровнях:
|
2
#
|
Механика «delay» — задержка в 2 минуты, не посылаем мгновенный ответ. Две цели — первая: дать возможность перехватить ответ оператору, вторая — отвечать не построчно на каждое предложение, а подкопить обращения и направить один ответ на запросы, направленные за последние две минуты. |
3
#
|
Если ответил менеджер в течение дня — ИИ перестаёт отвечать внутри дня, следующий ответ ИИ даст на следующий день, если будет новый запрос или если менеджер не ответит за запрос до конца предыдущего дня. |
4
#
|
Добавлять сотрудников в диалог открытых линий и обратно — иначе ИИ забирает диалог на себя. |
5
#
|
Ограничение использования ИИ по открытым линиям на период тестирования. |
6
#
|
ИИ подключён как чат-бот. Выбирали между вариантами подключения: чат-бот и сотрудник. |
7
#
|
Отдельные чаты с уведомлениями об отладке контура ИИ. |
Обучили RAG LLM отвечать на общие вопросы, несколько примеров:
Распознавание аудиофайлов и картинок с классификацией:
- Платёжные документы — чеки, квитанции
- Обращения в суд
- Решение суда о банкротстве
- Письма от кредиторов
- Заявления от кредиторов
.png)