Botten hjÀlper oss

Botten hjÀlper oss

För ett Är sedan kontaktade vÄr Àlskade HR-avdelning oss med en förfrÄgan: att skapa en chattbot som skulle hjÀlpa till med anpassningen av nya anstÀllda i företaget.

Vi ska klargöra att vi inte utvecklar egna produkter, men vi tillhandahÄller vÄra kunder ett komplett utbud av utvecklingstjÀnster. BerÀttelsen kommer att handla om vÄrt interna projekt, dÀr bestÀllaren inte Àr ett extern företag, utan vÄr egen HR. HuvudmÄlet Àr att, under begrÀnsad tillgÄng till personer, resurser och tid, slutföra projektet i tid och lansera produkten.

Först ska vi beskriva uppgifterna som skulle lösas.

Utvecklarna Àr i sin majoritet introverta och föredrar att skriva sina frÄgor i en elektronisk chatt, det Àr mycket enklare. Med botten behöver man inte tÀnka pÄ vem man ska frÄga, vem man ska ringa, var man ska gÄ och överhuvudtaget, var man ska leta efter information och om den Àr aktuell.

Det andra problemet Ă€r just informationen — det finns mycket av den, den kommer frĂ„n olika kĂ€llor, finns inte alltid och behöver kontinuerlig komplettering och uppdatering.

Företaget har nÀstan 500 anstÀllda, de befinner sig pÄ olika kontor, tidszoner, stÀder i Ryssland och till och med utomlands, frÄgor uppstÄr vanligtvis i stor mÀngd, sÄ Ànnu en uppgift Àr att minska belastningen pÄ HR-personalen som handlar om de vanligaste frÄgorna som stÀlls av anstÀllda.

Det var ocksÄ nödvÀndigt att automatisera processerna: ankomsten av nya anstÀllda, utskick av meddelanden till chefer och mentorer för de nya anstÀllda, skickandet av automatiska pÄminnelser om kurser och tester som den nya anstÀllda behöver genomföra för att anpassningen ska bli framgÄngsrik.

Baserat pÄ affÀrskraven har tekniska krav formulerats.

Botten ska fungera pÄ Skype (historiskt har det blivit sÄ att det anvÀnds i företaget), dÀrför valdes en tjÀnst pÄ Azure.

För att begrÀnsa Ätkomsten anvÀnde vi en autentiseringsmekanism genom Skype.
För att kÀnna igen text anvÀnde vi biblioteket ParlAI.

Det Àr ocksÄ nödvÀndigt med en administrativ webbportal för instÀllningar, trÀning, felsökning, instÀllning av utskick och andra uppgifter.

Botten hjÀlper oss

Under arbetets gÄng med projektet stötte vi pÄ en mÀngd problem och svÄrigheter.

Till exempel, det uppstod tekniska problem med vÄrt Azure-konto. Microsoft ville inte aktivera vÄr prenumeration pÄ grund av vissa tekniska svÄrigheter i deras tjÀnst. I nÀstan tvÄ mÄnader kunde vi inte göra nÄgot Ät detta, och Microsofts support gav till slut upp och skickade oss till partners som framgÄngsrikt konfigurerade allt och utfÀrdade vÄrt konto.

Det mest utmanande steget var projektstarten, nÀr vi behövde vÀlja vad vi skulle anvÀnda, vilken arkitektur som skulle byggas, hur och var vi skulle lagra data och hur komponenterna och modulerna skulle interagera med varandra.

I vĂ„rt fall kom vanliga problem vid starten av vilket projekt som helst att försvĂ„ras av vĂ„r bemanning. VĂ„r affĂ€rsspecifika natur innebĂ€r att, till skillnad frĂ„n kommersiella projekt, arbetar utvecklare ofta med interna projekt utan tillrĂ€ckliga kunskaper i de nödvĂ€ndiga omrĂ„dena – de rĂ„kade helt enkelt befinna sig pĂ„ bĂ€nken och vĂ€ntade pĂ„ nĂ€sta stora kommersiella projekt. Det Ă€r sjĂ€lvfallet att motivationen i en sĂ„dan situation ocksĂ„ var ganska svag. Produktiviteten föll lĂ„gt, det blev ofta stillastĂ„ende i teamet, och vi var tvungna att övertala (motivera) eller byta ut personer. Vid byte av utvecklare mĂ„ste utbildning genomföras, kunskap överföras och i praktiken fĂ„ projektet att starta om. Varje ny utvecklare sĂ„g arkitekturen pĂ„ sitt sĂ€tt och kritiserade de föregĂ„ende för deras beslut och deras kod. Omstarten av kodningen började pĂ„ nytt.

SÄ fortsatte det i nÀstan ett halvÄr. Vi stod bara stilla, refaktorerade koden och skrev inget nytt.

Ofta finns det Àven nÀstan ingen dokumentation för interna projekt, vilket gjorde det svÄrt att förstÄ vad som behövde göras vid varje given tidpunkt och vilka prioriteringar som gÀllde. Det var nödvÀndigt att skapa ett permanent team, etablera processer, genomföra planering och utvÀrdering för Ätminstone tre mÄnader. Men hur gör man det nÀr projektet inte Àr kommersiellt, vilket innebÀr att man mÄste minimera investeringarna i arbetstimmar och samtidigt uppnÄ resultat som Àr lika bra som för externa kunder?

Vi har definierat en resurspool som varit involverad i utvecklingen av projektet, Àr bekanta med det och vill arbeta med det. Vi har upprÀttat ett schema för hur mÀnniskor ska vara sysselsatta i projekten. Vi har genomfört en bedömning och godkÀnnande av arbetet, och skrivit in dessa uppgifter i "luckorna" mellan huvudprojekten. Efter 4 mÄnader hade vi en fungerande prototyp av applikationen.

Nu lÄt oss diskutera mer detaljerat om botens funktionalitet, dess arkitektur och tekniska lösningar.

Ett av HR:s huvudkrav var att kĂ€nna igen text som skrivits av anvĂ€ndaren för att ge ett korrekt svar pĂ„ frĂ„gan. AnvĂ€ndaren kan skriva — jag vill gĂ„ pĂ„ semester, jag vill ha semester eller jag skulle vilja ha semester, och den kommer att förstĂ„ och svara pĂ„ lĂ€mpligt sĂ€tt. Eller plötsligt har en anstĂ€lld fĂ„tt sönder sin stol, och han vill skriva — "stolen Ă€r trasig" eller "Min stol har spruckit" eller "Ryggstödet pĂ„ stolen har lossnat", och med rĂ€tt trĂ€ning kommer boten att kĂ€nna igen sĂ„dana förfrĂ„gningar. Kvaliteten pĂ„ textigenkĂ€nningen beror sjĂ€lvklart pĂ„ botens trĂ€ning, som vi kommer att diskutera senare.

NÀsta krav och del av funktionaliteten Àr botens dialogsystem. Ett system har utvecklats dÀr boten kan föra en dialog och förstÄ sammanhanget av den aktuella frÄgan. Den kan stÀlla klargörande frÄgor som svar pÄ din frÄga och fortsÀtta samtalet om vi har trÀnat boten att göra det. Skype stöder enkla menyval för att vÀgleda anvÀndarna om möjliga alternativ för att fortsÀtta dialogerna. Dessutom, om vi har fört en dialog men plötsligt vill stÀlla en frÄga som inte Àr relaterad till Àmnet, sÄ kommer boten ocksÄ att förstÄ detta.

Boten ger möjlighet att skicka olika artefakter till anvÀndaren baserat pÄ dennes personliga data. Till exempel, baserat pÄ hans eller hennes plats. Anta att en person vill hitta en toalett, sÄ kommer en karta över kontoret att visas, vilket visar vÀgen till toaletten. Kartan kommer att vÀljas beroende pÄ vilket kontor i företaget den anstÀllde befinner sig.

En av de viktigaste uppgifterna Àr att skydda anvÀndarnas personliga information. Vi kan inte lÄta varje person fÄ tillgÄng till de konfidentiella uppgifter som vÄr bot hanterar. Behovet av autentisering för en sÄdan bot Àr en oumbÀrlig del av dess funktion. Botten ber anvÀndaren att gÄ igenom autentisering innan de kan föra nÄgon dialog. Detta sker vid den första kontakt som en medarbetare har med botten. SjÀlva autentiseringen omdirigerar anvÀndaren till den relevanta sidan, dÀr anvÀndaren fÄr en token som sedan klistras in i Skype-meddelandet. Om autentiseringen lyckas kan man börja kommunicera med botten.

Botten hjÀlper oss

Autentiseringen sker genom Skype — portalens - authorization service, det företagsinterna nĂ€tverket och LDAP. DĂ€rför beror autentiseringen pĂ„ aktuella uppgifter om anvĂ€ndaren i det företagsinterna nĂ€tverket.

Under utvecklingen av botten insÄg vi att en typ av system, inbyggt i portalens funktionalitet, behövdes för att hjÀlpa HR att snabbt debugga botten. Vi lade till en sÄdan sida pÄ portalen dÀr HR kan se de fel som anvÀndarna har rapporterat vid arbete med botten och ÄtgÀrda dem genom vidareutbildning eller lÀmna dem för utvecklarna.

Möjligheten att utbilda botten direkt pÄ portalen var inte inplanerad frÄn början. Under utvecklingen insÄg vi att utbildning av botten Àr den vanligaste uppgiften som HR-avdelningen kommer att utföra, och att skicka filer med text till utvecklarna för ytterligare trÀning av botten Àr helt oacceptabelt. Det tar för mycket tid och skapar för mÄnga fel och problem.

Botten hjÀlper oss

Vi skrev en anvÀndargrÀnssnitt pÄ portalen för anvÀndarvÀnlig utbildning av botten. Det gör det möjligt för HR att se botens aktuella utbildning, vidareutbilda den och göra justeringar i den nuvarande utbildningen. Utbildningen presenteras i en trÀdstruktur, dÀr noder, det vill sÀga grenar, Àr fortsÀttningar av dialogen med botten. Man kan skapa enkla frÄgor och svar eller mer omfattande dialoger, allt beroende pÄ HR och deras behov.

NÄgra ord om lösningens arkitektur.

Botten hjÀlper oss

Lösningens arkitektur Àr modulÀr. Den innehÄller tjÀnster som ansvarar för olika uppgifter, nÀmligen:
‱ TjĂ€nsten för Skype-boten pĂ„ Azure — tar emot och bearbetar anvĂ€ndarförfrĂ„gningar. Det Ă€r en ganska enkel tjĂ€nst som först tar emot förfrĂ„gan och genomför dess primĂ€ra bearbetning.
‱ Adminportalen — en tjĂ€nst som tillhandahĂ„ller ett webbgrĂ€nssnitt för att konfigurera portalen och sjĂ€lva boten. Boten vĂ€nder sig alltid först till portalen, och portalen avgör sedan hur förfrĂ„gan ska hanteras vidare.
‱ AutentiseringstjĂ€nsten — tillhandahĂ„ller autentiseringsmekanismer för boten och adminportalen. Autentisering sker via Oauth2-protokollet. Vid positiv autentisering genomför tjĂ€nsten autentisering i det företagsnĂ€tverk som baseras pĂ„ giltiga anvĂ€ndardata, sĂ„ att systemet kan kontrollera fel relaterade till felaktig synergi i data.
‱ AI-modul för textigenkĂ€nning, skriven i Python och anvĂ€nder ramen ParlAI för sjĂ€lva textigenkĂ€nningen. Detta Ă€r ett neuralt nĂ€tverk, Ă„tminstone i den aktuella implementationen. Vi anvĂ€nder algoritmen tfDiff för att förstĂ„ frĂ„gor. Modulen tillhandahĂ„ller ett API för kommunikation och inlĂ€rning.

Avslutningsvis vill jag sÀga att detta Àr vÄr första erfarenhet av att skapa en chattbot, och vi har försökt göra systemet sÄ enkelt som möjligt, men ÀndÄ funktionellt, med minimala arbetsinsatser. Jag tror att vi har fÄtt fram en ganska intressant produkt. Med sitt eget utbildningssystem, fel-loggning, aviseringar kan det ocksÄ integreras med vilket annat meddelandeprogram som helst.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster