Как сделать виртуального помощника

Бот на нейросетках: как работает и учится виртуальный ассистент

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

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

В материале мы расскажем

Чат-бот vs виртуальный ассистент

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

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

Этап 1

Первый этап у чат-бота и виртуального ассистента один: мы прикидываем запросы пользователей и придумываем фразы, которые они могут написать. А затем прописываем, как робот будет действовать в ответ.

Базовый запрос понятен — подобрать вино. Но у этого запроса может быть много параметров: повод, цена, страна, цвет, сорт винограда. Возможно, пользователь сразу напишет название вина, которое нужно найти. Или уточнит детали: «А где оно сделано?». А может, из любопытства начнёт закидывать бота вопросами: «Какая бутылка самая дорогая в мире?» и так далее. При том кроме запросов по делу есть «привет», «пока», «как дела» и прочие small talk фразы, которые нужно задать.

Фантазировать можно бесконечно, но всё равно мы не сможем предугадать все вопросы пользователей. Когда нам кажется, что описанных ситуаций будет достаточно для покрытия 98% запросов, мы останавливаемся (хотя потом суровая реальность обломает и мы узнаем, что покрыто будет в лучшем случае 80%).

Затем раскидываем наши предположения о потребностях пользователей по конкретным запросам — намерениям. Намерения обозначают что хочет пользователь, но отбрасывают информацию о том, как он об этом написал. Этот этап у чат-ботов и ассистентов одинаковый.

Список намерений

Намерение 1 — хочу любое вино
Фразы:

— Помоги выбрать вино
— Какое вино посоветуешь?
— Хочу самое лучшее вино
— …
Что с этим делать: случайно выбрать одно из самых популярных вин и сообщить пользователю.

Намерение 2 — вино подешевле

— есть ли хорошие вина до 1000 рублей?
— а нет ничего дешевле?
— слишком дорого для меня
— …
Что делать: добавить к запросу фильтр на цену и выбрать одно из самых популярных вин.

Намерение 3 — хочу вино под мясо
Фразы:

— Посоветуй вино к стейку
— У меня на ужин будет гуляш. Что выпить?
— …
Что с этим делать: запрос в базу по критерию «к мясу», выбрать одно из самых популярных вин и сообщить пользователю.

… (и так ещё сотни разных намерений)

Намерение 290 — мы не поняли пользователя
Фразы: любые другие

Что делать: выдать фразу-заглушку: «Не знаю, что вы имели ввиду, но пинотаж Barista восхитителен в любое время года».

Этап 2

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

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

При разработке ассистента программист обучает алгоритм сравнивать реплики пользователя по лексическому смыслу. Это позволяет найти самое близкое намерение.

Выбор вина с чат-ботомВыбор вина с виртуальным AI-ассистентомЧто случилось
User: Привет! Хочу выбрать вино на ужин до 2000р
Bot: Здравствуйте!
Bot: В каком ценовом диапазоне ищем?
User: до 2000р
Bot: Могу порекомендовать Ramirez de la Piscina. В меру терпкий красавец из Испании подойдет и к ужину, и под любимый сериал. 1240₽ за бутылку
User: Привет! Хочу выбрать вино на ужин до 2000р
Assistant: Здравствуйте! Могу порекомендовать Ramirez de la Piscina. В меру терпкий красавец из Испании подойдет и к ужину, и под любимый сериал. 1240₽ за бутылку
Бот — пошел по ключевым словам выбрать+вино. Не понял ценовой диапазон и переспросил. Ассистент — пошел по самому близкому намерению и извлек ценовой диапазон.
User: Не люблю терпкое
Bot: Ваш кандидат — «Casillero del Diablo» Cabernet Sauvignon Reserva
Bot: Чилийский терпкий совиньон точно вас согреет. Всего 872₽
User: Не люблю терпкое
Assistant: Ваш кандидат — Antigal, «Uno» Malbec.
Assistant: Мягкий аргентинец прямиком из 2015. Цена за бутылку — 1101₽
Чат-бот ориентировался на ключевое слово «терпкое» и ошибся. А ассистент понял, что ближайшее к «Не люблю терпкое» намерение — мягкие вина.
User: Хорошо, что оно такое недорогое. Пожалуй, возьму его.
Bot: Тогда попробуйте «FYI» Red Blend
Bot: Несмотря на высокий рейтинг, его цена всего 557₽
Bot: Хороший выбор
User: Хорошо, что оно такое недорогое. Пожалуй, возьму его.
Assistant: Хороший выбор
Роботы обрабатывают предложения по одному. Господин чат-бот посмотрел на слово «недорогое», ответил по шаблону — в итоге не угадал и запутался. Ассистент просто проигнорировал первое предложение, так как понял второе.
Чат-ботВиртуальный ассистент
Чтобы понять пользователя, мы берём ключевые слова.
При создании чат-бота технологии машинного обучения и NLU не используются.
Чтобы понять пользователя, мы проводим «умное» сравнение и выбираем ближайшее намерение (чуть позже поясним, как это работает).
Машинное обучение и алгоритмы NLU позволяют нам измерить расстояние между репликами. Например, фраза «космический корабль» ближе к «самолету», чем «самокату». А от «продажи почки» — совсем далеко.
Подготовка: Для каждого намерения выписываем ключевые слова (вино_под_мясо: стейк, мясо, гуляш, вино+мясо)

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

Алгоритмы умеют отличать одни фразы от других — но можно ли сказать, что роботы действительно понимают язык?

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

Для наших задач вектора лексически близких фраз должны быть математически близки друг к другу, лексически отдаленные — подальше, вектора фраз из другой оперы — совсем далеко. Например, «хочу вино» ближе к «хочу белое вино», чем к «не хочу вино». А от «марс атакует» далеко.

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

Поэтому ответ на вопрос «Понимают ли роботы язык?» будет таким: они не понимают как человек, просто умеют сравнивать лексические смыслы и не путать теплое с мягким. Но когда алгоритмы смогут предложить наводящие уточнения и делать выводы, мы честно скажем: да, понимание настало. А пока «понимать язык» — это лишь красивое маркетинговое словосочетание.

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

Как мы научили робота понимать контекст: lialang

Для нормального саппорта роботам мало «понимать» естественный язык — важно, чтобы они могли отвечать на вопросы и оставаться в контексте. Для этого мы написали lialang — язык разметки диалогов, на котором можно описывать сценарии и передавать их роботу.

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

Рассмотрим простой пример — приветствие:

Выглядит как обычный код, но за конструкцией intent(…) работает нейросетка — lialang описывает диалог общими паттернами (“если тебя попросили то-то”) с помощью обычных программистских конструкций. Конечно, для того, чтобы это сработало, нужно применить машинное обучение и технологии NLU, ведь пользователь может написать свой запрос как угодно.

Мы ввели конструкцию «was», чтобы ловить неуместные приветствия в любом месте диалога:

Здесь написано: Lia, если тебе сказали «привет» — скажи в ответ привет. А если после этого вновь сказали «привет» — скажи, что уже здоровались.

Реакция — это действие, которое Lia должна выполнить в ответ на намерение. В 95% случаев это просто текст. Но также робот может вызывать функцию в коде, переключить общение на оператора или выполнить другие сложные действия.

Сам код отправки текста и функций существует отдельно от языка – язык максимально просто описывает ситуации.

Теперь попробуем написать штуку посложнее — в чате с банком клиенты часто запрашивают свои реквизиты. Давайте научимся отправлять их в чат и на почту с помощью lialang.

Здесь описаны две ситуации:

Lia научилась поддерживать сложные сценарии — в нужный для пользователя момент достанет/положит данные из/в CRM, отправит SMS, поможет с оплатой или поговорит о жизни.

Постепенно мы улучшали язык: добавили переменные, функции, сущности (даты, адреса, телефоны, имена, итп.), состояния и прочие полезные конструкции. Так писать на нём стало ещё удобнее.

Проверка кейсами: как мы автоматизировали поддержку в трёх банках

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

Мы запустились вполне успешно — особенно для продукта, который был создан за четыре месяца. Наш гибридный робот для «ВТБ» базировался на нейросетях и сразу был эффективным: отвечал больше чем на 800 вопросов, поддерживал несколько сложных сценариев (выписки, смена тарифа, настройка пользователей) и говорил как человек. В итоге за два месяца наша Lia на 74% снизила нагрузку на саппорт. Стало понятно: идея с автоматизацией поддержки работает.

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

Дальше мы на базе Lia автоматизировали FAQ в «Рокетбанке» и «ДелоБанке» — и за две недели закрыли 32% заявок без операторов.

Казалось бы, пришли к успеху пацаны. Однако после первых клиентов стало понятно, что концепцию надо менять. Это был ад — нам приходилось вручную дорабатывать сценарии, вносить правки, развивать ветки. Тоже самое, что с простыми ботами, только сложнее и требует больше сил. При таком раскладе масштабироваться было трудно.

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

Lia Platform и движок для интерфейсов

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

Поэтому мы стали думать над таким интерфейсом, который будет уметь всё, что умеет lialang. У него не будет проблем с вложенными ветками, переходами из одного сценария в другой, а главное — создавать сценарии смогут не только наши программисты, а все, кто захочет.

Смотрите, как это выглядит:

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

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

Как работает платформа для создания виртуальных ассистентов

Чтобы собрать собственного виртуального ассистента в Lia, пользователю нужно пройти через три этапа.

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

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

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

Со временем эффективность Lia будет расти. Сообщения, на которые робот не смог ответить, вновь распределяются по кластерам: например, «кто ты?», «ты кто?», «как тебя зовут?» и «ты робот?» попадут в одну группу. Так платформа полуавтоматически самообучается: пользователь видит, где пробел и закрывает его, добавляя новые сценарии — в результате процент покрытых запросов вырастает с 30% до 70% за полгода.

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

Шаг 2. Прописываем намерения: 10-20 вариантов самых частых запросов пользователя

На втором этапе прописываем намерения на основе 10-20 самых популярных запросов: такого количества вариантов достаточно благодаря нейронным сетям. Так фраза вроде «Я хочу заказать вино» обучает бота распознавать аналогичные запросы пользователей: например, «Получить вино» или «Заказать вино».

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

Ещё ассистент понимает и извлекает сущности: названия городов, телефоны, адреса, временные отметки, периоды, даты и ругательства — даже если писать в строчку «устал, привезите завтра ящик вина».

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

Шаг 3. Создаем сценарий: прописываем несколько вариантов ответов или действий

Здесь пользователь должен придумать ответы на запросы пользователей. 95% от среднестатического проекта обычно занимает простой сценарий Question-Answer — ответы на популярные вопросы.

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

Кстати, ассистент умеет отвечать картинками, видео и аудиофайлами, а если нужно отправит геолокацию.

Особую пользу несет конструкция jump to — благодаря ей Lia умеет переходить из одного сценария в другой, а затем возвращаться обратно, решая несколько задач. Это полезно, если в диалоге нужно отойти в сторону, но потом вернуться в нужное русло: например, задать уточняющий вопрос.

Пример диалога jump to:

Assistant: Нам нужно уточнить адрес доставки, так как получатель не отвечает.
Client: А по поводу чего? Какой заказ? (JumpTo на уточнение заказа)
Assistant: Заказ от 21 Августа, Antigal, «Uno» Malbec.
Assistant: Так сможем уточнить актуальный адрес доставки? (Возврат в главный сценарий)

Когда создатель хочет, чтобы его ассистент не только отвечал текстом, а совершал действия, он сможет позвать программиста, чтобы спец прописал JS-сниппеты. Мы позволяем запускать JavaScript прямо во время сценариев: обратиться к внешнему API, послать e-mail или сделать другое сложное действие.

4. Итог

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

Сборка умного ассистента в платформе занимает от пары часов до месяца. Затем робот учится реалистично понимать запросы и узнавать паттерны — на это уходит около шести месяцев (все это время его курирует живой человек). На робо-девочку Lia бизнес может скинуть большинство рутинных задач: от согласования доставки и вызова такси до консультации клиентов.

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

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

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

Мы рассчитываем, что прогнозы Gartner верны — и в 2022 году до 70% всех взаимодействий с клиентами будет проходить через какую-нибудь разновидность ИИ. По нашей задумке конструкторы вроде Lia помогут перекинуть клиентский сервис на роботов ещё быстрее.

Источник

Бот на нейросетках: как работает и учится виртуальный ассистент

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

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

В материале мы расскажем

Чат-бот vs виртуальный ассистент

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

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

Этап 1

Первый этап у чат-бота и виртуального ассистента один: мы прикидываем запросы пользователей и придумываем фразы, которые они могут написать. А затем прописываем, как робот будет действовать в ответ.

Базовый запрос понятен — подобрать вино. Но у этого запроса может быть много параметров: повод, цена, страна, цвет, сорт винограда. Возможно, пользователь сразу напишет название вина, которое нужно найти. Или уточнит детали: «А где оно сделано?». А может, из любопытства начнёт закидывать бота вопросами: «Какая бутылка самая дорогая в мире?» и так далее. При том кроме запросов по делу есть «привет», «пока», «как дела» и прочие small talk фразы, которые нужно задать.

Фантазировать можно бесконечно, но всё равно мы не сможем предугадать все вопросы пользователей. Когда нам кажется, что описанных ситуаций будет достаточно для покрытия 98% запросов, мы останавливаемся (хотя потом суровая реальность обломает и мы узнаем, что покрыто будет в лучшем случае 80%).

Затем раскидываем наши предположения о потребностях пользователей по конкретным запросам — намерениям. Намерения обозначают что хочет пользователь, но отбрасывают информацию о том, как он об этом написал. Этот этап у чат-ботов и ассистентов одинаковый.

Список намерений

Намерение 1 — хочу любое вино
Фразы:

— Помоги выбрать вино
— Какое вино посоветуешь?
— Хочу самое лучшее вино
— …
Что с этим делать: случайно выбрать одно из самых популярных вин и сообщить пользователю.

Намерение 2 — вино подешевле

— есть ли хорошие вина до 1000 рублей?
— а нет ничего дешевле?
— слишком дорого для меня
— …
Что делать: добавить к запросу фильтр на цену и выбрать одно из самых популярных вин.

Намерение 3 — хочу вино под мясо
Фразы:

— Посоветуй вино к стейку
— У меня на ужин будет гуляш. Что выпить?
— …
Что с этим делать: запрос в базу по критерию «к мясу», выбрать одно из самых популярных вин и сообщить пользователю.

… (и так ещё сотни разных намерений)

Намерение 290 — мы не поняли пользователя
Фразы: любые другие

Что делать: выдать фразу-заглушку: «Не знаю, что вы имели ввиду, но пинотаж Barista восхитителен в любое время года».

Этап 2

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

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

При разработке ассистента программист обучает алгоритм сравнивать реплики пользователя по лексическому смыслу. Это позволяет найти самое близкое намерение.

Выбор вина с чат-ботомВыбор вина с виртуальным AI-ассистентомЧто случилось
User: Привет! Хочу выбрать вино на ужин до 2000р
Bot: Здравствуйте!
Bot: В каком ценовом диапазоне ищем?
User: до 2000р
Bot: Могу порекомендовать Ramirez de la Piscina. В меру терпкий красавец из Испании подойдет и к ужину, и под любимый сериал. 1240₽ за бутылку
User: Привет! Хочу выбрать вино на ужин до 2000р
Assistant: Здравствуйте! Могу порекомендовать Ramirez de la Piscina. В меру терпкий красавец из Испании подойдет и к ужину, и под любимый сериал. 1240₽ за бутылку
Бот — пошел по ключевым словам выбрать+вино. Не понял ценовой диапазон и переспросил. Ассистент — пошел по самому близкому намерению и извлек ценовой диапазон.
User: Не люблю терпкое
Bot: Ваш кандидат — «Casillero del Diablo» Cabernet Sauvignon Reserva
Bot: Чилийский терпкий совиньон точно вас согреет. Всего 872₽
User: Не люблю терпкое
Assistant: Ваш кандидат — Antigal, «Uno» Malbec.
Assistant: Мягкий аргентинец прямиком из 2015. Цена за бутылку — 1101₽
Чат-бот ориентировался на ключевое слово «терпкое» и ошибся. А ассистент понял, что ближайшее к «Не люблю терпкое» намерение — мягкие вина.
User: Хорошо, что оно такое недорогое. Пожалуй, возьму его.
Bot: Тогда попробуйте «FYI» Red Blend
Bot: Несмотря на высокий рейтинг, его цена всего 557₽
Bot: Хороший выбор
User: Хорошо, что оно такое недорогое. Пожалуй, возьму его.
Assistant: Хороший выбор
Роботы обрабатывают предложения по одному. Господин чат-бот посмотрел на слово «недорогое», ответил по шаблону — в итоге не угадал и запутался. Ассистент просто проигнорировал первое предложение, так как понял второе.
Чат-ботВиртуальный ассистент
Чтобы понять пользователя, мы берём ключевые слова.
При создании чат-бота технологии машинного обучения и NLU не используются.
Чтобы понять пользователя, мы проводим «умное» сравнение и выбираем ближайшее намерение (чуть позже поясним, как это работает).
Машинное обучение и алгоритмы NLU позволяют нам измерить расстояние между репликами. Например, фраза «космический корабль» ближе к «самолету», чем «самокату». А от «продажи почки» — совсем далеко.
Подготовка: Для каждого намерения выписываем ключевые слова (вино_под_мясо: стейк, мясо, гуляш, вино+мясо)

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

Алгоритмы умеют отличать одни фразы от других — но можно ли сказать, что роботы действительно понимают язык?

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

Для наших задач вектора лексически близких фраз должны быть математически близки друг к другу, лексически отдаленные — подальше, вектора фраз из другой оперы — совсем далеко. Например, «хочу вино» ближе к «хочу белое вино», чем к «не хочу вино». А от «марс атакует» далеко.

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

Поэтому ответ на вопрос «Понимают ли роботы язык?» будет таким: они не понимают как человек, просто умеют сравнивать лексические смыслы и не путать теплое с мягким. Но когда алгоритмы смогут предложить наводящие уточнения и делать выводы, мы честно скажем: да, понимание настало. А пока «понимать язык» — это лишь красивое маркетинговое словосочетание.

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

Как мы научили робота понимать контекст: lialang

Для нормального саппорта роботам мало «понимать» естественный язык — важно, чтобы они могли отвечать на вопросы и оставаться в контексте. Для этого мы написали lialang — язык разметки диалогов, на котором можно описывать сценарии и передавать их роботу.

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

Рассмотрим простой пример — приветствие:

Выглядит как обычный код, но за конструкцией intent(…) работает нейросетка — lialang описывает диалог общими паттернами (“если тебя попросили то-то”) с помощью обычных программистских конструкций. Конечно, для того, чтобы это сработало, нужно применить машинное обучение и технологии NLU, ведь пользователь может написать свой запрос как угодно.

Мы ввели конструкцию «was», чтобы ловить неуместные приветствия в любом месте диалога:

Здесь написано: Lia, если тебе сказали «привет» — скажи в ответ привет. А если после этого вновь сказали «привет» — скажи, что уже здоровались.

Реакция — это действие, которое Lia должна выполнить в ответ на намерение. В 95% случаев это просто текст. Но также робот может вызывать функцию в коде, переключить общение на оператора или выполнить другие сложные действия.

Сам код отправки текста и функций существует отдельно от языка – язык максимально просто описывает ситуации.

Теперь попробуем написать штуку посложнее — в чате с банком клиенты часто запрашивают свои реквизиты. Давайте научимся отправлять их в чат и на почту с помощью lialang.

Здесь описаны две ситуации:

Lia научилась поддерживать сложные сценарии — в нужный для пользователя момент достанет/положит данные из/в CRM, отправит SMS, поможет с оплатой или поговорит о жизни.

Постепенно мы улучшали язык: добавили переменные, функции, сущности (даты, адреса, телефоны, имена, итп.), состояния и прочие полезные конструкции. Так писать на нём стало ещё удобнее.

Проверка кейсами: как мы автоматизировали поддержку в трёх банках

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

Мы запустились вполне успешно — особенно для продукта, который был создан за четыре месяца. Наш гибридный робот для «ВТБ» базировался на нейросетях и сразу был эффективным: отвечал больше чем на 800 вопросов, поддерживал несколько сложных сценариев (выписки, смена тарифа, настройка пользователей) и говорил как человек. В итоге за два месяца наша Lia на 74% снизила нагрузку на саппорт. Стало понятно: идея с автоматизацией поддержки работает.

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

Дальше мы на базе Lia автоматизировали FAQ в «Рокетбанке» и «ДелоБанке» — и за две недели закрыли 32% заявок без операторов.

Казалось бы, пришли к успеху пацаны. Однако после первых клиентов стало понятно, что концепцию надо менять. Это был ад — нам приходилось вручную дорабатывать сценарии, вносить правки, развивать ветки. Тоже самое, что с простыми ботами, только сложнее и требует больше сил. При таком раскладе масштабироваться было трудно.

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

Lia Platform и движок для интерфейсов

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

Поэтому мы стали думать над таким интерфейсом, который будет уметь всё, что умеет lialang. У него не будет проблем с вложенными ветками, переходами из одного сценария в другой, а главное — создавать сценарии смогут не только наши программисты, а все, кто захочет.

Смотрите, как это выглядит:

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

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

Как работает платформа для создания виртуальных ассистентов

Чтобы собрать собственного виртуального ассистента в Lia, пользователю нужно пройти через три этапа.

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

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

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

Со временем эффективность Lia будет расти. Сообщения, на которые робот не смог ответить, вновь распределяются по кластерам: например, «кто ты?», «ты кто?», «как тебя зовут?» и «ты робот?» попадут в одну группу. Так платформа полуавтоматически самообучается: пользователь видит, где пробел и закрывает его, добавляя новые сценарии — в результате процент покрытых запросов вырастает с 30% до 70% за полгода.

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

Шаг 2. Прописываем намерения: 10-20 вариантов самых частых запросов пользователя

На втором этапе прописываем намерения на основе 10-20 самых популярных запросов: такого количества вариантов достаточно благодаря нейронным сетям. Так фраза вроде «Я хочу заказать вино» обучает бота распознавать аналогичные запросы пользователей: например, «Получить вино» или «Заказать вино».

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

Ещё ассистент понимает и извлекает сущности: названия городов, телефоны, адреса, временные отметки, периоды, даты и ругательства — даже если писать в строчку «устал, привезите завтра ящик вина».

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

Шаг 3. Создаем сценарий: прописываем несколько вариантов ответов или действий

Здесь пользователь должен придумать ответы на запросы пользователей. 95% от среднестатического проекта обычно занимает простой сценарий Question-Answer — ответы на популярные вопросы.

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

Кстати, ассистент умеет отвечать картинками, видео и аудиофайлами, а если нужно отправит геолокацию.

Особую пользу несет конструкция jump to — благодаря ей Lia умеет переходить из одного сценария в другой, а затем возвращаться обратно, решая несколько задач. Это полезно, если в диалоге нужно отойти в сторону, но потом вернуться в нужное русло: например, задать уточняющий вопрос.

Пример диалога jump to:

Assistant: Нам нужно уточнить адрес доставки, так как получатель не отвечает.
Client: А по поводу чего? Какой заказ? (JumpTo на уточнение заказа)
Assistant: Заказ от 21 Августа, Antigal, «Uno» Malbec.
Assistant: Так сможем уточнить актуальный адрес доставки? (Возврат в главный сценарий)

Когда создатель хочет, чтобы его ассистент не только отвечал текстом, а совершал действия, он сможет позвать программиста, чтобы спец прописал JS-сниппеты. Мы позволяем запускать JavaScript прямо во время сценариев: обратиться к внешнему API, послать e-mail или сделать другое сложное действие.

4. Итог

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

Сборка умного ассистента в платформе занимает от пары часов до месяца. Затем робот учится реалистично понимать запросы и узнавать паттерны — на это уходит около шести месяцев (все это время его курирует живой человек). На робо-девочку Lia бизнес может скинуть большинство рутинных задач: от согласования доставки и вызова такси до консультации клиентов.

Как сделать виртуального помощника. Смотреть фото Как сделать виртуального помощника. Смотреть картинку Как сделать виртуального помощника. Картинка про Как сделать виртуального помощника. Фото Как сделать виртуального помощника

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

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

Мы рассчитываем, что прогнозы Gartner верны — и в 2022 году до 70% всех взаимодействий с клиентами будет проходить через какую-нибудь разновидность ИИ. По нашей задумке конструкторы вроде Lia помогут перекинуть клиентский сервис на роботов ещё быстрее.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *