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

Фреймворкът предвижда няколко варианта за създаване на ботове: чрез класически код, инструменти за команден ред или блок-схеми. Последният вариант визуализира диалозите, за който може да се използва мениджър 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. Реализирана под формата на прост уеб wizard, тя позволява да се подаде входна връзка към корпоративната база данни (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, като бази данни, serverless (Azure Functions), както и услугите Logic App и, възможно, Event Grid.

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

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

За оценка на взаимодействието с потребителите можете да използвате както вградената аналитика на Azure Bot Service, така и специалната услуга Application Insights.

В резултат може да се събира информация по следните критерии:

  • Колко потребители получиха достъп до бота от различни канали за избрания период от време.
  • Колко потребители, изпратили едно съобщение, са се върнали по-късно и изпратили още едно.
  • Колко действия бяха изпратени и получени чрез всеки канал за посочения интервал от време.

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

Също така, данните, събрани чрез тази услуга, могат да се използват за създаване на допълнителни визуализации и аналитични отчети в Power BI. Пример за такъв отчет и шаблон за Power BI можете да вземете. тук..

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

Всички благодаря за вниманието! В тази статия използвахме материал от уебинара на архитекта на Microsoft Azure, Анна Фенюшина 'Когато хората не успяват. Как на 100% да използвате чат-ботове и когнитивни услуги за автоматизация на рутинни процеси', на който илюстрирахме какво представляват чат-ботовете в Azure и какви са сценарийте за тяхното приложение, а също така демонстрирахме как за 15 минути да създадете бот в QnA Maker и как се разшифроват структурата на запитванията в LUIS. 

Създохме този уебинар в рамките на онлайн маратон за разработчици Dev Bootcamp. Темата беше за продуктите, които ускоряват разработката и облекчават рутинните задължения на служителите в компанията с помощта на инструменти за автоматизация и готови предварително настройки модули Azure. Записите на другите уебинари, които участваха в маратона, са налични на линковете:

Източник: habr.com

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