Bot nám pomůže

Bot nám pomůže

Před rokem se náš oblíbený HR tým obrátil s prosbou: napsat chatbota, který pomůže nováčkům adaptovat se ve společnosti.

Upřesňujeme, že nevytváříme vlastní produkty, ale poskytujeme klientům plný rozsah služeb v oblasti vývoje. Příběh bude o našem vnitřním projektu, jehož objednavatelem není externí společnost, ale náš vlastní HR tým. Hlavním úkolem je za omezené dostupnosti lidí, zdrojů a času splnit projekt v termínu a vydat produkt.

Nejprve popíšeme úkoly, které bylo třeba vyřešit.

Vývojáři jsou většinou introverti a neradi hovoří, mnohem jednodušší je napsat svůj dotaz do elektronického chatu. S chatbotem není třeba přemýšlet, koho se zeptat, komu zavolat, kam jít, a vůbec, kde hledat informace a zda jsou aktuální.

Druhým problémem jsou informace — je jich mnoho, pocházejí z různých zdrojů, ne vždy jsou k dispozici a potřebují neustálé doplňování a aktualizaci.

Ve společnosti je téměř 500 zaměstnanců, nacházejí se v různých kancelářích, časových pásmech, městech v Rusku a dokonce i v zahraničí, obvykle je mnoho dotazů, proto dalším úkolem je snížit zátěž na HR personál spojenou s nejčastějšími dotazy zaměstnanců.

Bylo také nutné automatizovat procesy: příjezd nováčků do společnosti, zasílání zpráv manažerům a mentorům nováčků, odesílání automatických připomínek o kurzech a testech, které nováček musí absolvovat pro úspěšnou adaptaci.

Na základě obchodních požadavků byly formulovány technické specifikace.

Bot by měl fungovat na základě Skypu (historicky se v našem podniku používá), proto byl zvolen služba na Azure.

Pro omezení přístupu k němu jsme začali používat mechanismus autorizace přes Skype.
K rozpoznávání textu jsme použili knihovnu ParlAI.

Také je potřeba administrativní webový portál pro nastavení, školení, ladění, nastavování rozesílání a další úkoly.

Bot nám pomůže

Během práce na projektu jsme se setkali s celou řadou problémů a obtíží.

Například jsme měli technické problémy s účtem Azure. Microsoft nechtěl aktivovat naše předplatné kvůli určitým technickým potížím uvnitř jejich služby. Téměř dva měsíce jsme s tím nemohli nic udělat, podpora Microsoftu nakonec nad tím jen mávla rukou a poslala nás k partnerům, kteří vše úspěšně nastavili a vydali nám účet.

Nejkomplikovanějším etapou byl start projektu, kdy je třeba vybrat, co použijeme, jaká bude architektura, jak a kde budeme ukládat data a jak budou mezi sebou interagovat komponenty a moduly systému.

V našem případě byly běžné problémy při startu jakéhokoli projektu ještě komplikovány nedostatkem personálu. Specifika našeho podnikání spočívají v tom, že v porovnání s komerčními projekty často pracují na interních projektech vývojáři, kteří nemají dostatečné znalosti v potřebných oblastech – prostě se ocitli na lavici v očekávání dalšího velkého komerčního projektu. Není divu, že v takové situaci byla motivace značně obtížná. Výkon klesá, v týmu dochází často k prostojům, a nakonec je třeba vyjednávat (motivovat) nebo měnit člena týmu. Při výměně vývojáře je třeba provádět školení, předávat znalosti a fakticky znovu zahájit projekt. Každý nový vývojář viděl architekturu po svém a kritizoval předchozí rozhodnutí a cizí kód. Začínalo se přepisováním od nuly.

To trvalo asi půl roku. Jen jsme se točili na místě, refaktorovali kód a nic nového nenapsali.

Na interních projektech také obvykle není téměř žádná dokumentace, a bylo těžké pochopit, co je třeba dělat v každém okamžiku, a jaké jsou právě priority. Bylo nutné vytvořit stálý tým, nastavit procesy, provést plánování a odhad alespoň na tři měsíce. Ale jak to udělat, když projekt není komerční, což znamená, že je třeba investovat minimum člověkoživotů a zároveň dosáhnout výsledku, který není horší než pro externího zákazníka?

Určili jsme skupinu zdrojů, které se podílely na vývoji projektu, znají ho a chtějí na něm pracovat. Sestavili jsme harmonogram obsazenosti lidí na projektech. Provedli jsme hodnocení a odsouhlasení prací a zahrnuli tyto úkoly do „mezer“ mezi hlavními projekty. Po 4 měsících jsme získali funkční prototyp aplikace.

Nyní si podrobněji probereme funkčnost bota, architekturu a technická řešení.

Jedním z hlavních požadavků HR bylo rozpoznávání textu napsaného uživateli pro správnou odpověď na otázku. Uživatel může napsat "chci jít na dovolenou", "chci na dovolenou" nebo "půjdu na dovolenou", a bot to pochopí a odpoví odpovídajícím způsobem. Nebo když má zaměstnanec rozbitou židli a chce napsat "židle se rozbila" nebo "mám prasklou židli" nebo "opěradlo židle se odlomilo", při správném tréninku bot tyto požadavky rozpozná. Kvalita rozpoznávání textu samozřejmě závisí na tréninku bota, o kterém budeme hovořit později.

Dalším požadavkem a součástí funkce je systém dialogů bota. Byla vyvinuta systém, ve kterém může bot vést dialog a chápat kontext aktuální otázky. Může na vaši otázku položit nějaké upřesňující dotazy a pokračovat v konverzaci, pokud jsme bota naučili to udělat. Skype podporuje jednoduché nabídky pro nápovědu uživatelům o možných možnostech pokračování dialogů. Také pokud jsme vedli dialog, ale náhle se rozhodli položit otázku mimo téma, bot to také pochopí.

Bot umožňuje posílat uživateli různé artefakty na základě jeho osobních údajů. Například podle jeho polohy. Předpokládejme, že pokud člověk chce najít toaletu, ukáže mu mapa kanceláře, která ho dovede k toaletě. A mapa bude vybrána v závislosti na tom, v které kanceláři společnosti se zaměstnanec nachází.

Jedním z nejdůležitějších úkolů je ochrana osobních údajů uživatelů. Nemůžeme dovolit, aby se každý mohl dostat k důvěrným informacím, se kterými náš bot pracuje. Potřeba autorizace pro takového bota je nezbytnou součástí jeho funkcionality. Bot žádá uživatele o provedení autorizace, než s ním může vést jakýkoli dialog. K tomu dochází při prvním kontaktu zaměstnance s botem. Samotná autorizace přesměrovává uživatele na odpovídající stránku, kde uživatel získá token, který poté vloží do zprávy na Skypu. Pokud autorizace proběhne úspěšně, může začít komunikace s botem.

Bot nám pomůže

Autorizace probíhá přes Skype – portál-authorization service, firemní síť a LDAP. Tím pádem autorizace závisí na aktuálních datech o uživateli v firemní síti.

Během vývoje bota jsme zjistili, že je potřeba určitý systém integrovaný do funkcionality portálu, který by mohl pomoci HR rychleji ladit bota. Přidali jsme na portál takovou stránku, kde mohou HR vidět chyby, které uživatelé zaznamenali při práci s botem, a vyřešit je pomocí přeškolení, nebo je ponechat pro vývojáře.

Možnost trénování bota přímo na portálu nebyla zpočátku plánována. Během vývoje jsme si uvědomili, že trénink bota je nejčastější úkol, který budou zaměstnanci HR vykonávat při práci s ním, a posílat soubory s textem vývojářům pro další školení bota je naprosto nepraktické. To zabírá příliš mnoho času a způsobuje příliš mnoho chyb a problémů.

Bot nám pomůže

Napsali jsme UI na portálu pro přátelské uživatelské trénování bota. Umožňuje HR vidět aktuální trénink bota, dále ho školit a provádět úpravy v aktuálním tréninku. Trénink je prezentován ve stromové struktuře, ve které jsou uzly, tedy větve, pokračováním dialogu s botem. Můžete vytvářet jednoduché otázky-odpovědi, nebo obsáhlé dialogy, vše závisí na potřebách HR.

Několik slov o architektuře řešení.

Bot nám pomůže

Architektura řešení je modulární. Zahrnuje služby odpovídající různým úkolům, a to konkrétně:
• Služba Skype bota na Azure – přijímá a zpracovává uživatelské dotazy. Je to dost jednoduchá služba, která jako první přijímá dotaz a provádí jeho primární zpracování.
• Administrátorský portál – služba poskytující webové rozhraní pro nastavení portálu a samotného bota. Bot se vždy nejprve obrací na portál, a ten potom rozhodne, co s dotazem udělat dále.
• Služba autorizace – poskytuje mechanismy autentizace pro bota a pro administrátorský portál. Autorizace probíhá podle protokolu Oauth2. Při pozitivní autorizaci služba provádí autorizaci v podnikové síti na základě platných údajů uživatele, takže systém může kontrolovat chyby spojené s desynchronizací dat.
• AI modul pro rozpoznávání textu, napsaný v Pythonu a používající framework ParlAI pro samotné rozpoznávání textu. Je to neuronová síť, alespoň v aktuální implementaci. Používáme algoritmus tfDiff pro pochopení otázek. Modul poskytuje API pro komunikaci s ním a jeho školení.

Na závěr bych chtěl říci, že je to naše první zkušenost s vytvářením chat bota, a snažili jsme se udělat systém co nejjednodušší, ale přitom funkční, s minimálními náklady na něj. Myslím, že se nám podařil poměrně zajímavý produkt. Se svým systémem výuky, logování chyb, zasílání upozornění, je také možné jej integrovat s jakýmkoli jiným messengerem.

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