Ускоряем разработку с помощью сервисов Azure: создаем чат-боты и когнитивные службы средствами платформы

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

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



    Чат-боты и когнитивные сервисы: чем похожи и в чем различие


    Для создания ботов в Microsoft Azure используются служба Azure Bot и платформа Bot Framework. Вместе они представляют собой набор ПО для сборки, тестирования, развертывания и администрирования ботов, который позволяет создавать из готовых модулей как простые, так и продвинутые системы общения с поддержкой речи, распознаванием естественного языка и другими возможностями.

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

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

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



    Когнитивные сервисы — это еще один из способов коммуникации с пользователем, помогающий конвертировать произвольный запрос в четкую команду и передать его далее боту. 

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

    Создание чат-ботов


    Рекомендуемая схема проектирования бота в Azure выглядит следующим образом: 



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

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



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

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



    После создания можно развернуть чат-бота в подписке, причем автоматически подготовленный скрипт создаст все необходимые ресурсы: когнитивные сервисы, Application plan, Application Insights, базу данных и так далее.

    QnA Maker


    Для создания простых ботов на основе корпоративных БД вопросов и ответов можно использовать когнитивный сервис QnA Maker. Реализованный в виде простого веб-визарда, он позволяет подать на вход ссылку на корпоративную базу знаний (FAQ Urls) или взять за основу базу документов в формате *.doc или *.pdf. После создания индекса бот будет сам подбирать наиболее подходящие ответы на вопросы пользователя.

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

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

    Работа с другими когнитивными сервисами


    На платформе Azure много разных когнитивных сервисов. Технически это самостоятельные веб-сервисы, которые можно вызывать из кода. В ответ сервис присылает json определенного формата, который можно использовать в чат-боте.


    Чаще всего в чат-ботах могут использоваться следующие:

    1. Распознавание текста.
    2. Распознавание определяемых разработчиком категорий образов Custom Vision Service (производственный кейс: распознавание, надел ли сотрудник каску, защитные очки или маску).
    3. Распознавание лиц (отличный кейс использования — проверка, свое ли лицо разместил анкетируемый, или, скажем, фото собачки или фото человека другого пола).
    4. Распознавание речи.
    5. Анализ изображений.
    6. Перевод (все мы помним, сколько шума наделал синхронный перевод в Skype).
    7. Проверка орфографии и предложения по исправлению ошибок.

    LUIS


    Также для создания ботов может потребоваться 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 можно использовать Dispatcher



    Когда вы работаете с QnA Maker и получаете запрос от пользователя, то система определяет, с каким процентом вероятности ответ из QnA подходит для запроса. Если вероятность высокая, пользователю просто выдается ответ из корпоративной базы знаний, если низкая — запрос может быть отправлен в LUIS для уточнения. Использование Dispatcher позволяет не программировать эту логику, а автоматически определять эту грань разделения запросов и оперативно их распределять.

    Тестирование и публикация бота


    Для тестирования используется еще одно локальное приложение, Bot framework emulator. С помощью эмулятора можно общаться с ботом и проверять сообщения, которые он отправляет и получает. Эмулятор отображает сообщения так, как они будут выглядеть в интерфейсе веб-чата, и регистрирует запросы и ответы JSON при обмене сообщениями с ботом.

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


    https://youtu.be/u7Gql-ClcVA?t=564

    Вы также можете использовать темплейты при создании своих чат-ботов. 
    Темплейты позволяют не писать типовые функции бота заново, а добавлять уже готовый код в качестве «навыка». Примером может быть работа с календарем, назначение встреч и т. п. Код готовых навыков опубликован на 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. Записи других вебинаров, которые вошли в марафон, доступны по ссылкам:

    Softline
    Компания

    Похожие публикации

    Комментарии 1

      0
      Почему ваши статьи походят на презентацию для топ менеджеров?

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

      Самое читаемое