Bot će nam pomoći

Bot će nam pomoći

Prije godinu dana naš dragi HR odjel zamolio nas je da napišemo chat bota koji bi pomogao u prilagodbi novopridošlica u tvrtku.

Napomenimo da ne razvijamo vlastite proizvode, ali klijentima pružamo cijeli niz razvojnih usluga. Priča će biti o našem internom projektu, za koji naručitelj nije treća tvrtka, već vlastiti HR. A glavni zadatak, s obzirom na ograničenu dostupnost ljudi, resursa i vremena, je dovršiti projekt na vrijeme i izdati proizvod.

Najprije opišite probleme koje je trebalo riješiti.

Programeri su uglavnom introvertirani ljudi i ne vole razgovarati; puno je lakše napisati svoje pitanje u e-mail chatu. S botom ne morate razmišljati koga pitati, koga nazvati, kamo ići i općenito gdje tražiti informacije i jesu li 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.

Tvrtka ima gotovo 500 zaposlenika, smješteni su u različitim uredima, vremenskim zonama, gradovima Rusije, pa čak i u inozemstvu, obično ima puno pitanja, pa je još jedan zadatak smanjiti opterećenje HR osoblja povezano s najčešćim pitanjima od strane zaposlenika.

Također je bilo potrebno automatizirati procese: ulaska pridošlica u tvrtku, slanja poruka menadžerima i mentorima pridošlica, slanja automatskih podsjetnika o tečajevima i testovima koje pridošlica treba položiti za uspješnu prilagodbu.

Tehnički zahtjevi formirani su na temelju poslovnih zahtjeva.

Bot mora raditi na bazi Skypea (povijesno gledano, koriste ga u tvrtki), pa je odabran servis na Azuri.

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

Administrativni web portal također je potreban za konfiguraciju, obuku, otklanjanje pogrešaka, postavljanje slanja pošte i druge zadatke.

Bot će nam pomoći

Tijekom rada na projektu nailazili smo na niz problema i poteškoća.

Na primjer, bilo je tehničkih problema s Azure računom. Microsoft nije htio aktivirati našu pretplatu zbog nekih tehničkih poteškoća unutar njihove usluge. Gotovo dva mjeseca nismo mogli ništa poduzeti, Microsoftova podrška je na kraju digla ruke i poslala nas partnerima koji su sve uspješno postavili i dali nam račun.

Najteža faza je bila početak projekta, kada treba odabrati što ćemo koristiti, kakva će biti arhitektura, kako i gdje pohranjivati ​​podatke te kako će komponente i moduli sustava međusobno komunicirati.

U našem slučaju, suštinski obični problemi pokretanja bilo kojeg projekta dodatno su se zakomplicirali kadrovskim zapošljavanjem. Specifičnosti našeg poslovanja su takve da, za razliku od komercijalnih, interne projekte često rade developeri koji nemaju dovoljno znanja iz potrebnih područja – jednostavno su, voljom sudbine, završili na klupi čekajući sljedećeg veliki cool komercijalni projekt. Logično je da je i s motivacijom u takvoj situaciji bilo jako teško. Produktivnost pada na nisku razinu, tim često miruje, a kao rezultat toga morate nagovarati (motivirati) ili mijenjati osobu. Kod promjene programera potrebno je provesti obuku, prenijeti znanje i u biti pokrenuti projekt iznova. Svaki novi programer je vidio arhitekturu na svoj način i grdio je prethodne zbog odluka koje su donosili i koda drugih ljudi. 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đer, na internim projektima u pravilu nema gotovo nikakve dokumentacije, te je bilo teško shvatiti što treba napraviti u svakom trenutku i koji su trenutni prioriteti. Bilo je potrebno oformiti stalni tim, uspostaviti procese te provoditi planiranje i evaluaciju najmanje tri mjeseca. Ali kako to učiniti kada projekt nije komercijalan, što znači da morate uložiti najmanje radnih sati, a istovremeno dobiti rezultat ništa lošiji nego za vanjskog kupca?

Identificirali smo skup resursa koji su sudjelovali u razvoju projekta, upoznati su s njim i žele na njemu raditi. 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.

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

Jedan od glavnih zahtjeva HR-a bio je prepoznavanje teksta koji je napisao korisnik kako bi se točno odgovorilo na pitanje. Možete mu napisati - želim ići na godišnji odmor, želim ići na godišnji odmor ili bih želio ići na godišnji odmor, a on će razumjeti i odgovoriti u skladu s tim. Ili se zaposleniku iznenada slomi stolica i on želi napisati "stolica je slomljena" ili "Moja stolica je napukla" ili "Naslon stolice je pao"; uz odgovarajuću obuku, bot će prepoznati takve zahtjeve. Sama kvaliteta prepoznavanja teksta ovisi o obučenosti bota, o čemu ćemo kasnije.

Sljedeći zahtjev i dio funkcionalnosti je sustav dijaloga bota. Razvijen je sustav u kojem bot može voditi dijalog i razumjeti kontekst trenutne teme. Kao odgovor na vaše pitanje, on može postaviti razjašnjavajuća pitanja i nastaviti razgovor ako smo istrenirali bota za to. Skype podržava jednostavne opcije izbornika za obavještavanje korisnika o opcijama za nastavak razgovora. 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 raznih artefakata korisniku na temelju njegovih osobnih podataka. Na primjer, na njegovom mjestu. Pretpostavimo da neka osoba želi pronaći WC, tada bi mu se pokazala mapa ureda koja bi je vodila do WC-a. A kartica će biti odabrana ovisno o uredu tvrtke u kojem se zaposlenik nalazi.

Jedna od najvažnijih zadaća je zaštita osobnih podataka korisnika. Ne možemo dopustiti da svaka osoba ima pristup osjetljivim podacima kojima upravlja naš bot. Potreba za autorizacijom za takvog bota je sastavni dio toga. Bot traži od korisnika autentifikaciju prije nego što može voditi bilo kakav dijalog s njim. To se događa prvi put kada zaposlenik kontaktira bota. Sama autorizacija preusmjerava korisnika na odgovarajuću stranicu, gdje korisnik dobiva token, koji zatim 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 Skypea - usluge portala za autorizaciju, 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 sustava ugrađenog u funkcionalnost portala koji bi mogao pomoći HR-u da brzo debugira bot. Dodali smo stranicu portala na kojoj HR može vidjeti pogreške koje su korisnici zabilježili u radu s botom te ih riješiti prekvalifikacijom ili ostaviti programerima.

Mogućnost treniranja bota izravno na portalu nije bila uključena od samog početka. Tijekom procesa razvoja uvidjeli smo da je obuka bota najčešća zadaća koju će djelatnici HR odjela obavljati pri radu s njim, a slanje tekstualnih datoteka programerima na dodatnu obuku bota potpuno je neprihvatljivo. To oduzima previše vremena i stvara previše grešaka i problema.

Bot će nam pomoći

Napisali smo UI na portalu za User-friendly obuku bota. Omogućuje HR-u da vidi trenutni trening bota, dodatno ga trenira i izvrši prilagodbe trenutnog treninga. Trening je predstavljen strukturom stabla u kojoj su čvorovi, odnosno grane nastavak dijaloga s botom. Možete kreirati jednostavna pitanja i odgovore, ili možete kreirati teške dijaloge, sve ovisi o HR-u i njegovim 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 zadatke, i to:
• Skype bot usluga na Azureu - prihvaća i obrađuje zahtjeve korisnika. Riječ je o prilično jednostavnoj usluzi koja prva prima zahtjev i vrši njegovu početnu obradu.
• Administratorski portal - servis koji pruža web sučelje za postavljanje portala i za sam bot. Bot uvijek prvi kontaktira portal, a portal odlučuje što dalje sa zahtjevom.
• Usluga autorizacije - pruža mehanizme provjere autentičnosti za bot i za administrativni portal. Autorizacija se odvija preko Oauth2 protokola. Uz pozitivnu autorizaciju, usluga vrši autorizaciju u korporativnoj mreži prema važećim korisničkim podacima, tako da sustav može kontrolirati greške povezane s podacima koji nisu sinkronizirani.
• AI modul za prepoznavanje teksta, napisan u Pythonu i koristi okvir ParlAI za samo prepoznavanje teksta. Ovo je neuronska mreža, barem u trenutnoj implementaciji. Za razumijevanje pitanja koristimo algoritam tfDiff. Modul pruža API za komunikaciju s njim i učenje.

Zaključno, želim reći da je ovo naše prvo iskustvo u izradi chat bota, a nastojali smo učiniti sustav što jednostavnijim, ali u isto vrijeme funkcionalnim, s minimalnim troškovima rada na njemu. Mislim da imamo vrlo zanimljiv proizvod. S vlastitim sustavom obuke, evidentiranjem grešaka, slanjem obavijesti, također se može integrirati s bilo kojim drugim messengerom.

Izvor: www.habr.com

Dodajte komentar