ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 132
Abonament PDF

Optimizarea performanței și eficienței utilizând o arhitectură de chatbot LLM

Adrian Căliman
Solution Architect @ PitechPlus



PROGRAMARE

Arhitectura proiectului, pe care o vom prezenta mai jos, s-a născut dintr-o inițiativă de cercetare a unui jucător important din sectorul de externalizare a proceselor de business (BPO). Serviciile BPO includ: consultanță, asistență comercială, servicii juridice, vânzări și suport tehnic.

În cadrul acestor servicii, suportul tehnic se diferențiază prin complexitate, care derivă din obiectivele serviciului, diversitatea canalelor de comunicare folosite și din volumul mare de muncă manuală necesară.

Soluția existentă urmărește să respecte mai multe angajamente cheie precum: îmbunătățirea experienței clienților și a utilizatorilor prin rezolvarea rapidă a problemelor tehnice, implementarea unor procese personalizate de gestionare a tichetelor, asigurarea monitorizării non-stop și a unui răspuns prompt la incidente.

Totuși, în acest cadru, fiecare echipă de suport trebuie să parcurgă un training pe baza cunoștințelor și proceselor specifice clientului. Această etapă de formare necesită mult timp și este costisitoare. În plus, vine cu provocări semnificative atunci când vorbim de extinderea echipelor și devine, în cele din urmă, un obstacol redutabil.

Pentru a simplifica și optimiza acest proces, o abordare este integrarea unui chatbot pentru automatizarea conversațiilor scrise între utilizatori și echipele de suport tehnic.

Chatboturile se dovedesc deosebit de valoroase atunci când intenția utilizatorului este clară, iar informațiile necesare pot fi furnizate prin intermediul unor reguli și condiții predefinite.

Cu toate acestea, în ciuda așteptărilor inițiale de îmbunătățire semnificativă a eficienței conversației, implementarea în lumea reală a dezvăluit câteva limitări notabile:

Modelele de limbaj de mari dimensiuni (LLM)

Pentru a răspunde acestor provocări, am explorat o alternativă promițătoare: modelele GPT ale OpenAI. Documentele care descriu aceste modele evidențiază abilitatea lor de a obține o înțelegere robustă a limbajului natural prin pre-antrenament generativ și ajustare fină, valorificând un corpus vast de text.

Cu entuziasm, în martie 2023, OpenAI a lansat API-ul ChatGPT, care permite utilizarea practică a acestor modele prin intermediul interfețelor de programare.

OpenAI - limitări

Deși inițial modelele ChatGPT pot părea o soluție "plug-and-play" convenabilă pentru a îmbunătăți chatbotul, am întâlnit trei limitări semnificative care împiedică aplicarea lor directă în cazul nostru specific:

Pe baza cercetării noastre, am stabilit că modelele GPT explorate au un potențial promițător pentru a fi utilizate, dar vor avea nevoie de personalizare. Pentru a utiliza în mod eficient LLM-urile, avem în vedere dezvoltarea arhitecturii unei aplicații "middleware" care poate gestiona procesarea intrărilor și ieșirilor. Scopul său principal va fi să personalizeze atât intrarea, cât și ieșirea răspunsurilor pe care le primesc utilizatorii, pentru a asigura exactitatea factuală întemeiată pe baza noastră de cunoștințe proprietare.

Ingineria prompturilor (Prompt engineering) este un proces crucial care implică crearea și ajustarea precisă a prompturilor (mesajul de intrare trimis către LLM) pentru a îmbunătăți performanța modelelor de învățare automată, asigurând răspunsuri mai precise și mai relevante din punct de vedere contextual. În special în cazul modelelor de limbaj de mari dimensiuni precum ChatGPT, prompturile de intrare joacă un rol vital nu numai în specificarea rezultatului dorit, ci și în furnizarea unui context esențial pentru întrebările noastre.

Pentru cazul nostru specific, acesta este un avantaj semnificativ: înseamnă că avem posibilitatea de a proiecta prompturi care includ informațiile necesare pentru ca modelul să răspundă cu precizie întrebărilor noastre. Prin elaborarea atentă a prompturilor, putem ghida înțelegerea modelului, putem îmbunătăți relevanța și acuratețea răspunsurilor sale.
Ingineria promptului ne permite să valorificăm eficient capacitățile modelului, aliniindu-l mai îndeaproape cu nevoile și cerințele specifice soluției noastre de chatbot.

Arhitectura LLM Chatbot

Să ne imaginăm că dezvoltăm un chatbot special conceput pentru a oferi informații despre utilizarea diferitelor funcționalități ale Dacia Duster. Să luăm în considerare un scenariu în care un utilizator întreabă: "Cum pot dezactiva controlul tracțiunii pe Dacia Duster Adventure?" Pentru a ne asigura că chatbotul furnizează un răspuns precis, putem proiecta strategic prompt-ul astfel: "

----

Given the following context, answer my question:

// pasting entire user manual

Question: How can I deactivate Traction control on my Dacia Duster Adventure?

----

Aceasta, totuși, nu ar fi o soluție practică, deoarece mesajele au limită de dimensiune. Limitele sunt exprimate în număr de tokeni, unde un token reprezintă aproximativ 0,75 cuvinte. Cel mai performant model GPT disponibil în prezent (iunie 2023) are o limită maximă de 8192 de tokeni pe suma întrebare + răspuns. De asemenea, ar fi nepractic să includem întregul manual de utilizare în prompt, deoarece modelul are nevoie doar de secțiunile referitoare la controlul tracțiunii pentru a citi și extrage ceea ce se dorește a fi obținut.

Prin urmare, o abordare mai practică ar fi aceea de a construi promptul astfel:

-----

*Given the following context, answer my question:*

```// pasting relevant section

// pasting relevant section```

…

Question: How can I deactivate Traction control on my Dacia Duster Adventure?

-----

Provocarea actuală constă în identificarea secțiunilor relevante din baza noastră de date. Pentru a o rezolva, ne vom folosi de conceptul de "embeddings", care este practic reprezentarea matematică a unor concepte textuale. Distanța dintre doi vectori ndică relația dintre ei, distanțele mai mici sugerând o relație mai mare, iar distanțele mai mari sugerând o relație mai mică.

Acest lucru ne permite să determinăm matematic ce secțiuni din baza de cunoștințe sunt similare din punct de vedere semantic cu întrebarea utilizatorului.

Pentru a pregăti datele, am împărțit baza de cunoștințe în fragmente de text care conțin fiecare aproximativ 200-500 de cuvinte . Apoi, utilizând un alt model din familia GPT3, Ada 002, așa cum a fost sugerat de OpenAI, am generat "embeddings" pentru fiecare fragment de text. Un "embedding" așadar este un vector cu dimensiunea de 1536 numere reale care servesc drept bază pentru găsirea de conținut similar.

Prin combinarea tuturor acestor componente, am conceput o arhitectură care acționează ca un intermediar între utilizatorul final și modelele de ultimă generație. Arhitectura ilustrată în diagrama următoare cuprinde două faze independente.

Faza de pregătire

Această etapă se realizează o singură dată pentru fiecare bază de cunoștințe sau ori de câte ori o anumită parte se modifică. Secvența de evenimente este următoarea:

  1. Datele din baza de cunoștințe a clientului sunt citite. Acestea pot fi structurate sau nu și pot fi localizate oriunde ne putem conecta la ele.

  2. După ce datele sunt citite, acestea sunt împărțite în bucăți de text între 200 și 500 de cuvinte.

  3. Pentru fiecare fragment de text se apelează interfața de programare de "embedding" pentru a genera vectorul corespunzător.

  4. Fiecare bucată de text împreună cu "embedding"-ul corespondent sunt stocate în baza de date.

După finalizarea acestui proces, sistemul este pregătit să folosească aceste date și să le ofere drept context atunci când utilizatorul adresează o întrebare.

Faza de utilizare (etapele în verde în figura de mai sus)

Această fază va avea loc numai după finalizarea părții de training. Secvența următoare va fi executată pentru fiecare întrebare a utilizatorului:

  1. Utilizatorul adresează o întrebare.

  2. Sistemul preia întrebarea în forma sa originală și obține "embedding" vectorul folosind aceeași interfață ca în faza de pregătire.

  3. Apoi compară "embedding"-ul întrebării cu "embedding"-urile din toate datele și calculează similitudinea cosinusului pentru a determina ce fragmente de text din baza de date sunt cele mai asemănătoare cu întrebarea.

  4. După determinarea fragmentelor relevante de text pe baza distanței dintre "embedding" vectori, primele X potriviri (configurabil) sunt preluate și sortate în funcție de similaritate.

  5. Pentru fiecare fragment, calculăm numărul de tokeni și continuăm să-i adăugăm până când ajungem la limita de 4096 de tokeni.

  6. După obținerea conținutului cel mai relevant pentru întrebare, îl includem în prompt și folosim interfața de comunicare ChatCompletion pentru a obține un răspuns. Obiectivul va fi utilizarea modelelor GPT 3.5 / GPT 4.

Prin această abordare, împiedicăm și răspunderea la întrebări în afara domeniului nostru, adăugând restricții clare ca parte a promptului.

Concluzii

Integrarea modelelor GPT ale OpenAI în procesul de suport tehnic prin intermediul unui chatbot este promițătoare, dar are anumite limitări. Printre acestea amintim: accesul restricționat la bazele de cunoștințe proprietare, necesitatea de a se concentra pe subiecte specifice și posibilitatea de a furniza informații inexacte. Pentru a aborda aceste provocări, a fost dezvoltată o aplicație "middleware" pentru a personaliza răspunsurile chatbotului, folosind baza noastră de cunoștințe.

Ingineria promptului a avut un rol esențial în ghidarea înțelegerii modelului și îmbunătățirea relevanței și acurateței răspunsurilor sale. "Embedding"-urile au fost utilizate pentru a determina similaritatea semantică între întrebările utilizatorului și conținutul din baza de cunoștințe, permițând identificarea informațiilor relevante.

Arhitectura Chatbotului LLM descrisă, care constă într-o fază de pregătire și o fază de utilizare, îmbunătățește eficiența suportului tehnic prin furnizarea de răspunsuri precise din domeniul specificat. Progresele ulterioare ale modelelor de limbaj pot fi integrate pentru a îmbunătăți permanent performanța chatbotului. Dezvoltarea și personalizarea continue a modelelor LLM pot revoluționa industria de suport tehnic și transforma furnizarea de servicii către clienți.

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects