Robot nám pomôže

Robot nám pomôže

Pred rokom nás naše milované HR oddelenie požiadalo, aby sme napísali chat bota, ktorý by pomohol s adaptáciou nováčikov vo firme.

Urobme si výhradu, že nevyvíjame vlastné produkty, ale klientom poskytujeme celý rad vývojových služieb. Príbeh bude o našom internom projekte, pre ktorý zákazníkom nie je spoločnosť tretej strany, ale naše vlastné HR. A hlavnou úlohou, vzhľadom na obmedzenú dostupnosť ľudí, zdrojov a času, je dokončiť projekt včas a vydať produkt.

Najprv si popíšme problémy, ktoré bolo potrebné vyriešiť.

Vývojári sú väčšinou introvertní ľudia a neradi hovoria; je oveľa jednoduchšie napísať svoju otázku v e-mailovom rozhovore. S robotom nemusíte premýšľať o tom, koho sa opýtať, komu zavolať, kam ísť a vo všeobecnosti, kde hľadať informácie a či sú relevantné.

Druhým problémom sú informácie - je ich veľa, sú v rôznych zdrojoch, 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 Ruska a dokonca aj v zahraničí, zvyčajne je tam veľa otázok, takže ďalšou úlohou je znížiť záťaž personalistov spojenú s najčastejšími otázkami. zamestnancami.

Taktiež bolo potrebné zautomatizovať procesy: nástup nováčikov do spoločnosti, posielanie správ manažérom a mentorom nováčikov, posielanie automatických pripomienok o kurzoch a testoch, ktoré musí nováčik absolvovať, aby sa úspešne adaptoval.

Technické požiadavky boli vytvorené na základe obchodných požiadaviek.

Bot musí fungovať na báze Skype (historicky ho vo firme používajú), preto bola zvolená služba na Azure.

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

Administratívny webový portál je potrebný aj na konfiguráciu, školenia, ladenie, nastavenie mailingu a ďalšie úlohy.

Robot nám pomôže

Pri práci na projekte sme sa stretli s množstvom problémov a ťažkostí.

Vyskytli sa napríklad technické problémy s účtom Azure. Microsoft nechcel aktivovať naše predplatné kvôli niektorým technickým problémom v rámci ich služby. Takmer dva mesiace sme s tým nemohli nič robiť, podpora Microsoftu nakoniec rozhodila rukami a poslala nás k partnerom, ktorí všetko úspešne nastavili a poskytli nám účet.

Najťažšou etapou bol rozbeh projektu, keď si bolo treba vybrať, čo budeme používať, aká bude architektúra, ako a kam ukladať dáta a ako budú komponenty a moduly systému medzi sebou interagovať.

V našom prípade v podstate obyčajné problémy rozbehnutia akéhokoľvek projektu ešte viac skomplikovalo personálne zabezpečenie. Špecifiká nášho podnikania sú také, že na rozdiel od komerčných na interných projektoch často pracujú vývojári, ktorí nemajú dostatočné znalosti v požadovaných oblastiach – jednoducho z vôle osudu skončili na lavičke a čakali na ďalší veľký cool komerčný projekt. Je logické, že aj s motiváciou to v takejto situácii bolo veľmi ťažké. Produktivita klesá nízko, tím je často nečinný a v dôsledku toho musíte človeka presviedčať (motivovať) alebo meniť. Pri zmene vývojárov musíte absolvovať školenie, odovzdať znalosti a v podstate začať projekt odznova. Každý nový vývojár videl architektúru po svojom a nadával tým predchádzajúcim za rozhodnutia, ktoré urobili, a kód iných ľudí. Prepisovanie začalo od nuly.

Takto to pokračovalo asi šesť mesiacov. Len sme označovali čas, refaktorovali kód a nepísali sme nič nové.

Na interných projektoch spravidla neexistuje takmer žiadna dokumentácia a bolo ťažké pochopiť, čo je potrebné v každom okamihu urobiť a aké sú aktuálne priority. Bolo potrebné vytvoriť stály tím, zaviesť procesy, plánovať a vyhodnocovať aspoň tri mesiace. Ale ako to urobiť, keď projekt nie je komerčný, čo znamená, že musíte investovať minimum človekohodín a zároveň mať výsledok o nič horší ako pre externého zákazníka?

Identifikovali sme skupinu zdrojov, ktoré sa podieľali na vývoji projektu, poznajú ho a chcú na ňom pracovať. Zostavili sme harmonogram zamestnávania ľudí na projektoch. Posúdili sme a skoordinovali prácu a umiestnili tieto práce do „dier“ medzi hlavnými projektmi. Po 4 mesiacoch sme dostali funkčný prototyp aplikácie.

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

Jednou z hlavných požiadaviek HR bolo rozpoznať text napísaný používateľom, aby správne odpovedal na otázku. Môžete mu napísať – chcem ísť na dovolenku, chcem ísť na dovolenku alebo by som chcel ísť na dovolenku a on to pochopí a podľa toho zareaguje. Alebo sa zrazu zamestnancovi zlomí stolička a on chce napísať „stolička je rozbitá“ alebo „Moja stolička je prasknutá“ alebo „Spadla zadná časť stoličky“; pri správnom zaškolení robot takéto požiadavky rozpozná. Samotná kvalita rozpoznávania textu závisí od tréningu bota, o ktorom si povieme neskôr.

Ďalšou požiadavkou a súčasťou funkčnosti je dialógový systém robota. Bol vyvinutý systém, v ktorom môže bot viesť dialóg a pochopiť kontext aktuálneho problému. V odpovedi na vašu otázku môže položiť akékoľvek objasňujúce otázky a pokračovať v konverzácii, ak sme na to robota vycvičili. Skype podporuje jednoduché možnosti ponuky, ktoré používateľov informujú o možnostiach pokračovania v konverzácii. Tiež, ak sme viedli dialóg, ale zrazu sme sa rozhodli položiť otázku mimo témy, robot to tiež pochopí.

Robot umožňuje odosielať používateľovi rôzne artefakty na základe jeho osobných údajov. Napríklad na jeho mieste. Predpokladajme, že ak by niekto chcel nájsť záchod, ukáže sa mu mapa kancelárie, ktorá ho vedie na záchod. A karta sa vyberie podľa toho, v ktorej kancelárii spoločnosti sa zamestnanec nachádza.

Jednou z najdôležitejších úloh je ochrana osobných údajov používateľov. Nemôžeme umožniť každej osobe, aby mala prístup k citlivým údajom, ktoré náš robot prevádzkuje. Potreba autorizácie pre takéhoto robota je jeho neoddeliteľnou súčasťou. Robot požiada používateľa o overenie predtým, ako s ním bude môcť viesť akýkoľvek dialóg. Stáva sa to pri prvom kontakte zamestnanca s robotom. Samotná autorizácia presmeruje užívateľa na príslušnú stránku, kde užívateľ dostane token, ktorý následne vloží do Skype správy. Ak je autorizácia úspešná, môžete začať komunikovať s robotom.

Robot nám pomôže

Autorizácia prebieha cez Skype – portál-autorizačná služba, firemná sieť a LDAP. Autorizácia teda závisí od aktuálnych používateľských údajov v podnikovej sieti.

V procese vývoja robota sme si uvedomili, že potrebujeme nejaký systém zabudovaný do funkčnosti portálu, ktorý by mohol pomôcť HR rýchlo odladiť robota. Pridali sme portálovú stránku, kde môže personalista vidieť chyby zaznamenané používateľmi pri práci s robotom a vyriešiť ich pomocou preškolenia alebo ich nechať na vývojárov.

Možnosť trénovať bota priamo na portáli nebola zahrnutá od samého začiatku. Počas procesu vývoja sme si uvedomili, že školenie bota je najčastejšou úlohou, ktorú budú pracovníci HR oddelenia vykonávať pri práci s ním a posielanie textových súborov vývojárom na dodatočné školenie bota je úplne neprijateľné. To zaberá príliš veľa času a vytvára príliš veľa chýb a problémov.

Robot nám pomôže

Na portáli sme napísali používateľské rozhranie pre užívateľsky prívetivé školenie robota. Umožňuje HR vidieť aktuálne školenie robota, ďalej ho trénovať a upravovať aktuálne školenie. Školenie predstavuje stromová štruktúra, v ktorej sú uzly, teda vetvy, pokračovaním dialógu s robotom. Môžete vytvárať jednoduché otázky a odpovede, alebo môžete vytvárať závažné dialógy, všetko závisí od HR a ich potrieb.

Niekoľko 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 v Azure – prijíma a spracováva požiadavky používateľov. Ide o pomerne jednoduchú službu, ktorá ako prvá dostane požiadavku a vykoná jej prvotné spracovanie.
• Admin portál – služba, ktorá poskytuje webové rozhranie pre nastavenie portálu a pre samotného bota. Bot vždy kontaktuje portál ako prvý a portál sa rozhodne, čo ďalej s požiadavkou.
• Autorizačná služba – poskytuje autentifikačné mechanizmy pre robota a pre admin portál. Autorizácia prebieha prostredníctvom protokolu Oauth2. Pri kladnej autorizácii služba vykoná autorizáciu v podnikovej sieti podľa platných užívateľských dát, takže systém môže kontrolovať chyby spojené s nesynchronizovanými dátami.
• AI Modul rozpoznávania textu, napísaný v Pythone a využívajúci rámec ParlAI na samotné rozpoznávanie textu. Ide o 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 učenie.

Na záver chcem povedať, že toto je naša prvá skúsenosť s vytváraním chat bota a snažili sme sa, aby bol systém čo najjednoduchší, no zároveň funkčný, s minimálnymi nákladmi na prácu. Myslím, že máme veľmi zaujímavý produkt. S vlastným školiacim systémom, protokolovaním chýb, odosielaním upozornení môže byť tiež integrovaný s akýmkoľvek iným messengerom.

Zdroj: hab.com

Pridať komentár