Сначала оказалось, что простые эвристики не работают. Ну вот совсем. То есть тупой чат-бот, который умеет распознавать с десяток жёстких тематик или показывать клавиатуру вроде «Нажмите 1, чтобы узнать свой баланс», несильно экономит время контакт-центру. Люди как не читали инструкции, так и не читают, а при виде такого сразу стремятся выйти на живого оператора.

То есть бот должен быть реально полезным. Таким, чтобы пользователь чувствовал, что диалог с ним — это не конкурс «обойти железного идиота», а что-то всё же даёт.

Здесь ждут следующие грабли: предположим, вы собрали всю базу диалогов контакт-центра с 2002 года. Разметили её и даже обучили на ней бота. Дальше произойдёт следующее:

  1. Либо актуальность этого обучения будет падать, и так же будет падать процент автоматизации. С каждым месяцем меняются тематики и запросы.
  2. Либо же вы можете переобучить модели слишком подробными выборками, которые имеют пересечения по категориям.

Речь идёт про то, что если обучать базу на всех диалогах без исключения так, как это подразумевает философия полной автоматизации, то очень быстро база начнёт забиваться откровенным мусором, снижающим точность классификации. Про это вендоры вам не скажут, но нужно либо постоянно что-то подкручивать, либо чистить выборку для обучения, либо обучать не на всех диалогах, которые закончились каким-то удовлетворительным ответом. Иначе очень быстро у вас перепутаются ответы для кредитных и дебетовых карт, например, потому, что клиенты либо путают их в своих стартовых запросах тоже, либо вообще не видят между ними разницы.

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

Почему бот всё же нужен


Живой человек, конечно, куда лучше бота. Он и телепат, и сразу подберёт нужный ответ, и ему можно рассказать про семью и внуков, да и клиентам он больше нравится, потому что вздыхает не по скрипту. Но когда мы говорим про банковский контакт-центр, операторы загнаны в скрипт почти так же сильно, как боты: слово влево или слово вправо могут очень сильно исказить финансовые данные или нарушить чью-то приватность, поэтому даже типовые фразы чаще всего нельзя переформулировать. Два фактических преимущества операторов — это возможность покрывать 100 % тематик диалога, а также эффективнее распознавать изначальный запрос клиента.

Боты в текущем виде — это необходимое зло. Точнее, это переходный этап от «железных идиотов» к нормальным системам помощи, которые работают быстрее и точнее операторов. Не использовать автоматизацию в том или ином виде современный банк уже не может себе позволить: начиная от контакт-центра на 50 операторов экономика с ботами и без начинает отличаться как небо и земля.

Суть челленджа — сделать как можно более полезного бота. Наша философия такая:

  • Бот встречает клиента в чате и пытается распознать его первую фразу (классифицирует обращение). Если получается понять вопрос достаточно точно — отвечает сразу по сути (чаще всего предлагает ещё какой-то персонализированный выбор с уточнениями).
  • Если скоринг ансамбля моделей по попыткам понять, чего же хочет клиент, низкий, то можно либо переспросить, либо сразу отправить к оператору.

То есть должно получаться так, что клиент задаёт первый вопрос «в никуда» и либо получает ответ по делу от бота (и уже всё равно, от кого он его получил, ведь ответ — по делу), либо же бот переключает его на оператора и говорит о том, что надо немного подождать.

Повторюсь: вопрос не в том, будет там встречать бот или оператор. В современном мире будет встречать только бот без вариантов. Вопрос в том, насколько этот бот будет мешать и бесить или помогать.

Именно в этом состоит челлендж.

Как оценить, что бот работает качественно


В 2018 году мы решили практически по фану создать небольшого самописного бота для «Телеграма» — просто разобраться в теме. Параллельно пробовали облачное решение для голосового бота (потому что классический древовидный IVR нас уже перестал устраивать). Как вы понимаете, эти проекты после прототипов обросли командой и доказали, что они полезны. Постепенно развитие голосового и чат-ботов стали большими стратегическими проектами банка и в итоге экономят сейчас сотни миллионов рублей в год на автоматизации. Естественно, с учётом поддержки и разработки. При этом чат-бот — полностью наша внутренняя разработка, а для голосового бота мы купили вендорское решение. У нас два параллельных решения с разными подходами, но решают они, по сути, одну и ту же задачу. А различия довольно заметные.



Первое, что было нужно понять, — как оценивать качество работы бота.

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

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

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

Стэк


Сейчас бот работает на следующем техническом стэке.

У нас микросервисы, элементы процесса вынесены в отдельные единицы. Сервисы, к примеру, отвечают за трансформацию данных, хранение расширенной истории интеракций с чат-ботом, отправку сервисных push-уведомлений. Непосредственно для ядра искусственного интеллекта вся интеграционная оболочка также сделана в этой концепции. Центральное место занимает сервис, который является буфером между платформой чата и ядром АI. В нём уже достаточно много функций. Он ведёт сложные сценарноориентированные диалоги, кэшируя ответы клиентов, осуществляет запросы по клиентским счетам и транзакциям, шаблонирование ответов с клиентскими данными. Большинство сервисов общается друг с другом, используя rest api, но там, где это позволяет бизнес-логика, мы используем интеграционную шину данных для взаимодействия. Стэк технологий — javascript, spingboot, react, kubernetes.

Микросервис ансамбля моделей — Python, в моделях глубокого обучения используется фреймворк Keras. Ядро переписывается на фреймворк PyTorch для использования новых моделей. Также для этих целей и расширения функциональной части в ближайшей перспективе рассматривается переход на новый стек — Faust + Cassandra + Kafka.

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

Что может пойти не так в долговременной перспективе


Упрощая, принцип работы выглядит так: пользователь пишет фразу, далее ансамбль моделей извлекает из неё «намерения», то есть некий базовый смысл, с которым можно сопоставить ветки диалогов из обучающей выборки. Если намерение находится достаточно точно, то можно говорить о запуске той или иной ветки диалога. Внутри ветки обычно всё проще: выборы делаются из нескольких вариантов либо пользователя просят ввести конкретные данные:


Продолжения диалогов обычно выглядят как простые ветвления, но таких веток может быть очень и очень много, например, когда нужно показать магазины-партнёры

Сегодняшний топ тем выглядит примерно так:

  • Нужна справка для заполнения декларации о доходах.
  • Вопросы про кредитные каникулы.
  • Нужна выписка по счёту.
  • Досрочное погашение кредита.
  • Рефинансирование кредита.
  • Убедиться, что кредит точно погашен.
  • Список магазинов-партнёров (это больше про программу лояльности «Польза»).
  • Уточнить срок возврата денег при отмене покупки.

Естественно, что обучающая выборка не может покрывать 100 % тематик. Сейчас мы покрываем около 90 %. Какие-то узкие запросы дешевле переводить на оператора, чем обучать робота. Какие-то запросы появляются прямо в моменте, потому что изменились обстоятельства. Какие-то запросы начинают мигрировать из группы в группу, из тематики в тематику. Какие-то тематики объединяются, какие-то — разделяются.

Вот ситуация марта — июня 2022 года: ЦБ ввёл лимит на снятие наличных долларов. Если раньше запрос «Сколько я могу снять баксов?» с высокой вероятностью означал ветку запроса долларового остатка на счету, то сейчас важен не сам баланс валютного счёта, а сколько ещё наличных можно снять в сравнении с лимитом ЦБ.

Соответственно происходит следующее: намерение «снять доллары» разделяется на два или мигрирует из тематики в тематику. Затем мы должны накопить где-то базу диалогов с операторами (не меньше 50 разных диалогов, а лучше 200–500), чтобы обучить на них бота правильно отвечать в такой ситуации. Как только у нас появится такое количество диалогов — можно создавать новую ветку.


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

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

Таким образом, база знаний постоянно обновляется при каждом новом диалоге с ботом или оператором: сейчас у нас 150 тысяч фраз в обучающей выборке, а всего год назад было 60 тысяч. Это около 800 тематик, по которым бот может помочь клиенту банка. Модели переучиваются с нуля на этой выборке три раза в день, соответственно релиз может выкатываться также с такой скоростью.

В отсрочке платежа в зависимости от причины и даты есть 85 возможных вариантов ведения диалога.

Всего не охвачено около 2 % тематик по количеству звонков: в «длинный хвост» попадает очень много редких единичных запросов.

По каждой тематике скоринг успешности работы бота считается отдельно. Условно, если уровень нашей оценки падает ниже 95 %, то нужно начинать разбираться, что произошло с запросами клиента. Это тот же процесс, что и при добавлении новой тематики: сначала нужно разобраться, что то, что клиент сформулировал, и то, чего он хотел, — одна и та же вещь (то есть он понимает разницу между продуктами, ну либо создать ветку так, чтобы эта разница уточнялась по ходу диалога). Затем подготовить диалоги для загрузки в обучающую выборку: мы корректируем опечатки по словарям и проводим ряд других преобразований, что превращает человекочитаемые фразы в наборы токенов с разным весом. То есть работает разметчик, который точно показывает структуру диалога и важные моменты для обучения. Без такой разметки качество ответов будет очень резко падать. Далее есть ещё один обработчик, который оценивает, насколько новые добавляемые диалоги в нашу тематику пересекаются с диалогами из других тематик: может оказаться так, что есть конфликт, и это снизит в итоге точность работы бота. Конфликты обрабатываются вручную всё на той же разметке. Это значит, что мы можем не добавлять какой-то диалог в обучение, убрать из базы знаний какой-то набор уже устаревших фраз или как-то поменять процесс. И база знаний, и ветки диалогов — динамические системы, которые меняются в зависимости от того, как меняются внешние обстоятельства. Просто оставить их без поддержки нельзя.

Например, у нас есть дебетовая карта «Польза», а есть кредитная. Вопросы по ним на 90 % идентичные, разница — в один токен. Если не разделить тематики очень жёстко, то и бот, и оператор могут наделать ошибок.

В голосовом боте, например, сейчас в обучающей выборке — 50 тысяч фраз, и каждый месяц при наращивании базы пересечений тематик становится всё больше и больше. Вендор на своей стороне постоянно меняет приоритеты тематик и доразмечает, на какие слова делать акцент при пересечениях. Мы же размечаем их изначально при пополнении базы.

К состоянию практического непересечения тематик мы пришли не сразу. В 2020 году, когда у нас было около 60 тысяч фраз в обучающей выборке, стало понятно, что появляется всё больше и больше терминальных случаев. Контент-менеджеры просто разбирали ветки диалогов бота и переразмечали тематики. Когда база стала достаточно хорошо размеченной и достаточно чистой — без случайных ответов клиентов, без абырвалгов и котов на клавиатуре, без перепутанных продуктов, без фрагментов биографии клиентов, без фраз на полстраницы с пятью разными проблемами (в итоге мы вообще очень сильно понизили приоритеты фраз длиннее 250 символов), когда поправили опечатки, объединили или разделили много намерений, — качество распознавания тематик очень сильно выросло.

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

Итог


С семи тысяч слабо размеченных фраз в обучающей выборке марта 2019 года мы выросли до 150 тысяч очень хорошо размеченных фраз сегодня. Доля полностью решённых запросов выросла с 17 % с релиза бота до 58 % в прошлом году. Из них от 76 до 80 % решается с первого обращения. В 80–86 % случаев пользователи ставят боту «пятёрку» за качество ответа. Бот в чате трудится так же, как трудились бы 200–250 операторов: в поддержке на пике над разбором базы работали пять контент-менеджеров (они же занимались разметкой). Сейчас работают три (ещё два занимаются голосовым ботом). Плюс в команде — три дата-сайнтиста.

Средняя скорость от получения фразы клиента до ответа бота в чате — порядка одной секунды (если не требуется получать дополнительную информацию о продуктах клиента из других сервисов банка), минимальное время ответа — 0,1 секунды.

Комментарии (27)


  1. nin-jin
    19.07.2022 14:49
    +4

    Ок, следующий челлендж: слабо сделать нормальный понятный и удобный интерфейс, а не чат-бота?


    1. Natally_B Автор
      19.07.2022 15:39
      -4

      Команда нашего мобильного банка работает над этим.


      1. Eugeeny
        19.07.2022 20:00
        +7

        Ну так и дайте ей ресурсов, вместо того чтобы лепить чатботов


  1. hard2018
    19.07.2022 15:09
    +6

    можно создать такую ситуацию, когда пользователи от безысходности научатся с ним общаться

    ну люди уйдут туда, где есть живые операторы, и всё


    1. Natally_B Автор
      19.07.2022 15:33
      +1

      Или ты учишь бота быть умным, или набираешь дополнительных людей в контактный центр — иного не дано.


    1. JediPhilosopher
      20.07.2022 11:40
      +1

      А такое еще где-то осталось?


  1. FlashHaos
    19.07.2022 15:49
    +4

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


    1. nin-jin
      19.07.2022 16:39
      +3

      Опыт подсказывает, что на выбранных технологиях - действительно сложно, а признать ошибку - гордость не позволяет. Вон, выше сказали, что целая команда работает над созданием этого меню.


    1. Natally_B Автор
      19.07.2022 16:42
      +1

      Если бы всё было так просто, то не нужно было бы нанимать контактные центры для ответов на вопросы клиентов. И какая-нибудь компания давно придумала бы идеальный интерфейс и закрыла бы контактный центр.

      Но это нереализуемо и невозможно. У разных клиентов — разное ощущение своего «удобного идеального» интерфейса. Как мы видим из общего потока обращений, красивым и понятным меню мобильного приложения закрыть 100% (или даже 80%) вопросов невозможно.


      1. nin-jin
        19.07.2022 16:52
        +1

        А какие чат-бот закрывает вопросы, которые не закрывает меню и поиск?


        1. Natally_B Автор
          19.07.2022 17:13
          +2

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

          И давайте все-таки не забывать, что "удобство" -- очень субъективная вещь. Мне удобно так, а другой, двадцатилетней Наташе удобно иначе, а третьей Наташе, которой 55, вообще не хочется лазить по меню. Она хочет, чтобы банк четко ответил на ее вопрос, а не послал диплинк и отправил решать проблему самой.


          1. nin-jin
            19.07.2022 17:57
            +1

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

            Натали, вы чат-бот? Если да, то я очень впечатлён. Можно мне такого вместо персонального менеджера? А то она иногда спит.

            И давайте все-таки не забывать, что "удобство" -- очень субъективная вещь.

            А эргономика - лженаука?

            Она хочет, чтобы банк четко ответил на ее вопрос, а не послал диплинк и отправил решать проблему самой.

            С этим и живые-то люди зачастую не справляются.


  1. Natally_B Автор
    19.07.2022 18:32
    +1

    Хотела бы ответить, что я бот, но тоже иногда сплю :)

    А про эргономику и прочее - конечно, я не могу отвечать за команду, разрабатывающую интерфейсы в мобильном приложении, но знаю, что ребята тестируют на клиентах интерфейсы перед выпуском, и, конечно, у нас есть контрольные группы и тд и тп, и я не отрицаю, что нам есть над чем работать, что команды и делают, но никакой идеальный интерфейс и меню не решит на 100% потребности клиентов.

    Лично я не могу себе представить и не видела такой «идеальный». Если подскажете, где обходятся без операторов одними интерфейсами и универсальным меню (которое может покрыть 1000+ разных запросов) - с удовольствием посмотрю и потестирую это «чудо».


    1. nin-jin
      19.07.2022 19:27
      +2

      Не, вы меня так просто не проведёте. Все боты говорят, что они живые люди, которые спят.

      Не знаю, что они там тестируют, но я вижу один и тот же не удобный интерфейс в каждом мобильном банке:

      В 99% случаев я выбираю что-то из избранного. У меня в избранном 16 элементов, которые совсем не помещаются в узкую строчку и приходится елозить пальцем туда-сюда. В 1% случаев я делаю кому-то перевод, кого нет в избранном. Список всех платежей мне нужен примерно никогда. Точнее лишь для заполнения избранного.

      Как было бы удобно: вывалить всё избранное сразу (я же не просто так добавляю в избранное наверное, да?). Плюс пара кнопок: "перевод человеку" и "оплата счёта" для выражения более редких намерений. Ниже можно расположить ленту последних платежей.*

      *Не является индивидуальной эргономической рекомендацией.


      1. Diamon33
        20.07.2022 00:09
        +1

        Я бы описал так - расширять избранное до размеров текущего экрана. Для особо клиентоориентированных - позволить настраивать количество и порядок элементов в избранном - либо увеличивая его почти до бесконечности, либо уменьшая масштаб иконок. Все остальное - под скролл!

        А на тему ботов, то создается ощущение, что это попытка создать универсальное "избранное".

        Оффтоп-1: Для многих кафе "Повторить заказ" - уже открытие, хотя чаще всего после того, как интересные позиции из меню попробованы - остается 1-2 ходовых.

        Оффтоп-2: Но ведь банковские приложения в России лучшие в мире /s


        1. AfoninaJu
          20.07.2022 11:51

          Привет.

          ..."Для особо клиентоориентированных - позволить настраивать количество и порядок элементов в избранном" .. - в приложении Хоум Кредит данная функция доступна.

          Ограничения на количество избранных шаблонов для переводов - нет.

          Изменение порядка шаблонов - доступно для всех пользователей.

          Хотим и конечно же сделаем папки для шаблонов — это для тех, кто любит порядок.<3


        1. dmbreaker
          20.07.2022 21:50

          "это попытка создать универсальное "избранное""

          Скорее это альтернатива поиску по приложению, причем в некоторых вопросах бывает гораздо удобнее бота спросить, нежели в приложении искать.


      1. Natally_B Автор
        20.07.2022 06:49
        +4

        Я обязательно передам коллегам ваши пожелания.


        1. dmbreaker
          20.07.2022 21:50
          +1

          ...Ваше сообщение очень важно для нас :)


  1. skygtr99113
    20.07.2022 07:02
    +3

    Почему вы думаете, что клиенту приятно общаться с тупым ботом, а не человеком? Вы зарабатываете на клиентах большие деньги, и пытаетесь экономить на контакт центре, не будет жлобами. Большинство людей умеют читать, просто не хотят этого делать, включая книги и т.д. Всегда проще услышать от другого человека.


    1. Natally_B Автор
      20.07.2022 08:14
      +1

      Если компания вкладывается в развитие ботов, то бот не просто не тупее человека, а показывает результат даже лучше. Да, практика пока показывает, что таких ботов на рынке мало и компании не знают/не хотят в их развитие вкладываться, но это не наша история. И именно поэтому мы хотели рассказать нашу историю.

      Несомненно, остаются люди, кто ни при каких условиях не хотят общаться с ботом и им нужно живое общение. Но мы видим положительный тренд - с 25% в 2019 году, кто требовал оператора сразу же, эта доля упала до 10%. Но и бот при этом за 3 года увеличил базу знаний в 15 раз.


    1. JediPhilosopher
      20.07.2022 11:46
      +2

      Потому что это бизнес? Поражаюсь наивности людей. Плевать всем на то, что вам там "приятно", компании просто оптимизируют издержки. Причем в крупных федеральных компаниях годовые издержки на колл-центры техподдержки исчисляются буквально миллиардами. Если сократить хотя бы половину сотрудников (а вместе с ними - и их руководителей, и офисы, и обслуживающий все это персонал), заменив чатботом - это колоссальная экономия и как следствие - увеличение прибыли. Даже учитывая, что для разработки чатботов нужны недешевые ИТ-специалисты - это все равно дешевле, чем кормить ОГРОМНУЮ армию живых операторов.

      И вы всерьез удивляетесь, зачем они это делают?


  1. mbait
    20.07.2022 07:34

    Идея для стартапа: соцсеть для знакомства любителей отправлять голосовые с любителями заменять поддержку чат-ботами.


  1. Gradiens
    20.07.2022 09:27
    +1

    Какова температура в Африке, говорите?

    Спасибо за подсказку, как обойти бота.

    Пока что моим основным методом было орать благим матом.

    Ну потому что боты - они просто продвинутая справка. Они не решают проблемы.


    1. Natally_B Автор
      20.07.2022 10:11
      -1

      Попробуйте попросить перевести на оператора. Для нашего чат-бота не нужно искать вопросы в энциклопедии или «орать благим матом». Все максимально просто.


      1. Newbilius
        20.07.2022 13:58

        Попробуйте попросить перевести на оператора.

        Увы, многие (не все!) боты уходят в бесконечный цикл «зачем вам оператор, давайте подскажу вам сам». Если у вас не так — спасибо.


        1. nin-jin
          20.07.2022 15:54

          Ходят слухи, что операторов специально обучают отвечать как роботы, чтобы не матерились на клиентов.