Как роботизировать техподдержку с помощью машинного обучения
Служба техподдержки в крупной компании обычно обслуживает целый зоопарк сервисов, например: пару виртуальных АТС, онлайн-магазин, умный дом и охранную систему в придачу. У ребят всегда есть работа — тысячи звонков с сотнями проблем от подключения новых телефонных номеров, до отвалившихся IP-камер.
Чтобы упростить работу техподдержки, команда из нашего акселератора разработала автоматизированную систему на базе машинного обучения. Она запускается за 2 дня без подготовки и без помощи специалистов по data science.
Меня зовут Екатерина Мелькова, я тимлид группы продуктовых инноваций в КРОК. Сегодня мы с разработчиками расскажем, как AutoFAQ автоматизирует клиентскую и техническую поддержку.
Тысячи проблем и как их решить
Без автоматизации техподдержка крупной компании либо вечно перегружена типовыми обращениями и плохо справляется со сложными вопросами, либо разрастается и рискует развалиться на отдельные подразделения.
Для того чтобы разгрузить техническую поддержку, нужен интеллектуальный промежуточный слой. Он решит стандартные вопросы с помощью чат-бота на нулевой линии поддержки и облегчит работу оператора первой линии при помощи бота-ассистента.
Helpdesk — не проблема, на рынке много готовых решений, а вот запустить чат-бота уже сложнее. Чтобы клиенты его не возненавидели, нужно машинное обучение, а это значит: лингвисты, дата-сайентисты и тщательная разметка данных.
Затем нужно интегрировать бота с helpdesk и корпоративными сервисами и надеяться, что все это будет хорошо работать.
Гораздо проще использовать решение типа «все в одном», но цена некоторых подобных систем переваливает за десятки миллионов рублей в год. И им тоже требуется предварительное обучение.
Без обучения ты просто бесполезен!
Наша практика показывает, что даже у больших компаний редко есть качественные обучающие выборки. Вместо того чтобы ждать пока их подготовят, можно запустить бота и обучить его на практике.
С этой мыслью мы разработали единую систему обработки обращений для совместной работы людей и алгоритмов. Она получила название AutoFAQ, потому что для запуска не нужны обучающие выборки и долгая подготовка, достаточно FAQ с сайта компании.
UI и почему это не главное
Мы стремились к тому, чтобы нашим решением мог управлять пользователь без специальных знаний. Поэтому для сотрудников службы поддержки все выглядит просто и привычно.
С виду AutoFAQ напоминает стандартный helpdesk со списком тикетов, разделением по тематикам вопросов, очередями и окном чата. Из этого же интерфейса доступна история переписки, дашборды, отчетность.
Как и в других подобных сервисах, в AutoFAQ есть базы знаний. Но наши базы не просто шпаргалки для службы поддержки — это инструмент для машинного обучения. В них встроен механизм понимания вопросов.
Принципиальные отличия AutoFAQ от обычных helpdesk заметны после запуска системы. В окне оператора больше не появляются десятки сообщений ежеминутно. Происходит нечто другое.
Возможности чат-бота
Когда клиент связывается со службой техподдержки по email, через мессенджер, форму на сайте или одну из социальных сетей, в дело вступают алгоритмы машинного обучения.
Классификатор намерений определяет, в чем состоит вопрос, к какой базе знаний обратиться, и какая запись в базе содержит подходящий ответ.
Иногда клиенту нужна только информация. Например, он хочет узнать порядок перезаключения сервисного договора или где находится ближайший принтер. Тогда бот просто берет ответ из базы знаний.
У некоторых заказчиков до 30% тикетов покрываются такими простыми ответами. Однако, наш сервис может помочь, даже если для решения проблемы требуются активные действия службы поддержки.
Допустим, клиент пишет: «у меня интернет отваливается» или «камера барахлит», тогда бот вызывает соответствующий сценарий решения проблемы.
Через подключенные интеграции он идентифицирует пользователя и проверяет подключение к камере.
Если камера не отвечает, для начала бот посоветует проверить ее питание. Если отвечает — чат-бот предложит перезагрузить камеру, и после подтверждения сам отправит команду на перезагрузку. Если это не помогло, предложит следующее решение.
Когда бот не может решить задачу, в дело вступают сценарии регистрации заявок в ServiceDesk. Запрос пользователя классифицируется, для каждого класса бот собирает необходимые данные и регистрирует полностью заполненный и размеченный инцидент.
С помощью бота клиенты службы поддержки могут управлять заявками: просматривать, комментировать, вносить изменения.
Сценарии и интеграции
C помощью AutoFAQ можно автоматизировать многоступенчатые сценарии решения проблем.
Для этого мы предусмотрели упрощенный описательный DSL-язык. Он нужен для описания основных шагов взаимодействия бота с пользователем и различными сервисами.
Сценарии могут взаимодействовать с REST и SOAP сервисами. Через них можно формировать SQL запросы. Из коробки поддерживаются MS SQL Server, PostrgreSQL, MySQL и MariaDB. Чтобы реализовать сложную логику, в сценарии можно встроить произвольный JavaScript-код.
С описательной частью сценария без проблем справится бизнес-аналитик, а для работы с запросами и JS-блоками достаточно позвать джуниора.
Благодаря интеграциям, клиенты службы поддержки через чат-бота делают то, что раньше мог только оператор: сбрасывают пароли, подключают новые услуги, меняют тарифы и даже управляют конечными устройствами. Один из наших заказчиков использовал этот механизм, чтобы выстроить целый сервис для настройки и управления умным домом.
Чат-бот и операторы
Конечно, наш бот не идеален и порой не понимает клиентов. Если он не уверен в ответе, и никакие уточняющие вопросы не помогают, система переводит запрос на оператора.
Пока оператор общается с пользователем, бот анализирует диалог и пытается догадаться, какой ответ или сценарий действий уместен в этом случае. Когда система поймет, что к чему, оператор может снова переключить тикет на бота и перейти к следующей задаче.
Чтобы в дело вступил бот, нужно кликнуть на подсказку
Если вопрос оказался новым, или в базе знаний нет подходящего ответа, оператор разберется с проблемой самостоятельно. Ему доступны все те же системы, к которым подключен бот.
Под капотом
Мы хотели, чтобы AutoFAQ дообучалась на данных, собранных в процессе работы. Задачу осложняло то, что обучение должно было происходить без помощи лингвистов с их ключевыми словами и дата-сайентистов с гиперпараметрами.
Поэтому можно было сразу забыть о классических требованиях к обучающим выборкам. Мы готовились к тому, что перед запуском не будет данных, либо это будет сильно перекошенная выборка. Например, 80% вопросов будет относиться к паре проблем, а для остальных будет только по одному вопросу.
Чтобы система работала «из коробки», мы использовали нейронную сеть, предобученную на наших исследовательских проектах. Она отвечает за общение с клиентами службы поддержки, пока AutoFAQ не соберет данные на практике.
Это позволяет запускать AutoFAQ в работу с минимальной подготовкой и сразу получать хорошее понимание вопросов. Благодаря предобученной сетке бот понимает вопросы, сформулированные совершенно иначе, чем в примерах. Поэтому он нетребователен к объему и качеству обучающей выборки.
Конечно, у такого подхода есть проблемы. Система хорошо понимает общую лексику, но специфические выражения поначалу даются ей плохо. Поэтому мы предупреждаем заказчиков, что первое время чат-бот может ошибаться, и нагрузка на операторов будет уменьшаться постепенно.
Сразу после запуска AutoFAQ начинает накапливать обучающую выборку и повышать качество понимания вопросов. Чтобы система быстрее начала понимать специфические термины, мы предусмотрели словарь, который можно заполнить вручную.
Обучение на практике
Бот обучается, когда клиенты и операторы службы поддержки подтверждают связь вопроса с ответом, который хранится в базе знаний: либо клиент в диалоге с ботом дает понять, что ответ верный, либо оператор кликает по подсказкам, как в примере выше.
Благодаря этому механизму накапливается массив из различных формулировок одного и того же вопроса. Это позволяет системе лучше понимать людей.
Второй механизм, при помощи которого чат-бот увеличивает объем знаний, — пополнение баз новыми записями и примерами вопросов. Их можно составить и загрузить вручную, но в основном используется полуавтоматическое пополнение.
Всякий раз, когда робот не справляется с обработкой запроса, и на него отвечают операторы, генерируется рекомендация по пополнению баз.
Ответ оператора попадает в реестр рекомендаций. Затем администратор системы просматривает реестр, отбирает и группирует удачные рекомендации и нажатием одной кнопки вносит их в базу знаний.
После нажатия «опубликовать» AutoFAQ запускает подбор и обучение NLU-модели. Если база большая, этот процесс может занять всю ночь или потребовать для расчетов графический ускоритель
Собранная таким образом выборка все равно получается несбалансированной, но есть и плюс — она состоит из вопросов, которые актуальны здесь и сейчас.
Как только AutoFAQ накапливает достаточный объем данных, предобученный алгоритм отключается, пайплайн перестраивается, и в дело вступают модели, использующие обучение с учителем. Мы заранее не знаем, какой метод будет лучше справляться с данными клиента, поэтому встроили в AutoFAQ сразу несколько алгоритмов: от простых TF-IDF, до BERT и LASER.
Система проверяет объем и сбалансированность обучающей выборки. В зависимости от результатов формируется новый программный конвейер, подбираются алгоритмы и гиперпараметры.
Сперва используются простые модели — логистическая регрессия и SVM. По мере накопления выборки подключаются и нейронные сети. Выбор алгоритма может происходить на основе подсчета метрик классификации или при помощи предустановленных требований к обучающей выборке.
На практике, в AutoFAQ часто строятся ансамбли из нескольких алгоритмов. Система постоянно сравнивает их результаты по внутренним метрикам и выдает на выход наиболее уверенные ответы.
Интерфейс базы знаний позволяет без специальных знаний создавать новые классы, понимать причины тех или иных ответов и менять их, внося изменения в классификатор. Так что, AutoFAQ легко управлять, даже когда собирается огромная обучающая выборка.
Запуск AutoFAQ
Мы разбили AutoFAQ на микросервисы и упаковали в докер. Система не требует подключения к сторонним сервисам и работает в изолированной среде. Все ее компоненты дублируются. Они либо работают параллельно, либо запускаются по мере надобности.
Мы рассматривали Kubernetes, но оказалось, что для оркестрации нам хватает Docker Compose. Он упрощает процесс развертывания и не требует kubernetes-кластера.
В результате
AutoFAQ разворачивается за пару часов, подключается к практически любым текстовым каналам коммуникации от электронной почты до Slack и Skype for business. После этого система готова к работе — понимает письменную речь, начинает обрабатывать запросы в службу поддержки и накапливать базы знаний.
Чем больше обращений поступает в службу поддержки, тем лучше система их понимает и тем больше задач берет на себя. За 1–2 месяца AutoFAQ наполняет базу знаний, и автоматизация запускается в полную силу. Как правило, AutoFAQ решает порядка 45% обращений без помощи людей.
Система не заменяет операторов, но избавляет их от большинства рутинных запросов. У сотрудников службы поддержки появляется время на тщательный разбор сложных обращений.
Информация, разбросанная по разным документам у разных операторов, постепенно собирается в единую базу знаний. Отвечать на вопросы и искать решения проблем становится заметно проще.
Все это хорошо отражается на качестве поддержки. Уровень удовлетворенности клиентов у наших заказчиков в среднем не падает ниже 4 из 5 баллов. Но это уже заслуга сотрудников поддержки. Они настраивают новые интеграции, пополняют базы ответами на редкие вопросы и редактируют формулировки. Мы лишь разработали для них новый инструмент.
P.S. Если у вас остались вопросы по AutoFAQ, оставляйте их в комментариях или пишите на почту: EMelkova@croc.ru.