{"id":14285,"url":"\/distributions\/14285\/click?bit=1&hash=346f3dd5dee2d88930b559bfe049bf63f032c3f6597a81b363a99361cc92d37d","title":"\u0421\u0442\u0438\u043f\u0435\u043d\u0434\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f","buttonText":"","imageUuid":""}

Как мы запустили чат-бот за два месяца

Всем привет! Мы команда искусственного интеллекта ДОМ.РФ, занимаемся автоматизацией процессов в нашем банке с применением машинного обучения и нейронных сетей. В основном это optical character recognition (OCR), однако в августе этого года нам поставили задачу запустить чат-бот в авторизованной зоне - в мобильном приложении. Задача бота - оказывать поддержку клиентам и высвобождать ресурс операторов.

Контекст

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

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

Начало пути к успеху

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

Больше ресурсов на бизнесовую часть физически у команды не было, однако начались активные поиски этих самых ресурсов на рынке труда, а если быть точным - продакта.

Из входных данных мы получили:

  • Решающее дерево старого чат-бота для неавторизованной зоны;
  • Доступ к голосовому боту и его модели классификации с обучающей выборкой.

Чат-бот должен охватывать все розничные продукты компании: ипотеку, карты, кредиты и все то, что доступно для клиента в мобильном приложении для физических лиц.

Фронт работ был следующий:

  • Разработать решающее дерево чат-бота, чтобы клиент имел возможность получить свой ответ, нажимая на кнопки;
  • Обучить NLU модель классификации, чтобы клиент имел возможность написать свой вопрос в чат и сразу получить ответ от чат-бота;
  • Написать тексты, которые будут покрывать тот или иной запрос клиента по продуктам.

Путь к успеху

Наша работа, как было упомянуто выше, разделилась на три больших блока.

Решающее дерево

Задача разработки решающего дерева включает в себя две большие подзадачи:

1. Проектирование решающего дерева

2. Внесение его в платформу чат-бота

Зачем проектировать новое дерево, если есть старое?

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

Процесс выглядел следующим образом: CPO (а потом продакт) полностью перерабатывал часть дерева, которая отвечает за один продукт. После чего шел к бизнесу и согласовывал дерево, объясняя, почему же оно лучше, чем старое.

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

После согласования дерева ML-разработчик вносил его на платформу, что является монотонным и трудоемки процессом.

Обучение NLU модели классификации

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

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

  • Написать обучающие примеры на каждый сценарий, чтобы модель имела возможность правильно распознать вопрос пользователя;
  • Поработать над параметрами модели, чтобы в конкретной ситуации она была наиболее эффективной.

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

Все знают, что ChatGPT – это очень сильный инструмент, с помощью которого можно решить практически любую задачу, если правильно написать промпт (запрос).

Делимся лайфхаком, как промпт выглядел у нас:

Привет! В данный момент я делаю бота, который будет выступать в качестве автоматической поддержки для пользователей продуктов банка. У меня уже есть сценарии, и мне необходимо написать фразы пользователей, на которые будут активироваться разные ответы. Давай я буду писать тебе ключевые слова для фраз, а ты составишь список вопросов, которые может задать пользователь на основании ключевых слов в сценарии. Вопросы должны быть не очень длинными, около 3-5 слов.

На что наш уважаемый ChatGPT ответил следующее:

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

После этого мы писали название сценария, и ChatGPT нам отвечал.

Генерация фраз помощью ChatGPT

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

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

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

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

Тексты

Мы подошли к вишенке на торте – текстам. Мы решили, что при каждом нажатии на кнопку необходимо выводить текст, это потенциально позволит клиенту увидеть искомую информацию как можно раньше. Так как мы изначально по собственному рабочему опыту продакта и CPO знали, что зачастую клиент в попытке найти информацию совершает максимум три перехода между кнопками, и если они ни к чему не привели, он либо уходит, либо вызывает оператора. Сейчас уже мы наблюдаем данное поведение в режиме реального времени. Так что ловите еще один лайфхак – чем менее глубокое у вас дерево, тем лучше.

Тексты, а если быть точным – их смысловое наполнение, также необходимо было согласовывать с бизнесом. Так как мы находимся не в контексте конкретно продукта, то, например, условия по дебетовой карте мы просто не могли писать сами.

Процесс был построен следующим образом:

  • бизнес присылал тексты на их усмотрение с наполнением, которое было необходимо исходя из структуры дерева;
  • мы (если быть точным, то наша бедная CPO, которая стала редактором на пару недель), исправляла тексты в соответствии с параллельно разработанным Tone of Voice.

Зачем вообще переписывать было?

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

Ресурса редактора у нас не было, поэтому CPO направила все свои усилия на релиз чат-бота. Выражаем за это безмерное уважение и даем еще один лайфхак:

Если вы руководитель и хотите, чтобы ваша команда "болела" за вас и ваши идеи, болейте и вы за команду в трудные для нее мгновения

Тут не обошлось без еще одного применения нейронки. Сформулировав Tone of Voice (ToV) специально для чат-ботов и получив тексты от бизнеса, мы пошли в YandexGPT и попросили модель переписать нам тексты в соответствии с нашим ToV. Иначе переписать 250+ текстов мы бы просто физически не успели.

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

Таким образом, мы прогнали тексты, немного подправили результат, загрузили на платформу в структуру уже внесенного дерева, и все было готово к запуску.

Успех

В результате ровно за два месяца мы:

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

Ингредиенты успеха:

  • Технический проджект, который способен решить любой вопрос с работой платформы, на которой строился чат-бот, и вовремя запушить всех коллег из бизнеса;
  • ML-инженер, который обучит модель и будет терпеливо вносить все сценарии;
  • Продакт, который спроектирует все ветки решающего дерева с учетом поведения клиента;
  • CPO, который всегда поможет советом и делом, а также сделает любую работу, на которую просто не остается никакого ресурса, но которую нужно сделать (брать CPO на роль "давайте я сделаю, иначе мы не успеем" – не лайфхак, а то, как делать не нужно, но все же);
  • Большое желание сделать что-то крутое и вовремя.

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

0
1 комментарий
Михаил Гладышев

Каких показателей удалось достичь? На сколько процентов снизилась нагрузка на операторов?

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда