Bot nám pomôže

Bot nám pomôže

Pred rokom sa náš milovaný HR oddelenie obrátilo na nás s prosbou: napísať chatbot, ktorý pomôže nováčikom s adaptáciou v spoločnosti.

Uveďme, že nevyvíjame vlastné produkty, ale klientom poskytujeme komplexné služby v oblasti vývoja. Rozprávať budeme o našom internom projekte, pričom objednávateľom nie je externá spoločnosť, ale náš vlastný HR. Hlavnou výzvou pri obmedzenej dostupnosti ľudí, zdrojov a času bolo dokončiť projekt včas a uviesť produkt na trh.

Na začiatok opíšeme úlohy, ktoré bolo potrebné vyriešiť.

Programátori sú väčšinou introverti a neradi sa rozprávajú, omnoho jednoduchšie je napísať svoju otázku do elektronického chatu. S botom netreba premýšľať, koho sa opýtať, komu zavolať, kam ísť a vôbec, kde hľadať informácie, a či sú aktuálne.

Druhým problémom je samotná informácia — je jej veľa, nachádza sa v rôznych zdrojoch, nie vždy je dostupná a potrebuje neustále dopĺňanie a aktualizáciu.

V spoločnosti je takmer 500 zamestnancov, ktorí sú rozptýlení po rôznych kanceláriách, časových pásmach, mestách v Rusku a dokonca aj v zahraničí, preto býva otázok zvyčajne veľmi veľa, a preto je ďalšou úlohou znížiť záťaž na HR personál, týkajúcu sa najčastejších otázok, ktoré zamestnanci kladú.

Takisto bolo potrebné automatizovať procesy: príchodu nováčikov do spoločnosti, zasielania správ manažérom a mentorom nováčikov, posielania automatických pripomienok o kurzoch a testoch, ktoré nováčik musí absolvovať na úspešnú adaptáciu.

Na základe obchodných požiadaviek boli formulované technické.

Bot by mal fungovať na základe Skype (historicky sa zistilo, že ho v spoločnosti používajú), a preto bol vybraný služba na Azure.

Na obmedzenie prístupu k nemu sme začali používať mechanizmus autorizácie cez Skype.
Na rozpoznávanie textu sme použili knižnicu ParlAI.

Takisto je potrebný administratívny webový portál na nastavenie, školenie, ladenie, nastavenie zasielania a ďalšie úlohy.

Bot nám pomôže

Počas práce na projekte sme sa stretli s množstvom problémov a ťažkostí.

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

Nejnáročnějším krokem byl začátek projektu, kdy bylo potřeba vybrat, co použijeme, jaká bude architektura, jak a kde budeme uchovávat data a jak budou komponenty a moduly systému spolu komunikovat.

V našem případě se běžné problémy začátku jakéhokoli projektu komplikovaly ještě týmem. Specifika našeho byznysu spočívají v tom, že na rozdíl od komerčních projektů na interních projektech často pracují vývojáři, kteří nemají dostatečné znalosti v potřebných oblastech – prostě se náhodou ocitli v týmu a čekají na další významný komerční projekt. Logicky, motivace v takové situaci byla také dost nízká. Výkon klesal, v týmu často panoval chaos, a nakonec bylo nutné přesvědčovat (motivovat) nebo měnit člověka. Při změně vývojáře je potřeba provádět školení, předávat znalosti a opět v podstatě začít projekt od začátku. Každý nový vývojář viděl architekturu po svém a kritizoval předchozí za přijatá rozhodnutí a cizí kód. Začínalo se znovu.

Toto trvalo asi půl roku. My jsme se prostě motali na místě, refaktorovali jsme kód a nic nového jsme nenapsali.

Také na interních projektech obvykle téměř není žádná dokumentace, a bylo těžké pochopit, co je třeba dělat v každém okamžiku a jaké jsou aktuální priority. Bylo nutné vytvořit stálý tým, zavést procesy, provést plánování a alespoň na tři měsíce udělat hodnocení. Ale jak to udělat, když projekt není komerční, což znamená, že je nutné investovat co nejméně člověko­hodin a zároveň dosáhnout výsledku ne horšího než pro externího klienta?

Identifikovali sme zdroje, ktoré sa podieľali na vývoji projektu, sú s ním oboznámené a chcú na ňom pracovať. Vypracovali sme plán zamestnanosti ľudí na projektoch. Urobili sme odhad a súhlas s prácami a zaplnili sme tieto práce do "medzier" medzi hlavnými projektmi. Po 4 mesiacoch sme dostali funkčný prototyp aplikácie.

Teraz si poďme podrobnejšie prebrať funkciu bota, jeho architektúru a technické riešenia.

Jedným z hlavných požiadaviek HR bolo rozpoznávanie textu, ktorý napíše používateľ na správnu odpoveď na otázku. Môže napísať - chcem ísť na dovolenku, chcem dovolenkovať alebo išiel by som na dovolenku a on to pochopí a odpovie primerane. Alebo ak zamestnancovi zlomil stoličku a chce napísať - "stolička sa zlomia" alebo "Moja stolička praskla" alebo "Opierka u stoličky odpadla", pri správnom vycvičení bota takúto požiadavku rozpozná. Kvalita rozpoznávania textu závisí od tréningu bota, o ktorom budeme neskôr diskutovať.

Ďalšou požiadavkou a súčasťou funkčnosti je systém dialógov bota. Bol vyvinutý systém, v ktorom môže bot viesť dialóg a rozumieť kontextu aktuálnej otázky. Môže na vašu otázku položiť akékoľvek doplňujúce otázky a pokračovať v rozhovore, ak sme bota naučili to robiť. Skype podporuje jednoduché menu pre navádzanie používateľov na možné varianty pokračovania dialógov. Taktiež, ak sme viedli dialóg, ale zrazu sme sa rozhodli položiť otázku mimo témy, bot to tiež pochopí.

Bot umožňuje zasielať rôzne artefakty používateľovi na základe jeho osobných údajov. Napríklad, na jeho polohe. Predpokladajme, že ak sa človek chce nájsť toaletu, zobrazí sa mu mapa kancelárie, ktorá ho dovedie k toalete. A mapa bude vybraná v závislosti od toho, v ktorej kancelárii spoločnosti sa zamestnanec nachádza.

Jednou z najdôležitejších úloh je ochrana osobných informácií používateľov. Nemôžeme dovoliť, aby sa každý človek dostal k dôverným údajom, s ktorými náš bot pracuje. Nevyhnutnosť autorizácie pre takého bota je neoddeliteľnou súčasťou jeho fungovania. Bot žiada používateľa, aby prešiel autorizáciou predtým, ako môže viesť akýkoľvek dialóg. To sa deje pri prvom oslovení zamestnanca s botom. Samotná autorizácia presmerúva používateľa na príslušnú stránku, kde používateľ získa token, ktorý neskôr vloží do správy na Skypu. Ak autorizácia prebehne úspešne, môže začať komunikácia s botom.

Bot nám pomôže

Autorizačný proces prebieha cez Skyp — autorizačnú bránu, firemnú sieť a LDAP. Týmto spôsobom autorizácia závisí od aktuálnych údajov o používateľovi vo firemnej sieti.

Počas vývoja bota sme si uvedomili, že potrebujeme istý systém integrovaný do funkčnosti portálu, ktorý by pomohol HR rýchlo odstraňovať chyby bota. Pridali sme takú stránku portálu, na ktorej môžu HR pracovníci vidieť chyby zaznamenané používateľmi počas používania bota a riešiť ich pomocou preškolenia alebo ich nechať pre vývojárov.

Možnosť školenia bota priamo na portáli nebola pôvodne zahrnutá. Počas vývoja sme si uvedomili, že školenie bota je najčastejšou úlohou, ktorú budú zamestnanci HR vykonávať pri jeho používaní, a posielať súbory s textom vývojárom na ďalšie školenie bota je úplne neprijateľné. To zaberá príliš veľa času a spôsobuje príliš veľa chýb a problémov.

Bot nám pomôže

Napísali sme užívateľské rozhranie na portáli pre priateľské školenie bota. Umožňuje HR vidieť aktuálne školenie bota, doplniť ho a robiť v súčasnom školení úpravy. Školenie je prezentované vo forme stromovej štruktúry, kde uzly, teda vetvy sú pokračovaním dialógu s botom. Môžete vytvárať jednoduché otázky a odpovede, ale aj rozsiahle dialógy, všetko závisí od HR a ich potrieb.

Niekoľko slov o architektúre riešenia.

Bot nám pomôže

Architektúra riešenia je modulárna. Obsahuje služby zodpovedajúce za rôzne úlohy, a to konkrétne:
• Služba Skype bota na Azure — prijíma a spracováva požiadavky používateľov. Je to relatívne jednoduchá služba, ktorá najskôr prijíma požiadavku a vykonáva jej primárne spracovanie.
• Admin portál — služba, ktorá poskytuje webové rozhranie na konfiguráciu portálu a samotného bota. Bot sa vždy prvý obratí na portál, a ten už rozhodne, čo robiť s požiadavkou ďalej.
• Služba autorizácie — poskytuje mechanizmy autentifikácie pre bota a pre admin portál. Autorizácia prebieha podľa protokolu Oauth2. Po úspešnej autorizácii služba vykonáva autorizáciu v podnikovej sieti podľa platných údajov používateľa, takže systém môže kontrolovať chyby, ktoré súvisia s desynchrónom v údajoch.
• AI Modul na rozpoznávanie textu, napísaný v Pythone a používa framework ParlAI na samotné rozpoznávanie textu. Je to neurónová sieť, aspoň v aktuálnej implementácii. Používame algoritmus tfDiff na porozumenie otázkam. Modul poskytuje API na komunikáciu s ním a na učenie.

Na záver by som chcel povedať, že je to náš prvý pokus o vytvorenie chatbotu, a snažili sme sa spraviť systém čo najjednoduchší, avšak funkčný, s minimálnym úsilím. Myslím, že sme vytvorili veľmi zaujímavý produkt. S vlastným systémom učenia, logovania chýb, rozosielania upozornení, ho možno integrovať s akýmkoľvek iným messengerom.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster