Instrumente de productivitate alimentate de Inteligența Artificială (AI) - Calendar.help

Silviu Toderas

Azure System Engineer

silviu.toderas@alef.com

"Cortana, găsește-mi te rog un loc liber în calendar pentru săptămâna viitoare, exceptând Miercuri, și trimite un Teams meeting cu rezervare în sala 32 către colegii din echipa de HR."

Această cerere către asistentul tău personal ar putea fi prima propoziție pe care o tastezi care când îți începi ziua. Sună desprins dintr-un scenariu de film SF, însă adevărul e că suntem din ce în ce mai aproape de acest moment.

Dar oare chiar avem nevoie de un asistent personal sau sunt doar mofturi? Dacă ne uităm la statisticile care ne arată factorii ce sabotează productivitatea unui angajat, mai ales în organizațiile mari, avem în vedere că:

  • 4,8 ore sunt petrecute pe săptămâna cu programarea de meeting-uri
  • 50% este proporția de timp petrecută de upper management în întâlniri și 35% de către middle management
  • 15% din timpul agregat al unei organizații e petrecut în întâlniri de diferite forme

Pe de altă parte, dacă ne uităm la provocările unui utilizator normal în ceea ce privește această acțiune, cele mai des invocate sunt:

  • Fluxul constant de mailuri transmise între participanți pentru a se putea găsi un interval comun
  • Mesajele pe diferite canale date participanților pentru a le aminti sa confirme programarea
  • Eventualele anulari de către una sau mai multe persoane care ne întorc la pasul 1 și reluarea procesului

Până la urmă, dacă executivii beneficiază de ajutorul asistenților personali pentru a adresa această rutină, de ce nu ar fi la fel și pentru ceilalți contributori?

Problema este suplimentar exacerbată când persoanele nu fac parte din aceeași companie ca și organizatorul, pentru a le putea verifica direct disponibilitatea în calendar, așa că un asistent virtual care să ne scape de aceasta bătaie de cap nu poate fi decât binevenit.

"Calendar.help" este adresa site-ului și, deopotrivă, numele proiectului demarat în 2016 în cadrul Microsoft Research, care are ca scop creșterea productivității utilizatorului prin eliberarea acestuia de tot ceea ce înseamnă muncă de rutină în stabilirea întâlnirilor. Instrumentele care stau la baza acestui concept sunt adânc înrădăcinate în machine learning, conversational computing, natural language understanding și alte câteva.

Proiectul în sine a fost integrat la un moment dat cu Outlook, pentru a avea parte de mediul propice de dezvoltare și feedback.

Cum funcționează?

Odată ce te-ai înrolat pe site folosind adresa de email de tip Microsoft 365, vei putea începe să folosești foarte simplu funcționalitatea prin simpla adăugare a Cortanei în câmpul CC al unui email și referențierea instrucțiunilor către asistent folosind cuvântul cheie "Cortana". De exemplu:

Foarte important de reținut este că nu este necesar ca ceilalți participanți la întâlnire, în afară de organizator, să aibă un cont de email care să fie Microsoft 365 enabled.

După ce emailul e transmis, Cortana verifică disponibilitatea în calendarul tău în funcție de parametrii contextuali și va trimite un email celorlalți participanți, cu propuneri pentru 2-3 intervale de timp, acolo unde e posibil.

Dacă nici unul din aceste intervale propuse nu este optim pentru un participant, acesta va răspunde mailului de la Cortana indicând acest lucru, iar Cortana va înțelege și va negocia noi intervale. 

Formularea metodei de răspuns nu este limitată doar la preselecții oferite în cadrul email-ului, un participant putând utiliza același limbaj natural pe care l-ar folosi cu o persoană în carne și oase.

Tot acest du-te vino va continua până când toți participanții implicați își vor da confirmarea pe ziua și ora propusă.

Odată confirmată întâlnirea, Cortana va crea un eveniment în calendarul tău cu toate detaliile și îl va trimite către participanți.

După cum se poate observa, toate interacțiunile cu asistentul virtual sunt naturale și conversația se poartă într-un mod fluid, ca și cum am avea parte de o relaționare cu o persoană în carne și oase.

Așadar, cum este implementată funcționalitatea?

În primul rând, trebuie să înțelegem că un email va conține o mulțime de informație irelevantă pentru o întâlnire. Un asistent uman ar fi în stare să discearnă fără probleme contextul și să extragă informația, însă în această arhitectură automatizată ne bazăm pe inteligența artificială, sau, că să fim mai exacți, pe machine learning (ML).
Modelul ML, bazat evident pe “convolutional neural networks” (CNN) trebuie întâi sa detecteze intenția, cum ar fi de exemplu reprogramarea unui meeting, anularea lui, adăugarea de participanți, schimbarea locației, propuneri de intervale alternative, și așa mai departe. În acest punct modelul este suplimentat de elemente de natural language processing (NLP), precum și componente de detecție euristică. Tehnici de NLP precum entity extraction, tokenization, stemming sau slot filling sunt candidații perfecți pentru a procesa un email de acest tip și a extrage informația necesară automatizării de micro task-uri precum setarea duratei întâlnirii sau a opțiunilor de timp.

Al doilea pas constă în capabilitățile de extragere a entităților. Entitățile pot lua mai multe forme, precum un anumit tip de meeting, durată, identitatea participanților, time zone-ul, locația, sala de întâlnire, și așa mai departe. Însă, această informație nu e suficient doar sa fie prezentă, ci trebuie să fie înțeleasă în contextul întregii cereri. De exemplu, dacă unul dintre participanți, aflat în US, va răspunde cu "sunt liber la ora 3 PM", asistentul trebuie să ia în considerare o eventuală conversie de time zone în  raport cu localizarea celorlalți participanți și time zone-ul declarat al acestora. Corolar, atunci când asistentul se va află în faza de negociere a unui posibil interval cu unul din participanți, informația propusă trebuie să reflecte time zone-ul acestuia.

Ultimul element arhitectural e dat de înțelegerea contextuală, în care Cortana va putea înțelege și interpreta informație relevantă la punctul actual din tot acest workflow, informație derivată din alte email-uri prezente ca atașamente în thread-ul de conversație, referințe către conversații anterioare și conversații de tip multi-turn.

Așadar, high level, din punct de vedere arhitectural, aveam de-a face cu un engine de scheduling ce administrează execuția de taskuri prezente într-un astfel de workflow prin construirea unui graph de dependențe și asigurându-se că aceste task-uri sunt executate în  ordinea care trebuie, la momentul potrivit. Acest engine se ocupă și de rularea taskurilor sincrone sau asincrone, precum și de instanțierea intervalelor de pauză in așteptarea răspunsurilor, salvarea state-ului și rehidratarea workflow-ului, abstractizând astfel pentru un developer interacțiunea low level cu aceste componente. In ceea ce privește metoda de implementare a mailbox-ului pentru Cortana, aceasta e reprezentata de Exchange Web Services API, împreună cu Microsoft Bot Framework.

Deși avem puterea modelelor de ML de partea noastră, ajută să specificăm la rândul nostru câteva guideline-uri pentru a putea face procesul de programare cât mai eficient pentru Cortana, și implicit , pentru noi. Parametrizarea unor aspecte precum un interval preferat pentru întâlniri sau ora la care luăm prânzul ne vor îmbunătăți experiența prin minimizarea fricțiunilor legate de alegerea de către Cortana unui interval optim de la începutul procesului de programare, exact cum și un asistent uman îți învață particularitățile odată cu trecerea timpului. Acești parametrii, precum și alții sunt puși la dispoziție într-un dashboard la care avem acces oricând și unde putem vedea inclusiv aspecte legate de întâlnirile efectuate de Cortana, programate sau în curs de programare, statistici asupra timpului economisit folosind acest sistem automatizat, dar și alte aspecte de analytics individuale.

In acest moment produsul se află în faza de Exclusive Preview, ceea ce înseamnă că, odată ce te-ai înrolat în program, ești pus pe o lista de așteptare până în momentul când ești whitelisted. Și, deși în general nu durează mult până să primești această notificare, poți folosi chiar acum codul "CupcakeFrosting" la înrolare, pentru a primi acces instant în acest program.

Bineînțeles, fiind un produs experimental, are parte și de o serie de limitări, dintre care, poate cea mai relevantă pentru noi este imposibilitatea folosirii limbii romane în acest moment, programul utilizând exclusiv limba engleză. Pentru conversațiile cu parteneri internaționali însă, este un instrument de excepție care, în contextul lipsei acute de timp din ziua de azi, e un câștig fantastic.

Puteți afla mai multe despre program și capabilitățile acestuia vizitând https://calendar.help/faq .

In plus, dacă sunteți atrași și de înțelegerea arhitecturii asistentului nostru virtual preferat, Microsoft Research are publicat un whitepaper foarte interesant, accesibil la https://www.microsoft.com/en-us/research/wp-content/uploads/2017/01/paper2616.pdf .