Pracujete na recepci, jste zdravotní sestřička nebo máte nějaký svůj business a neustále se vás někdo ptá na ty stejné otázky dokola a dokola? Co si zkusit vytvořit jednoduché chatbota založeného na znalostní databázi bez jediného řádku kódu?
Obsah
Technické požadavky a vyžadované znalosti
- připojení k internetu
- PC s webovým prohlížečem
- aktivovaný účet Azure for Students
Jak služba funguje
Tvorba je jednoduchá. Jaké všechny procesy se dějí pod pokličkou QnA makeru, pod kterým budeme bota tvořit?
Služba funguje následujícím způsobem:
- uživatel aplikace odešle dotaz (např. zprávu)
- zprávu zpracuje webová aplikace, která ji odešle do služby Language Understanding (LUIS)
- LUIS zprávu zanalyzuje a díky vycvičenému modelu umělé inteligence vyvodí závěr a souvislost
- LUIS odešle zprávu službě Azure Search, která vyhledá v databázi dané informace
- webová aplikace si vytáhne informace z databáze a odešle příslušnou odpověď zpět uživateli aplikace
Tvorba chatbota
Proces si rozdělíme do 3 podkroků: založení znalostní databáze, tvorba, nastavení a výcvik znalostní databáze, publikování databáze a tvorba webové aplikace pro bota.
Založení znalostní databáze
1. Přejděte na stránku: https://www.qnamaker.ai/.
2. V pravém horním rohu se přihlaste (Sign in) pomocí svého Azure účtu.
3. V horní navigační liště máme 2 možnosti: My knowledge base (moje znalostní databáze) a Create a knowledge base (vytvořit znalostní databázi). My zvolíme druhou možnost, pro tvorbu nové databáze.
4. Zobrazí se nám průvodce zakládáním znalostní databáze. V prvním kroku jsme vyzváni, abychom si vytvořili prostředek na Azure. Klikneme tedy na tlačítko Create a QnA service a necháme se přesměrovat do Azure portálu.
5. Nyní je třeba celou službu správně nakonfigurovat. Pojďme si popsat jednotlivé parametry nastavení:
- Name (jméno) – název naší aplikace
- Subscription (předplatné) – zvolíme předplatné Azure pro studenty (Azure for Students)
- Pricing tier (cena) – my vyberme zdarma verzi předplatného, která bude pro naše zkušební požadavky stačit.
- Resource group (skupina prostředků) – zde si vytvoříme novou, skupiny prostředků nám umožňují efektivně pracovat s více prostředky najednou v Azure portálu a umožňují nám zachovat prostředek
- Resources group location (lokace skupiny prostředků) – je důležité vybrat u všech komponentů této služby stejnou lokaci – tedy stejné datacentrum, v kterém bude služba provozována. Čím blíže je datacentrum k vám, tím bude rychlejší a bude mít kratší odezvu. Já osobně pro české kraje volím vždy severní Evropu (North Europe)
- Azure Search pricing tier (cenová úroveň služby Azure Search) – zde opět doporučuji zvolit základní verzi předplatného
- Azure Search location (lokace Azure Search) – doporučuji vybrat North Europe (viz výše)
- App name (jméno aplikace) – rozhoduje o tom, jaká bude url adresa naší webové aplikace, pokud bychom chtěli používat rozhraní API
- Website location (lokace webové aplikace) – opět doporučuji vybrat North Europe (viz článek výše)
- App insights (vhledy do aplikace) – tuto možnost si můžeme v našem případě vypnout, hodí se spíše u větších projektů
TIP: Informace o dalších předplatných si můžete nalézt na stránce: https://azure.microsoft.com/en-us/pricing/calculator/
6. Po vyplnění všech parametrů jednoduše zvolíme možnost Create (vytvořit) a celá služba se nám začne nasazovat na servery Azure. Nelekejte se, tento proces obvykle trvá několik minut.
7. Konec nasazování služby nám potvrdí notifikační hláška v pravém horním rohu, která se zobrazí po kliknutí na symbol zvonku.
8. Nyní nám již zbývá dokončit propojení služby s portálem qnamaker.ai, a proto se vrátíme zpět do něj. Azure portál již můžeme zavřít.
9. Klikneme na tlačítko refresh (znovu načíst) – to z toho důvodu, aby tato webová stránka zaktualizovala informace a mohla načíst informace o již nově vytvořené službě na Azure.
10. Z nabídky zvolíme informace tak, aby směřovaly k vytvořené službě. V mém příkladu to je:
- Microsoft Azure Directory ID – název organizace do které patří můj účet, v mém případě Microsoft Student Partners
- Azure subscription name (název předplatného) – jelikož používám verzi zdarma pro studenty, zvolíme ji
- Azure QnA service – název naší aplikace
- Language (jazyk) – služba QnA maker nabízí obrovské množství jazyků, ovšem jen několik z nich je v tuto chvíli podporováno se všemi funkcemi a čeština to zatím není; abychom si mohli všechny funkce ukázat, zvolíme jazyk anglický
TIP: V případě, že by se vám zobrazoval název šedivý a objevila se notifikační hláška, že nemáte dostatečné oprávnění, nelekejte se. Tento problém je způsoben špatným znovu načtením. Vyřešíte ho jednoduše tak, že celou stránku znovu načtete.
11. V třetím kroku vybereme název naší znalostní databáze.
12. V rámci čtvrtého kroku se nám nabízí hned několik možností. My v tuto chvíli využijeme jen jednu z nich. Ostatní si ukážeme až později v nastavení celého studia.
Nastavíme Chit-chat našeho bota, tedy naimportujeme dataset již předpřipravených otázek a odpovědí, které budou určovat osobnost našeho bota. Máme na výběr z:
- None – žádná
- Professional – profesionální
- Friendly – kamarádský
- Witty – vtipný
- Caring – dobrosrdečný
- Enthusiastic – nadšený
13. Nyní již máme vše potřebné nastaveno a nezbývá nic jiného, než propojit službu s prostředím a pustit se konkrétně do tvorby mozku bota.
Tvorba, nastavení a výcvik znalostní databáze
Nyní jsme se dostali do samotného QnA maker studia. Pojďme si ukázat části databáze, abyste si ji mohli pak sami nastavit, přizpůsobit a vycvičit.
Nastavení
Do nastavení přejdeme tak, že klikneme v horní navigační liště na možnost settings.
V prvním bloku máme možnost měnit název znalostní databáze.
Druhá část je již o něco zajímavější. Umí hned několik zajímavých věcí.
Chytré importování dat z html, Word nebo pdf souborů
První a dle mého jednou z nejzajímavější funkcí je možnost naimportovat data ze souboru, který má příponu .docx (tedy Word), pdf nebo z html stránky. Abychom mohli tuto možnost vyzkoušet, je třeba ji aktivovat tak, že kliknete na nabídku Enable multi-turn extraction from URLs, .pdf or .docx files.
Zobrazí se nám nové dva boxy. Do prvního s nadpisem Default answer text napíšeme odpověď, která se nám přiřadí k otázkám, u kterých umělá inteligence nenajde žádný vysvětlující pojem. Typicky pokud máme dokument, v němž je nadpis druhé úrovně a pod ním hned bez jakéhokoliv komentáře nadpis třetí úrovně. Vepíšeme tedy do něho např. frázi So sorry, I don’t know.
Druhý box slouží již ke konkrétnímu importování soboru. My například zkusíme naimportovat slovník s pojmy umělé inteligence ze stránky https://studuj.digital/machine-learning-slovnik-pojmu/.
Někomu se může zdát, že je hulvátství do anglické databáze mít naimportována česká data. Nám to ovšem poslouží dobře – dokážeme si krásně ukázat rozdíl mezi osobností chatbota importovanou stránkou z webu.
Tato možnost se může v praxi využít např. pokud máte sepsaný nějaký návod na použití přístroje, školní řád či jakýkoliv jiný firemní nebo osobní dokument, z něhož chcete vytvořit znalostní databázi.
Importování otázek a odpovědí z externích souborů
Další možnost, jak naimportovat data, je nahrát databázi dotazů a odpovědí v databázovém formátu. Více informací o této nabídce naleznete na stránkách: https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/.
Další nastavení
Další části nastavení umožňují naimportovat již vytvořenou databázi, exportovat stávající nebo nasdílet databázi napříč zařízeními. Nesou také informace sloužící k napojení, je-li již databáze vypublikovaná.
Prostředí pro editaci otázek a odpovědí
Pojďme si představit prostředí pro editování otázek a odpovědí.
Abychom ho viděli kompletní, zobrazíme si veškeré prvky. To tak, že zvolíme View options a pohlídáme si, abychom měli vše aktivované (viz obrázek).
- vyhledávání
- přidání nové otázky a odpovědi
- nastavení zobrazení
- kontext odpovědi
- otázka a podobné fráze
- odpověď
- tlačítko odkazující na jinou otázku
- metadata
Kontext odpovědi
Kontext odpovědi nám říká, jaká otázka je dané otázce nadřazená. Konkrétně vidíme např. na importovaném příkladu ze stránky studuj.digital, že nadpis Machine Learning – slovník je úrovně 1, obsah je ovšem až úroveň 2 a nadpisy jsou až nižší úroveň.
Tato metoda pomáhá pochopit strojovému učení, jaká otázka je relevantnější a také nám umožňuje přidávat tlačítka odkazující na jinou stránku.
Otázka a podobné fráze
Otázka obsahuje klíčová slova, která umělá inteligence analyzuje. Je dobré projít několikrát celou databázi a přidávat alternativní fráze, tj. otázky, které mají mít stejnou odpověď.
Odpověď
Informace, která se odešle uživateli, který se na něco zeptá. Odpověď může být různě formátovaná, může obsahovat obrázky, odkazy, seznamy, smajlíky.
U stylování odpovědí si dejte pozor na to, pokud byste chtěli v budoucnu službu propojit s externí chatovací platformou. Např. Messenger od Facebook má jiné požadavky na formátování než např. Microsoft Teams nebo Skype.
Tlačítko odkazující na jinou otázku
Tato novinka přišla nedávno do QnA makeru. Umožňuje odeslat uživateli s odpovědí tlačítko, které mu může dát možnost se prokliknout rovnou na jinou odpověď.
Metadata
Metadata jsou data o datech. Mohou nám tedy sloužit jako jakési poznámky, pokud používáme složitější databázi a potřebujeme si v ní zavést systém.
Výcvik znalostní databáze
Po každé editaci znalostní databáze je třeba databázi uložit a vycvičit model umělé inteligence.
Velice důležitou součástí tvorby je také opravování chyb a přidávání alternativních frází a odpovědí. I toto všechno se dá provádět v studiu QnA maker.
Chat spustíme kliknutím na tlačítko test. (1.)
Začneme si s botem psát a pokud se nám nějaká odpověď nezdá správná, prověříme ji. Odpověď se prověřuje tak, že klikneme na tlačítko Inspect (2.) a zobrazí se nám výcvikové zobrazení.
Pod číslem 3. se skrývá prostor pro dopsání alternativních frází dotazů, na které by se mohl návštěvník ptát a mají mít stejnou dopověď.
Pod číslem 4. se skrývají odpovědi. U nich můžeme pozorovat hned několik věcí. Skóre přesnosti a pokud si není umělá inteligence zcela jistá, je důležité zvolit z nabízených frází tu nejvíce relevantní. Pokud se nám ani jedna odpověď nebude zdát vhodná, dopíšeme vlastní frázi.
Po úpravě vždy práci uložíme a necháme model znovu vycvičit.
Tipy a triky k práci v QnA makeru
- Nebojte se kreslit si poznámky na papír. Pomohou se vám lépe ve všem zorientovat.
- Používejte vyhledávání, pokud je váš projekt větších rozměrů.
- Importujte více dokumentů do jedné databáze.
- Ptejte se lidí ve svém okolí, zda je nenapadá jiná otázka či jiná fráze.
- Nebojte se měnit projekt i po vypublikování. Databáze se vám automaticky změní a propíše i do produkce.
- Spolupracujte na projektu s více lidmi. Stačí nasdílet skupinu prostředků skrze Azure portal.
Publikování databáze a tvorba webové aplikace
Po dotvoření znalostní databáze již nezbývá nic jiného, než ji vypublikovat a propojit s webovou aplikací. Pojďme si ukázat jak na to.
1. V prostředí QnA makeru přejdeme na kartu publish (publikovat) a zvolíme možnost Publish (publikovat).
Zobrazí se nám okno s možností propojení. Zde jsou dva scénáře. První – technicky náročnější je ten, že si znalostní databázi propojíte se svoji vlastní webovou aplikací pomocí volání HTTP. Druhý jednodušší, který zvolíme i my, je nechat veškeré propojení na Azure a jen vytvořit novou službu. Zvolíme tedy tlačítko Create Bot (vytvořit bota).
TIP: Pokud již máte webovou aplikaci typu chatbot založenou, zvolte možnost View all your bots… a jednoduše si ji propojte dle instrukcí.
2. Otevře se nám nové okno opět s Azure portálem. Tvorba je podobná, jako když jsme na začátku vytvářeli prostředky pro Znalostní databázi. Navíc je za vás již spousta informací předvytvořena. My změníme jenom pár drobností:
- Princing tier – nám bude stačit zdarma, tedy F0
- SDK – jako jazyk zvolíme např. Node.js oproti C#. Na fungování bota to v tuto chvíli nemá žádný vliv
- Application Insights – opět vypneme návrhy zlepšení, jelikož je u našeho zkušebního projektu nebudeme potřebovat
3. Po vyplnění zvolíme možnost Create a prostředek se nám začne opět nasazovat.
4. Jakmile se prostředek nasadí, přejdeme k němu a podíváme se na jeho možnosti.
Testovací chat
Bota lze testovat přímo z řídícího prostředí webové aplikace. Stačí zvolit Test in Web Chat a můžete začít.
Přidání do externích chatovacích platforem
Webovou aplikaci lze snadno napojit na bezpočet externích chatovacích služeb. Informace, jaké všechny je možné použít a jak je napojit naleznete zde: https://docs.microsoft.com/en-us/azure/bot-service/bot-service-manage-channels?view=azure-bot-service-4.0.
Záznam z konference
Pokud více upřednostňujete formu videa, o celém procesu tvorby jsem hovořil i na konferenci studuj.live.
Závěr
Detailně jsme si ukázali, jak si vytvořit vlastního chatbota. Věřím, že přesně v takových aplikacích umělé inteligence a dalších moderních technologiích je budoucnost a vědět o nich a umět s nimi je obrovskou výhodou.