Vytvoření konverzačního robota na podnikové úrovni

Bot Service
Cognitive Services

Tato referenční architektura popisuje, jak vytvořit konverzačního robota na podnikové úrovni pomocí služby Azure Bot Framework.

Architektura

Diagram architektury

Stáhněte si soubor aplikace Visio s touto architekturou.

Pracovní postup

Zde uvedená architektura používá následující služby Azure. Váš robot nemusí používat všechny tyto služby nebo může zahrnovat další služby.

Logika robota a uživatelské prostředí

  • Bot Framework Service (BFS). Tato služba připojí robota k komunikační aplikaci, jako je Cortana, Facebook Messenger nebo Slack. Usnadňuje komunikaci mezi robotem a uživatelem.
  • Azure App Service. Logika aplikace robota je hostovaná v Azure App Service.

Znalost a inteligence robota

  • Language Understanding (LUIS). Služba LUIS, která je součástí služeb Azure Cognitive Services, umožňuje robotovi porozumět přirozenému jazyku tím, že identifikuje záměry a entity uživatelů.
  • Azure Search. Search je spravovaná služba, která poskytuje rychle prohledávatelný index dokumentu.
  • QnA Maker. QnA Maker je cloudová služba API, která nad vašimi daty vytváří konverzační vrstvu otázek a odpovědí. Obvykle je nabitý částečně strukturovaným obsahem, jako jsou nejčastější dotazy. Slouží k vytvoření znalostní báze pro odpovědi na otázky v přirozeném jazyce.
  • Webová aplikace. Pokud váš robot potřebuje řešení AI, která neposkytuje existující služba, můžete implementovat vlastní AI a hostovat ji jako webovou aplikaci. Tím poskytnete webový koncový bod, který robot může volat.

Přijímání dat

Robot bude spoléhat na nezpracovaná data, která musí být ingestována a připravena. Pro orchestraci tohoto procesu zvažte některou z následujících možností:

  • Azure Data Factory. Data Factory orchestruje a automatizuje přesun a transformaci dat.
  • Logic Apps. Logic Apps je bezserverová platforma pro vytváření pracovních postupů, které integrují aplikace, data a služby. Logic Apps poskytuje datové konektory pro mnoho aplikací, včetně Office 365.
  • Azure Functions. Azure Functions můžete použít k zápisu vlastního bezserverového kódu, který je vyvolán triggerem – například při každém přidání dokumentu do úložiště objektů blob nebo služby Azure Cosmos DB.

Protokolování a monitorování

  • Application Insights. Pomocí Application Insights můžete protokolovat metriky aplikací robota pro účely monitorování, diagnostiky a analýzy.
  • Azure Blob Storage. Služba Blob Storage je optimalizovaná pro ukládání velkých objemů nestrukturovaných dat.
  • Azure Cosmos DB. Azure Cosmos DB je vhodná pro ukládání částečně strukturovaných dat protokolů, jako jsou konverzace.
  • Power BI. Pomocí Power BI můžete pro robota vytvořit řídicí panely monitorování.

Zabezpečení a zásady správného řízení

Zajištění kvality a vylepšení

  • Azure DevOps. Poskytuje mnoho služeb pro správu aplikací, včetně správy zdrojového kódu, sestavování, testování, nasazení a sledování projektů.
  • VS Code. Jednoduchý editor kódu pro vývoj aplikací. Můžete použít jakékoli jiné integrované vývojové prostředí s podobnými funkcemi.

Komponenty

Podrobnosti scénáře

Každý robot je jiný, ale existuje několik běžných vzorů, pracovních postupů a technologií, o nichž je potřeba vědět. Zejména pro robota, který obsluhuje podnikové úlohy, existuje mnoho aspektů návrhu nad rámec základních funkcí.

Ukázky osvědčených postupů používané v této architektuře jsou plně opensourcové a dostupné na GitHubu.

Potenciální případy použití

Toto řešení je ideální pro telekomunikační průmysl. Tento článek se zabývá nejdůležitějšími aspekty návrhu a představuje nástroje potřebné k vytvoření robustního, zabezpečeného a aktivně se učící robota.

Doporučení

Na vysoké úrovni lze konverzační robot rozdělit na funkce robota ("mozek") a sadu okolních požadavků ("tělo"). Mozek zahrnuje komponenty pracující s doménou, včetně logiky robota a funkcí strojového učení. Další komponenty jsou nezávislé na doméně a řeší nefunkční požadavky, jako jsou CI/CD, zajištění kvality a zabezpečení.

Logický diagram funkcí robota

Než se podíváme na specifika této architektury, začněme s tokem dat mezi jednotlivými dílčími součástmi návrhu. Tok dat zahrnuje toky dat iniciované uživatelem a systémem.

Tok zpráv uživatele

Ověřování. Uživatelé začínají tím, že se sami ověřují pomocí jakéhokoli mechanismu, který poskytuje jejich komunikační kanál s robotem. Architektura robota podporuje mnoho komunikačních kanálů, včetně Cortany, Microsoft Teams, Facebook Messengeru, Kika a Slacku. Seznam kanálů najdete v tématu Připojení robota ke kanálům. Když vytvoříte robota pomocí Azure Bot Service, automaticky se nakonfiguruje kanál Webový chat. Tento kanál umožňuje uživatelům pracovat s robotem přímo na webové stránce. Robota můžete také připojit k vlastní aplikaci pomocí kanálu Direct Line. Identita uživatele se používá k poskytování řízení přístupu na základě role a k poskytování přizpůsobeného obsahu.

Zpráva uživatele. Po ověření odešle uživatel robotovi zprávu. Robot přečte zprávu a nasměruje ji do služby pro rozpoznávání přirozeného jazyka, jako je luis. Tento krok získá záměry (co chce uživatel udělat) a entity (co uživatele zajímá). Robot pak vytvoří dotaz, který předá službě, která poskytuje informace, například Azure Search pro načítání dokumentů, QnA Maker pro nejčastější dotazy nebo vlastní znalostní báze. Robot tyto výsledky použije k vytvoření odpovědi. Pro zajištění nejlepšího výsledku pro daný dotaz může robot provádět několik zpětných volání do těchto vzdálených služeb.

Odpověď: V tomto okamžiku robot určil nejlepší odpověď a poslal ji uživateli. Pokud je skóre spolehlivosti nejlépe spárované odpovědi nízké, může být odpovědí nejednoznačná otázka nebo potvrzení, že robot nemohl adekvátně odpovědět.

Protokolování. Při přijetí žádosti uživatele nebo odeslání odpovědi by se všechny akce konverzace měly protokolovat do úložiště protokolování spolu s metrikami výkonu a obecnými chybami z externích služeb. Tyto protokoly budou užitečné později při diagnostice problémů a vylepšování systému.

Zpětná vazba. Dalším osvědčeným postupem je shromažďovat zpětnou vazbu od uživatelů a skóre spokojenosti. V návaznosti na konečnou odpověď robota by robot měl uživatele požádat o hodnocení spokojenosti s odpovědí. Zpětná vazba vám může pomoct vyřešit problém studeného startu, který je s porozuměním přirozenému jazyku, a neustále zlepšovat přesnost odpovědí.

Systémová Tok dat

ETL. Robot spoléhá na informace a znalosti extrahované z nezpracovaných dat procesem ETL v back-endu. Tato data můžou být strukturovaná (databáze SQL), částečně strukturovaná (systém CRM, nejčastější dotazy) nebo nestrukturovaná (wordové dokumenty, soubory PDF, webové protokoly). Subsystém ETL extrahuje data podle pevného plánu. Obsah se transformuje a rozšiřuje a pak se načte do zprostředkujícího úložiště dat, jako je Azure Cosmos DB nebo Azure Blob Storage.

Data v zprostředkovaném úložišti se pak indexují do služby Azure Search pro načtení dokumentu, načtou se do služby QnA Maker, aby se vytvořily dvojice otázek a odpovědí, nebo se načtou do vlastní webové aplikace pro nestrukturované zpracování textu. Data se také používají k trénování modelu LUIS pro extrakci záměru a entit.

Kontrola kvality. Protokoly konverzací slouží k diagnostice a opravě chyb, k získání přehledu o tom, jak se robot používá, a ke sledování celkového výkonu. Data zpětné vazby jsou užitečná pro opětovné natrénování modelů AI za účelem zlepšení výkonu robota.

Sestavení robota

Než napíšete jediný řádek kódu, je důležité napsat funkční specifikaci, aby vývojový tým měl jasnou představu o tom, co má robot dělat. Specifikace by měla obsahovat přiměřeně úplný seznam uživatelských vstupů a očekávaných odpovědí robota v různých znalostních doménách. Tento živý dokument bude neocenitelným průvodcem pro vývoj a testování robota.

Ingestace dat

Dále identifikujte zdroje dat, které robotovi umožní inteligentní interakci s uživateli. Jak už bylo zmíněno dříve, tyto zdroje dat můžou obsahovat strukturované, částečně strukturované nebo nestrukturované datové sady. Když začínáte, je vhodné vytvořit jednorázovou kopii dat do centrálního úložiště, jako je Azure Cosmos DB nebo Azure Storage. Jak budete pokračovat, měli byste vytvořit kanál automatizovaného příjmu dat, aby byla tato data aktuální. Mezi možnosti pro kanál automatizovaného příjmu dat patří Data Factory, Functions a Logic Apps. V závislosti na úložištích dat a schématech můžete použít kombinaci těchto přístupů.

Jak začnete, je vhodné použít Azure Portal k ručnímu vytváření prostředků Azure. Později byste měli více uvažovat o automatizaci nasazení těchto prostředků.

Logika a uživatelské prostředí základního robota

Jakmile budete mít specifikaci a nějaká data, je čas začít robota realizovat. Pojďme se zaměřit na logiku základního robota. Toto je kód, který zpracovává konverzaci s uživatelem, včetně logiky směrování, logiky nejednoznačnosti a protokolování. Začněte tím, že se seznámíte s platformou Bot Framework, včetně následujících:

  • Základní pojmy a terminologie používané v architektuře, zejména konverzace, obraty a aktivity
  • Služba Bot Connector, která se stará o síť mezi robotem a vašimi kanály.
  • Jak se udržuje stav konverzace, ať už v paměti, nebo ještě lépe v úložišti, jako je Azure Blob Storage nebo Azure Cosmos DB.
  • Middleware a způsob, jak ho můžete použít k připojení robota k externím službám, jako jsou Cognitive Services.

Pro bohaté uživatelské prostředí je k dispozici mnoho možností.

  • Karty můžete použít k zahrnutí tlačítek, obrázků, karuselů a nabídek.
  • Robot může podporovat řeč.
  • Robota můžete dokonce vložit do aplikace nebo webu a využívat možnosti aplikace, která ho hostuje.

Začněte tím, že robota sestavíte online pomocí azure Bot Service a vyberete z dostupných šablon jazyka C# a Node.js. S tím, jak bude robot důmyslnější, ale budete muset robota vytvořit místně a pak ho nasadit na web. Zvolte integrované vývojové prostředí (IDE), například Visual Studio nebo Visual Studio Code, a programovací jazyk. Sady SDK jsou k dispozici pro následující jazyky:

Jako výchozí bod si můžete stáhnout zdrojový kód robota, který jste vytvořili pomocí azure Bot Service. Můžete také najít ukázkový kód, od jednoduchých robotů echo až po sofistikovanější roboty, kteří se integrují s různými službami AI.

Přidání inteligentních dat do robota

U jednoduchého robota s dobře definovaným seznamem příkazů můžete použít přístup založený na pravidlech k analýze uživatelského vstupu prostřednictvím regexu. To má výhodu v tom, že je deterministické a srozumitelné. Pokud ale robot potřebuje porozumět záměrům a entitám zprávy v přirozeném jazyce, existují služby AI, které vám můžou pomoct.

  • Služba LUIS je speciálně navržená tak, aby porozuměla záměrům a entitám uživatelů. Vytrénujete ho pomocí středně velké kolekce relevantních uživatelských vstupů a požadovaných odpovědí a vrátí záměry a entity pro danou zprávu uživatele.

  • Služba Azure Search může spolupracovat se službou LUIS. Pomocí funkce Hledat vytvoříte prohledávatelné indexy pro všechna relevantní data. Robot se na tyto indexy dotazuje pro entity extrahované službou LUIS. Azure Search také podporuje synonyma, která mohou rozšířit síť správných mapování slov.

  • QnA Maker je další služba, která je navržená tak, aby vracela odpovědi na zadané otázky. Obvykle se trénuje přes částečně strukturovaná data, jako jsou nejčastější dotazy.

Robot může využívat další služby AI k dalšímu obohacení uživatelského prostředí. Sada služeb Cognitive Services s předem vytvořenými službami AI (které zahrnují LUIS a QnA Maker) obsahuje služby pro zpracování obrazu, řeči, jazyka, vyhledávání a zjišťování polohy. Můžete rychle přidat funkce, jako je překlad jazyka, kontrola pravopisu, analýza mínění, OCR, sledování polohy a moderování obsahu. Tyto služby se dají připojit jako middlewarové moduly ve vašem robotovi, aby bylo možné s uživatelem komunikovat přirozeněji a inteligentněji.

Další možností je integrace vlastní služby AI. Tento přístup je složitější, ale poskytuje úplnou flexibilitu, pokud jde o algoritmus, trénování a model strojového učení. Můžete například implementovat vlastní modelování témat a k vyhledání podobných nebo relevantních dokumentů použít algoritmus, jako je LDA . Dobrým přístupem je zveřejnit vlastní řešení AI jako koncový bod webové služby a volat koncový bod ze základní logiky robota. Webová služba může být hostovaná v App Service nebo v clusteru virtuálních počítačů. Azure Machine Learning poskytuje řadu služeb a knihoven, které vám pomůžou s trénováním a nasazováním modelů.

Kontrola kvality a vylepšení

Protokolování. Protokolování uživatelských konverzací s robotem, včetně základních metrik výkonu a všech chyb Tyto protokoly se ukážou jako neocenitelné pro ladění problémů, pochopení uživatelských interakcí a vylepšení systému. Pro různé typy protokolů můžou být vhodná různá úložiště dat. Zvažte například Application Insights pro webové protokoly, Azure Cosmos DB pro konverzace a Azure Storage pro velké datové části. Viz Zápis přímo do Azure Storage.

Zpětná vazba. Je také důležité pochopit, jak jsou uživatelé spokojení s interakcemi robotů. Pokud máte záznam zpětné vazby od uživatelů, můžete tato data použít k tomu, abyste se zaměřili na vylepšení určitých interakcí a přetrénování modelů AI pro lepší výkon. Použijte zpětnou vazbu k opětovnému trénování modelů, jako je luis, ve vašem systému.

Testování. Testování robota zahrnuje testy jednotek, integrační testy, regresní testy a funkční testy. Pro testování doporučujeme zaznamenávat skutečné odpovědi HTTP z externích služeb, jako je Azure Search nebo QnA Maker, aby je bylo možné přehrávat během testování jednotek bez nutnosti skutečných síťových volání externích služeb.

Poznámka

Pokud chcete začít s vývojem v těchto oblastech, podívejte se na nástroje Botbuilder pro JavaScript. Toto úložiště obsahuje vzorový kód nástroje pro roboty sestavené pomocí Microsoft Bot Framework verze 4 a spuštěné Node.js. Obsahuje následující balíčky:

Tyto balíčky jsou poskytovány jako vzorový kód nástroje a bez záruky podpory nebo aktualizací.

Požadavky

Tyto aspekty implementují pilíře azure Well-Architected Framework, což je sada hlavních zásad, které lze použít ke zlepšení kvality úlohy. Další informace najdete v tématu Microsoft Azure Well-Architected Framework.

Dostupnost

Při zavádění nových funkcí nebo oprav chyb do robota je nejlepší použít více prostředí nasazení, například přípravné a produkční prostředí. Použití slotů nasazení z Azure DevOps vám to umožňuje s nulovými výpadky. Nejnovější upgrady můžete otestovat v přípravném prostředí, než je prohodíte do produkčního prostředí. Z hlediska zpracování zatížení je App Service navržená tak, aby vertikálně navyšila nebo navyšila kapacitu ručně nebo automaticky. Vzhledem k tomu, že je robot hostovaný v globální infrastruktuře datacentra Microsoft, smlouva SLA pro App Service slibuje vysokou dostupnost.

Zabezpečení

Zabezpečení poskytuje záruku proti záměrným útokům a zneužití vašich cenných dat a systémů. Další informace najdete v tématu Přehled pilíře zabezpečení.

Stejně jako u jakékoli jiné aplikace může být robot navržený tak, aby zpracovával citlivá data. Proto omezte, kdo se může přihlásit a používat robota. Na základě identity nebo role uživatele také omezte, ke kterým datům je možné přistupovat. Ke správě klíčů a tajných klíčů použijte Azure AD pro řízení přístupu a Key Vault.

DevOps

Monitorování a vytváření sestav

Jakmile robot běží v produkčním prostředí, budete potřebovat tým DevOps, který ho takto zachová. Nepřetržitě monitorujte systém, abyste měli jistotu, že robot funguje ve špičce. Pomocí protokolů odesílaných do Application Insights nebo Azure Cosmos DB vytvořte řídicí panely monitorování, a to buď pomocí samotné Služby Application Insights, Power BI, nebo řídicího panelu vlastní webové aplikace. Pokud dojde ke kritickým chybám nebo výkon klesne pod přijatelnou prahovou hodnotu, pošlete upozornění týmu DevOps.

Automatizované nasazení prostředků

Samotný robot je jenom součástí většího systému, který mu poskytuje nejnovější data a zajišťuje jeho správné fungování. Všechny tyto další prostředky Azure – služby orchestrace dat, jako jsou Data Factory, služby úložiště, jako je Azure Cosmos DB a další – musí být nasazené. Azure Resource Manager poskytuje konzistentní vrstvu správy, ke které můžete přistupovat prostřednictvím Azure Portal, PowerShellu nebo Azure CLI. Pro rychlost a konzistenci je nejlepší automatizovat nasazení pomocí jednoho z těchto přístupů.

Průběžné nasazování robotů

Logiku robota můžete nasadit přímo z integrovaného vývojového prostředí (IDE) nebo z příkazového řádku, jako je Azure CLI. Jakmile ale robot vyzrává, je nejlepší použít proces průběžného nasazování pomocí řešení CI/CD, jako je Azure DevOps, jak je popsáno v článku Nastavení průběžného nasazování. Je to dobrý způsob, jak usnadnit třecí plochy při testování nových funkcí a oprav v robotovi v téměř produkčním prostředí. Je také vhodné mít více prostředí nasazení, obvykle alespoň přípravných a produkčních. Azure DevOps tento přístup podporuje.

Optimalizace nákladů

Optimalizace nákladů spočívá v hledání způsobů, jak snížit zbytečné výdaje a zlepšit provozní efektivitu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.

K odhadu nákladů použijte cenovou kalkulačku Azure. Tady jsou některé další aspekty.

Aplikace robota

V této architektuře je hlavním nákladem Azure App Service, ve kterém je hostována logika aplikace robota. Zvolte úroveň plánu App Service, která nejlépe vyhovuje vašim potřebám. Tady je několik doporučení:

  • Pro účely testování použijte úrovně Free a Shared (Preview), protože sdílené prostředky nemůžou škálovat na více instancí.
  • Spouštějte produkční úlohy na úrovních Basic, Standard a Premium, protože aplikace běží na vyhrazených instancích virtuálních počítačů a má přidělené prostředky, které mohou škálovat na více instancí. App Service plány se účtují po sekundách.

Za instance v plánu App Service se vám účtují poplatky, a to i v případě, že je aplikace zastavená. Odstraňte plány, které nechcete používat dlouhodobě, například testovací nasazení.

Další informace najdete v tématu Kolik stojí můj plán App Service?.

Přijímání dat

  • Azure Data Factory

    V této architektuře služba Data Factory automatizuje kanál příjmu dat. Prozkoumejte celou řadu možností integrace dat, které vyhovují vašim rozpočtovým potřebám, od spravovaných SQL Server integračních služeb pro bezproblémovou migraci SQL Server projektů do cloudu (nákladově efektivní možnost) až po rozsáhlé bezserverové datové kanály pro integraci dat všech tvarů a velikostí.

    Příklad najdete v tématu Azure Data Factory – příklad analýzy nákladů.

  • Azure Functions

    V této referenční architektuře se Azure Functions účtují podle plánu Consumption. Účtují se vám poplatky na základě spotřeby prostředků za sekundu a pokaždé, když nějaká událost aktivuje spuštění funkce. Zpracování několika událostí v jednom spuštění nebo dávkách může snížit náklady.

    Azure škáluje infrastrukturu potřebnou ke spouštění funkcí podle potřeby. Při nízkém zatížení se vertikálně snižuje kapacitu infrastruktury na nulu bez souvisejících nákladů. Při každém zvětšování zatížení Azure využívá dostatečnou kapacitu, aby obsloužila veškerou poptávku. Vzhledem k tomu, že platíte za skutečné použití, spravujte přesné náklady na jednotlivé komponenty.

Logic Apps

Ceny aplikací logiky fungují na modelu průběžných plateb. Aplikace logiky mají cenový model průběžných plateb. Triggery, akce a spuštění konektoru se měří při každém spuštění aplikace logiky. Všechny úspěšné a neúspěšné akce, včetně triggerů, se považují za spuštění.

Vaše aplikace logiky například z Azure Service Bus zpracovává 1 000 zpráv denně. Pracovní postup pěti akcí bude stát méně než 6 USD. Další informace najdete v tématu Logic Apps – ceny.

Další důležité informace o nákladech najdete v části Náklady v Microsoft Azure Well-Architected Framework.

Přispěvatelé

Tento článek spravuje Microsoft. Původně ji napsali následující přispěvatelé.

Hlavní autoři:

  • Robert Alexander | Vedoucí softwarový inženýr
  • Abhinav Mithal | Hlavní softwarový inženýr

Pokud chcete zobrazit neveřejné profily Služby LinkedIn, přihlaste se k LinkedInu.

Další kroky

Dokumentace k produktu:

školicí moduly Microsoft Learn: