Kako osposobiti AI agenta za potrebe svoje tvrtke? Saznajemo od inženjera iz Infobipa i Sofascorea

Kako osposobiti AI agenta za potrebe svoje tvrtke? Saznajemo od inženjera iz Infobipa i Sofascorea

Hrvatski jednorog pokrenuo je svoje meetupe, a sudeći po prvom izdanju, inženjerska zajednica dobila je događaj na kojem će imati što čuti - i naučiti.

Prvi Infobipov Engineering meetup u suradnji sa Sofascoreom okupio je više od 130 inženjera i inženjerki iz raznih područja i senioriteta, a tema koja ih je privukla u Alpha Centauri kampusu je ChatGPT i njegova primjena u upravljanju ogromnim količinama podataka odnosno specifičnim znanjima i zadacima.

Prvu temu meetupa Big Data Analysis and Insights with ChatGPT otvorio je Herman Zvonimir Došilović (Senior Software Engineer @ Sofascore), kroz čije smo predavanje saznali kako Sofascore koristi ChatGPT za dobivanje ključnih uvida iz baze podataka od 1 petabajta.

U drugu temu Story About Stanley – The AI That Knew Too Much uveo nas je Ivan Markanović (Principal Engineer @ Infobip) koji razvija Stanleyja, AI agenta koji ne samo da ispisuje izlazne podatke, već i izvršava naredbe ovisno o ulaznim podacima. U pitanju je uzbudljiva priča koje se vrti oko frustracije, kreativnosti i prilagođavanja AI-a potrebama Infobipa.

Kako pohraniti i agregirati milijardu sirovih podataka?

Kroz predavanje, saznali smo kako Sofascore koristi ChatGPT za dobivanje ključnih uvida iz baze podataka od 1 petabajta. Iako su tek u ranoj fazi iskorištavanja umjetne inteligencije u tu svrhu, Sofascore nije tek nedavno zagrizao u AI područje. Njihov AI i analitički tim će uskoro brojati čak 16 ljudi, koji se brinu o svim aktivnostima vezanima uz podatke: od prikupljanja, pohrane i analize do vizualizacije i strojnog učenja.

Naravno, ChatGPT stavio je neke nove karte na stol te su Herman i kolege odlučili iskušati njegove mogućnosti za velike baze podataka.

Sofascore svaki dan generira milijardu redaka anonimiziranih korisničkih podataka te ukupno broje 1 petabajt sirovih anonimiziranih korisničkih podataka. Osim te analitičke baze, imaju i 100 gigabajta veliku bazu za samu aplikaciju, koja sadrži sve podatke o timovima, igračima i utakmicama… Tako da, jasno vam je o kojoj razini govorimo.

Za početak, Herman je pokazao kako podaci prolaze kroz njihov sustav (data pipeline fotka niže), objašnjavajući kako su BigQuery baze podataka za pohranu i postavljenje upita skupe s obzirom na količinu podataka koje pohranjuju…

Stoga smo razvili vlastite alate za uvoz podataka iz BigQuery baze podataka u ClickHouse bazu podataka i time smo 20 puta reducirali troškove pohrane podataka i postavljanje upita nad podacima.

IE Meetup, Sofascore

Podaci koji potom stignu u ClickHouse (koji obožavaju, dodaje Herman) su sirovi odnosno neprocesirani. Slati upite na bazu takvih podataka je sporo i neefikasno, pogotovo ako želite vrtjeti upite koji se protežu na nekoliko dana, tjedana ili čak mjeseci.

No, ono što radimo jest da agregiramo podatke pomoću nekoliko različitih vremenskih intervala. Agregiranje podataka je zbilja jedan od najvažnijih koraka za nas koji procesiramo podatke. Da vam ocrtam koliko je važna: ako se pitamo koliko smo imali aktivnih korisnika u Hrvatskoj prošli mjesec – dobivanje odgovora može potrajati i nekoliko minuta na neprocesiranim podacima u odnosu na par milisekundi iz agregiranih podataka.

Kada su podaci agregirani, s njima možemo raditi skoro sve što hoćemo, ističe Herman. Takve podatke i koriste za mnogo toga, od kreiranja preglednih statistika do godišnjih i kvartalnih izvješća. Što nas dovodi i do glavne teme, da potrebu za tim podacima imaju razni timovi – koji nemaju svi pristup ni znanje kako baratati spomenutim bazama.

Čak i da znaju raditi s SQL-om, trebali bi poznavati kako se podaci spremaju i organiziraju. Trebali bi poznavati semantiku svake tablice, svakog stupca, a trenutno postoji više od 200 aktivno korištenih tablica u našoj ClickHouse bazi.

Što ako na vaša pitanja može odgovoriti AI?

Stoga razni timovi i pojedinci kojima trebaju podaci dolaze njihovom timu sa zahtjevima. Za sad je to funkcioniralo putem zasebnog Slack kanala, na kojem osoba prvo odgovara na 4 pitanja: Što je vaš zahtjev?; Zašto to tražite?; Što će se napraviti na temelju rezultata?; Do kada treba biti odrađeno?

A što ako na ta i druga pitanja može odgovoriti AI? Osim kolegama, što ako možemo i sebi olakšati tako što će nam ChatGPT generirati SQL upite za takve zahtjeve…

Glavna ideja je bila prilično jednostavna, izgraditi chat aplikaciju koja će ti omogućiti da prirodnim jezikom šalješ upite na bazu te da ti pritom i odgovori prirodnim jezikom. Ali imali smo jedan problem, kako da aplikacija bude “svjesna” 1 petabajta podataka?

I tako dolazimo do prompt engineeringa! Niže možete vidjeti i kako je Herman zadužio ChatGPT da postane SQL, točnije – ClickHouse stručnjak.

Naravno da su se otvorila i pitanja o sigurnosti. S obzirom na to da postoji bojazan da sam ChatGPT pozove random SQL upite, Herman navodi kako su postavili nekoliko razina ograničenja (resursna i vlasnička) kako bi osigurali da se takvo što ne dogodi.

Trenutno sve operira na ChatGPT 3.5 platformi, stoga su imali minimalno troškova, Herman kaže da nisu okrznuli 100 dolara koje su dobili na raspolaganje.

U konačnici, njihov prilagođeni ChatGPT, koji je dobio i frontend ruho, funkcionira zbilja dobro – aplikacija je sposobna generirati vrlo kompleskne upite na postavljeno pitanje korisnika, no Herman i kolege tu ne žele stati. Svakako je plan podići sve na veću razinu: od boljeg promptanja do isprobavanja novih modela – jer osim što im ovo koristi kolegama u timu pa i čitavoj firmi, imaju masu klijenata i partnera koji su zainteresirani za podatke, zaključuje.

Od poruke na Slacku…

Sličnu primjenu ChatGPT-ja u baratanju podacima imali smo priliku vidjeti i u Infobipu. Njihovom infrastrukturnom odjelu i Engineering Directoru Oliveru Lovakoviću, koji uvijek gleda kako nešto optimizirati, nije promakla ideja Ivana Markovića, Principal inženjera, koja je ubrzo i realizirana.

Naime, troubleshooting korisničkih i inih problema na platformi koja ima 37 milijardi interakcija dnevno, 3000 mikroservisnih aplikacija, 60 data centara koji se vrte na 30 tisuća servera, koje koriste i održava 800 inženjera… stvarno nekad nije nimalo jednostavan ni brz proces. No, kako se ispostavilo, može biti i jednostavniji i lakši.

U Infobipovom infrastrukturnom timu s tom idejom razvili su Deployka, alat kojim podržavaju odnosno upravljaju s više platformi iz jednog mjesta odnosno sučelja. No, postojao je jedan problem, što ako za izvršiti određen zadatak odnosno troubleshooting, osoba mora imati pristup nekoj dokumentaciji ili dopuštenje neke treće odgovorne osobe… Nužno je povući nekoga za rukav da vam pomogne, a gdje bolje nego na Slacku.

Dedicirani kanal uskoro je postao FAQ s obzirom na količinu informacija koja se razmjenjivala. Unatoč toj bazi dostupnih odgovora, na tom kanalu se redovito postavljalo ista pitanja…

… do prompt engineeringa

Ako smo išta dosad naučili (barem na Netokraciji), to je da ChatGPT možemo nahraniti bazom znanja o kojoj ga potom možemo ispitivati i očekivati (u većini slučajeva) suvisle odgovore kad nam zatrebaju. Što mu više informacija date, to će se on davati bolje odgovore. Ivan i kolege povukli su tako cijelu povijest poruka i upita sa spomenutog Slack kanala, čime su nahranili ChatGPT (verziju 4.0 Turbo).

Odradili su tzv. finetuning, model je naučio sve što je trebalo, i sve je bilo super. E, nije!

Potrebno je mnogo vremena i truda da bi se istrenirao AI model, a to biste trebali napraviti svaki put kada se promijeni i najmanja sitnica u podacima, primjerice, API dokumentacije. Morali biste nanovo istrenirati model i zbog obične promjene URL-a.

Tu u igru ulazi prompt engineering.

IE meetup, Infobip

Okrenuli su se prompt engineeringu u nadi da će moći samo promijeniti prompt tj. da neće za svaku promjenu u ulaznim podacima morati nanovo trenirati model. Priča se tek tu zahuktava s nizom novih pitanja… Ako znamo da možemo i trebamo uvesti znanje u alat, zašto ne bismo sve informacije ubacili promptanjem direktno u alat?

Mi to zapravo i radimo, ali postoji jedna mala caka – a to je ograničenje koliko ChatGPT može obraditi tokena po upitu. Možemo samo određeni dio podataka ubaciti unutra.

Ako već imamo ograničenje i biramo podatke, jasno je da to trebaju biti ključne i relevantne informacije za korisnike. No, kako znati što korisnici zbilja trebaju i traže – neće oni uvijek eksplicitno pitati: reci mi više o Deplyoku – što ako pitaju: pokaži mi sve moje servere?

U dobavljanju što preciznijeg i užeg, a opet dovoljno širog spektra ulaznih podataka iz kojih će AI agent moći nešto zaključiti, Ivanu i timu pomogle su vektorske baze odnosno korištenje embeddingsa i retrieval modela – procedure koje ćete i sami koristiti ako budete htjeli uz pomoć strojnog učenja dobavljati konkretne informacije iz većih, nestrukturiranih baza podataka.

Tu dolazimo i do tri slijeda pokušaja i pogreške koja su potaknula nastanak samog “AI inženjera”, Stanleyja.

Kako je Stanley spasio dan – iz trećeg puta

Ivan – i tim koji mu se pridružio u razvoju ovog rješenja, osmislili su potom prvi plan.

Plan je bio da ChatGPT izvuče informaciju iz Infobipove dokumentacije, stavi je u bazu podatka, potom s korisnikovim upitom po bazi odradi pretragu po sličnosti te da nazad odgovor. Plan nije uspio, odgovore koje je Stanley vraćao ili su se referirali na zastarjele podatke ili bi javio da podaci o tome ne postoje. Drugi plan također – Stanley im je davao različite odgovore na ista pitanja, izbacivao nestrukturirane podatke, a često bi znao i odgovoriti “probajte sad” nakon što ništa nije napravio…

Kako kažu, treća sreća! Ivan i kolege su se pitali koji problem zapravo žele riješiti? Odgovor je bio: operativne stvari, stvari na koje se troši vrijeme, a vjerojatno bespotrebno.

Za većinu poruka, inženjer je morao stati raditi svoj posao i provjeriti u čemu je stvar.

Zaključili su da oni zapravo trebaju AI inženjera koji bi umjesto pravog mogao provjeriti ograničenja odnosno prava pristupa nečemu. Takvi upiti, unatoč tome što se čine beznačajni, oni to nisu – o njima netko ovisi i netko ih svejedno mora napraviti.

Plan tri koji je u konačnici bio uspješan, išao je ovako:

  1. Dodati Deploykovu dokumentaciju u dataset;
  2. Konvertirati funkcije u scheme;
  3. Prenijeti ih u prompt;
  4. Pustiti GPT da odluči što će napraviti.

Kako je Ivan demonstrirao uživo – testiranje teorije uspjelo! Stanley bez problema može vratiti odgovor tko od kolega ima pristup kojim serverima, kao što može i sam deployati server i javiti njegov status…

Kako operira Stanley?

Naravno, nije sve idealno: Stanley je u svom radu nekad koristio previše memorije, a nekad bi znao i halucinirati. Ako imate tisuće funkcija, prešišat ćete token limit, ističe Ivan.

Zato su upogonili drugog agenta, koji radi na ChatGPT 3.5 verziji, a čiji je jedini zadatak samo odabrati 10 do 15 funkcija tj. “tema” koje su najrelevantnije za postavljeno pitanje. Haluciranje su također riješili bacajući još malo AI iskre u vatru. Naime, iako ne potpuno, možete ublažiti haluciniranje tako što ćete aktivirati više agenata da međusobno razgovaraju i provjeravaju rezultat prije nego vam daju odgovor.

Pratite nas za vijesti i o drugom izdanju Infobip Engineering Meetupa!

Sukladno članku 94. Zakona o elektroničkim medijima, komentiranje članaka na Netokraciji dopušteno je samo korisnicima koji ostave svoje ime i prezime te mail adresu i prihvate pravila ponašanja.

Pravila ponašanja

Na Netokraciji za vas stvaramo kvalitetan, autorski potpisan sadržaj i zaista se veselimo vašim kvalitetnim, kontruktivnim komentarima. Poštujmo stoga jedni druge prilikom komentiranja, kao i Zakon, držeći se sljedećih pravila ponašanja:

  • Ne budite 💩: Nema vrijeđanja, diskriminiranja, ni psovanja (osim ako nije osobni izričaj, ali onda neka psovka bude općenita, a ne usmjerena prema nekome). Također, upoznajte se sa stavkom 2. članka 94. Zakona o elektroničkim medijima prije no što ostavite komentar.
  • Samo kvalitetna rasprava, manje trolanja: Ne morate se ni sa kim slagati, ali budite konstruktivni i doprinesite raspravi! Svako trolanje, flameanje, koliko god "plesalo" na granici, leti van.
  • Imenom i prezimenom, nismo Anonymous 👤: Autor sadržaja stoji iza svog sadržaja, stoga stojite i vi iza svog komentara. Koristimo ime i prezime te pravu email adresu.

Kako koristimo podatke koje ostavljate? Bacite oko na našu izjavu o privatnosti.

Sve ostale komentare ćemo s guštom spaliti, jer ne zaslužuju svoje mjesto na internetu.

Odgovori

Tvoja e-mail adresa neće biti objavljena.

Popularno

Mobilne aplikacije

ZET-ov štrajk iznjedrio nova digitalna rješenja za prijevoz po Zagrebu

Zagreb je jutros ostao bez redovitog tramvajskog i autobusnog prometa, no građani su brzo počeli tražiti alternativna rješenja. Uz organiziranje zajedničkih vožnji, pojavilo se i nekoliko digitalnih projekata koji pokušavaju povezati vozače i putnike.

Vodič

Imate pretplatu na AI alate? Evo što računovođe kažu o ispravnom evidentiranju

U novoj kolumni Bruno Cvitanović, direktor računovodstvenog i konzultantskog servisa Brojevi objašnjava kako računovodstveno tretirati AI alate, što vrijedi za poduzetnike izvan sustava PDV-a i na koje pogreške treba paziti.

Programiranje

Tim od šest developera, dva QA-a i jednog Product Ownera postaje prošlost

Florian Krause ima trideset godina iskustva u razvoju softvera, jedan propali startup i čvrsto mišljenje: tim od šest developera, dva QA-a i jednog product ownera postaje prošlost. Na The Geek Gatheringu u Osijeku objasnio je čime se takva postava zamjenjuje.

Što ste propustili

Pametni automobili

Napokon smo se provozali Verneovim robotaksijem!

Nakon što smo u Zagrebu bezuspješno pokušali uhvatiti Verneov robotaksi putem Uberove aplikacije, zvijezde su se posložile i mi smo dobili poziv koji se ne odbija.

Umjetna inteligencija

Tko zbog AI-ja i dalje ulaže u ljude, a tko otpušta 50% radne snage?

Dok neke tvrtke nastavljaju i zapošljavati i ulagati u AI, druge su odabrale samo potonje. Kako različite tvrtke pristupaju promjenama na tržištu, doznali smo na Automation Summitu.

Novost

Gamepires najavio otpuštanja, smanjuje tim koji radi na SCUM-u

Gamepires, koji stoji iza igre SCUM, smanjuje broj zaposlenih zbog zahtjevnih tržišnih uvjeta. Objava dolazi nekoliko mjeseci nakon što je studio preuzeo britanski Splash Damage.

Vodič

Imate pretplatu na AI alate? Evo što računovođe kažu o ispravnom evidentiranju

U novoj kolumni Bruno Cvitanović, direktor računovodstvenog i konzultantskog servisa Brojevi objašnjava kako računovodstveno tretirati AI alate, što vrijedi za poduzetnike izvan sustava PDV-a i na koje pogreške treba paziti.

Veliki intervjui

Ako AI može napraviti film ili igru, što ostaje kreativcima? Odgovara CEO Nanobita

Može li umjetna inteligencija promijeniti način na koji nastaju filmovi i igre, a da pritom ne žrtvujemo kvalitetu priče i kreativnu viziju? Nanobit već testira odgovor na to pitanje, razvijajući AI produkcijske procese koji otvaraju mogućnost stvaranja sadržaja velikom brzinom.

Netokracija Podcast

Dekan FER-a: AI ne može zamijeniti temeljno znanje inženjera

Umjetna inteligencija mijenja način na koji radimo, ali bez temeljnih znanja nema ni kvalitetnih inženjera ni ozbiljnog tehnološkog napretka. U razgovoru s dekanom FER-a otkrivamo zašto je važno ulagati u istraživanje i razvoj, kako povezati fakultete i industriju te gdje se otvaraju nove prilike za Hrvatsku – od robotike i fizičke umjetne inteligencije do razvoja visokotehnoloških proizvoda.