Il bot ci aiuterà

Il bot ci aiuterà

Un anno fa, il nostro amato dipartimento HR ci ha chiesto di scrivere un chatbot che aiutasse nell'inserimento dei nuovi arrivati in azienda.

Precisiamo che non sviluppiamo prodotti propri, ma offriamo ai clienti un'ampia gamma di servizi di sviluppo. Il racconto si concentrerà sul nostro progetto interno, per il quale il committente non è un'azienda esterna, ma il nostro stesso HR. E l'obiettivo principale, data la limitata disponibilità di persone, risorse e tempo, è portare a termine il progetto nei tempi e lanciare il prodotto.

Per iniziare, descriviamo le sfide che dovevamo affrontare.

Gli sviluppatori sono per lo più introversi e non amano parlare; è molto più semplice scrivere la propria domanda in una chat elettronica. Con il bot non è necessario pensare a chi chiedere, a chi telefonare, dove andare e, in generale, dove cercare informazioni, e se queste siano attuali.

Il secondo problema è proprio l'informazione: ce n'è tanta, proviene da diverse fonti, non sempre è disponibile e necessita di continuo aggiornamento.

In azienda ci sono quasi 500 dipendenti, distribuiti in vari uffici, fusi orari e città della Russia e persino all'estero; ci sono generalmente molte domande, quindi un altro obiettivo è ridurre il carico sul personale HR relativo alle domande più frequenti poste dai dipendenti.

Era necessario anche automatizzare i processi: l'arrivo dei nuovi arrivati in azienda, l'invio di messaggi ai manager e ai mentori dei nuovi arrivati, l'invio di promemoria automatici riguardo ai corsi e ai test che il nuovo deve superare per un'integrazione di successo.

Sulla base dei requisiti aziendali sono stati formulati i requisiti tecnici.

Il bot deve funzionare su Skype (storicamente, questo è il servizio utilizzato in azienda), quindi è stato scelto un servizio su Azure.

Per le limitazioni di accesso a questo, abbiamo iniziato a utilizzare un meccanismo di autorizzazione tramite Skype.
Per il riconoscimento del testo abbiamo utilizzato la libreria ParlAI.

È necessario anche un portale web amministrativo per la configurazione, l'addestramento, il debug, la configurazione delle comunicazioni e altre attività.

Il bot ci aiuterà

Durante il lavoro sul progetto ci siamo imbattuti in una serie di problemi e difficoltà.

Ad esempio, ci sono stati problemi di natura tecnica con l'account Azure. Microsoft non voleva attivare il nostro abbonamento a causa di alcune difficoltà tecniche all'interno del loro servizio. Per quasi due mesi non siamo stati in grado di fare nulla al riguardo, e il supporto Microsoft alla fine si è reso conto della situazione e ci ha rimandato ai partner, che hanno configurato tutto con successo e ci hanno fornito un account.

La fase più complessa è stata l'avvio del progetto, quando bisogna decidere cosa usare, quale sarà l'architettura, come e dove conservare i dati e come i componenti e i moduli del sistema interagiranno tra loro.

Nel nostro caso, i problemi comuni all'inizio di qualsiasi progetto erano complicati anche dal personale. La specificità della nostra attività è tale che, a differenza dei progetti commerciali, sui progetti interni lavorano spesso sviluppatori che non hanno conoscenze sufficienti nelle aree necessarie: si sono semplicemente trovati lì per caso, in attesa del prossimo grande progetto commerciale. È logico che in una situazione del genere la motivazione non fosse affatto semplice. La produttività scendeva a livelli molto bassi, ci sono stati frequenti periodi di inattività nel team, e alla fine è stato necessario convincere (motivare) o cambiare persona. Con la sostituzione di uno sviluppatore, è necessario fare formazione, trasferire conoscenze e ricominciare il progetto da capo. Ogni nuovo sviluppatore vedeva l'architettura a modo suo e criticava le decisioni prese dai precedenti e il codice degli altri. Si iniziava a riscrivere tutto da zero.

Questo è andato avanti per circa sei mesi. Ci siamo semplicemente arenati, riorganizzando il codice e non scrivendo nulla di nuovo.

Inoltre, nei progetti interni, di solito, non c'è quasi nessuna documentazione, e era difficile capire cosa fosse necessario fare in ogni momento e quali fossero le priorità attuali. Era necessario creare un team stabile, stabilire processi, pianificare e valutare almeno per tre mesi. Ma come fare quando il progetto non è commerciale, il che significa che è necessario investire il minor numero possibile di ore uomo, e allo stesso tempo ottenere risultati non inferiori a quelli per un cliente esterno?

Abbiamo definito un pool di risorse che hanno partecipato allo sviluppo del progetto, ne sono a conoscenza e desiderano lavorarci. Abbiamo redatto un programma di occupazione delle persone sui progetti. Abbiamo condotto una valutazione e una concordanza delle attività, inserendo queste attività nelle "fessure" tra i progetti principali. Dopo 4 mesi abbiamo ottenuto un prototipo funzionante dell'applicazione.

Ora parliamo in dettaglio delle funzionalità del bot, dell'architettura e delle soluzioni tecniche.

Uno dei principali requisiti dell'HR era il riconoscimento del testo scritto dall'utente per fornire una risposta corretta alla domanda. L'utente può scrivere — voglio andare in ferie, voglio un mese di ferie o mi piacerebbe andare in ferie, e il bot capirà e risponderà di conseguenza. O improvvisamente, se un dipendente ha rotto la sedia e vuole scrivere — "la sedia è rotta" oppure "la mia sedia è screpolata" o "lo schienale della sedia si è staccato", con un'adeguata formazione il bot riconoscerà tali richieste. La qualità del riconoscimento del testo dipende ovviamente dalla formazione del bot, di cui parleremo in seguito.

Un altro requisito e parte della funzionalità è il sistema di dialoghi del bot. È stato sviluppato un sistema in cui il bot può condurre un dialogo e comprendere il contesto della domanda corrente. Può, in risposta alla tua domanda, porre ulteriori domande di chiarimento e continuare la conversazione, se abbiamo addestrato il bot a farlo. Skype supporta semplici punti di menu per suggerire agli utenti possibili opzioni per continuare i dialoghi. Inoltre, se abbiamo avuto un dialogo, ma improvvisamente decidiamo di porre una domanda non pertinente, il bot lo capirà comunque.

Il bot consente di inviare vari artefatti all'utente, basandosi sui suoi dati personali. Ad esempio, in base alla sua posizione. Supponiamo che una persona voglia trovare un bagno, verrà mostrata una mappa dell'ufficio che lo guida al bagno. E la mappa sarà selezionata in base a quale ufficio dell'azienda si trova il dipendente.

Una delle principali sfide è la protezione delle informazioni personali degli utenti. Non possiamo permettere a chiunque di accedere ai dati riservati gestiti dal nostro bot. La necessità di autorizzazione per un tale bot è una parte integrante del suo funzionamento. Il bot richiede all'utente di effettuare l'autenticazione prima che possa avviare qualsiasi dialogo con esso. Questo avviene al primo contatto dell'operatore con il bot. L'autenticazione di per sé rimanda l'utente alla pagina corrispondente, dove riceve un token, che poi inserisce nel messaggio Skype. Se l'autenticazione ha esito positivo, si può iniziare a comunicare con il bot.

Il bot ci aiuterà

L'autenticazione avviene tramite Skype - il servizio di autorizzazione, la rete aziendale e LDAP. Pertanto, l'autenticazione dipende dai dati attuali dell'utente nella rete aziendale.

Durante lo sviluppo del bot, abbiamo capito che era necessaria una certa sistema integrato nelle funzionalità del portale, che potesse aiutare le risorse umane a svolgere rapidamente il debugging del bot. Abbiamo aggiunto una pagina del portale in cui gli HR possono visualizzare gli errori segnalati dagli utenti durante l'interazione con il bot e risolverli mediante un riaddestramento o lasciarli ai programmatori.

La possibilità di addestrare il bot direttamente sul portale non era prevista fin dall'inizio. Durante lo sviluppo abbiamo capito che l'addestramento del bot è il compito più frequente che i dipendenti delle risorse umane dovranno svolgere lavorando con esso, e inviare file di testo ai programmatori per un'ulteriore formazione del bot è assolutamente inaccettabile. Questo richiede troppo tempo e genera troppi errori e problemi.

Il bot ci aiuterà

Abbiamo scritto un'interfaccia utente sul portale per un addestramento user-friendly del bot. Essa consente agli HR di visualizzare l'attuale addestramento del bot, di addestrarlo ulteriormente e di apportare modifiche all'addestramento in corso. L'addestramento è rappresentato in una struttura ad albero, dove i nodi, cioè i rami, rappresentano le continuazioni del dialogo con il bot. È possibile creare semplici domande e risposte, così come dialoghi complessi, a seconda delle esigenze degli HR.

Qualche parola sull'architettura della soluzione.

Il bot ci aiuterà

L'architettura della soluzione è modulare. Comprende servizi che gestiscono vari compiti, cioè:
• Servizio del bot Skype su Azure — riceve e gestisce le richieste degli utenti. È un servizio piuttosto semplice, che per primo accoglie la richiesta e ne effettua un'elaborazione iniziale.
• Portale Admin — servizio che fornisce un'interfaccia web per configurare il portale e il bot stesso. Il bot si rivolge sempre prima al portale, che poi decide come gestire ulteriormente la richiesta.
• Servizio di autorizzazione — fornisce meccanismi di autenticazione per il bot e per il portale admin. L'autorizzazione avviene tramite il protocollo Oauth2. In caso di autorizzazione positiva, il servizio effettua l'autenticazione nella rete aziendale secondo i dati validi dell'utente, consentendo al sistema di controllare errori legati alla dissincronia dei dati.
• Modulo AI di riconoscimento del testo, scritto in Python e che utilizza il framework ParlAI per il riconoscimento del testo stesso. Si tratta di una rete neurale, almeno nell'attuale implementazione. Utilizziamo l'algoritmo tfDiff per comprendere le domande. Il modulo fornisce un'API per comunicare e addestrarlo.

In conclusione, voglio dire che questa è la nostra prima esperienza nella creazione di un chatbot, e abbiamo cercato di rendere il sistema il più semplice possibile, ma allo stesso tempo funzionale, con il minimo impegno di lavoro. Penso che ci sia riuscito a realizzare un prodotto piuttosto interessante. Con il proprio sistema di apprendimento, registrazione degli errori, invio delle notifiche, può anche essere integrato con qualsiasi altro messenger.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster