Паскараем распрацоўку з дапамогай сэрвісаў Azure: ствараем чат-боты і кагнітыўныя службы сродкамі платформы

Прывітанне, Хабр! Сёння мы раскажам, як вырашаць з дапамогай Azure задачы, якія звычайна патрабуюць чалавечага ўдзелу. Аператары марнуюць шмат часу, каб адказваць на адны і тыя ж пытанні, апрацоўваць тэлефонныя званкі і тэкставыя паведамленні. Чат-боты аўтаматызуюць зносіны і распазнанне і дазваляюць знізіць нагрузку на людзей. Таксама боты выкарыстоўваюцца ў Azure DevOps, дзе дазваляюць, напрыклад, сцвярджаць рэлізы, кіраваць зборкамі – праглядаць, запускаць і спыняць – прама з Slack або Microsoft Teams. Па сутнасці, чат-бот у чымсьці нагадвае CLI, толькі інтэрактыўны, і дазваляе распрацоўніку не выходзіць з кантэксту абмеркавання ў чаце.

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

Паскараем распрацоўку з дапамогай сэрвісаў Azure: ствараем чат-боты і кагнітыўныя службы сродкамі платформы

Чат-боты і кагнітыўныя сэрвісы: чым падобныя і ў чым адрозненне

Для стварэння робатаў у Microsoft Azure выкарыстоўваюцца служба Azure Bot і платформа Bot Framework. Разам яны ўяўляюць сабой набор ПА для зборкі, тэставанні, разгортванні і адміністраванні ботаў, які дазваляе ствараць з гатовых модуляў як простыя, так і прасунутыя сістэмы зносін з падтрымкай гаворкі, распазнаннем натуральнай мовы і іншымі магчымасцямі.

Выкажам здагадку, што вам неабходна рэалізаваць просты бот на базе карпаратыўнага сэрвісу пытанняў і адказаў ці, наадварот, стварыць функцыянальны бот са складанай разгалінаванай сістэмай зносін. Для гэтага можна скарыстацца шэрагам прылад, умоўна падзеленых на тры групы: 

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

Звычайна людзі інтуітыўна змешваюць "ботаў" і "кагнітыўныя сэрвісы", таму што ў аснове абодвух паняццяў ляжыць прынцып зносін, а ў сцэнары выкарыстання ботаў і сэрвісаў ёсць дыялогі. Але чат-боты працуюць з ключавымі словамі і трыгерамі, а кагнітыўныя сэрвісы – з адвольнымі запытамі, якія звычайна апрацоўваюцца людзьмі: 

Паскараем распрацоўку з дапамогай сэрвісаў Azure: ствараем чат-боты і кагнітыўныя службы сродкамі платформы

Кагнітыўныя сэрвісы – гэта яшчэ адзін са спосабаў камунікацыі з карыстачом, які дапамагае канвертаваць адвольны запыт у выразную каманду і перадаць яго далей робату. 

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

Стварэнне чат-ботаў

Рэкамендуемая схема праектавання робата ў Azure выглядае наступным чынам: 

Паскараем распрацоўку з дапамогай сэрвісаў Azure: ствараем чат-боты і кагнітыўныя службы сродкамі платформы

Для праектавання і распрацоўкі робатаў у Azure выкарыстоўваецца Бот фрэймворк. На 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

Для стварэння простых робатаў на аснове карпаратыўных БД пытанняў і адказаў можна выкарыстоўваць кагнітыўны сэрвіс 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

Дадаць каментар