Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

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

У цій статті ми поговоримо про інструменти для створення чат-ботів, покажемо, як їх можна покращити за допомогою когнітивних сервісів, та опишемо, як прискорити розробку завдяки готовим сервісам в Azure.

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

Чат-боти та когнітивні сервіси: чим схожі і в чому різниця

Для створення роботів у Microsoft Azure використовуються служба Azure Bot та платформа Bot Framework. Разом вони є набір ПЗ для складання, тестування, розгортання та адміністрування ботів, який дозволяє створювати з готових модулів як прості, так і просунуті системи спілкування з підтримкою мови, розпізнаванням природної мови та іншими можливостями.

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

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

Зазвичай люди інтуїтивно змішують «ботів» та «когнітивні сервіси», тому що в основі обох понять лежить принцип спілкування, а в сценарії використання роботів та сервісів є діалоги. Але чат-боти працюють з ключовими словами та тригерами, а когнітивні сервіси – з довільними запитами, які зазвичай обробляються людьми: 

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

Когнітивні сервіси - це ще один із способів комунікації з користувачем, що допомагає конвертувати довільний запит у чітку команду та передати його далі боту. 

Таким чином, чат-боти – це програми для роботи із запитами, а когнітивні сервіси – це інструменти розумного аналізу запитів, які запускаються окремо, але до яких може звертатися чат-бот, стаючи «інтелектуальним». 

Створення чат-ботів

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

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

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

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

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

Bot Framework Composer дозволяє за допомогою блоків створити структуру діалогу, з якою працюватиме бот. Додатково можна створювати тригери, тобто ключові слова, на які бот реагуватиме під час діалогу. Наприклад, на слова «оператор», «крадіжка» чи «стоп» та «вистачить».

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

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

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

QnA Maker

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

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

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

Робота з іншими когнітивними сервісами

На платформі Azure багато різних когнітивних сервісів. Технічно це самостійні веб-сервіси, які можна викликати із коду. У відповідь сервіс надсилає json певного формату, який можна використовувати у чат-боті.

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи
Найчастіше в чат-ботах можуть використовуватися такі:

  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 можна використовувати Диспетчер

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

Коли ви працюєте з QnA Maker і отримуєте запит від користувача, система визначає, з яким відсотком ймовірності відповідь з QnA підходить для запиту. Якщо можливість висока, користувачеві просто видається відповідь з корпоративної бази знань, якщо низька — запит може бути відправлений в LUIS для уточнення. Використання Dispatcher дозволяє не програмувати цю логіку, а автоматично визначати цю межу поділу запитів та оперативно їх розподіляти.

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

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

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

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи
https://youtu.be/u7Gql-ClcVA?t=564

Ви також можете використовувати темплейти під час створення своїх чат-ботів. 
Темплейти дозволяють не писати типові функції бота заново, а додавати вже готовий код як «навичка». Прикладом може бути робота з календарем, призначення зустрічей тощо. Код готових навичок опубліковано github.

Тестування пройшло успішно, бот готовий, і тепер його треба опублікувати та підключити канали. Публікація здійснюється засобами Azure, а як канали можна використовувати месенджери або соціальні мережі. Якщо немає потрібного каналу для входу даних, можна пошукати його у відповідному ком'юніті GitHab. 

Також для створення повноцінного чат-бота як інтерфейс спілкування з користувачем та когнітивними сервісами вам, звичайно, знадобляться додаткові сервіси Azure, такі як бази даних, serverless (Azure Functions), а також сервіси LogicApp і, можливо, Event Grid.

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

Оцінка та аналітика

Для оцінки взаємодії з користувачами можна використовувати як інтегровану аналітику Azure Bot Service, так і особливий сервіс Application Insights.

В результаті можна збирати інформацію за такими критеріями:

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

За допомогою Application Insights можна моніторити будь-які програми в Azure і, зокрема, чат-боти, отримуючи додаткові дані про поведінку користувачів, навантаження та реакції чат-бота. Слід зазначити, що сервіс Application Insights має власний інтерфейс на порталі Azure.

Також дані, зібрані через цей сервіс, можна використовувати для створення додаткових візуалізацій та аналітичних звітів PowerBI. Приклад такого звіту та темплейту для PowerBI можна взяти тут.

Прискорюємо розробку за допомогою сервісів Azure: створюємо чат-боти та когнітивні служби засобами платформи

Всім дякую за увагу! У цій статті ми використали матеріал із вебінару архітектора Microsoft Azure, Ганна Фенюшиної «Коли люди не встигають. Як на 100% використовувати чат-боти та когнітивні сервіси для автоматизації рутинних процесів», на якому ми наочно показували, що таке чат-боти в Azure та які сценарії їх застосування, а також демонстрували, як за 15 хвилин створити бота в QnA Maker та як розшифровується структура запитів у LUIS. 

Ми зробили цей вебінар у рамках онлайн-марафону для розробників Dev Bootcamp. На ньому йшлося про продукти, які прискорюють розробку та знімають частину рутинного навантаження зі співробітників компанії за допомогою інструментів автоматизації та готових модулів Azure. Записи інших вебінарів, які увійшли до марафону, доступні за посиланнями:

Джерело: habr.com

Додати коментар або відгук