Robot nám pomôže

Robot nám pomôže

Pred rokom nás oslovilo naše milované personálne oddelenie s požiadavkou: napísať chatbota, ktorý by pomohol s nástupom nových zamestnancov do spoločnosti.

Upresnime, že nevyvíjame vlastné produkty, ale našim klientom ponúkame kompletnú škálu vývojových služieb. Tento príbeh je o našom internom projekte, pre ktorý klientom nie je tretia strana, ale naše vlastné personálne oddelenie. Hlavným cieľom, vzhľadom na obmedzenú dostupnosť ľudí, zdrojov a času, je dokončiť projekt včas a vydať produkt.

Najprv si popíšme úlohy, ktoré bolo potrebné vyriešiť.

Vývojári sú väčšinou introverti a neradi rozprávajú, takže je oveľa jednoduchšie napísať svoju otázku v e-mailovom chate. S botom sa nemusíte starať o to, koho sa opýtať, komu zavolať, kam ísť, alebo dokonca kde hľadať informácie, alebo či sú aktuálne.

Druhým problémom sú informácie – je ich veľa, pochádzajú z rôznych zdrojov, nie sú vždy dostupné a treba ich neustále dopĺňať a aktualizovať.

Spoločnosť má takmer 500 zamestnancov, ktorí sa nachádzajú v rôznych kanceláriách, časových pásmach, mestách po celom Rusku a dokonca aj v zahraničí. Zvyčajne je veľa otázok, takže ďalšou výzvou je znížiť pracovnú záťaž personálu ľudských zdrojov súvisiacu s najčastejšie kladenými otázkami.

Taktiež bolo potrebné automatizovať nasledujúce procesy: nástup nových zamestnancov, odosielanie správ manažérom a mentorom nových zamestnancov a odosielanie automatických pripomienok o kurzoch a testoch, ktoré musia noví zamestnanci absolvovať pre úspešnú adaptáciu.

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

Bot by mal fungovať na Skype (historicky sa tak stalo, že ho spoločnosť používa), takže bola zvolená služba na Azure.

Aby sme k nemu obmedzili prístup, začali sme používať autorizačný mechanizmus Skype.
Na rozpoznávanie textu bola použitá knižnica ParlAI.

Administratívny webový portál je tiež potrebný na konfiguráciu, školenie, ladenie, nastavenie zoznamu administrátorov a ďalšie úlohy.

Robot nám pomôže

Počas práce na projekte sme sa stretli s viacerými problémami a ťažkosťami.

Napríklad sme mali technické problémy s naším účtom Azure. Spoločnosť Microsoft nám odmietla aktivovať predplatné kvôli technickým problémom v rámci ich služby. Takmer dva mesiace sme s tým nemohli nič urobiť a podpora spoločnosti Microsoft nakoniec zdvihla ruky a odkázala nás na svojich partnerov, ktorí všetko úspešne nastavili a vytvorili nám účet.

Najnáročnejšou fázou bolo spustenie projektu, keď sme si museli vybrať, čo budeme používať, aká bude architektúra, ako a kde ukladať dáta a ako budú komponenty a moduly systému navzájom interagovať.

V našom prípade boli typické výzvy spojené so spustením akéhokoľvek projektu ešte viac skomplikované personálnymi problémami. Povaha nášho podnikania je taká, že na rozdiel od komerčných projektov sa interné projekty často týkajú vývojárov, ktorí nemajú dostatočné znalosti v príslušných oblastiach – jednoducho zostali bokom a čakali na ďalší veľký, vzrušujúci komerčný projekt. Prirodzene, motivácia v takejto situácii bola tiež dosť náročná. Produktivita prudko klesla, tím bol často nečinný a nakoniec sme museli vývojára presvedčiť (motivovať) alebo nahradiť. Pri výmene vývojára sme museli vykonať školenie, preniesť znalosti a v podstate projekt reštartovať. Každý nový vývojár videl architektúru inak a kritizoval predchádzajúcich za ich rozhodnutia a kód, ktorý napísali. Prepisovanie sa začalo od nuly.

Toto trvalo asi šesť mesiacov. Len sme odpočívali, refaktorovali kód a nepísali nič nové.

Interným projektom tiež zvyčajne chýba dokumentácia, čo sťažuje pochopenie toho, čo je potrebné v danom čase urobiť a aké sú priority. Bolo potrebné vytvoriť stály tím, zefektívniť procesy a vykonávať plánovanie a hodnotenie aspoň tri mesiace. Ako sa to však dá dosiahnuť, keď je projekt nekomerčný, čo znamená minimálne investície do pracovných hodín, a zároveň dosiahnuť výsledky, ktoré nie sú horšie ako u externého klienta?

Identifikovali sme skupinu ľudí, ktorí sa podieľali na vývoji projektu, boli s ním oboznámení a boli ochotní na ňom pracovať. Vytvorili sme harmonogram pracovnej záťaže pre každý projekt. Prácu sme posúdili a koordinovali a potom sme ju integrovali do medzier medzi hlavnými projektmi. O štyri mesiace neskôr sme mali funkčný prototyp aplikácie.

Teraz si podrobnejšie povieme o funkčnosti, architektúre a technických riešeniach bota.

Jednou z hlavných požiadaviek HR bolo rozpoznávanie textu napísaného používateľom pre správne zodpovedanie otázky. Môžete napísať niečo ako „Chcem ísť na dovolenku“, „Chcem ísť na dovolenku“ alebo „Chcel by som ísť na dovolenku“ a robot to pochopí a podľa toho zareaguje. Alebo je možno zamestnanec rozbitý a chce napísať niečo ako „stolička je rozbitá“, „Moja stolička je prasknutá“ alebo „Operadlo stoličky spadlo“. Pri správnom zaškolení bot takéto otázky rozpozná. Kvalita rozpoznávania textu prirodzene závisí od zaškolenia bota, o čom si povieme neskôr.

Ďalšou požiadavkou a súčasťou funkcionality je dialógový systém bota. Vyvinuli sme systém, ktorý umožňuje botovi viesť dialóg a pochopiť kontext aktuálnej otázky. V reakcii na vašu otázku dokáže klásť objasňujúce otázky a pokračovať v konverzácii, ak sme bota na to naučili. Skype podporuje jednoduché položky ponuky, ktoré používateľov upozornia na možné možnosti pokračovania v konverzácii. Taktiež, ak sme v dialógu, ale zrazu sa rozhodneme položiť otázku mimo témy, bot to tiež pochopí.

Bot umožňuje používateľom odosielať rôzne artefakty na základe ich osobných údajov, ako je napríklad ich poloha. Napríklad, ak niekto chce nájsť toaletu, zobrazí sa mu mapa kancelárie, ktorá ho nasmeruje na toaletu. Mapa bude vybraná na základe aktuálnej polohy kancelárie zamestnanca.

Ochrana osobných údajov používateľov je kľúčovou prioritou. Nemôžeme povoliť hocikomu prístup k citlivým údajom, ktoré náš bot spracováva. Autorizácia je neoddeliteľnou súčasťou tohto bota. Bot pred začatím akejkoľvek konverzácie vyzve používateľa na autorizáciu. Toto sa stane pri prvej interakcii zamestnanca s botom. Autorizácia presmeruje používateľa na príslušnú stránku, kde dostane token, ktorý potom vloží do správy Skype. Ak je autorizácia úspešná, môže začať komunikovať s botom.

Robot nám pomôže

Autorizácia prebieha prostredníctvom portálu autorizačnej služby Skype, podnikovej siete a LDAP. Autorizácia preto závisí od aktuálnych údajov používateľa v podnikovej sieti.

Počas vývoja bota sme si uvedomili, že potrebujeme systém integrovaný do funkcionality portálu, ktorý by pomohol personálnemu oddeleniu rýchlo ladiť bota. Pridali sme portálovú stránku, kde si personálne oddelenie môže pozrieť chyby hlásené používateľmi počas práce s botom a vyriešiť ich preškolením alebo ich nechať na vyriešenie vývojárom.

Možnosť trénovať bota priamo na portáli nebola od začiatku zabudovaná. Počas vývoja sme si uvedomili, že trénovanie bota je najbežnejšou úlohou, ktorú budú HR pracovníci vykonávať pri práci s ním, a posielanie textových súborov vývojárom na ďalšie trénovanie bota je úplne neprijateľné. Zaberá to príliš veľa času a vytvára príliš veľa chýb a problémov.

Robot nám pomôže

Vyvinuli sme používateľské rozhranie portálu pre užívateľsky prívetivé školenie botov. Umožňuje HR oddeleniu zobraziť aktuálne školenie bota, poskytnúť ďalšie školenia a vykonať úpravy existujúceho školenia. Školenie je prezentované ako stromová štruktúra, v ktorej uzly (alebo vetvy) sú rozšírením dialógu bota. V závislosti od HR oddelenia a jeho potrieb môžete vytvárať jednoduché otázky a odpovede alebo zložité dialógy.

Pár slov o architektúre riešenia.

Robot nám pomôže

Architektúra riešenia je modulárna. Zahŕňa služby zodpovedné za rôzne úlohy, a to:
• Služba Skype bot na Azure – prijíma a spracováva požiadavky používateľov. Ide o pomerne jednoduchú službu, ktorá najprv prijme požiadavku a vykoná jej počiatočné spracovanie.
• Administrátorský portál je služba, ktorá poskytuje webové rozhranie na konfiguráciu portálu a samotného bota. Bot vždy najprv kontaktuje portál a portál sa potom rozhodne, čo s požiadavkou urobí.
• Autorizačná služba — poskytuje mechanizmy autentifikácie pre bota a administračný portál. Autorizácia prebieha prostredníctvom protokolu Oauth2. Ak je autorizácia úspešná, služba autentifikuje používateľa v podnikovej sieti pomocou platných používateľských údajov, čo umožňuje systému zistiť chyby súvisiace s desynchronizáciou údajov.
• Modul rozpoznávania textu s umelou inteligenciou, napísaný v jazyku Python a využívajúci framework ParlAI na rozpoznávanie textu. Je to neurónová sieť, aspoň v jej súčasnej implementácii. Na pochopenie otázok používame algoritmus tfDiff. Modul poskytuje API na komunikáciu s ním a trénovanie.

Na záver by som chcel povedať, že toto je náš prvý pokus o vytvorenie chatbota a snažili sme sa systém čo najviac zjednodušiť, no zároveň zostať funkčný a vynaložiť minimálne úsilie. Myslím si, že sme vytvorili veľmi zaujímavý produkt. Má vlastný tréningový systém, zaznamenávanie chýb a upozornenia a je možné ho integrovať s akoukoľvek inou aplikáciou na odosielanie správ.

Zdroj: hab.com

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