Компания
О комапнии
olga@epoch8.co
Контакты
Кейсы

Чат-бот для сервиса услуг

AI-ассистенты и чат-боты
«Это было амбициозное, большое внедрение. На портале у наших заказчиков более 100 млн пользователей. Для проекта нужно было разработать сложный классификатор. Мы понимали, что результаты нашей работы увидят десятки миллионов человек. И конечно, это было для нас челленджем. К сожалению, назвать заказчика мы не можем — по условиям NDA. Но рассказать о проекте точно нужно».

– Андрей Татаринов, генеральный директор Epoch8.

Заказчик столкнулся с проблемой: пользователи сервиса обращались в чат поддержки, но операторов не всегда хватало для быстрого ответа. Наш чат-бот должен был подменить людей в моменты аврала.

Цель

Разработать систему, которая станет нулевой линией поддержки.

Задачи

  • Научить бота распознавать более 600 тем возможных вопросов.
  • Добавить возможность динамического управления диалогами.
  • Внедрить системы статистики и отчетности.
  • Предусмотреть нюансы бизнес-логики.

ЭТАПЫ

1 – Аналитика

На первом этапе мы определили, как бот будет распознавать темы вопросов. Для этого проанализировали примеры диалогов из чатов с реальными операторами, разработали ML-прототип и обучили тестовую модель классификации. Так мы убедились, что выбранный нами стек технологий подходит под задачи заказчика.

2 – Пилотная версия

Мы собрали тестовую версию чат-бота в миниатюре. Он обладал базовым функционалом, но был готов для демонстрации. Мы показали его заказчику и дали возможность с ним поработать. Заказчик протестировал его, предоставил обратную связь и одобрил полную интеграцию системы.

3 - Формализация сценариев

На этом этапе мы разрабатывали функции под нюансы бизнес-логики.
Например:
  • если клиент повторно задает вопрос по одной теме, его нужно перенаправить на оператора;
  • если операторы недоступны, бот не должен пытаться перевести клиента на них, даже если этого требует сценарий;
  • если внутренняя система сервиса выходит из строя, бот должен отвечать на вопросы о ней заранее заданным сообщением;
  • если бот не может полностью понять вопрос, но распознает его тему, он должен задать уточняющий вопрос.
«В какой-то момент штат операторов у заказчика вырос. И мы научили бота переводить пользователей не на операторов из общего пула, а к тем операторам, которые могут ответить на конкретный вопрос пользователя. При этом бот учитывал тематику всех последних вопросов пользователя, чтобы точнее определить группу, к которой его направить. Иными словами, чат-бот умеет подстраиваться под новые обстоятельства и условия».

– Андрей Татаринов, генеральный директор Epoch8.

4 - Классификация интентов

Интент — это класс или, проще говоря, ключевое слово. Мы классифицировали их по иерархии, чтобы бот мог понимать не только запросы вроде «восстановить утерянный паспорт», но и отдельное слово «паспорт».
Наша ML-модель была устроена сложнее, чем в классических чат-ботах.
Классический классификатор работает так: у него есть плоский список интентов, и он пытается определить, к какому из них относится фраза пользователя.
В нашем случае бот умеет отвечать на модифицированные вопросы. Если он сразу понял запрос — это хорошо. Если нет, он определит общую тему и продолжит работать в рамках этого интента, что повышает точность ответа.

5 - Внедрение

Затем мы подготовили стек для внедрения и провели интеграционное тестирование со всеми компонентами:

  • с чат-системой,
  • с системой сбора статистики,
  • с системами мониторинга заказчика.
После этого чат-бот был готов!

Стек

RASA

Это мощное опенсорс-решение для разработки чат-ботов. Все другие варианты нам кажутся либо слишком дорогими, либо недостаточно функциональными, поэтому мы выбрали этот фреймворк. Наши тесты и аналитика показали, что он полностью соответствует требованиям заказчика.
«RASA — это технический движок. Он параметризуется конфигами для сценариев и обучения моделей. У него есть технический интерфейс для обучения, есть механизмы для управления жизненным циклом моделей. У него есть API, интеграции с внешними системами: с Telegram, Skype, например. Есть возможность расширять его своими компонентами для коннекторов или для элементов бизнес-логики».

– Андрей Татаринов, генеральный директор Epoch8.

BOTFRONT

Это интерфейс, который позволяет описывать диалог в визуальном редакторе. Наша задача заключалась в создании удобной рабочей среды для копирайтеров заказчика. Botfront оказался наилучшим выбором – он дружелюбен по отношению к человеку, но при этом функционален. С его помощью можно легко анализировать диалог и вносить изменения в поведение бота.
КАК ОБУЧАЛИ:
Мы расширили стандартный классификатор, чтобы он мог одновременно обрабатывать несколько уровней запросов. Сначала классификатор определял, к какому верхнему уровню относится вопрос: например, это запрос о паспорте, вопрос типа «да/нет» или просьба перевести на оператора. Затем внутри каждой группы он снова выполнял задачу классификации, но уже только среди интентов этой категории. Например, если на первом шаге стало ясно, что запрос связан с паспортом, классификатор анализировал не все 600 интентов, а только те 10, которые относятся к группе «Паспорт».
Это повышает отзывчивость бота. Автор сценариев может использовать промежуточные группы, чтобы задавать уточняющие вопросы или внедрять любую другую логику взаимодействия.
Также мы дописали свои компоненты:
  • менеджер управления обученными моделями;
  • собственный классификатор;
  • компоненты взаимодействия с саппорт-системами.

РЕЗУЛЬТАТЫ

  • У заказчика появился удобный веб-интерфейс, в котором он сам может уточнять сценарии взаимодействия бота с системой.
  • Добавлена возможность загружать обучающие выборки для вопросов и задавать целевые ответы.
  • В интерфейсе появилась кнопка «Переобучить»: заказчик может задавать боту новые вводные самостоятельно.
  • Чат-бот отвечает на запросы менее чем за 1 секунду.
  • Он поддерживает несколько сценариев поведения.
  • Бот знает ответы по 600 темам сервиса.
  • Система выдерживает нагрузку до 10 запросов в секунду.

Над проектом работали:

  • Андрей Татаринов, СТО;
  • Алексей Ланских, менеджер проекта;
  • Антон Гречкин, тимлид.