ProHoster > блог > адміністраванне > Паскараем распрацоўку з дапамогай сэрвісаў Azure: ствараем чат-боты і кагнітыўныя службы сродкамі платформы
Паскараем распрацоўку з дапамогай сэрвісаў Azure: ствараем чат-боты і кагнітыўныя службы сродкамі платформы
Прывітанне, Хабр! Сёння мы раскажам, як вырашаць з дапамогай Azure задачы, якія звычайна патрабуюць чалавечага ўдзелу. Аператары марнуюць шмат часу, каб адказваць на адны і тыя ж пытанні, апрацоўваць тэлефонныя званкі і тэкставыя паведамленні. Чат-боты аўтаматызуюць зносіны і распазнанне і дазваляюць знізіць нагрузку на людзей. Таксама боты выкарыстоўваюцца ў Azure DevOps, дзе дазваляюць, напрыклад, сцвярджаць рэлізы, кіраваць зборкамі – праглядаць, запускаць і спыняць – прама з Slack або Microsoft Teams. Па сутнасці, чат-бот у чымсьці нагадвае CLI, толькі інтэрактыўны, і дазваляе распрацоўніку не выходзіць з кантэксту абмеркавання ў чаце.
У гэтым артыкуле мы пагаворым пра прылады для стварэння чат-ботаў, пакажам, як іх можна палепшыць з дапамогай кагнітыўных сэрвісаў, і апішам, як паскорыць распрацоўку дзякуючы гатовым сэрвісам у Azure.
Чат-боты і кагнітыўныя сэрвісы: чым падобныя і ў чым адрозненне
Для стварэння робатаў у Microsoft Azure выкарыстоўваюцца служба Azure Bot і платформа Bot Framework. Разам яны ўяўляюць сабой набор ПА для зборкі, тэставанні, разгортванні і адміністраванні ботаў, які дазваляе ствараць з гатовых модуляў як простыя, так і прасунутыя сістэмы зносін з падтрымкай гаворкі, распазнаннем натуральнай мовы і іншымі магчымасцямі.
Выкажам здагадку, што вам неабходна рэалізаваць просты бот на базе карпаратыўнага сэрвісу пытанняў і адказаў ці, наадварот, стварыць функцыянальны бот са складанай разгалінаванай сістэмай зносін. Для гэтага можна скарыстацца шэрагам прылад, умоўна падзеленых на тры групы:
Сэрвісы хуткай распрацоўкі дыялогавых інтэрфейсаў (ботаў).
Гатовыя кагнітыўныя сэрвісы ІІ пад розныя сцэнары выкарыстання (распазнанне вобразаў, гаворкі, база ведаў і пошук).
Сэрвісы стварэння і навучанні мадэляў ІІ.
Звычайна людзі інтуітыўна змешваюць "ботаў" і "кагнітыўныя сэрвісы", таму што ў аснове абодвух паняццяў ляжыць прынцып зносін, а ў сцэнары выкарыстання ботаў і сэрвісаў ёсць дыялогі. Але чат-боты працуюць з ключавымі словамі і трыгерамі, а кагнітыўныя сэрвісы – з адвольнымі запытамі, якія звычайна апрацоўваюцца людзьмі:
Кагнітыўныя сэрвісы – гэта яшчэ адзін са спосабаў камунікацыі з карыстачом, які дапамагае канвертаваць адвольны запыт у выразную каманду і перадаць яго далей робату.
Такім чынам, чат-боты – гэта прыкладанні для працы з запытамі, а кагнітыўныя сэрвісы – гэта інструменты разумнага аналізу запытаў, якія запускаюцца асобна, але да якіх можа звяртацца чат-бот, становячыся «інтэлектуальным».
Стварэнне чат-ботаў
Рэкамендуемая схема праектавання робата ў Azure выглядае наступным чынам:
Для праектавання і распрацоўкі робатаў у Azure выкарыстоўваецца Бот фрэймворк. На GitHub ёсць прыклады ботаў, магчымасці фрэймворка мяняюцца, таму неабходна ўлічваць версію SDK, якая выкарыстоўваецца ў ботах.
Фрэймворк мае на ўвазе некалькі варыянтаў стварэння робатаў: з дапамогай класічнага кода, прылад каманднага радка або блок-схем. Апошні варыянт візуалізуе дыялогі, для гэтага можна выкарыстоўваць менеджэр Bot Framework Composer. Ён ствараўся на базе Bot Framework SDK як навочная прылада распрацоўкі, які міждысцыплінарныя каманды маглі б выкарыстаць для стварэння робатаў.
Bot Framework Composer дазваляе з дапамогай блокаў стварыць структуру дыялогу, з якой будзе працаваць бот. Дадаткова можна ствараць трыгеры, гэта значыць ключавыя словы, на якія бот будзе рэагаваць падчас дыялогу. Да прыкладу, на словы "аператар", "крадзеж" або "стоп" і "хопіць".
У Bot Framework Composer можна стварыць складана разгалінаваную сістэму дыялогаў, выкарыстоўваючы Adaptive Dialogs. Дыялогі могуць выкарыстоўваць як кагнітыўныя сэрвісы, так і карткі падзей (Adaptive Cards):
Пасля стварэння можна разгарнуць чат-бота ў падпісцы, прычым аўтаматычна падрыхтаваны скрыпт створыць усе неабходныя рэсурсы: кагнітыўныя сэрвісы, Application plan, Application Insights, базу дадзеных і гэтак далей.
Стваральнік QnA
Для стварэння простых робатаў на аснове карпаратыўных БД пытанняў і адказаў можна выкарыстоўваць кагнітыўны сэрвіс QnA Maker. Рэалізаваны ў выглядзе простага вэб-візарда, ён дазваляе падаць на ўваход спасылку на карпаратыўную базу ведаў (FAQ Urls) або ўзяць за аснову базу дакументаў у фармаце *.doc ці *.pdf. Пасля стварэння азначніка бот будзе сам падбіраць найболей падыходныя адказы на пытанні карыстача.
З дапамогай QnAMaker можна таксама ствараць ланцужкі ўдакладняючых пытанняў з аўтаматычным стварэннем кнопак, дапаўняць базу ведаў метададзенымі і данавучаць сэрвіс падчас выкарыстанні.
Сэрвіс можа выкарыстоўвацца як чат-бот, які рэалізуе толькі адну гэтую функцыю, альбо як частка складанага чат-бота, які выкарыстоўвае, у залежнасці ад запыту, і іншыя сэрвісы ІІ або элементы Bot Framework.
Праца з іншымі кагнітыўнымі сэрвісамі
На платформе Azure шмат розных кагнітыўных сэрвісаў. Тэхнічна гэта самастойныя вэб-сэрвісы, якія можна выклікаць з кода. У адказ сэрвіс дасылае json вызначанага фармату, які можна выкарыстоўваць у чат-боте.
Часцей за ўсё ў чат-ботах могуць выкарыстоўвацца наступныя:
Распазнаванне тэксту.
Распазнанне вызначаных распрацоўнікам катэгорый выяў Custom Vision Service (вытворчы кейс: распазнанне, ці надзеў супрацоўнік каску, ахоўныя акуляры ці маску).
Распазнаванне асоб (выдатны кейс выкарыстання - праверка, ці свой твар размясціў анкетаваны, ці, скажам, фота сабачкі або фота чалавека іншай падлогі).
Распазнанне прамовы.
Аналіз відарысаў.
Пераклад (усе мы памятаем, колькі шуму нарабіў сінхронны пераклад у Skype).
Праверка арфаграфіі і прапановы па выпраўленні памылак.
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 можна выкарыстоўваць Дыспетчар.
Калі вы працуеце з QnA Maker і атрымліваеце запыт ад карыстача, то сістэма вызначае, з якім адсоткам верагоднасці адказ з QnA падыходзіць для запыту. Калі верагоднасць высокая, карыстачу проста выдаецца адказ з карпаратыўнай базы ведаў, калі нізкая - запыт можа быць адпраўлены ў LUIS для ўдакладнення. Выкарыстанне Dispatcher дазваляе не праграмаваць гэтую логіку, а аўтаматычна вызначаць гэтую мяжу падзелу запытаў і аператыўна іх размяркоўваць.
Тэставанне і публікацыя бота
Для тэставання выкарыстоўваецца яшчэ адзін лакальны дадатак, Bot framework emulator. З дапамогай эмулятара можна мець зносіны з ботам і правяраць паведамленні, якія ён адпраўляе і атрымлівае. Эмулятар адлюстроўвае паведамленні так, як яны будуць выглядаць у інтэрфейсе вэб-чата, і рэгіструе запыты і адказы JSON пры абмене паведамленнямі з ботам.
Прыклад выкарыстанні эмулятара прадстаўлены ў гэтай дэманстрацыі, дзе паказваецца стварэнне віртуальнага асістэнта для BMW. Таксама ў відэа распавядаецца аб новых акселератарах для стварэння чат-ботаў - темплейтах:
Вы таксама можаце выкарыстоўваць темплейты пры стварэнні сваіх чат-ботаў.
Темплейты дазваляюць не пісаць тыпавыя функцыі робата зноўку, а дадаваць ужо гатовы код у якасці "навыку". Прыкладам можа быць праца з календаром, прызначэнне сустрэч і т. п. Код гатовых навыкаў апублікаваны на github.
Тэставанне прайшло паспяхова, робат гатовы, і зараз яго трэба апублікаваць і падключыць каналы. Публікацыя ажыццяўляецца сродкамі Azure, а ў якасці каналаў можна выкарыстоўваць месэнджэры ці сацыяльныя сеткі. Калі няма патрэбнага канала для ўваходу дадзеных, можна пашукаць яго ў які адпавядае кам'юніці на GitHab.
Таксама для стварэння паўнавартаснага чат-бота ў якасці інтэрфейсу зносін з карыстачом і кагнітыўнымі сэрвісамі вам, вядома, спатрэбяцца дадатковыя сэрвісы Azure, такія як базы дадзеных, serverless (Azure Functions), а таксама сэрвісы LogicApp і, магчыма, 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. Запісы іншых вэбінараў, якія ўвайшлі ў марафон, даступныя па спасылках:
Арганізацыя CI/CD з выкарыстаннем Azure Pipelines
Разглядаем, як рэалізаваць падыход "зборка як код" для любых моў праграмавання з выкарыстаннем multi-staged YAML pipelines. Вядучы - Уладзімір Гусараў Microsoft MVP.
WhiteSource. Маніторынг бяспечных open source бібліятэк
Знаёмім з методыкамі кіравання open source пры распрацоўцы і практычным ужываннем прылады WhiteSource. Распавядаем пра пошук уразлівасцяў у кампанентах з адчыненым зыходным кодам і захаванне ліцэнзійнай чысціні з дапамогай WhiteSource. Вядучыя – Дыяна Лісбарон, Director of Sales WhiteSource, і Арэшкіна Дар'я, Web Control, афіцыйны дыстрыб'ютар WhiteSource у Расіі.