Bot će nam pomoći

Bot će nam pomoći

Prije godinu dana, naš voljeni HR odjel zamolio nas je da napišemo chat bota koji bi pomogao pri adaptaciji novopridošlica u kompaniju.

Rezerviramo da mi ne razvijamo vlastite proizvode, već klijentima pružamo čitav niz razvojnih usluga. Priča će biti o našem internom projektu, za koji kupac nije treća kompanija, već naš vlastiti HR. A glavni zadatak, s obzirom na ograničenu dostupnost ljudi, resursa i vremena, je da se projekat završi na vreme i pusti proizvod.

Prvo, hajde da opišemo probleme koje je trebalo riješiti.

Programeri su uglavnom introvertirani ljudi i ne vole razgovarati; mnogo je lakše napisati svoje pitanje u e-mail chatu. Sa botom ne morate da razmišljate koga da pitate, koga da pozovete, gde da idete i uopšte, gde da tražite informacije i da li su relevantne.

Drugi problem su informacije – ima ih puno, nalaze se u različitim izvorima, nisu uvijek dostupne i potrebno ih je stalno dopunjavati i ažurirati.

Kompanija ima skoro 500 zaposlenih, locirani su u različitim uredima, vremenskim zonama, gradovima Rusije, pa čak i u inostranstvu, obično ima puno pitanja, pa je još jedan zadatak smanjenje opterećenja HR osoblja vezano za najčešće postavljana pitanja. od strane zaposlenih.

Također je bilo potrebno automatizirati procese: ulaska novopridošlica u kompaniju, slanja poruka menadžerima i mentorima novajlija, slanja automatskih podsjetnika o kursevima i testovima koje novajlija treba da prođe za uspješnu adaptaciju.

Tehnički zahtjevi formirani su na osnovu poslovnih zahtjeva.

Bot mora da radi na bazi Skype-a (istorijski, koriste ga u kompaniji), pa je izabran servis na Azuri.

Da bismo ograničili pristup njemu, počeli smo koristiti mehanizam autorizacije putem Skypea.
ParlAI biblioteka je korištena za prepoznavanje teksta

Administrativni web portal je također potreban za konfiguraciju, obuku, otklanjanje grešaka, postavljanje mailinga i druge zadatke.

Bot će nam pomoći

Tokom rada na projektu naišli smo na niz problema i poteškoća.

Na primjer, bilo je tehničkih problema s Azure računom. Microsoft nije želio da aktivira našu pretplatu zbog nekih tehničkih poteškoća u okviru njihove usluge. Gotovo dva mjeseca nismo mogli ništa učiniti po tom pitanju; Microsoftova podrška je na kraju dignula ruke i poslala nas partnerima, koji su sve uspješno postavili i otvorili nam račun.

Najteža faza je bio početak projekta, kada je trebalo da izaberete šta ćemo koristiti, kakva će biti arhitektura, kako i gde pohranjivati ​​podatke i kako će komponente i moduli sistema međusobno komunicirati.

U našem slučaju, suštinski uobičajeni problemi pokretanja bilo kakvog projekta dodatno su zakomplikovali kadrovske poslove. Specifičnosti našeg poslovanja su takve da, za razliku od komercijalnih, na internim projektima često rade programeri koji nemaju dovoljno znanja u traženim oblastima - jednostavno su, voljom sudbine, završili na klupi čekajući sljedeće veliki cool komercijalni projekat. Logično je da je i sa motivacijom u takvoj situaciji bilo jako teško. Produktivnost je niska, tim često miruje, a kao rezultat toga morate uvjeriti (motivisati) ili promijeniti osobu. Kada mijenjate programere, morate provesti obuku, prenijeti znanje i u suštini ponovo pokrenuti projekat. Svaki novi programer je video arhitekturu na svoj način i grdio je prethodne za odluke koje su donosili i tuđi kod. Prepisivanje je počelo od nule.

To je trajalo oko šest mjeseci. Samo smo obilježavali vrijeme, refaktorirali kod i nismo pisali ništa novo.

Takođe, o internim projektima, po pravilu, gotovo da i nema dokumentacije, te je bilo teško razumjeti šta je potrebno uraditi u svakom trenutku, a koji su trenutni prioriteti. Bilo je potrebno stvoriti stalan tim, uspostaviti procese i sprovesti planiranje i evaluaciju najmanje tri mjeseca. Ali kako to učiniti kada projekat nije komercijalan, što znači da morate uložiti minimalno radnih sati, a istovremeno dobiti rezultat koji nije lošiji nego za vanjskog kupca?

Identifikovali smo skup resursa koji su učestvovali u razvoju projekta, upoznati su sa njim i žele da rade na njemu. Napravili smo raspored zapošljavanja ljudi na projektima. Procijenili smo i koordinirali radove, te radove uklopili u „rupe“ između glavnih projekata. Nakon 4 mjeseca dobili smo radni prototip aplikacije.

Hajdemo sada detaljnije o funkcionalnosti, arhitekturi i tehničkim rješenjima bota.

Jedan od glavnih zahtjeva HR-a bio je da prepozna tekst koji je korisnik napisao kako bi tačno odgovorio na pitanje. Možete mu pisati - želim da idem na odmor, želim da idem na odmor ili bih želeo da idem na odmor i on će razumeti i odgovoriti u skladu sa tim. Ili se odjednom zaposleniku pokvari stolica i on želi da napiše “stolica je pokvarena” ili “Moja stolica je napukla” ili “Naslon stolice je otpao”; uz odgovarajuću obuku, bot će prepoznati takve zahtjeve. Kvalitet samog prepoznavanja teksta ovisi o obučenosti bota, o čemu ćemo kasnije.

Sljedeći zahtjev i dio funkcionalnosti je botov sistem dijaloga. Razvijen je sistem u kojem bot može voditi dijalog i razumjeti kontekst trenutnog problema. Kao odgovor na vaše pitanje, on može postaviti bilo kakva pojašnjavajuća pitanja i nastaviti razgovor ako smo obučili bota za to. Skype podržava jednostavne opcije menija za podsticanje korisnika o opcijama za nastavak razgovora. Takođe, ako smo vodili dijalog, ali iznenada odlučili da postavimo pitanje van teme, bot će to takođe razumeti.

Bot omogućava slanje različitih artefakata korisniku na osnovu njegovih ličnih podataka. Na primjer, na njegovoj lokaciji. Pretpostavimo da ako osoba želi pronaći toalet, tada bi mu se pokazala uredska karta koja ga vodi do toaleta. A kartica će se birati u zavisnosti od toga u kojoj se kancelariji kompanije zaposleni nalazi.

Jedan od najvažnijih zadataka je zaštita ličnih podataka korisnika. Ne možemo dozvoliti svakoj osobi da ima pristup osjetljivim podacima kojima naš bot upravlja. Potreba za autorizacijom za takvog bota je sastavni dio toga. Bot traži od korisnika da se autentifikuje prije nego što može voditi bilo kakav dijalog s njim. Ovo se dešava prvi put kada zaposleni kontaktira bota. Sama autorizacija korisnika preusmjerava na odgovarajuću stranicu, gdje korisnik dobiva token koji potom ubacuje u Skype poruku. Ako je autorizacija uspješna, možete započeti komunikaciju s botom.

Bot će nam pomoći

Autorizacija se odvija putem Skype-a - portal-autorizacionog servisa, korporativne mreže i LDAP-a. Dakle, autorizacija ovisi o trenutnim korisničkim podacima na korporativnoj mreži.

U procesu razvoja bota, shvatili smo da nam je potrebna neka vrsta sistema ugrađenog u funkcionalnost portala koji bi mogao pomoći HR-u da brzo otkloni greške u botu. Dodali smo stranicu portala na kojoj HR može vidjeti greške koje su korisnici zabilježili prilikom rada s botom i riješiti ih prekvalifikacijom ili ostaviti programerima.

Mogućnost treniranja bota direktno na portalu nije bila uključena od samog početka. Tokom procesa razvoja shvatili smo da je obuka bota najčešći zadatak koji će zaposleni u HR odjelu obavljati u radu s njim, a slanje tekstualnih fajlova programerima na dodatnu obuku bota je potpuno neprihvatljivo. Ovo oduzima previše vremena i stvara previše grešaka i problema.

Bot će nam pomoći

Napisali smo korisničko sučelje na portalu za User-friendly obuku bota. Omogućava HR-u da vidi trenutnu obuku bota, da je dodatno obuči i izvrši prilagođavanja trenutnoj obuci. Trening je predstavljen strukturom stabla u kojoj su čvorovi, odnosno grane nastavak dijaloga sa botom. Možete kreirati jednostavna pitanja i odgovore, ili možete kreirati teške dijaloge, sve ovisi o HR-u i njihovim potrebama.

Nekoliko riječi o arhitekturi rješenja.

Bot će nam pomoći

Arhitektura rješenja je modularna. Uključuje službe odgovorne za različite poslove, i to:
• Skype bot usluga na Azure-u - prihvata i obrađuje zahtjeve korisnika. Ovo je prilično jednostavan servis koji prvi prima zahtjev i obavlja njegovu početnu obradu.
• Admin portal - servis koji pruža web interfejs za podešavanje portala i samog bota. Bot uvijek prvi kontaktira portal, a portal odlučuje šta dalje sa zahtjevom.
• Usluga autorizacije - obezbjeđuje mehanizme autentikacije za bot i za administratorski portal. Autorizacija se odvija putem Oauth2 protokola. Uz pozitivnu autorizaciju, servis vrši autorizaciju u korporativnoj mreži prema važećim korisničkim podacima, tako da sistem može kontrolisati greške povezane sa podacima koji nisu sinhronizovani.
• AI modul za prepoznavanje teksta, napisan u Python-u i koji koristi okvir ParlAI za samo prepoznavanje teksta. Ovo je neuronska mreža, barem u njenoj trenutnoj implementaciji. Koristimo tfDiff algoritam da razumijemo pitanja. Modul pruža API za komunikaciju s njim i učenje.

U zaključku želim reći da je ovo naše prvo iskustvo u kreiranju chat bota, a trudili smo se da sistem učinimo što jednostavnijim, ali u isto vrijeme funkcionalnim, uz minimalne troškove rada. Mislim da imamo veoma interesantan proizvod. Sa sopstvenim sistemom obuke, evidentiranjem grešaka, slanjem obaveštenja, takođe se može integrisati sa bilo kojim drugim messengerom.

izvor: www.habr.com

Dodajte komentar