Il bot ci aiuterà

Il bot ci aiuterà

Un anno fa, il nostro amato dipartimento delle risorse umane ci ha chiesto di scrivere un chatbot che aiutasse ad adattare i nuovi arrivati ​​all'azienda.

Facciamo una prenotazione che non sviluppiamo i nostri prodotti, ma forniamo ai clienti una gamma completa di servizi di sviluppo. La storia riguarderà il nostro progetto interno, per il quale il cliente non è un'azienda terza, ma il nostro personale HR. E il compito principale, data la disponibilità limitata di persone, risorse e tempo, è completare il progetto in tempo e rilasciare il prodotto.

Per prima cosa descriviamo i problemi che dovevano essere risolti.

Gli sviluppatori sono per lo più persone introverse e non amano parlare; è molto più semplice scrivere la tua domanda in una chat email. Con un bot non devi pensare a chi chiedere, chi chiamare, dove andare e in generale dove cercare informazioni e se sono rilevanti.

Il secondo problema sono le informazioni: ce ne sono molte, si trovano in diverse fonti, non sono sempre disponibili e necessitano di aggiunte e aggiornamenti costanti.

L'azienda ha quasi 500 dipendenti, si trovano in diversi uffici, fusi orari, città della Russia e persino all'estero, di solito ci sono molte domande, quindi un altro compito è ridurre l'onere per il personale delle risorse umane associato alle domande più frequenti poste da parte dei dipendenti.

Era inoltre necessario automatizzare i processi di: ingresso dei nuovi arrivati ​​in azienda, invio di messaggi ai manager e ai mentori dei nuovi arrivati, invio di promemoria automatici sui corsi e sui test che un nuovo arrivato deve superare per adattarsi con successo.

I requisiti tecnici sono stati formati in base ai requisiti aziendali.

Il bot deve funzionare sulla base di Skype (storicamente lo usano in azienda), quindi è stato scelto il servizio su Azura.

Per limitarne l'accesso, abbiamo iniziato a utilizzare il meccanismo di autorizzazione tramite Skype.
La libreria ParlAI è stata utilizzata per il riconoscimento del testo

È inoltre necessario un portale Web amministrativo per la configurazione, la formazione, il debug, l'impostazione della posta e altre attività.

Il bot ci aiuterà

Mentre lavoravamo al progetto, abbiamo incontrato una serie di problemi e difficoltà.

Ad esempio, si sono verificati problemi tecnici con un account Azure. Microsoft non ha voluto attivare il nostro abbonamento a causa di alcune difficoltà tecniche all'interno del loro servizio. Per quasi due mesi non abbiamo potuto fare nulla; il supporto Microsoft alla fine ha alzato le mani e ci ha inviato ai partner, che hanno configurato tutto con successo e ci hanno fornito un account.

La fase più difficile è stata l'inizio del progetto, quando bisogna scegliere cosa utilizzeremo, quale sarà l'architettura, come e dove archiviare i dati e come i componenti e i moduli del sistema interagiranno tra loro.

Nel nostro caso, i problemi essenzialmente ordinari legati all’avvio di qualsiasi progetto sono stati ulteriormente complicati dal personale. Le specificità della nostra attività sono tali che, a differenza di quelli commerciali, i progetti interni sono spesso lavorati da sviluppatori che non hanno una conoscenza sufficiente nelle aree richieste - semplicemente, per volontà del destino, sono finiti in panchina in attesa del prossimo grande progetto commerciale interessante. È logico che anche la motivazione in una situazione del genere fosse molto difficile. La produttività diminuisce, il team è spesso inattivo e di conseguenza è necessario persuadere (motivare) o cambiare la persona. Quando si cambiano gli sviluppatori, è necessario condurre corsi di formazione, trasferire conoscenze e sostanzialmente riavviare il progetto. Ogni nuovo sviluppatore vedeva l'architettura a modo suo e rimproverava quelli precedenti per le decisioni prese e per il codice di altre persone. La riscrittura è iniziata da zero.

Ciò andò avanti per circa sei mesi. Stavamo solo segnando il tempo, rifattorizzando il codice e non scrivendo nulla di nuovo.

Inoltre, sui progetti interni, di norma, non c'è quasi alcuna documentazione ed è stato difficile capire cosa è necessario fare in ogni momento e quali siano le priorità attuali. È stato necessario creare un team permanente, stabilire processi e condurre la pianificazione e la valutazione per almeno tre mesi. Ma come farlo quando il progetto non è commerciale, il che significa che è necessario investire un minimo di ore di lavoro e allo stesso tempo ottenere un risultato non peggiore che per un cliente esterno?

Abbiamo individuato un pool di risorse che hanno partecipato allo sviluppo del progetto, lo conoscono e vogliono lavorarci. Abbiamo elaborato un programma per l'assunzione di persone nei progetti. Abbiamo valutato e coordinato il lavoro, inserendo questi lavori nei “buchi” tra i progetti principali. Dopo 4 mesi abbiamo ricevuto un prototipo funzionante dell'applicazione.

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

Uno dei requisiti principali di HR era riconoscere il testo scritto dall'utente per rispondere correttamente alla domanda. Puoi scrivergli: voglio andare in vacanza, voglio andare in vacanza o vorrei andare in vacanza, e lui capirà e risponderà di conseguenza. Oppure all’improvviso la sedia di un dipendente si rompe e lui vuole scrivere “la sedia è rotta” o “La mia sedia è rotta” o “Lo schienale della sedia è caduto”; con una formazione adeguata, il bot riconoscerà tali richieste. La qualità stessa del riconoscimento del testo dipende dall'addestramento del bot, di cui parleremo più avanti.

Il prossimo requisito e parte della funzionalità è il sistema di dialogo del bot. È stato sviluppato un sistema in cui il bot può condurre un dialogo e comprendere il contesto del problema attuale. In risposta alla tua domanda, potrebbe porre domande chiarificatrici e continuare la conversazione se abbiamo addestrato il bot a farlo. Skype supporta semplici opzioni di menu per richiedere agli utenti le opzioni per continuare le conversazioni. Inoltre, se stessimo dialogando, ma all'improvviso decidessimo di porre una domanda fuori tema, anche il bot lo capirà.

Il bot consente di inviare vari artefatti all'utente in base ai suoi dati personali. Ad esempio, nella sua posizione. Supponiamo che se una persona volesse trovare un bagno, gli verrebbe mostrata una mappa dell'ufficio che lo condurrebbe al bagno. E la carta verrà selezionata a seconda dell'ufficio aziendale in cui si trova il dipendente.

Uno dei compiti più importanti è proteggere le informazioni personali degli utenti. Non possiamo consentire a ogni persona di avere accesso ai dati sensibili gestiti dal nostro bot. La necessità di autorizzazione per un bot di questo tipo ne è parte integrante. Il bot chiede all'utente di autenticarsi prima di poter dialogare con lui. Ciò accade la prima volta che un dipendente contatta il bot. L'autorizzazione stessa reindirizza l'utente alla pagina appropriata, dove l'utente riceve un token, che poi inserisce in un messaggio Skype. Se l'autorizzazione ha esito positivo, puoi iniziare a comunicare con il bot.

Il bot ci aiuterà

L'autorizzazione avviene tramite Skype - servizio di autorizzazione del portale, rete aziendale e LDAP. L'autorizzazione dipende quindi dai dati utente attuali nella rete aziendale.

Nel processo di sviluppo del bot, ci siamo resi conto che avevamo bisogno di una sorta di sistema integrato nella funzionalità del portale che potesse aiutare le risorse umane a eseguire rapidamente il debug del bot. Abbiamo aggiunto una pagina del portale in cui le risorse umane possono vedere gli errori registrati dagli utenti quando lavorano con il bot e risolverli utilizzando la riqualificazione o lasciarli agli sviluppatori.

Fin dall'inizio non era prevista la possibilità di addestrare un bot direttamente sul portale. Durante il processo di sviluppo, ci siamo resi conto che la formazione del bot è il compito più comune che i dipendenti del dipartimento Risorse umane eseguiranno quando lavorano con esso e che l'invio di file di testo agli sviluppatori per un'ulteriore formazione del bot è del tutto inaccettabile. Ciò richiede troppo tempo e crea troppi errori e problemi.

Il bot ci aiuterà

Abbiamo scritto un'interfaccia utente sul portale per la formazione user-friendly del bot. Consente alle risorse umane di vedere l'allenamento attuale del bot, addestrarlo ulteriormente e apportare modifiche all'allenamento attuale. La formazione è rappresentata da una struttura ad albero in cui i nodi, cioè i rami, sono la continuazione del dialogo con il bot. Puoi creare domande e risposte semplici oppure creare dialoghi approfonditi, tutto dipende dalle risorse umane e dalle loro esigenze.

Qualche parola sull'architettura della soluzione.

Il bot ci aiuterà

L'architettura della soluzione è modulare. Comprende servizi responsabili di vari compiti, vale a dire:
• Servizio bot Skype su Azure: accetta ed elabora le richieste degli utenti. Questo è un servizio abbastanza semplice che riceve per primo una richiesta ed esegue la sua elaborazione iniziale.
• Portale di amministrazione: un servizio che fornisce un'interfaccia web per la configurazione del portale e per il bot stesso. Il bot contatta sempre prima il portale e il portale decide cosa fare successivamente con la richiesta.
• Servizio di autorizzazione: fornisce meccanismi di autenticazione per il bot e per il portale di amministrazione. L'autorizzazione avviene tramite il protocollo Oauth2. Con l'autorizzazione positiva, il servizio esegue l'autorizzazione nella rete aziendale in base ai dati utente validi, in modo che il sistema possa controllare gli errori associati ai dati non sincronizzati.
• Modulo di riconoscimento del testo AI, scritto in Python e che utilizza il framework ParlAI per il riconoscimento del testo stesso. Questa è una rete neurale, almeno nella sua attuale implementazione. Usiamo l'algoritmo tfDiff per comprendere le domande. Il modulo fornisce un'API per comunicare con esso e apprendere.

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 costi di manodopera minimi. Penso che abbiamo un prodotto molto interessante. Dotato di un proprio sistema di formazione, registrazione degli errori, invio di notifiche, può essere integrato anche con qualsiasi altro messenger.

Fonte: habr.com

Aggiungi un commento