
Aasta tagasi pöördus meie armast HR osakond palvega: kirjutada vestlusrobot, mis aitab uutel töötajatel ettevÔttesse sisse elada.
Mainime, et me ei arenda oma tooteid, kuid pakume klientidele tĂ€iustatud arenduste teenuseid. Jutt kĂ€ib meie sisemisest projektist, mille tellijaks ei ole kolmas osapool, vaid meie oma HR. Peamine ĂŒlesanne oli piiratud inimressursside, aegade ja vahenditega projekt Ă”igeaegselt lĂ”petada ja toode vĂ€ljastada.
Alustame ĂŒlesannete kirjeldamisest, mille lahendamine oli vajalik.
Arendajad on enamasti introverdid ja ei armasta vestelda; palju lihtsam on kirjutada oma kĂŒsimus elektroonilisse vestlusesse. Robotiga ei pea mĂ”tlema, kellelt kĂŒsida, kellele helistada, kuhu minna ja kus teavet otsida, ning kas see on ikka asjakohane.
Teine probleem on teave - seda on palju, see on erinevates allikates, mitte alati kergesti kÀttesaadav ning vajab pidevat tÀiustamist ja vÀrskendamist.
EttevĂ”ttes on peaaegu 500 töötajat, kes asuvad erinevates kantseleides, ajavööndites, Venemaa linnades ja isegi vĂ€lismaal. KĂŒsimusi on tavaliselt palju, seetĂ”ttu on veel ĂŒks ĂŒlesanne â vĂ€hendada HR personali koormust, mis on seotud töötajate kĂ”ige sagedamini esitatud kĂŒsimustega.
Samuti oli vajalik automatiseerida protsessid: uute töötajate saabumine ettevÔttesse, sÔnumite saatmine juhtidele ja uute töötajate mentoritele, automaatsete meenutuste saatmine kursustest ja testidest, mis tuleb uuel töötajal lÀbida edukaks kohanemiseks.
Ărivajaduste pĂ”hjal koostati tehnilised nĂ”uded.
Robot peab töötama Skype'i baasil (ajalooliselt kasutavad nad seda ettevÔttes), seetÔttu valiti Azure'i teenus.
Sellele juurdepÀÀsu piiramiseks hakkasime kasutama Skype'i kaudu autoriseerimise mehhanismi.
Teksti tuvastamiseks kasutasime raamatukogu ParlAI.
Samuti on vajalik administratiivne veebipool, et seadistada, koolitada, siluda, seadistada ja muid ĂŒlesandeid tĂ€ita.

Projekti kÀigus kohtasime mitmeid probleeme ja keerukusi.
NĂ€iteks oli tehnilisi probleeme - Azure'i kontoga. Microsoft ei soovinud kuidagi meie tellimust aktiveerida mingi tehnilise keerukuse tĂ”ttu nende teenuses. Peaaegu kaks kuud ei saanud me sellega midagi teha, Microsofti tugi pani lĂ”puks kĂ€ed ĂŒles ja saatis meid partnerite juurde, kes kĂ”ik edukalt seadistasid ja meile konto vĂ€ljastasid.
Projekti alustamine oli kĂ”ige keerulisem etapp, kui tuli valida, mida me kasutame, milline arhitektuur on, kuidas ja kus andmeid hoida ning kuidas sĂŒsteemi komponendid ja moodulid omavahel suhtlevad.
Meie puhul raskendasid tavalised probleemid mis tahes projekti alguses töötajate oskuste puudumine. Meie Ă€ri eripĂ€ra seisneb selles, et erinevalt kommertstegevusest, töötavad sisuprojektide kallal sageli arendajad, kellel ei ole piisavalt teadmisi vajalikest valdkondadest â nad on lihtsalt mĂŒĂŒtilise saatuse tĂ”ttu sattunud pingile ootama jĂ€rgmist suurt Ă€gedat kommertshanket. On loomulik, et motivatsioon selles olukorras oli samuti keeruline. Tootlikkus langes madalale, meeskonnas toimusid sagedased seisakud, mistĂ”ttu tuli inimesi veenda (motiveerida) vĂ”i vahetada. Arendaja vahetamisel tuleb lĂ€bi viia koolitus, edastada teadmisi ja sisuliselt alustada projekti uuesti. Iga uus arendaja nĂ€gi arhitektuuri oma vaatenurgast ja kritiseeris eelnevaid tehtud otsuseid ja vĂ€lise koodi. Algas kirjutamine nullist.
See kestis umbes kuus kuud. Me lihtsalt keksisime paigal, refaktoreerisime koodi ja ei kirjutanud midagi uut.
Sisekeskkonnas on tavaliselt peaaegu mitte mingit dokumentatsiooni ja on keeruline mĂ”ista, mida igas hetkes teha, ning millised on praegused prioriteedid. Oluline oli luua pĂŒsiv meeskond, korraldada protsessid ning planeerida ja hinnata vĂ€hemalt kolmeks kuuks. Kuid kuidas seda teha, kui projekt ei ole Ă€riline, mis tĂ€hendab, et tööaega tuleb investeerida minimaalselt ning samal ajal tulemus peab olema parem kui vĂ€lismaiste klientide jaoks?
Oleme mÀÀratlenud ressursside komplekti, kes osalesid projekti arendamises, tunnevad seda ja soovivad sellega töötada. Koostasime inimeste ajakava projektides. Viisime lĂ€bi tööde hindamise ja kooskĂ”lastamise ning kirjutasime need tööd peamiste projektide vahepealsetesse "aukudesse". Nelja kuu pĂ€rast saime töötava rakenduse prototĂŒĂŒbi.
NĂŒĂŒd rÀÀgime bot'i funktsionaalsusest, arhitektuurist ja tehnilistest lahendustest.
Ăheks pĂ”hiliseks nĂ”udmiseks HR-ilt oli teksti tuvastamine, mille kasutaja on kirjutanud, et anda Ă”ige vastus kĂŒsimusele. Kasutaja vĂ”ib kirjutada â "ma tahan minna puhkusele", "tahan puhkusele" vĂ”i "minna puhkusele", ja bot mĂ”istab ning vastab vastavalt. VĂ”i kui töötaja tahab öelda, et tool on katki, ja kirjutada â "tool on katki" vĂ”i "minu tool on pragunenud" vĂ”i "toolilt on seljatugi Ă€ra tulnud", siis korralikult koolitatud bot suudab selliseid pĂ€ringuid tuvastada. Teksti tuvastamise kvaliteet sĂ”ltub loomulikult boti koolitusest, millest me rÀÀgime hiljem.
JĂ€rgmine nĂ”ue ja funktsionaalsuse osa on boti dialoogisĂŒsteem. Arendatud on sĂŒsteem, mille kohaselt bot suudab dialogi pidada ja mĂ”ista praeguse kĂŒsimuse konteksti. Ta vĂ”ib vastuseks teie kĂŒsimusele esitada tĂ€iendavaid kĂŒsimusi ja jĂ€tkata vestlust, kui oleme boti selleks koolitanud. Skype toetab lihtsaid menĂŒĂŒpunkte, et juhendada kasutajaid vĂ”imalike dialooge jĂ€tkama. Kui oleme vestluse kĂ€igus jĂ€rginud teemat, kuid otsustame esitada kĂŒsimuse, mis pole seotud, siis mĂ”istab bot ka seda.
Bot vÔimaldab saata kasutajale erinevaid artefakte, tuginedes tema isiklikele andmetele, nagu tema asukoht. NÀiteks, kui inimene soovib leida tualetti, siis nÀidatakse talle kontori kaarti, mis juhatab teda tualetti. Ja kaart valitakse sÔltuvalt sellest, millis kontor on töötajal.
Ăks olulisemaid ĂŒlesandeid on kaitsta kasutajate isikuandmeid. Me ei saa lubada, et igaĂŒhel oleks juurdepÀÀs konfidentsiaalsetele andmetele, millega meie bot tegeleb. Autoriseerimine on selle boti tuntud osa. Bot palub kasutajal lĂ€bida autoriseerimise enne, kui ta saab temaga mingit dialogi pidada. See toimub, kui töötaja pöördub esmakordselt boti poole. Autoriseerimine suunab kasutaja vastavale lehele, kus kasutaja saab tokeni, mille ta seejĂ€rel paigutab Skype'i sĂ”numisse. Kui autoriseerimine lĂ€heb edukalt lĂ€bi, saab alustada suhtlemist botiga.

Autoriseerimine toimub Skype'i â autoriseerimisteenuse, ettevĂ”tte vĂ”rgustiku ja LDAP kaudu. Seega sĂ”ltub autoriseerimine praegustest kasutajaandmetest ettevĂ”tte vĂ”rgustikus.
Boti arendamise protsessis mĂ”istsime, et on vajalik teatud sĂŒsteem, mis oleks integreeritud portaali funktsionaalsusesse, et aidata vĂ€rbamistöötajatel boti kiiret tĂ”rgete avastamist. Lisame sellele portaali lehe, kus vĂ€rbajad saavad nĂ€ha kasutajate registreeritud vigu boti kasutamise kĂ€igus ja lahendada need kas uuendades boti vĂ”i edastades arendajatele.
Boti vĂ€ljaĂ”pe otse portaali lĂ€bi ei olnud algselt planeeritud. Arendamise kĂ€igus mĂ”istsime, et boti Ă”petamine on kĂ”ige sagedasem ĂŒlesanne, mida HR osakonna töötajad selle kasutamisel teevad, ning arendajatele tekstifailide saatmine tĂ€iendusĂ”ppe jaoks on absoluutselt vastuvĂ”etamatu. See vĂ”tab liiga palju aega ja toob liiga palju vigu ja probleeme.

Oleme loonud portaalis kasutajasoovide jĂ€rgi kohandatud boti Ă”petamise kasutajaliidese. See vĂ”imaldab personaliosakonnal nĂ€ha botiga seotud koolitusi, tĂ€iendama seda ja teha kohandusi jooksva koolituse osas. Koolitus on esitatud puu-struktuuri kujul, kus sĂ”lmed, st oksad, on dialooge botiga. Saate luua lihtsaid kĂŒsimusi ja vastuseid vĂ”i ulatuslikke dialooge, kĂ”ik sĂ”ltub personaliosakonnast ja nende vajadustest.
Veidi lahenduse arhitektuurist.

Lahenduse arhitektuur on modulaarne. See sisaldab teenuseid, mis vastutavad erinevate ĂŒlesannete eest, nimelt:
âą Azure'i Skype'i boti teenus â vĂ”tab vastu ja töötleb kasutajate pĂ€ringuid. See on piisavalt lihtne teenus, mis esimesena vĂ”tab pĂ€ringu vastu ja teostab selle esialgse töötlemise.
âą Administraatori portaal â teenus, mis pakub veebiliidest portaali ja boti seadistamiseks. Bot pöördub alati kĂ”igepealt portaali poole, ja portaal otsustab juba, kuidas pĂ€ringuga edasi minna.
âą Autentimisteenus â tagab autentimismehhanismid botile ja administreerimise portaalile. Autentimine toimub Oauth2 protokolli kaudu. Positiivse autentimise korral viib teenus lĂ€bi autentimise ettevĂ”tte vĂ”rgus vastavalt kehtivatele kasutajaandmetele, et sĂŒsteem saaks kontrollida andmete desĂŒnkroonimisega seotud vigu.
âą AI tekstituvastusmodul, kirjutatud Pythonis ja kasutab ParlAI raamistikku teksti tuvastamiseks. See on nĂ€rvivĂ”rk, vĂ€hemalt praeguses rakenduses. Kasutame kĂŒsimuste mĂ”istmiseks algoritmi tfDiff. Modul pakub API-d suhtlemiseks ja Ă”ppimiseks.
KokkuvĂ”ttes tahan öelda, et see on meie esimene kogemus chatbotâi loomisel ja pĂŒĂŒdsime teha sĂŒsteemist vĂ”imalikult lihtsa, kuid samas funktsionaalse, minimaalsete tööjĂ”ukuludega. Arvan, et meil on Ă”nnestunud luua ĂŒsna huvitav toode. Oma Ă”ppe-, vigade logimise sĂŒsteemiga ja teadete saatmise vĂ”imalustega on seda vĂ”imalik integreerida ka teistega messengereid.
Allikas: habr.com
