Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Ahoj, Habr! Dnes se podíváme na to, jak pomocí Azure řešit úkoly, které obvykle vyžadují lidskou asistenci. Operátoři tráví spoustu času odpovídáním na stejné otázky a zpracováváním telefonních hovorů a textových zpráv. Chatboti automatizují komunikaci a rozpoznávání a umožňují snížit zátěž na lidi. Také se boti používají v Azure DevOps, kde například umožňují schvalovat vydání, spravovat sestavení – prohlížet, spouštět a zastavovat je – přímo ze Slacku nebo Microsoft Teams. V podstatě něco jako CLI, jen interaktivní, a umožňuje vývojářovi zůstat v kontextu diskuse v chatu.

V tomto článku se zaměříme na nástroje pro vytváření chatovacích botů, ukážeme, jak je lze vylepšit pomocí kognitivních služeb, a popíšeme, jak urychlit vývoj díky hotovým službám v Azure.

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Chatboti a kognitivní služby: čím jsou si podobní a v čem se liší

Pro vytváření botů v Microsoft Azure se používá služba Azure Bot a platforma Bot Framework. Společně představují sadu softwaru pro sestavení, testování, nasazení a správu botů, která umožňuje vytvářet jednoduché i pokročilé systémy komunikace s podporou řeči, rozpoznáváním přirozeného jazyka a dalšími funkcemi.

Představme si, že potřebujete implementovat jednoduchého bota na základě podnikové služby otázek a odpovědí, nebo naopak vytvořit funkčního bota se složitým rozvětveným systémem komunikace. K tomu lze využít řadu nástrojů, které můžeme způsobně rozdělit do tří skupin: 

  1. Služby pro rychlý vývoj dialogových rozhraní (botů).
  2. Hotové kognitivní služby AI pro různé scénáře použití (rozpoznávání obrazů, řeči, databáze znalostí a vyhledávání).
  3. Služby pro vytváření a trénink AI modelů.

Lidé obvykle intuitivně mixují "boty" a "kognitivní služby", protože v obou pojmech leží princip komunikace a ve scénářích použití botů a služeb jsou dialogy. Ale chatboti pracují s klíčovými slovy a spouštěči, zatímco kognitivní služby – s libovolnými dotazy, které obvykle zpracovávají lidé: 

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Kognitivní služby jsou dalším způsobem komunikace s uživateli, který pomáhá převést libovolný dotaz na jasný pokyn a předat jej dále botovi. 

Chatboti jsou aplikace pro práci s dotazy, zatímco kognitivní služby jsou nástroje pro chytrou analýzu dotazů, které fungují samostatně, avšak může je využívat chatbot, čímž se stává „inteligentním“. 

Vytváření chatbotů

Doporučená schéma návrhu bota v Azure vypadá následovně: 

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Pro návrh a vývoj botů v Azure se používá Bot Framework. Na GitHubu jsou k dispozici příklady botů, možnosti frameworku se mění, proto je důležité zohlednit verzi SDK, která se používá v bodech.

Framework zahrnuje několik způsobů, jak vytvářet boty: pomocí klasického kódu, nástrojů příkazového řádku nebo blokových schémat. Poslední možnost vizualizuje dialogy, lze k tomu použít nástroj Bot Framework Composer. Byl vytvořen na základě Bot Framework SDK jako názorný vývojový nástroj, který by multidisciplinární týmy mohly použít k vytváření botů.

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Bot Framework Composer umožňuje sestavit strukturu dialogu pomocí bloků, se kterými bude bot pracovat. Dále lze vytvářet spouštěče, což jsou klíčová slova, na která bude bot reagovat během dialogu. Například na slova „operátor“, „krádež“ nebo „stop“ a „dostačující“.

V Bot Framework Composer lze vytvořit složitě rozvětvený systém dialogů pomocí Adaptive Dialogs. Dialogy mohou používat jak kognitivní služby, tak událostní karty (Adaptive Cards):

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Po vytvoření lze nasadit chatbot do předplatného, a přitom automaticky připravený skript vytvoří všechny potřebné zdroje: kognitivní služby, plán aplikace, Application Insights, databázi atd.

QnA Maker

Pro vytváření jednoduchých botů na základě podnikových databází otázek a odpovědí lze použít kognitivní službu QnA Maker. Realizovaný ve formě jednoduchého webového wizardu, umožňuje zadat odkaz na podnikovou znalostní bázi (FAQ Urls) nebo použít základní databázi dokumentů ve formátu *.doc nebo *.pdf. Po vytvoření indexu bude bot automaticky vybírat nejvhodnější odpovědi na otázky uživatele.

Pomocí QnAMaker je také možné vytvářet řetězce upřesňujících otázek s automatickým generováním tlačítek, doplňovat znalostní bázi metadata a dále školit službu během používání.

Služba může být využívána jako chatbot, který realizuje pouze tuto funkci, nebo jako součást složitého chatbota, který podle žádosti využívá i další AI služby nebo prvky Bot Framework.

Spolupráce s jinými kognitivními službami

Na platformě Azure existuje mnoho různých kognitivních služeb. Technicky jde o samostatné webové služby, které lze volat z kódu. Služba vrací JSON určitého formátu, který lze využít v chatbotu.

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy
V chatbotech se nejčastěji používají následující:

  1. Rozpoznávání textu.
  2. Rozpoznávání specifických kategorií obrazů definovaných vývojářem pomocí služby Custom Vision (výrobní případ: rozpoznávání, zda má zaměstnanec přilbu, ochranné brýle nebo masku).
  3. Rozpoznávání tváří (skvělý případ použití — ověření, zda osoba, která vyplňuje dotazník, nahrála svou vlastní fotografii, nebo například fotku psa či jiného pohlaví).
  4. Rozpoznávání řeči.
  5. Analýza obrázků.
  6. Překlad (všichni si pamatujeme, kolik rozruchu způsobil simultánní překlad ve Skypu).
  7. Kontrola pravopisu a návrhy na opravu chyb.

LUIS

K vytvoření botů může být také potřeba LUIS (Language Understanding Intelligent Service). Úkoly služby:

  • Stanovit, jestli má výrok uživatele smysl a zda je třeba reakce bota.
  • Zjednodušit úsilí o přepisování řeči (textu) uživatele na pro bota srozumitelné příkazy.
  • Predikovat skutečné uživatelské cíle/záměry a extrahovat klíčové informace z frází v dialogu.
  • Umožnit vývojářovi spustit bota pomocí několika příkladů rozpoznávání významu a následného školení bota během jeho činnosti.
  • Umožnit vývojářovi využít vizualizaci pro hodnocení kvality přepisování příkazů.
  • Pomoci v postupných vylepšeních rozpoznávání skutečných cílů.

Hlavním cílem LUIS je s určitou pravděpodobností pochopit, co má uživatel na mysli, a přetvořit přirozený dotaz na strukturovaný příkaz. K rozpoznávání významu dotazů LUIS využívá sadu záměrů (intencí) a entit (buď přednastavených vývojáři, nebo vzatých a předem vytvořených „domén“ – některých připravených knihoven typových frází, které připravil Microsoft). 

Jednoduchý příklad: máte robota, který poskytuje předpověď počasí. Pro něj bude záměrem přetvoření přirozeného dotazu na „akci“ – žádost o předpověď počasí, a entitami budou čas a místo. Uvedeme schéma práce záměru CheckWeather pro takového robota.

Záměr
Entita
Příklad přirozeného dotazu

CheckWeather
{"type": "location", "entity": "moscow"}
{"type": "builtin.datetimeV2.date", "entity": "future", "resolution": "2020-05-30"}
Jaké bude zítra počasí v Moskvě

CheckWeather
{"type": "date_range", "entity": "this weekend"}
Zobraz mi předpověď na tento víkend

Pro kombinaci QnA Maker a LUIS lze použít Dispatcher. 

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Když pracujete s QnA Maker a dostanete dotaz od uživatele, systém určuje, s jakou pravděpodobností odpověď z QnA odpovídá dotazu. Pokud je pravděpodobnost vysoká, uživateli se jednoduše zobrazí odpověď z firemní znalostní báze, pokud je nízká – dotaz může být odeslán do LUIS pro upřesnění. Použití Dispatcher umožňuje programování této logiky neprovádět a automaticky určovat tuto hranici oddělení dotazů a operativně je distribuovat.

Testování a publikace robota

Pro testování se používá ještě jedna lokální aplikace, Bot framework emulator. Pomocí emulátoru můžete komunikovat s robotem a kontrolovat zprávy, které posílá a přijímá. Emulátor zobrazuje zprávy tak, jak budou vypadat v rozhraní webového chatu, a registruje dotazy a odpovědi JSON při výměně zpráv s robotem.

Příklad použití emulátoru je ukázán v této demonstraci, kde se představuje vytvoření virtuálního asistenta pro BMW. Také ve videu se hovoří o nových akcelerátorech pro tvorbu chatovacích robotů – šablonách:

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy
https://youtu.be/u7Gql-ClcVA?t=564

Šablony můžete také použít při vytváření svých chatovacích robotů. 
Šablony umožňují nepřepisovat standardní funkce bota znovu, ale přidávat již hotový kód jako 'dovednost'. Příkladem může být práce s kalendářem, plánování schůzek atd. Kód hotových dovedností. byla vydána na github.

Testování proběhlo úspěšně, bot je připraven a nyní je třeba jej publikovat a připojit kanály. Publikace se provádí pomocí prostředků Azure a jako kanály lze použít messengery nebo sociální sítě. Pokud není požadovaný kanál pro vstup dat, lze ho hledat v odpovídající komunitě na GitHubu. 

Také pro vytvoření plnohodnotného chatbotu jako uživatelského rozhraní pro komunikaci s uživateli a kognitivními službami budete potřebovat samozřejmě další služby Azure, jako jsou databáze, serverless (Azure Functions), a také služby LogicApp a možná Event Grid.

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Hodnocení a analýza

Pro hodnocení interakce s uživateli můžete využít jak vestavěnou analytiku Azure Bot Service, tak i speciální službu Application Insights.

V důsledku toho můžete shromažďovat informace podle následujících kritérií:

  • Kolik uživatelů získalo přístup k botu z různých kanálů během vybraného časového období.
  • Kolik uživatelů, kteří odeslali jednu zprávu, se vrátilo později a odeslalo další.
  • Kolik akcí bylo odesláno a přijato prostřednictvím každého kanálu za zadaný časový interval.

Pomocí Application Insights můžete monitorovat jakékoli aplikace v Azure a konkrétně chatbota, přičemž získávate další data o chování uživatelů, zátěžích a reakcích chatbota. Je třeba poznamenat, že služba Application Insights má své vlastní rozhraní na portálu Azure.

Také data shromážděná prostřednictvím této služby mohou být použita pro vytváření dalších vizualizací a analytických zpráv v PowerBI. Příklad takové zprávy a šablonu pro PowerBI můžete získat. zde.

Zrychlení vývoje pomocí služeb Azure: vytváříme chatovací roboty a kognitivní služby pomocí platformy

Všem děkuji za pozornost! V tomto článku jsme použili. materiál z webináře architektky Microsoft Azure, Anny Fenjušinové 'Když lidé nemají čas. Jak na 100 % využívat chatbota a kognitivní služby k automatizaci rutinních procesů', na kterém jsme názorně ukázali, co jsou chatboti v Azure a jaké jsou scénáře jejich použití, a také jsme demonstrovali, jak vytvořit bota v QnA Maker během 15 minut a jak se dekóduje struktura dotazů v LUIS. 

Tento webinář jsme uspořádali jako součást online maratonu pro vývojáře Dev Bootcamp. Hovořili jsme o produktech, které urychlují vývoj a odlehčují zaměstnancům společnosti část rutinní zátěže pomocí automatizačních nástrojů a předkonfigurovaných modulů Azure. Záznamy dalších webinářů zahrnutých v maratonu jsou k dispozici na následujících odkazech:

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster