Nagyvállalati szintű beszélgető robot összeállítása

Robotszolgáltatás
Cognitive Services

Ez a referenciaarchitektúra azt ismerteti, hogyan lehet nagyvállalati szintű beszélgetőrobotot (csevegőrobotot) építeni az Azure Bot Framework. Minden robot más, de van néhány gyakori minta, munkafolyamat és technológia, amelyekről értesülni kell. A nagyvállalati számítási feladatok kiszolgálására szolgáló robotok esetében számos tervezési szempontot figyelembe kell venni az alapvető funkciók mellett. Ez a cikk a legfontosabb tervezési szempontokat tartalmazza, és bemutatja azokat az eszközöket, amelyek egy robusztus, biztonságos és aktív tanulási robot felépítéséhez szükségesek.

Az architektúra ábrája

Töltse le az architektúra Visio-fájlját.

Az architektúrában használt ajánlott segédprogramminták teljes mértékben nyílt forráskódúak, és elérhetők a GitHub.

Architektúra

Az itt látható architektúra a következő Azure-szolgáltatásokat használja. Előfordulhat, hogy a saját robotja nem használja ezeket a szolgáltatásokat, vagy további szolgáltatásokat is magában foglalhat.

Robotlogika és felhasználói élmény

  • Bot Framework Service (BFS). Ez a szolgáltatás összekapcsolja a robotot egy kommunikációs alkalmazással, például Cortana, Facebook Messenger Slack-hez. Elősegíti a robot és a felhasználó közötti kommunikációt.
  • Azure App Service . A robotalkalmazás logikája egy másik Azure App Service.

Robot megismerés és intelligencia

  • Language Understanding (LUIS). A szolgáltatás Azure Cognitive Servicesa LUIS lehetővé teszi, hogy a robot a felhasználói szándékok és entitások azonosításával megértse a természetes nyelvet.
  • Azure Search. A Keresés egy felügyelt szolgáltatás, amely gyors kereshető dokumentumindexet biztosít.
  • QnA Maker. A QnA Maker egy olyan felhőalapú API-szolgáltatás, amely egy beszélgetés típusú, kérdésekből és válaszokból álló réteget hoz létre az adatok alapján. Általában részben strukturált tartalmakkal, például gyikokkal van feltöltve. Segítségével létrehozhat egy tudásbázist a természetes nyelvi kérdésekre való válaszhoz.
  • Webalkalmazás:. Ha a robotnak meglévő szolgáltatás által nem biztosított AI-megoldásokra van szüksége, megvalósíthatja a saját egyéni AI-ját, és webalkalmazásként is használhatja. Ez egy webes végpontot biztosít a robot számára, amit meg lehet hívni.

Adatfeldolgozás

A robot nyers adatokra támaszkodik, amelyet be kell induk és elő kell készíteni. A folyamat vezénylését az alábbi lehetőségek egyikével vezényelje:

  • Azure Data Factory . Data Factory és automatizálja az adatok mozgását és átalakítását.
  • Logic Apps:. Logic Apps egy kiszolgáló nélküli platform az alkalmazásokat, adatokat és szolgáltatásokat integráló munkafolyamatok építéséhez. Logic Apps összekötőket biztosít számos alkalmazáshoz, beleértve a Office 365.
  • Azure Functions:. A Azure Functions eseményindító által meghívott egyéni kiszolgáló nélküli kód írására is használható, például amikor egy dokumentumot adnak hozzá a Blob Storage-hoz vagy egy Cosmos DB.

Naplózás és figyelés

  • Alkalmazás Elemzések. Az Application Elemzések naplóz a robot alkalmazásmetrikákat monitorozási, diagnosztikai és elemzési célokra.
  • Azure Blob Storage. A Blob Storage nagy mennyiségű strukturálatlan adat tárolására van optimalizálva.
  • Cosmos DB. Cosmos DB alkalmas részben strukturált naplóadatok, például beszélgetések tárolására.
  • Power BI . A Power BI a robot figyelési irányítópultjának létrehozásához.

Biztonság és irányítás

Minőségbiztosítás és fejlesztések

  • Azure DevOps. Számos alkalmazáskezelési szolgáltatást nyújt, beleértve a forráskezelést, az építést, a tesztelést, az üzembe helyezést és a projektkövetést.
  • VS Code Egyszerű kódszerkesztő alkalmazásfejlesztéshez. Bármilyen más IDE-t használhat hasonló funkciókkal.

Kialakítási szempontok

A beszélgetési robotok magas szinten feloszthatók a robot funkcióira (az "agyra") és az azt körülvevő követelményekre (a "törzsre"). Az agy tartalmazza a tartományt ható összetevőket, beleértve a robot logikáját és ML képességeket. Más összetevők tartománytól függetlenek, és olyan nem funkcionális követelményeket is megfeleltetnek, mint a CI/CD, a minőségbiztosítás és a biztonság.

Robotfunkciók logikai diagramja

Mielőtt rátérünk az architektúra pontos adataira, kezdjük az adatfolyammal a terv egyes alkomponensei között. Az adatfolyam magában foglalja a felhasználó által kezdeményezett és a rendszer által kezdeményezett adatfolyamokat is.

Felhasználói üzenetfolyam

Hitelesítés:. A felhasználók először hitelesítik magukat a robottal való kommunikáció csatornája által biztosított bármilyen mechanizmussal. A bot framework számos kommunikációs csatornát támogat, beleértve a Cortana, Microsoft Teams, Facebook Messenger, a Kik és a Slack csatornát. A csatornák listájáért lásd: robot Csatlakozás csatornákhoz. Amikor létrehoz egy robotot egy Azure Bot Service, a webchat automatikusan konfigurálva lesz. Ez a csatorna lehetővé teszi a felhasználók számára, hogy közvetlenül egy weblapon kommunikálják a robotot. A robotot egy egyéni alkalmazáshoz is csatlakoztathatja a Direct Line csatornával. A felhasználó identitása szerepköralapú hozzáférés-vezérlésre, valamint személyre szabott tartalmak kiszolgálására szolgál.

Felhasználói üzenet:. A hitelesítést követően a felhasználó üzenetet küld a robotnak. A robot beolvassa az üzenetet, és egy természetes nyelvi megértési szolgáltatáshoz, például a LUIS-hoz is továbbkultálja. Ez a lépés lekérte a szándékokat (amit a felhasználó tenni szeretne) és az entitásokat (ami a felhasználó számára érdekes). A robot ezután felépít egy lekérdezést, amely információkat szolgál ki egy szolgáltatásnak, például az Azure Search a dokumentumlekéréshez, QnA Maker gyakori kérdésekhez vagy egy egyéni tudásbázis. A robot ezekkel az eredményekkel hoz létre választ. Annak érdekében, hogy a legjobb eredményt adja egy adott lekérdezéshez, a robot több oda-vissza hívást kezdeményezhet ezekhez a távoli szolgáltatásokhoz.

Válasz:. Ezen a ponton a robot meghatározta a legjobb választ, és elküldi a felhasználónak. Ha a legjobb egyezésű válasz megbízhatósági pontszáma alacsony, akkor a válasz lehet egy kétértelmű kérdés vagy egy nyugtázás, amely szerint a robot nem tudott megfelelően válaszolni.

Naplózás. Amikor egy felhasználói kérés érkezik vagy választ küld, az összes beszélgetési műveletet naplózza egy naplózási tárolóban, a teljesítménymetrikák és a külső szolgáltatások általános hibái mellett. Ezek a naplók később hasznosak lesznek a problémák diagnosztizálása és a rendszer javítása során.

Visszajelzés. Egy másik jó gyakorlat a felhasználói visszajelzések és elégedettségi pontszámok gyűjtése. A robot végső válaszának nyomon követnie kell, hogy a robotnak meg kell kérnie a felhasználót, hogy értékelje a válaszokkal való elégedettségét. A visszajelzések segítségével megoldhatja a természetes nyelvfelismerés hideg indításával kapcsolatos problémát, és folyamatosan javíthatja a válaszok pontosságát.

Rendszeradatok Flow

ETL. A robot a nyers adatokból a háttérben található ETL-folyamat által kinyert információkra és ismeretekre támaszkodik. Ezek lehetnek strukturáltak (SQL adatbázisok), részben strukturáltak (CRM-rendszer, gyakori kérdések) vagy strukturálatlanok (Word-dokumentumok, PDF-ek, webes naplók). Az ETL alrendszer rögzített ütemezés szerint bontja ki az adatokat. A tartalmat a rendszer átalakítja és bővíti, majd betölti egy köztes adattárba, például Cosmos DB Azure Blob Storage.

A köztes áruházban található adatokat a rendszer ezután indexeli az Azure Search szolgáltatásba dokumentum lekérése céljából, betölti az QnA Maker-ba kérdés-válasz párok létrehozásához, vagy betölti őket egy egyéni webalkalmazásba strukturálatlan szövegfeldolgozás céljából. Az adatok a LUIS-modell szándék- és entitáskinyerési betanítása során is használhatók.

Minőségbiztosítási szolgáltatás. A beszélgetési naplók segítségével diagnosztizálhatja és kijavíthatja a hibákat, betekintést nyerhet a robotba, és nyomon követheti az általános teljesítményt. A visszajelzési adatok hasznosak az AI-modellek újraképezéséhez a robot teljesítményének javítása érdekében.

Robot kiépítése

Mielőtt egyetlen kódsort is megírna, fontos megírni egy funkcionális specifikációt, hogy a fejlesztői csapat egyértelműen tudja, mit vár a robottól. A specifikációnak tartalmaznia kell a felhasználói bemenetek és a várt robotválaszok viszonylag átfogó listáját a különböző tudástartományban. Ez az élő dokumentum felbecsülhetetlen értékű útmutató lesz a robot fejlesztéshez és teszteléshez.

Adatok betöltése

Ezután azonosítsa azokat az adatforrásokat, amelyek lehetővé teszik, hogy a robot intelligens módon kommunikáljon a felhasználókkal. Ahogy korábban említettük, ezek az adatforrások strukturált, részben strukturált vagy strukturálatlan adatkészleteket tartalmazhatnak. Az első lépésekhez jó megoldás, ha az adatokat egy központi tárolóba, például az Cosmos DB vagy az Azure-Storage. A folyamat előrehaladtával létre kell hoznia egy automatizált adatbefedő folyamatot, hogy az adatok mindig aktuálisak maradnak. Az automatizált adatbe Data Factory, függvények és Logic Apps. Az adattáraktól és a sémáktól függően ezek a megközelítések kombinációját is használhatja.

Első lépésekben ésszerű a Azure Portal Azure-erőforrásokat létrehozni. Később érdemes átgondolni ezeknek az erőforrásoknak az üzembe helyezését.

Alapvető robotlogika és felhasználói felület

Ha már van egy specifikációja és néhány adata, ideje, hogy a robotot valóra váltsa. Most az alapvető robotlogikával kell összpontosítanunk. Ez az a kód, amely kezeli a felhasználóval folytatott beszélgetést, beleértve az útválasztási logikát, az egyértelmű logikát és a naplózást. Először ismerkedjen meg a Bot Framework,beleértve a következőket:

A gazdag felhasználói élmény érdekébenszámos lehetőség áll rendelkezésre.

  • Kártyák használatával gombokat, képeket, választógombokat és menüket is tartalmazhat.
  • A robotok támogatják a beszédet.
  • Akár egy alkalmazásba vagy webhelybe is beágyazhatja a robotot, és használhatja az azt üzemeltető alkalmazás képességeit.

Első lépésekként online is felépítheti a robotot a következő Azure Bot Service használatával:, válasszon az elérhető C# és Node.js sablonok közül. Ahogy azonban a robot egyre kifinomultabb lesz, helyileg kell létrehoznia, majd üzembe kell helyeznie a weben. Válasszon egy IDE-t, például Visual Studio vagy Visual Studio Code-et és egy programozási nyelvet. Az ALÁBBI nyelvekhez érhetők el az SDK-k:

Kiindulási pontként letöltheti a létrehozott robot forráskódját a Azure Bot Service. Mintakódot istalálhat az egyszerű echo robotoktól a különböző AI-szolgáltatásokkal integrálható kifinomultabb robotokon át.

Intelligensek hozzáadása a robothoz

Egy jól meghatározott parancslistát használó egyszerű robot esetén lehet, hogy egy szabályalapú megközelítéssel tudja majd a regexen keresztül elemezni a felhasználói bevitelt. Ennek az az előnye, hogy determinisztikus és érthető. Ha azonban a robotnak egy természetesebb nyelvű üzenet szándékait és entitásait kell megértenie, vannak olyan AI-szolgáltatások, amelyek segíthetnek.

  • A LUIS kifejezetten a felhasználói szándékok és entitások megértő okhoz lett kialakítva. A betanítás a megfelelő felhasználói bevitel és a kívánt válaszok közepes méretű gyűjteményét adja meg, és visszaadja a felhasználó adott üzenetének szándékait és entitásait.

  • Az Azure Search működik együtt a LUIS-ral. A Search használatával kereshető indexeket hozhat létre az összes releváns adathoz. A robot lekérdezi ezeket az indexeket a LUIS által kinyert entitások után. Az Azure Search a szinonimákatis támogatja, amelyek a helyes szóleképezések hálóját is kiszélesedik.

  • QnA Maker egy másik szolgáltatás, amely adott kérdésekre ad választ. Ez általában részben strukturált adatok, például gyakori kérdések alapján van betanítva.

A robot más AI-szolgáltatásokat is használhat a felhasználói élmény további gazdagítására. Az Cognitive Services előre felépített AI-szolgáltatások (beleértve a LUIS-t és a QnA Maker-t) előre felépített AI-szolgáltatáscsomag a látásra, beszédre, nyelvre, keresésre és helyre vonatkozó szolgáltatásokat kínál. Gyorsan hozzáadhat olyan funkciókat, mint a nyelvfordítás, a helyesírás-ellenőrzés, a hangulatelemzés, az OCR, a helyfelismerés és a tartalommoderálás. Ezek a szolgáltatások a robotban közvetítőprogram-modulokként is összekötve természetesebb és intelligensebb módon kommunikálhatnak a felhasználóval.

Egy másik lehetőség a saját egyéni AI-szolgáltatás integrálása. Ez a megközelítés összetettebb, de teljes rugalmasságot biztosít a gépi tanulási algoritmus, a betanítás és a modell tekintetében. Megvalósíthat például egy saját témakörmodellezést, és használhat olyan algoritmusokat, mint az LDA, hogy hasonló vagy releváns dokumentumokat keressen. Jó módszer, ha az egyéni AI-megoldást webszolgáltatás-végpontként teszi elérhetővé, és a végpontot a robot alapvető logikája alapján hívja meg. A webszolgáltatás üzemeltethet virtuális gépek App Service fürtben is. Azure Machine Learning számos szolgáltatást és kódtárat biztosít a modellek betanítása és üzembe helyezése során.

Minőségbiztosítás és fejlesztés

Naplózás. Felhasználói beszélgetések naplózása a robottal, beleértve a mögöttes teljesítménymetrikákat és az esetleges hibákat. Ezek a naplók felbecsülhetetlen értékűek a hibakereséshez, a felhasználói interakciók megértéséhez és a rendszer javításához. A különböző típusú naplókhoz különböző adattárak is megfelelőek lehetnek. Fontolja meg például az Application Elemzések webnaplókhoz, Cosmos DB beszélgetésekhez és az Azure Storage a nagy hasznos adatokhoz. Lásd: Írás közvetlenül az Azure-ba Storage.

Visszajelzés. Azt is fontos megérteni, hogy mennyire elégedettek a felhasználók a robotokkal való interakciók során. Ha van egy rekordja a felhasználói visszajelzésekkel kapcsolatban, ezeket az adatokat arra használhatja, hogy az egyes interakciók javítására összpontosítson, és az AI-modellek újraképezésére összpontosítson a jobb teljesítmény érdekében. Használja a visszajelzést a modellek, például a LUIS újraképzéhez a rendszerben.

A tesztelése. A robotok tesztelése egységteszteket, integrációs teszteket, regressziós teszteket és funkcionális teszteket foglal magában. Teszteléshez azt javasoljuk, hogy rögzítsen valódi HTTP-válaszokat külső szolgáltatásoktól, például az Azure Searchtől vagy az QnA Maker-tól, így azok visszajátszhatóak az egységtesztelés során anélkül, hogy valódi hálózati hívásokat kellene kezdeményezni külső szolgáltatásokhoz.

Megjegyzés

Ha ezeken a területeken is feledné a fejlesztést, nézze meg a JavaScripthez használt Botbuilder Utils eszközt. Ez az objektum minta segédprogramkódot tartalmaz a 4-es Microsoft Bot Framework-vel készült és a virtuális gépeket futtató Node.js. A következő csomagokat tartalmazza:

  • Cosmos DB Naplózási tároló. Bemutatja, hogyan tárolhatók és kérdezhetőek le a robotnaplók Cosmos DB.
  • Alkalmazásnaplózási Elemzések:. Bemutatja, hogyan tárolhatók és kérdezhetőek a robotnaplók az Application Elemzések.
  • Visszajelzések gyűjtése – Middleware. Minta olyan middleware, amely egy robot felhasználói visszajelzési kérési mechanizmusát biztosítja.
  • HTTP Test Recorder. A roboton kívül található szolgáltatások HTTP-forgalmát rögzíti. Előre kiépített támogatást nyújt a LUIS, az Azure Search és a QnAMaker szolgáltatásokhoz, de bővítmények is elérhetők bármely szolgáltatás támogatásához. Ez segít a robottesztelés automatizálásában.

Ezek a csomagok segédprogram mintakódként biztosítanak, és nem garantálják a támogatást és a frissítéseket.

Rendelkezésre állási szempontok

Amikor új funkciókat vagy hibajavításokat ad a robotnak, a legjobb, ha több üzembe helyezési környezetet használ, például előkészítést és éles környezetet. Az Azure DevOpsüzembe helyezési pontokkal ezt állásidő nélkül teszi lehetővé. Tesztelheti a legújabb frissítéseket az átmeneti környezetben, mielőtt lecseréli őket az éles környezetbe. A terhelés kezelése szempontjából a App Service manuális vagy automatikus horizontális fel- vagy felskálákra van tervezve. Mivel a robot a Microsoft globális adatközpont-infrastruktúrájában üzemel, az App Service SLA magas rendelkezésre állást biztosít.

Biztonsági szempontok

Mint minden más alkalmazás, a robotot úgy is meg lehet tervezni, hogy bizalmas adatokat kezeljen. Ezért korlátozza, hogy ki jelentkezhet be és használhatja a robotot. A felhasználó identitása vagy szerepköre alapján korlátozhatja, hogy mely adatok érhetők el. Az Azure AD-t használhatja identitás- és hozzáférés-vezérlésre, valamint Key Vault kulcsok és titkos kulcsok kezelésére.

A DevOps megfontolandó szempontjai

Figyelés és jelentéskészítés

Ha a robot éles környezetben fut, szüksége lesz egy DevOps-csapatra, hogy ezt a lépést is megtartsa. A rendszer folyamatos monitorozásával biztosíthatja, hogy a robot csúcsteljesítményt nyújt. Az Application Elemzések vagy Cosmos DB szolgáltatásnak küldött naplók használatával monitorozási irányítópultokat hozhat létre az Application Elemzések, Power BI vagy egyéni webalkalmazás-irányítópultok használatával. Riasztások küldése a DevOps-csapatnak, ha kritikus hibák lépnek fel, vagy a teljesítmény egy elfogadható küszöbérték alá esik.

Automatizált erőforrás-üzembe helyezés

Maga a robot csak egy nagyobb rendszer része, amely a legfrissebb adatokat biztosítja, és biztosítja a megfelelő működését. Az összes többi Azure-erőforrást – az adatvezénylési szolgáltatásokat, például Data Factory, a tárolási szolgáltatásokat, például Cosmos DB stb. – üzembe kell helyezni. Azure Resource Manager egy konzisztens felügyeleti réteget biztosít, amely a Azure Portal, a PowerShell vagy az Azure CLI használatával is elérhető. A sebesség és a konzisztencia érdekében az üzembe helyezést az alábbi módszerek egyikével automatizálhatja.

Robot folyamatos üzembe helyezése

A robot logikáját üzembe helyezheti közvetlenül az IDE-ről vagy egy parancssorból, például az Azure CLI-ről. Mivel azonban a robot kiforrott, ajánlott folyamatos üzembe helyezési folyamatot használni egy CI/CD-megoldás, például az Azure DevOps használatával, a Folyamatos üzembe helyezés beállítása cikkben leírtak szerint. Ez jó módszer arra, hogy megkönnyítse a robot új funkcióinak és javításainak éles környezetben való tesztelését. Emellett ajánlott több üzembe helyezési környezet is, általában legalább előkészítési és éles környezet. Az Azure DevOps támogatja ezt a megközelítést.

Költségekkel kapcsolatos szempontok

Az Azure díjkalkulátorával megbecsülheti költségeit. Íme néhány egyéb szempont.

Robotalkalmazás

Ebben az architektúrában a fő költségillesztő az a Azure App Service, amelyben a robotalkalmazás logikája üzemel. Válassza ki App Service igényeinek leginkább megfelelő csomagszintet. Íme néhány javaslat:

  • Az Ingyenes és a Megosztott (előzetes verzió) szinteket tesztelési célokra használhatja, mivel a megosztott erőforrások nem skálázhatóak fel horizontálisan.
  • Az éles számítási feladatokat Alapszintű, Standardés Prémium szinten futtathatja, mivel az alkalmazás dedikált virtuálisgép-példányon fut, és horizontális felskálásos erőforrásokat osztott ki. App Service csomagok számlázása másodperc alapon történik.

Az App Service példányaiért akkor is fizetnie kell, ha az alkalmazás le van állítva. Törölje a hosszú távon nem használni kívánt csomagokat, például a teszttelepítéseket.

További információ: Mennyibe kerül a App Service a csomagom?.

Adatfeldolgozás

  • Azure Data Factory

    Ebben az architektúrában a Data Factory automatizálja az adatbeteléses folyamatot. A felügyelt SQL Server Integration Servicestől a SQL Server-projektek felhőbe való zökkenőmentes migrálását (költséghatékony megoldás) a nagy léptékű, kiszolgáló nélküli adatkapcsolatokig számos adatintegrációs képességet fedezhet fel a költségvetési igényeknek megfelelően.

    Példa: Azure Data Factory költségelemzés.

  • Azure Functions

    Ebben a referenciaarchitektúrában a Azure Functions használat alapján kell fizetni. A díjat a másodpercalapú erőforrás-használat alapján számítjuk fel, és minden alkalommal, amikor egy esemény aktiválja a függvény végrehajtását. Több esemény feldolgozása egyetlen végrehajtásban vagy kötegben csökkentheti a költségeket.

    Az Azure szükség szerint skálázja a függvények futtatásához szükséges infrastruktúrát. Ha a számítási feladatok alacsonyak, az infrastruktúra a költségek nélkül nullára lesz skálázva. Amikor a számítási feladat növekszik, az Azure elegendő kapacitást használ az összes igény kiszolgálására. Mivel a tényleges használat alapján fizet, az egyes összetevők pontos költségét kell kezelnie.

Logic Apps

A Logic Apps díjszabása a fizetéses modellen működik. A logikai alkalmazásoknak van egy díjszabási modellje, amely a "pay-as-you-go" (fizetéses) modellt használja. Az eseményindítók, műveletek és összekötő-végrehajtások mérése a logikai alkalmazások minden futtatásakor meg lesz mérésre. Minden sikeres és sikertelen művelet, beleértve az eseményindítókat is, végrehajtásnak számít.

A logikai alkalmazás például naponta 1000 üzenetet dolgozza fel az Azure Service Bus. Egy ötműveletes munkafolyamat 6 dollárnál kevesebbe kerül. További információ: díjszabás Logic Apps.

További költségekkel kapcsolatos szempontokért tekintse meg a Microsoft Azure Well-Architected Keretrendszer Költség szakaszát.

Következő lépések

  • Tekintse át Virtual Assistant sablont a beszélgetési robotok gyors építéséhez.