Здравейте, Хабр! Днес ще разгледаме как да решаваме задачи, обикновено изискващи човешко участие, с помощта на 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 можете да създавате и серии уточняващи въпроси с автоматично генерирани бутони, да добавяте метаданни в базата с знания и да обучавате услугата по време на използването й.
Услугата може да се използва като чат-бот, който изпълнява само тази функция, или като част от сложен чат-бот, който в зависимост от запитването може да използва и други AI услуги или елементи от 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, а като канали могат да се използват месинджъри или социални мрежи. Ако няма нужния канал за входящи данни, можете да го потърсите в съответната общност в GitHub.
Също така, за създаването на цялостен чат-бот, който да служи за интерфейс за комуникация с потребителите и когнитивните услуги, ще ви трябват допълнителни услуги на Azure, като бази данни, безсървърни решения (Azure Functions), както и Logic App услуги и евентуално 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.
Разглеждаме как да реализираме подхода "сборка като код" за всякакви програмни езици с използване на многостепенни YAML pipelines. Водещ — Владимир Гусаров, Microsoft MVP.
Обсъждаме как да развиваме стратегии за съхранение на изходния код на софтуера и как да използваме системи за управление на версията с помощта на Azure Repos. Водещ — Владимир Гусаров, Microsoft MVP.
Запознаваме с методи за управление на open source при разработка и практически приложения на инструмента WhiteSource. Разказваме за търсене на уязвимости в компоненти с отворен код и спазване на лицензионната чистота с помощта на WhiteSource. Водещи — Диана Лисбарон, Director of Sales WhiteSource, и Орешкина Дария, Web Control, официален дистрибютор на WhiteSource в Русия.
Източник: habr.com
