Robot nám pomůže

Robot nám pomůže

Před rokem nás naše milované HR oddělení požádalo o napsání chat bota, který by pomohl s adaptací nováčků ve firmě.

Udělejme si výhradu, že nevyvíjíme vlastní produkty, ale poskytujeme klientům celou řadu vývojových služeb. Příběh bude o našem interním projektu, jehož zákazníkem není společnost třetí strany, ale naše vlastní HR. A hlavním úkolem, vzhledem k omezené dostupnosti lidí, zdrojů a času, je dokončit projekt včas a uvolnit produkt.

Nejprve si popišme problémy, které bylo třeba vyřešit.

Vývojáři jsou většinou introvertní lidé a neradi mluví; je mnohem jednodušší napsat svůj dotaz do e-mailového chatu. S robotem nemusíte přemýšlet, koho se zeptat, komu zavolat, kam jít a obecně, kde hledat informace a zda jsou relevantní.

Druhým problémem jsou informace - je jich hodně, jsou v různých zdrojích, nejsou vždy dostupné a je třeba je neustále doplňovat a aktualizovat.

Společnost má téměř 500 zaměstnanců, kteří se nacházejí v různých kancelářích, časových pásmech, městech Ruska a dokonce i v zahraničí, dotazů je obvykle hodně, takže dalším úkolem je snížit zátěž personalistů spojenou s nejčastějšími dotazy zaměstnanci.

Dále bylo nutné zautomatizovat procesy: nástup nováčků do společnosti, zasílání zpráv manažerům a mentorům nováčků, zasílání automatických připomenutí kurzů a testů, které musí nováček projít pro úspěšnou adaptaci.

Technické požadavky byly vytvořeny na základě obchodních požadavků.

Bot musí fungovat na bázi Skypu (historicky ho ve firmě používají), proto byla zvolena služba na Azuře.

Abychom k němu omezili přístup, začali jsme používat autorizační mechanismus přes Skype.
Pro rozpoznávání textu byla použita knihovna ParlAI

Administrativní webový portál je také vyžadován pro konfiguraci, školení, ladění, nastavení e-mailů a další úkoly.

Robot nám pomůže

Při práci na projektu jsme narazili na řadu problémů a úskalí.

Vyskytly se například technické problémy s účtem Azure. Microsoft nechtěl aktivovat naše předplatné kvůli některým technickým potížím v rámci jejich služby. Téměř dva měsíce jsme s tím nemohli nic dělat, podpora Microsoftu nakonec rozhodila rukama a poslala nás k partnerům, kteří vše úspěšně nastavili a poskytli nám účet.

Nejtěžší fází byl rozjezd projektu, kdy je potřeba si vybrat, co budeme používat, jakou bude mít architekturu, jak a kam ukládat data a jak na sebe budou komponenty a moduly systému vzájemně působit.

V našem případě byly v podstatě běžné problémy se zahájením jakéhokoli projektu dále komplikovány personálním obsazením. Specifika našeho podnikání jsou taková, že na rozdíl od komerčních na interních projektech často pracují vývojáři, kteří nemají dostatečné znalosti v požadovaných oblastech - prostě z vůle osudu skončili na lavičce a čekali na další velký cool komerční projekt. Je logické, že s motivací to v takové situaci bylo také velmi složité. Produktivita klesá nízko, tým často zahálí a v důsledku toho musíte člověka přemlouvat (motivovat) nebo měnit. Při změně vývojáře je potřeba provést školení, přenést znalosti a v podstatě začít projekt znovu. Každý nový vývojář viděl architekturu svým vlastním způsobem a nadával těm předchozím za rozhodnutí, která udělali, a kód jiných lidí. Přepisování začalo od nuly.

To trvalo asi šest měsíců. Jen jsme označovali čas, refaktorovali kód a nepsali nic nového.

U interních projektů také zpravidla neexistuje téměř žádná dokumentace a bylo obtížné pochopit, co je třeba v každém okamžiku udělat a jaké jsou současné priority. Bylo nutné vytvořit stálý tým, nastavit procesy, provádět plánování a hodnocení po dobu minimálně tří měsíců. Jak to ale udělat, když projekt není komerční, to znamená, že musíte investovat minimum člověkohodin a přitom mít výsledek o nic horší než u externího zákazníka?

Identifikovali jsme fond zdrojů, kteří se podíleli na vývoji projektu, znají jej a chtějí na něm pracovat. Sestavili jsme harmonogram zaměstnávání lidí na projektech. Posuzovali jsme a koordinovali práci a zapadali jsme tyto práce do „děr“ mezi hlavními projekty. Po 4 měsících jsme obdrželi funkční prototyp aplikace.

Nyní si povíme podrobněji o funkčnosti, architektuře a technických řešení bota.

Jedním z hlavních požadavků HR bylo rozpoznat text napsaný uživatelem, aby správně odpověděl na otázku. Můžete mu napsat - chci jet na dovolenou, chci jet na dovolenou nebo by chtěl jet na dovolenou a on to pochopí a podle toho zareaguje. Nebo se najednou zaměstnanci rozbije židle a on chce napsat „židle je rozbitá“ nebo „Moje židle je prasklá“ nebo „Spadla zadní část židle“; s řádným školením robot takové požadavky rozpozná. Samotná kvalita rozpoznávání textu závisí na zaškolení bota, o kterém si povíme později.

Dalším požadavkem a součástí funkčnosti je dialogový systém robota. Byl vyvinut systém, ve kterém bot může vést dialog a pochopit kontext aktuálního problému. V odpovědi na vaši otázku může položit jakékoli upřesňující otázky a pokračovat v konverzaci, pokud jsme k tomu robota vycvičili. Skype podporuje jednoduché možnosti nabídky, které uživatele vyzve k možnostem pokračování konverzace. Také, pokud jsme vedli dialog, ale najednou se rozhodli položit otázku mimo téma, bot to také pochopí.

Bot umožňuje odesílat uživateli různé artefakty na základě jeho osobních údajů. Například na jeho místě. Předpokládejme, že pokud by člověk chtěl najít záchod, pak by mu byla ukázána kancelářská mapa, která ho dovedla na záchod. A karta bude vybrána podle toho, ve 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 umožnit každému, aby měl přístup k citlivým údajům, které náš robot provozuje. Potřeba autorizace pro takového bota je jeho nedílnou součástí. Robot požádá uživatele o ověření, než s ním bude moci vést jakýkoli dialog. To se stane poprvé, když zaměstnanec kontaktuje robota. Samotná autorizace uživatele přesměruje na příslušnou stránku, kde uživatel obdrží token, který následně vloží do Skype zprávy. Pokud je autorizace úspěšná, můžete začít komunikovat s robotem.

Robot nám pomůže

Autorizace probíhá přes Skype – portál-autorizační služba, firemní síť a LDAP. Autorizace tedy závisí na aktuálních uživatelských datech v podnikové síti.

V procesu vývoje robota jsme si uvědomili, že potřebujeme nějaký systém zabudovaný do funkčnosti portálu, který by mohl pomoci HR rychle odladit robota. Přidali jsme portálovou stránku, kde HR může vidět chyby zaznamenané uživateli při práci s botem a řešit je pomocí rekvalifikace nebo je nechat vývojářům.

Možnost vycvičit bota přímo na portálu nebyla zahrnuta od samého začátku. Během procesu vývoje jsme si uvědomili, že školení bota je nejčastějším úkolem, který budou zaměstnanci HR oddělení při práci s ním provádět, a zasílání textových souborů vývojářům k dodatečnému proškolení bota je zcela nepřijatelné. To zabírá příliš mnoho času a vytváří příliš mnoho chyb a problémů.

Robot nám pomůže

Na portálu jsme napsali uživatelské rozhraní pro uživatelsky přívětivé školení bota. Umožňuje HR vidět aktuální trénink robota, dále ho trénovat a provádět úpravy aktuálního tréninku. Školení je reprezentováno stromovou strukturou, ve které jsou uzly, tedy větve, pokračováním dialogu s robotem. Můžete vytvářet jednoduché otázky a odpovědi, nebo můžete vytvářet závažné dialogy, vše závisí na HR a jejich potřebách.

Pár slov o architektuře řešení.

Robot nám pomůže

Architektura řešení je modulární. Zahrnuje služby odpovědné za různé úkoly, jmenovitě:
• Služba Skype bot v Azure – přijímá a zpracovává požadavky uživatelů. Jedná se o celkem jednoduchou službu, která jako první obdrží požadavek a provede jeho prvotní zpracování.
• Admin portál – služba, která poskytuje webové rozhraní pro nastavení portálu a pro samotného bota. Bot vždy kontaktuje portál jako první a portál se rozhodne, co s požadavkem dál dělat.
• Autorizační služba – poskytuje autentizační mechanismy pro robota a pro administrátorský portál. Autorizace probíhá prostřednictvím protokolu Oauth2. Při kladné autorizaci služba provádí autorizaci v podnikové síti podle platných uživatelských dat, takže systém může kontrolovat chyby spojené s nesynchronizovanými daty.
• AI Modul rozpoznávání textu, napsaný v Pythonu a využívající rámec ParlAI pro samotné rozpoznávání textu. Toto je neuronová síť, alespoň v její současné implementaci. K pochopení otázek používáme algoritmus tfDiff. Modul poskytuje API pro komunikaci s ním a učení.

Na závěr chci říct, že je to naše první zkušenost s tvorbou chat bota a snažili jsme se, aby byl systém co nejjednodušší, ale zároveň funkční, s minimálními náklady na práci na něm. Myslím, že máme velmi zajímavý produkt. S vlastním školicím systémem, logováním chyb, zasíláním upozornění, může být také integrován s jakýmkoli jiným messengerem.

Zdroj: www.habr.com

Přidat komentář