Ускоряваме разработката с помощта на услугите на 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 можете да създавате и серии уточняващи въпроси с автоматично генерирани бутони, да добавяте метаданни в базата с знания и да обучавате услугата по време на използването й.

Услугата може да се използва като чат-бот, който изпълнява само тази функция, или като част от сложен чат-бот, който в зависимост от запитването може да използва и други AI услуги или елементи от 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 можете да използвате Dispatcher

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

Когато работите с QnA Maker и получавате запитване от потребителя, системата определя с какъв процент вероятност отговорът от QnA подхожда на запитването. Ако вероятността е висока, на потребителя просто се предоставя отговор от корпоративната база знания, а ако е ниска – запитването може да бъде изпратено в LUIS за уточняване. Използването на Dispatcher позволява да не програмирате тази логика, а автоматично да определяте тази граница за разделяне на запитвания и бързо да ги разпределяте.

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

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

Пример за използване на емулатора е представен в тази демонстрация, в която се показва създаването на виртуален асистент за BMW. В също видео се обсъждат новите акселератори за създаване на чат-ботове – шаблони:

Ускоряваме разработката с помощта на услугите на Azure: създаваме чат-ботове и когнитивни услуги със средствата на платформата
https://youtu.be/u7Gql-ClcVA?t=564

Можете също да използвате шаблони при създаването на собствените си чат-ботове. 
Темплейтите позволяват да не пишете отново стандартни функции на бота, а да добавяте вече готов код като "умение". Пример за това може да бъде работа с календара, насрочване на срещи и др. Кодът на готовите умения публикуван в GitHub.

Тестовете минаха успешно, ботът е готов и сега трябва да бъде публикуван и свързан с каналите. Публикацията се извършва чрез средствата на Azure, а като канали могат да се използват месинджъри или социални мрежи. Ако няма нужния канал за входящи данни, можете да го потърсите в съответната общност в GitHub. 

Също така, за създаването на цялостен чат-бот, който да служи за интерфейс за комуникация с потребителите и когнитивните услуги, ще ви трябват допълнителни услуги на Azure, като бази данни, безсървърни решения (Azure Functions), както и Logic App услуги и евентуално 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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster