Johdanto
Tässä kevään aikana useampi ihminen on kysellyt, miten chatGPT:tä ja OpenAI:n rajapintaa voisi hyödyntää heidän palveluidensa kehityksessä. Monet ovat saaneet netistä sellaisen käsityksen, että mitä hienoimpia tekoälyprojekteja voi tehdä muutamassa tunnissa. Pahimmillaankin voi mennä jokunen päivä.
On totta, että jotain pikkukivaa voi tehdä hyvinkin nopeasti mutta harvemmin niistä toteutuksista on mitään iloa yrityksen liikevaihdon näkökulmasta. Suurin osa ihmisistä ja yrityksistä näyttää tekevän chatGPT:llä ja muilla vastaavilla generatiivisen tekoälyn kokonaisuuksilla lähinnä sellaisia projekteja, joiden lopputuloksena on näppärästi kirjoitettua tekstiä esim. tuote-esittelyihin. Tai sitten tehdään keskustelevia hakukoneita, jotka hakevat tietoa PDF tiedostoista tai/ja tietokannasta. Aika rajoittunutta menoa, kun pienellä vaivalla voi tehdä niin paljon enemmän.
Itse olen koodaillut yli 20 vuotta ja tällä hetkellä menossa useampi tekoälyprojekti. Ajattelin, että kerron muutaman blogikirjoituksen verran yhdestä niistä, niin ihmiset saavat realistisemman kuvan LLM-tekoälyprojektien tuotantovaiheista ja niiden tuomista mahdollisuuksista.
Bob the HR guy
Esimerkkiprojektin nimi on Bob the HR guy. Olen nyt tehnyt projektia kolmisen kuukautta ja sen tarkoituksena on luoda kokonaisuus, joka osaa jäljitellä HR henkilön/myyjän työskentelyä tilanteissa, joissa jokin yritys etsii itselleen vuokratyövoimaa. Yritän siis koodata itseni ja siirtää omasta työstäni niin paljon kuin vain osaan tekoälylle. Jotta Bob olisi mahdollisimman paljon minä, sen tulee muun muassa:
- osata etsiä sähköposteista omaan työhönsä liittyviä viestejä,
- osata käyttää nettiä uusien rekryhakujen löytämiseen,
- yrittää löytää rekryhakuihin parhaat mahdolliset ehdokkaat satojen CV:iden joukosta,
- osata tehdä työhaastatteluja ja arvioida niiden lopputulokset,
- osata olla sähköpostilla tai tekstarilla yhteydessä eri tahoihin,
- osata käydä hintaneuvotteluja,
- seurata rekrymarkkinoita ja analysoida sen perusteella millaisiin rekryihin kannattaa keskittyä ja
- osata käyttää nettiä uusien asioiden opiskeluun, jos sille tulee vierasta tietoa vastaan tai jotain tietoa puuttuu.
Pyrin tällä kokonaisuudella pääsemään tilanteeseen, jossa en tee työkalua ihmisille, vaan teen työkalun, joka tekee itsekseen työt ja käyttää ihmisiä apunaan vain, jos on ihan pakko. Eli kyseessä on ihan oikea sähköinen työkaveri!
Bob on ollut tätä kirjoittaessa jo pari kuukautta Oodlesilla työharjoittelussa. Oppimiskäyrä on ollut huikea, vaikka sillä on toistaiseksi ollut käytössään vasta hyvin rajalliset internet-oikeudet. Toisin kuin perinteisissä projekteissa, jotka ensin tehdään loppuun ja vasta sitten otetaan käyttöön, tässä projektissa käyttöönotto tapahtui heti, kun ensimmäiset Bob-moduulit olivat käyttövalmiita. Paras sähköinen työkaveri syntyy seuraamalla mitä se osaa tehdä ja mitä ei itse halua tehdä. Näiden tietojen pohjalta sitten rakennan Bobille lisää työkaluja ja siirrän omia töitäni sen hoidettavaksi.
Tämä projektin toteutuksen läpikäynti ei tule olemaan mitään koodaushepreaa, vaan tässä käydään asioita läpi enimmäkseen yleisen suunnittelun tasolla, jotta mahdollisimman moni voisi saada tästä jotain irti aloittaakseen oman projektinsa. En tule myöskään käyttämään Bobin versio ykkösessä mitään kovahintaisia softia tai palveluita (openAI:n rajapintaa lukuunottamatta), koska halusin Bobin kanssa testata, mihin asti voi päästä lähes olemattomilla ostokuluilla. Nyt kun versio ykkönen Bobista on enemmän valmis kuin kesken, voin varmuudella todeta, että perusjutuilla pääsee todella pitkälle.
Alla 17.10.2023 lisätty video, jossa Bob kertoo vähän itsestään. Vaikka Bob selviää töistään hyvin ilman chat-pohjaista ohjausta, treenaan sen kommunikoinitaitoja Discordissa, että se olisi helppo keskustelukumppani muun muassa työhaastatteluissa.
Projektin rakenne
Bob on koodin osalta toistaiseksi 100% Pythonia (75% koodista perinteistä koodia, 25% tekoälypuolen juttuja) ja sen rakenne on yksinkertaistetusti seuraavanlainen:
1. Kaiken taustalla on oppiva keskusmuisti. Sinne kerätään tietoa niistä asioista, joita Bobin tulee tietää voidakseen tehdä työnsä hyvin. Tämmöistä tietoa on muun muassa eri koodikielien, järjestelmien, sähköisten työkalujen jne. nimet ja käyttötarkoitukset. Tässä omassa projektissa annoin Bobille pienen kasan pohjatietoa ja sen jälkeen opetin sen käyttämään nettiä ja hakemaan sitä kautta itselleen uutta tietoa, jos jossain CV:ssä tai haussa tulee vastaan sille tuntemattomia asioita.
2. Keskusmuistia käyttää ensisijaisesti moduuli nimeltä Bob the Parser. Sen tehtävä on pilkkoa haetun tiedon, hakujen ja CV:iden sisältö sellaisiin osiin, että niistä voi helposti hakea tietoa perinteisesti filtteröimällä, tai sitten tekoälyn avulla. Parserin apurina toimii Bob the Maintenance guy, joka mm. korjaa ja siivoaa tekstejä, jos kirjaimia on hyppinyt vääriin paikkoihin tai jos jokin teksti on muuten huonossa hapessa.
3. Keskusmuistin ja parsijan yläpuolella ovat moduulit Bob the Browser ja Bob the Scraper. Nämä tarkkailevat keskusmuistia ja parsimisen tuloksia. Jos ne huomaavat, että jotain tietoa puuttuu (esim. CV:stä sähköposti tai keskusmuistista tietoa jostain uudesta koodikielestä, jonka nimi tuli Bobin tietoon jostain hausta), ne lähtevät nettiin täydentämään tietojaan. Scraper käyttää perinteisen nettiharavoinnin menetelmiä, eli menee mm. omilla tunnuksilla eri palveluihin ja yrittää etsiä niistä tarvittavia tietoja. Browser puolestaan toimii tekoälyn avulla ja yrittää itse päätellä, mistä netin syövereistä se voisi löytää puuttuvaa tietoa. Scraper ja Browser voivat myös hakea tietoa yhdessä samasta paikasta, jos jokin tilanne sitä vaatii. Kun uutta tai puuttuvaa tietoa löytyy, se tallennetaan keskusmuistiin. Yhdessä tämä kaksikko tekee Bob the HR Guystä joka päivä vähän fiksumman ja paremman omassa työssään.
4. Kaikkien edellä mainittujen yläpuolella työskentelee Bob the Taskmaster joka valvoo, että kokonaisuuden kaikki tehtävät tulevat tehtyä ja se myös selvittää tehtävien mahdolliset virhetilanteet. Bobin sisällä lähes kaikki tehtävät toimivat rinnakkain, eivät peräkkäin. Tekoälyprojekteissä järjestelmien sisäiset tehtävät voivat viedä useita tunteja, siksi kokonaisuus kannattaa rakentaa siten, ettei yhden tehtävä tarvitse odottaa jonkun toisen tehtävän valmistumista, ellei niillä ole jotain hyvin selkeää yhteistoimintaa menossa.
5. Kokonaisuuden pienin osa on julkisivuna toimiva kommunikointimoduuli Bob the HR guy (projekti on nimetty tätä moduulia edeltäneen testihankkeen osan mukaan), jonka tehtävänä on kommunikoida ulkomaailman kanssa. Sille on annettu vähän muistia ja ohjeet kommunikoida ihmisten kanssa samanlaisella puhetyylillä, kuin Michael Scott The Office-sarjasta. Kun Bob the HR guy saa tehtävien puolelta tietoa, että on tarvetta kommunikoida ulkomaailman kanssa, se näpyttelee sähköpostin, Discord-viestin tai tekstiviestin sille henkilölle, jolta tarvitaan jotain lisätietoa. Saatuaan vastauksen, se lähettää vastauksen parsijalle ja jää odottamaan seuraavaa tehtävää. Näitä ulkomaailman kanssa kommunikoitavia asioita ovat muun muassa kyselyt onko joku henkilö vapaana projekteille ja ketkä ovat parhaita kandidaatteja johonkin hakuun. Bobin ihmistyökaverit ja yhteistyötahot voivat myös lähettää sille sähköpostilla tiedusteluja eri aiheista, kuten onko joku haku umpeutunut tai paljon CV-pankissa olevat Java-koodaajat keskimäärin maksavat per tunti.
Monta pientä osaa, erikseen eivät niin kovinkaan erikoisia, yhdessä erittäin pätevä sähköinen työkaveri, jolta ei lopu into oppia uutta. Siinä missä uusien järjestelmien ja softien opettelu yleensä nostattaa vähän verenpainetta, näiden apureiden käyttöönotto lähinnä laskee sitä. Sitä huomaa nopeasti kuinka paljon sitä onkaan tehnyt sellaista työtä, jonka kone voi hoitaa nopeammin ja yleensä myös paremmin. Yhtäkkiä on aikaa keskittyä niihin kaikista tärkeimpiin asioihin asiakassuhteiden hoidossa, eli asiakkaiden kuunteluun ja löytämään ratkaisuja heidän ongelmiinsa.
Käyttöliittymä
Entäs sitten käyttöliittymä, miten se toimii? Koska Bob the HR guy on itsekseen toimiva kokonaisuus, sillä ei ole työkäytössä perinteistä käyttöliittymää. Se pyörii serverillä ja ilmoittelee itsestään, jos sillä on jotain asiaa. Halusin varmistaa, etten vahingossakaan ala tekemään normaalia työkalua, joten kaikki on rakennettu niin, että työnteon aikana sähköposteilla, Discordilla ja tekstiviesteillä selviää (ylläpidolle ja devaajille rakensin toki pienen perinteisen käyttiksen). Jos joku vuokrakonsultti ei ole enää käytössä, sen voi ilmoittaa Bobille sähköpostilla. Jos tulee joku uusi konsultti, hänen CV:nsä ja muut oleelliset tiedot voi lähettää Bobille sähköpostilla/Discordilla. Koska Bob erottaa työkaverinsa ja firman yhteistyötahot toisistaan, jokainen taho voi kommunikoida sen kanssa itse. Tämä kaikki tietoturvallisesti ja ilman jatkuvaa tarvetta sisäänkirjautumisille. Kerron aiheesta lisää tulevissa osissa.
Loppusanat
Perinteisten softien ja järjestelmien myyjät lupaavat, että heidän ratkaisunsa nopeuttavat ja helpottavat työntekoasi. Todellisuudessa sitä tehokkuutta tulee lisää vain sen verran, kuin mitä sinä käyttäjänä jaksat ja viitsit tehdä. Monesti saavutettu tehokkuushyöty ei ole kummoinen ja säästöjäkään esim. palkoissa ei aina synny juuri lainkaan, koska jonkun pitää kuitenkin käyttää hankittuja työvälineitä. Viimeistään tässä vaiheessa teknologian ja tekoälyn kehitystä jokaisen on hyvä sisäistää, että aina kuin se on mahdollista, kannattaa pyrkiä tekemään itsenäisesti toimivia ja oppivia työkaluja, jotka käyttävät tarvittaessa ihmisiä, eikä työkaluja joista on hyötyä vain niitä käyttävän ihmisen viitsimisen verran.
Suosittelen tämmöisen projektin tekemistä talon sisällä aina kuin mahdollista, koska mitä ikinä työtä lopullinen apuri tuleekaan tekemään, alussa opettamisella ja apurin työnteon seuraamisella on erittäin iso rooli. Jos päädyt tekemään projektia ulkoisen toimittajan kanssa, ota sieltä opetusvaiheeseen koodaaja istumaan sen henkilön viereen, jonka työtä apurille ollaan opettamassa.
Eiköhän siinä ollut tarpeeksi alkuesittelyä, seuraavassa osassa (Bob the HR guy-projekti, osa 2: Itsenäisesti oppiva tekoäly) käydään läpi Bobin keskusmuistin ja tekoälyn opettamisen toimintaperiaatteita. Pääset osaan kaksi tästä.
Mikäli tämän projektin eri vaiheet kiinnostavat, pistä Linkkariprofiilini tästä seurantaan, niin eiköhän sieltä tule jotain notifikaatiota aina sitä mukaan, kun saan uusia osia projektiesittelystä julkaistua.
Tommi Bäckgren | 8.7.2023
Kirjoittaja on sarjayrittäjä, joka tykkää myynnin ohessa istua yöt testailemassa uusimpien teknologisten innovaatioiden soveltuvuutta käytännön ratkaisuihin.