Привет, Хабр! Сегодня мы расскажем, как решать с помощью Azure задачи, которые обычно требуют человеческого участия. Операторы тратят много времени, чтобы отвечать на одни и те же вопросы, обрабатывать телефонные звонки и текстовые сообщения. Чат-боты автоматизируют общение и распознавание и позволяют снизить нагрузку на людей. Также боты используются в Azure DevOps, где позволяют, например, утверждать релизы, управлять сборками — просматривать, запускать и останавливать — прямо из Slack или Microsoft Teams. По сути, чат-бот в чем-то напоминает CLI, только интерактивный, и позволяет разработчику не выходить из контекста обсуждения в чате.
В этой статье мы поговорим об инструментах для создания чат-ботов, покажем, как их можно улучшить с помощью когнитивных сервисов, и опишем, как ускорить разработку благодаря готовым сервисам в Azure.

Чат-боты и когнитивные сервисы: чем похожи и в чем различие
Для создания ботов в Microsoft Azure используются служба Azure Bot и платформа Bot Framework. Вместе они представляют собой набор ПО для сборки, тестирования, развертывания и администрирования ботов, который позволяет создавать из готовых модулей как простые, так и продвинутые системы общения с поддержкой речи, распознаванием естественного языка и другими возможностями.
Предположим, что вам необходимо реализовать простой бот на базе корпоративного сервиса вопросов и ответов или, наоборот, создать функциональный бот со сложной разветвленной системой общения. Для этого можно воспользоваться рядом инструментов, условно разделенных на три группы:
- Сервисы быстрой разработки диалоговых интерфейсов (ботов).
- Готовые когнитивные сервисы ИИ под разные сценарии использования (распознавание образов, речи, база знаний и поиск).
- Сервисы создания и обучения моделей ИИ.
Обычно люди интуитивно смешивают «ботов» и «когнитивные сервисы», потому что в основе обоих понятий лежит принцип общения, а в сценарии использования ботов и сервисов есть диалоги. Но чат-боты работают с ключевыми словами и триггерами, а когнитивные сервисы — с произвольными запросами, которые обычно обрабатываются людьми:

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

Для проектирования и разработки ботов в Azure используется . На GitHub есть , возможности фреймворка меняются, поэтому необходимо учитывать версию SDK, которая используется в ботах.
Фреймворк подразумевает несколько вариантов создания ботов: с помощью классического кода, инструментов командной строки или блок-схем. Последний вариант визуализирует диалоги, для этого можно использовать менеджер . Он создавался на базе Bot Framework SDK как наглядный инструмент разработки, который междисциплинарные команды могли бы использовать для создания ботов.

Bot Framework Composer позволяет с помощью блоков создать структуру диалога, с которой будет работать бот. Дополнительно можно создавать триггеры, то есть ключевые слова, на которые бот будет реагировать во время диалога. К примеру, на слова «оператор», «кража» или «стоп» и «хватит».
В Bot Framework Composer можно создать сложно разветвленную систему диалогов, используя . Диалоги могут использовать как когнитивные сервисы, так и карточки событий (Adaptive Cards):

После создания можно развернуть чат-бота в подписке, причем автоматически подготовленный скрипт создаст все необходимые ресурсы: когнитивные сервисы, Application plan, Application Insights, базу данных и так далее.
QnA Maker
Для создания простых ботов на основе корпоративных БД вопросов и ответов можно использовать когнитивный сервис QnA Maker. Реализованный в виде простого веб-визарда, он позволяет подать на вход ссылку на корпоративную базу знаний (FAQ Urls) или взять за основу базу документов в формате *.doc или *.pdf. После создания индекса бот будет сам подбирать наиболее подходящие ответы на вопросы пользователя.
С помощью QnAMaker можно также создавать цепочки уточняющих вопросов с автоматическим созданием кнопок, дополнять базу знаний метаданными и дообучать сервис в процессе использования.
Сервис может использоваться как чат-бот, реализующий только одну эту функцию, либо как часть сложного чат-бота, использующего, в зависимости от запроса, и другие сервисы ИИ или элементы Bot Framework.
Работа с другими когнитивными сервисами
На платформе Azure много разных когнитивных сервисов. Технически это самостоятельные веб-сервисы, которые можно вызывать из кода. В ответ сервис присылает json определенного формата, который можно использовать в чат-боте.

Чаще всего в чат-ботах могут использоваться следующие:
- Распознавание текста.
- Распознавание определяемых разработчиком категорий образов Custom Vision Service (производственный кейс: распознавание, надел ли сотрудник каску, защитные очки или маску).
- Распознавание лиц (отличный кейс использования — проверка, свое ли лицо разместил анкетируемый, или, скажем, фото собачки или фото человека другого пола).
- Распознавание речи.
- Анализ изображений.
- Перевод (все мы помним, сколько шума наделал синхронный перевод в Skype).
- Проверка орфографии и предложения по исправлению ошибок.
LUIS
Также для создания ботов может потребоваться (Language Understanding Intelligent Service). Задачи сервиса:
- Определять, имеет ли смысл высказывание пользователя и необходима ли реакция бота.
- Сокращать усилия по транскрипции речи (текста) пользователя в понятные боту команды.
- Прогнозировать истинные пользовательские цели/намерения и извлекать ключевые сведения из фраз в диалоге.
- Дать возможность разработчику осуществлять запуск бота с использованием всего нескольких примеров распознавания смысла и последующим дообучением бота в процессе работы.
- Дать возможность разработчику использовать визуализацию для оценки качества транскрипции команд.
- Помочь в поэтапных улучшениях распознавания истинных целей.
По сути, главная цель LUIS — с определенной вероятностью понять, что имел в виду пользователь и конвертировать естественный запрос в стройную команду. Для распознавания значений запросов LUIS использует набор интентов (смыслов, намерений) и сущностей (либо предварительно настроенных разработчиками, либо взятых и заранее сформированных «доменов» – некоторых готовых библиотек типовых фраз, подготовленных Microsoft).
Простой пример: у вас есть бот, выдающий прогноз погоды. Для него интентом будет перевод естественного запроса в «действие» – запрос прогноза погоды, а сущностями – время и место. Приведем схему работы интента CheckWeather для такого бота.
Интент
Сущность
Пример естественного запроса
CheckWeather
{«type»: «location», «entity»: «moscow»}
{«type»: «builtin.datetimeV2.date», «entity»: «future »," resolution ":" 2020-05-30 "}
Какая погода будет завтра в Москве
CheckWeather
{ «type»: «date_range», «entity»: «this weekend» }
Покажи мне прогноз для этих выходных
Для сочетания QnA Maker и LUIS можно использовать .

Когда вы работаете с QnA Maker и получаете запрос от пользователя, то система определяет, с каким процентом вероятности ответ из QnA подходит для запроса. Если вероятность высокая, пользователю просто выдается ответ из корпоративной базы знаний, если низкая — запрос может быть отправлен в LUIS для уточнения. Использование Dispatcher позволяет не программировать эту логику, а автоматически определять эту грань разделения запросов и оперативно их распределять.
Тестирование и публикация бота
Для тестирования используется еще одно локальное приложение, . С помощью эмулятора можно общаться с ботом и проверять сообщения, которые он отправляет и получает. Эмулятор отображает сообщения так, как они будут выглядеть в интерфейсе веб-чата, и регистрирует запросы и ответы JSON при обмене сообщениями с ботом.
Пример использования эмулятора представлен в этой демонстрации, где показывается создание виртуального ассистента для BMW. Также в видео рассказывается о новых акселераторах для создания чат-ботов – темплейтах:

Вы также можете использовать темплейты при создании своих чат-ботов.
Темплейты позволяют не писать типовые функции бота заново, а добавлять уже готовый код в качестве «навыка». Примером может быть работа с календарем, назначение встреч и т. п. Код готовых навыков на github.
Тестирование прошло успешно, бот готов, и теперь его надо опубликовать и подключить каналы. Публикация осуществляется средствами Azure, а в качестве каналов можно использовать мессенджеры или социальные сети. Если нет нужного канала для входа данных, можно поискать его в соответствующем комьюнити на GitHab.
Также для создания полноценного чат-бота в качестве интерфейса общения с пользователем и когнитивными сервисами вам, конечно, понадобятся дополнительные сервисы Azure, такие как базы данных, serverless (Azure Functions), а также сервисы LogicApp и, возможно, Event Grid.

Оценка и аналитика
Для оценки взаимодействия с пользователями можно использовать как встроенную аналитику Azure Bot Service, так и специальный сервис Application Insights.
В результате можно собирать информацию по следующим критериям:
- Сколько пользователей получили доступ к боту из различных каналов за выбранный промежуток времени.
- Сколько пользователей, отправивших одно сообщение, вернулись позже и отправили еще одно.
- Сколько действий было отправлено и получено с помощью каждого канала за указанный интервал времени.
При помощи Application Insights можно мониторить любые приложения в Azure и, в частности, чат-боты, получая дополнительные данные о поведении пользователей, нагрузках и реакции чат-бота. Нужно отметить, что сервис Application Insights имеет свой интерфейс на портале Azure.
Также данные, собранные через этот сервис, можно использовать для создания дополнительных визуализаций и аналитических отчетов в PowerBI. Пример такого отчета и темплейт для PowerBI можно взять .

Всем спасибо за внимание! В этой статье мы использовали из вебинара архитектора Microsoft Azure, Анна Фенюшиной «Когда люди не успевают. Как на 100% использовать чат-боты и когнитивные сервисы для автоматизации рутинных процессов», на котором мы наглядно показывали, что такое чат-боты в Azure и каковы сценарии их применения, а также демонстрировали, как за 15 минут создать бота в QnA Maker и как расшифровывается структура запросов в LUIS.
Мы сделали этот вебинар в рамках онлайн-марафона для разработчиков Dev Bootcamp. На нем речь шла о продуктах, которые ускоряют разработку и снимают часть рутинной нагрузки с сотрудников компании с помощью инструментов автоматизации и готовых преднастроенных модулей Azure. Записи других вебинаров, которые вошли в марафон, доступны по ссылкам:
-
Рассказываем об эволюции и новых возможностях сервиса Azure DevOps. В деталях разбираем все пять основных его компонентов и то, как сервис помогает организации промышленной разработки программного обеспечения. Ведущий — Владимир Гусаров Microsoft MVP.
Рассматриваем, как реализовать подход «сборка как код» для любых языков программирования с использованием multi-staged YAML pipelines. Ведущий — Владимир Гусаров Microsoft MVP.
Обсуждаем, как вырабатывать стратегии хранения исходного кода ПО, как использовать системы хранения версий с помощью Azure Repos. Ведущий — Владимир Гусаров Microsoft MVP.
Знакомим с методиками управления open source при разработке и практическим применением инструмента WhiteSource. Рассказываем про поиск уязвимостей в компонентах с открытым исходным кодом и соблюдение лицензионной чистоты с помощью WhiteSource. Ведущие — Диана Лисбарон, Director of Sales WhiteSource, и Орешкина Дарья, Web Control, официальный дистрибьютор WhiteSource в России.
Источник: habr.com
