Bot će nam pomoći

Bot će nam pomoći

Prije godinu dana, naš dragi HR odjel zatražio je da napišemo chatbot koji će pomoći u prilagodbi novih zaposlenika u kompaniji.

Napominjemo da ne razvijamo vlastite proizvode, ali klijentima pružamo punu paletu usluga u razvoju. Priča će biti o našem unutarnjem projektu, čiji je naručitelj naš vlastiti HR. Glavni zadatak je, uz ograničenu dostupnost ljudi, resursa i vremena, dovršiti projekt na vrijeme i izbaciti proizvod.

Za početak ćemo opisati zadatke koje je trebalo riješiti.

Programeri su većinom introverti i ne vole razgovarati; puno im je jednostavnije postaviti pitanje u elektroničkom chatu. S botom ne treba razmišljati koga pitati, koga nazvati, gdje ići i uopće gdje tražiti informacije, kao ni jesu li one aktualne.

Drugi problem je informacija — ima je puno, dolazi iz raznih izvora, ne postoji uvijek i zahtijeva stalno dopunjavanje i ažuriranje.

U kompaniji je gotovo 500 zaposlenika, nalaze se u raznim uredima, vremenskim zonama, gradovima Rusije, pa čak i u inozemstvu, pa je još jedan zadatak smanjiti opterećenje HR osoblja s najčešćim pitanjima koja postavljaju zaposlenici.

Također je bilo potrebno automatizirati procese: dolazak novih zaposlenika u kompaniju, slanje poruka menadžerima i mentorima novih zaposlenika, slanje automatskih podsjetnika o tečajevima i testovima koje novo zaposlenik treba proći za uspješnu prilagodbu.

Na temelju poslovnih zahtjeva formirane su tehničke.

Bot treba raditi na temelju Skypea ( povijesno je tako da ga koriste u kompaniji), stoga je odabran servis na Azure-u.

Za ograničenja pristupa koristili smo mehanizam autorizacije putem Skypea.
Za prepoznavanje teksta korištena je biblioteka ParlAI.

Također je potreban administrativni web portal za postavljanje, obuku, otklanjanje poteškoća, podešavanje slanja i drugih zadataka.

Bot će nam pomoći

Tijekom rada na projektu suočili smo se s cijelim nizom problema i poteškoća.

Na primjer, imali smo problema tehničke prirode s Azure računom. Microsoft nikako nije htio aktivirati našu pretplatu zbog nekih tehničkih poteškoća unutar njihovog servisa. Gotovo dva mjeseca nismo mogli ništa učiniti, Microsoftova podrška na kraju je digla ruke i uputila nas na partnere koji su uspješno sve postavili i dodijelili nam račun.

Najteža faza bila je početak projekta, kada je trebalo odabrati što koristimo, koja će biti arhitektura, kako i gdje pohranjivati podatke i kako će komponente i moduli sustava međusobno surađivati.

U našem slučaju, u biti obični problemi s početkom bilo kojeg projekta dodatno su se komplicirali kadrovskim pitanjima. Specifika našeg poslovanja takva je da, za razliku od komercijalnih projekta, na unutarnjim projektima često rade programeri koji nemaju dovoljna znanja iz potrebnih područja – jednostavno su voljom sudbine završili na klupi u iščekivanju sljedećeg velikog komercijalnog projekta. Logično, da je situacija s motivacijom bila prilično teška. Produktivnost pada na minimum, tim često stagnira, na kraju se mora nagovarati (motivirati) ili zamijeniti osobu. Pri zamjeni programera potrebno je provesti obuku, prenositi znanja i ponovno, u suštini, započeti projekt. Svaki novi programer doživljavao je arhitekturu na svoj način i kritizirao prethodne zbog odluka koje su donijeli i stranog koda. Tako je počelo ponovno pisanje od nule.

To je trajalo oko pola godine. Samo smo se vrtjeli u krug, refaktorirali kod i ništa novo nismo pisali.

Također, na unutarnjim projektima, obično, gotovo da nema nikakve dokumentacije, i bilo je teško razumjeti što treba raditi u svakom trenutku i koje su sada prioriteti. Bilo je potrebno formirati stalni tim, uspostaviti procese, provesti planiranje i ocjenu barem na tri mjeseca. Ali kako to učiniti kada projekt nije komercijalni, što znači da treba minimalno uložiti radne sate, a rezultat mora biti jednako dobar kao za vanjskog naručitelja?

Odredili smo skup resursa koji su sudjelovali u razvoju projekta, upoznati su s njim i žele raditi na njemu. Napravili smo raspored dostupnosti ljudi na projektima. Proveli smo procjenu i odobravanje radova, i uključili te radove u 'rupe' između glavnih projekata. Nakon 4 mjeseca dobili smo radni prototip aplikacije.

Sada razgovarajmo detaljnije o funkcionalnosti bota, arhitekturi i tehničkim rješenjima.

Jedan od glavnih zahtjeva HR-a bio je prepoznavanje teksta koji je korisnik napisao kako bi mogao pravilno odgovoriti na pitanje. Može se napisati - želim ići na odmor, želim na odmor ili otišao bih na odmor, i on će to razumjeti i odgovoriti na odgovarajući način. Ili, recimo, zaposleniku se pokvarila stolica, i on želi napisati - 'stolica se pokvarila' ili 'moja stolica je napukla' ili 'naslon na stolici se odvojio', uz pravilnu obuku bot će prepoznati takve upite. Kvaliteta prepoznavanja teksta naravno ovisi o obuci bota, o kojoj ćemo govoriti kasnije.

Sljedeći zahtjev i dio funkcionalnosti je sustav dijaloga bota. Razvijen je sustav u kojem bot može voditi dijalog i razumjeti kontekst trenutnog pitanja. Može na vaš upit postaviti neka pojašnjenja i nastaviti razgovor, ako smo obučili bota da to učini. Skype podržava jednostavne stavke izbornika za savjetovanje korisnika o mogućim opcijama nastavka dijaloga. Također, ako smo vodili dijalog, ali smo odjednom odlučili postaviti pitanje izvan teme, bot će to također razumjeti.

Bot omogućuje slanje različitih artefakata korisniku, temeljenog na njegovim osobnim podacima. Na primjer, na njegovoj lokaciji. Pretpostavimo, ako je netko želio pronaći WC, tada će mu biti prikazana karta ureda koja ga vodi do WC-a. I karta će biti odabrana ovisno o tome u kojem uredu tvrtke se zaposlenik nalazi.

Jedan od najvažnijih zadataka je zaštita ličnih informacija korisnika. Ne možemo dopustiti svakome da ima pristup poverljivim podacima s kojima upravlja naš bot. Neophodnost autorizacije za takav bot je njen neizostavni deo. Bot traži od korisnika da prođe autorizaciju pre nego što bude mogao da vodi bilo kakav dijalog s njim. To se događa prilikom prvog obraćanja zaposlenika botu. Sama autorizacija preusmerava korisnika na odgovarajuću stranicu, gde korisnik dobija token koji potom unosi u Skype poruku. Ako autorizacija prođe uspešno, može započeti razgovor s botom.

Bot će nam pomoći

Autorizacija se obavlja preko Skype-a — portala-authorization service, korporativne mreže i LDAP-a. Tako da autorizacija zavisi od trenutnih podataka o korisniku u korporativnoj mreži.

Tokom razvoja bota shvatili smo da je potrebna određena sistem, ugrađena u funkcionalnost portala, koja će pomoći HR-u u brzom otklanjanju grešaka bota. Dodali smo takvu stranicu na portal, na kojoj HR-ovci mogu videti greške koje su korisnici prijavili tokom rada s botom i rešiti ih kroz ponovo učenje ili ostaviti za programere.

Mogućnost učenja bota direktno na portalu nije bila predviđena od početka. Tokom razvoja shvatili smo da je učenje bota najčešći zadatak koji će zaposleni u HR-u obavljati prilikom rada s njim, a slanje fajlova s tekstom programerima za dodatno učenje bota je potpuno neprihvatljivo. To troši previše vremena i stvara previše grešaka i problema.

Bot će nam pomoći

Napisali smo UI na portalu za User-friendly učenje bota. Omogućava HR-u da vidi trenutno učenje bota, dodatno ga obučava i unosi korekcije u trenutno učenje. Učenje je predstavljeno u obliku stablo-strukture, u kojoj su nodovi, tj. grane, nastavak dijaloga s botom. Možete kreirati jednostavne pitanja-odgovore, ali i obimne dijaloge, sve zavisi od HR-a i njihovih potreba.

Nekoliko reči o arhitekturi rešenja.

Bot će nam pomoći

Arhitektura rešenja je modularna. Obuhvata servise koji su odgovorni za različite zadatke, a to su:
• Usluga Skype bota na Azure - prima i obrađuje zahtjeve korisnika. Ovo je prilično jednostavna usluga koja prva prima zahtjev i obavlja njegovu primarnu obradu.
• Admin portal - usluga koja pruža web sučelje za postavljanje portala i samog bota. Bot se uvijek prvo obraća portalu, a portal odlučuje što dalje raditi sa zahtjevom.
• Usluga autorizacije - pruža mehanizme autentifikacije za bota i za admin portal. Autentifikacija se vrši putem Oauth2 protokola. Nakon pozitivne autentifikacije, usluga provodi autorizaciju u korporativnoj mreži prema valjanim podacima korisnika, tako da sustav može kontrolirati greške povezane s nesinkronizacijom podataka.
• AI Modul za prepoznavanje teksta, napisan u Pythonu i koristi ParlAI framework za prepoznavanje teksta. To je neuronska mreža, barem u trenutnoj implementaciji. Koristimo tfDiff algoritam za razumijevanje pitanja. Modul pruža API za komunikaciju s njim i obuku.

Na kraju želim reći da je ovo naše prvo iskustvo u stvaranju chat bota, i trudili smo se učiniti sustav što jednostavnijim, a opet funkcionalnim, uz minimalne radne napore. Mislim da smo dobili prilično zanimljiv proizvod. Sa svojim sustavom obuke, logiranja grešaka, slanja obavijesti, također se može integrirati s bilo kojim drugim messengerom.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster