Botul ne va ajuta

Botul ne va ajuta

În urmă cu un an, îndrăgitul nostru departament de resurse umane ne-a cerut să scriem un bot de chat care să ajute la adaptarea noilor veniți la companie.

Să facem o rezervare că nu ne dezvoltăm propriile produse, ci oferim clienților o gamă completă de servicii de dezvoltare. Povestea va fi despre proiectul nostru intern, pentru care clientul nu este o companie terță, ci propriul nostru HR. Iar sarcina principală, având în vedere disponibilitatea limitată a oamenilor, resurselor și timpului, este de a finaliza proiectul la timp și de a lansa produsul.

Mai întâi, să descriem problemele care trebuiau rezolvate.

Dezvoltatorii sunt în mare parte oameni introvertiți și nu le place să vorbească; este mult mai ușor să-ți scrii întrebarea într-un chat prin e-mail. Cu un bot, nu trebuie să vă gândiți la cine să întrebați, pe cine să sunați, unde să mergeți și, în general, unde să căutați informații și dacă acestea sunt relevante.

A doua problemă este informația - există o mulțime, se află în diferite surse, nu este întotdeauna disponibilă și necesită adăugare și actualizare constantă.

Compania are aproape 500 de angajați, sunt localizați în diferite birouri, fusuri orare, orașe din Rusia și chiar din străinătate, de obicei există o mulțime de întrebări, așa că o altă sarcină este reducerea poverii personalului HR asociată cu cele mai frecvente întrebări adresate. de către angajați.

De asemenea, a fost necesară automatizarea proceselor de: nou-veniți care se alătură companiei, trimiterea de mesaje managerilor și mentorilor noilor veniți, trimiterea de mementouri automate despre cursurile și testele pe care un nou venit trebuie să le treacă pentru o adaptare cu succes.

Cerințele tehnice au fost formate pe baza cerințelor de afaceri.

Botul trebuie să funcționeze pe baza Skype (din punct de vedere istoric, îl folosesc în companie), așa că a fost ales serviciul pe Azura.

Pentru a restricționa accesul la acesta, am început să folosim mecanismul de autorizare prin Skype.
Biblioteca ParlAI a fost folosită pentru recunoașterea textului

Un portal web administrativ este, de asemenea, necesar pentru configurare, instruire, depanare, configurarea mailingurilor și alte sarcini.

Botul ne va ajuta

În timp ce lucram la proiect, am întâmpinat o serie de probleme și dificultăți.

De exemplu, au existat probleme tehnice cu un cont Azure. Microsoft nu a dorit să ne activeze abonamentul din cauza unor dificultăți tehnice din cadrul serviciului său. Timp de aproape două luni nu am putut face nimic în acest sens; în cele din urmă, asistența Microsoft a dat mâna și ne-a trimis la parteneri, care au configurat totul cu succes și ne-au dat un cont.

Cea mai dificilă etapă a fost începerea proiectului, când trebuie să alegeți ce vom folosi, care va fi arhitectura, cum și unde să stocați datele și cum vor interacționa componentele și modulele sistemului între ele.

În cazul nostru, problemele esențial obișnuite ale demarării oricărui proiect au fost complicate și mai mult de personal. Specificul afacerii noastre este de așa natură încât, spre deosebire de cele comerciale, proiectele interne sunt adesea lucrate de dezvoltatori care nu au cunoștințe suficiente în domeniile solicitate - pur și simplu, prin voința sorții, au ajuns pe bancă așteptând următorul mare proiect comercial tare. Este logic că lucrurile au fost și foarte dificile cu motivația într-o astfel de situație. Productivitatea scade, echipa este adesea inactivă și, ca urmare, trebuie să convingi (motivezi) sau să schimbi persoana. Când schimbați dezvoltatorii, trebuie să efectuați instruire, să transferați cunoștințe și, în esență, să începeți din nou proiectul. Fiecare nou dezvoltator a văzut arhitectura în felul său și i-a certat pe cei anteriori pentru deciziile pe care le-au luat și pentru codul altora. Rescrierea a început de la zero.

Acest lucru a durat aproximativ șase luni. Tocmai marcam timpul, refactoram codul și nu scriam nimic nou.

De asemenea, în cazul proiectelor interne, de regulă, nu există aproape nicio documentare și a fost greu de înțeles ce trebuie făcut la fiecare moment și care sunt prioritățile actuale. A fost necesar să se creeze o echipă permanentă, să se stabilească procese și să se efectueze planificarea și evaluarea timp de cel puțin trei luni. Dar cum să faci asta atunci când proiectul nu este comercial, ceea ce înseamnă că trebuie să investești un minim de ore de muncă și, în același timp, să obții rezultatul nu mai rău decât pentru un client extern?

Am identificat un grup de resurse care au participat la dezvoltarea proiectului, sunt familiarizați cu acesta și doresc să lucreze la el. Am întocmit un program de angajare a oamenilor pe proiecte. Am evaluat și coordonat lucrările și am încadrat aceste lucrări în „găurile” dintre proiectele principale. După 4 luni am primit un prototip funcțional al aplicației.

Acum să vorbim mai detaliat despre funcționalitatea, arhitectura și soluțiile tehnice ale botului.

Una dintre principalele cerințe ale HR a fost recunoașterea textului scris de utilizator pentru a răspunde corect la întrebare. Îi poți scrie - vreau să plec în vacanță, vreau să plec în vacanță sau aș vrea să plec în vacanță, iar el va înțelege și va răspunde în consecință. Sau dintr-o dată scaunul unui angajat se rupe și vrea să scrie „scaunul este rupt” sau „Scaunul meu este crăpat” sau „Spătarul scaunului a căzut”; cu o pregătire adecvată, botul va recunoaște astfel de solicitări. Calitatea recunoașterii textului în sine depinde de pregătirea botului, despre care vom vorbi mai târziu.

Următoarea cerință și parte a funcționalității este sistemul de dialog al botului. A fost dezvoltat un sistem în care botul poate conduce un dialog și poate înțelege contextul problemei curente. Ca răspuns la întrebarea dvs., el poate pune orice întrebări clarificatoare și poate continua conversația dacă am instruit botul să facă acest lucru. Skype acceptă opțiuni simple de meniu pentru a informa utilizatorii despre opțiunile pentru continuarea conversațiilor. De asemenea, dacă am avut un dialog, dar am decis brusc să punem o întrebare în afara subiectului, botul va înțelege și acest lucru.

Botul face posibilă trimiterea diferitelor artefacte către utilizator pe baza datelor sale personale. De exemplu, în locația lui. Să presupunem că dacă o persoană ar vrea să găsească o toaletă, atunci i s-ar arăta o hartă a biroului care îl conduce la toaletă. Și cardul va fi selectat în funcție de biroul companiei în care se află angajatul.

Una dintre cele mai importante sarcini este protejarea informațiilor personale ale utilizatorilor. Nu putem permite fiecărei persoane să aibă acces la datele sensibile pe care le operează botul nostru. Nevoia de autorizare pentru un astfel de bot este o parte integrantă a acestuia. Botul îi cere utilizatorului să se autentifice înainte de a putea conduce orice dialog cu el. Acest lucru se întâmplă prima dată când un angajat contactează botul. Autorizarea în sine redirecționează utilizatorul către pagina corespunzătoare, unde utilizatorul primește un token, pe care apoi îl introduce într-un mesaj Skype. Dacă autorizarea are succes, puteți începe să comunicați cu botul.

Botul ne va ajuta

Autorizarea are loc prin Skype - serviciu de autorizare portal, rețea corporativă și LDAP. Astfel, autorizarea depinde de datele curente ale utilizatorului din rețeaua corporativă.

În procesul de dezvoltare a botului, ne-am dat seama că avem nevoie de un fel de sistem încorporat în funcționalitatea portalului care ar putea ajuta HR să depaneze rapid botul. Am adăugat o pagină de portal unde HR poate vedea erorile înregistrate de utilizatori atunci când lucrează cu bot și le poate rezolva folosind reinstruire sau le lasă dezvoltatorilor.

Capacitatea de a antrena un bot direct pe portal nu a fost inclusă de la bun început. În timpul procesului de dezvoltare, ne-am dat seama că antrenarea botului este cea mai comună sarcină pe care o vor îndeplini angajații departamentului de resurse umane atunci când lucrează cu acesta, iar trimiterea fișierelor text către dezvoltatori pentru instruire suplimentară a botului este complet inacceptabilă. Acest lucru consumă prea mult timp și creează prea multe erori și probleme.

Botul ne va ajuta

Am scris o interfață de utilizare pe portal pentru antrenamentul ușor de utilizat al botului. Permite HR să vadă antrenamentul actual al botului, să îl antreneze în continuare și să facă ajustări la antrenamentul curent. Antrenamentul este reprezentat de o structură arborescentă în care nodurile, adică ramurile, sunt o continuare a dialogului cu botul. Puteți crea întrebări și răspunsuri simple sau puteți crea dialoguri serioase, totul depinde de HR și de nevoile acestora.

Câteva cuvinte despre arhitectura soluției.

Botul ne va ajuta

Arhitectura soluției este modulară. Acesta include servicii responsabile pentru diverse sarcini, și anume:
• Serviciu bot Skype pe Azure - acceptă și procesează cererile utilizatorilor. Acesta este un serviciu destul de simplu care este primul care primește o solicitare și efectuează procesarea inițială a acesteia.
• Portal de administrare - un serviciu care oferă o interfață web pentru configurarea portalului și pentru bot în sine. Botul contactează întotdeauna primul portal, iar portalul decide ce să facă în continuare cu cererea.
• Serviciu de autorizare - oferă mecanisme de autentificare pentru bot și pentru portalul de administrare. Autorizarea are loc prin protocolul Oauth2. Cu autorizare pozitivă, serviciul efectuează autorizarea în rețeaua corporativă conform datelor de utilizator valide, astfel încât sistemul să poată controla erorile asociate cu datele nesincronizate.
• Modul de recunoaștere a textului AI, scris în Python și folosind cadrul ParlAI pentru recunoașterea textului în sine. Aceasta este o rețea neuronală, cel puțin în implementarea sa actuală. Folosim algoritmul tfDiff pentru a înțelege întrebările. Modulul oferă un API pentru comunicarea cu acesta și pentru învățare.

În concluzie, vreau să spun că aceasta este prima noastră experiență în crearea unui chat bot și am încercat să facem sistemul cât mai simplu, dar în același timp funcțional, cu costuri minime de muncă pe el. Cred că avem un produs foarte interesant. Cu propriul sistem de antrenament, înregistrarea erorilor, trimiterea notificărilor, poate fi integrat și cu orice alt messenger.

Sursa: www.habr.com

Adauga un comentariu