ChatGPT, Bard ja muut merkittävät suuret kielimallit (LLM) ovat hallinneet uutisvirtojamme viime vuoden aikana. Ja aivan oikein. Nämä jännittävät teknologiat tarjoavat meille välähdyksen tekoälyn tulevaisuudesta, voimasta ja mahdollisuuksista.
Vaikka suuri osa julkisesta innostuksesta on keskittynyt tekstin, kuvien ja videoiden luomiseen, näitä työkaluja voidaan käyttää monilla muillakin aloilla, kuten ohjelmistojen automatisoinnissa.
Tässä artikkelissa syvennytään siihen, miten prompt engineering voi auttaa meitä ohjelmistoautomaatiossa. Ensimmäiseksi olisi kuitenkin tutkittava itse pikakoneiden suunnittelua.
Mitä on prompt engineering?
ChatGPT:n kaltaiset suuret kielimallit tuottavat tulosteita antamiemme kehotusten tai lauseiden perusteella. Tulokset vaihtelevat kuitenkin suuresti riippuen käyttämistämme sanoista tai ohjeista. Kun syötämme epämääräisiä ja epätarkkoja ohjeita, tulos ei välttämättä osu kohdalleen.
Prompt engineering tarkoittaa sellaisten syötteiden harkittua suunnittelua, jotka auttavat saamaan näiltä jännittäviltä tekoälyjärjestelmiltä tarkempaa, täsmällisempää ja lopulta käyttökelpoisempaa sisältöä.
LLM-järjestelmät (Large Language Model) käyttävät luonnollisen kielen käsittelyä (NLP) tulkitsemaan niille antamiamme lausuntoja. Koneet muuttavat nämä kysymykset tai ohjeet (eli kehotukset) koodiksi ja ajavat ne valtavien tietovarastojensa läpi tuottaakseen sisältöä määrittelemässämme muodossa (eli tekstinä, kuvina tai koodina).
ChatGPT koulutettiin yli
570 GB dataa
. Koulutusmateriaali koostuu muun muassa kirjoista, artikkeleista ja verkkoteksteistä. Toisin sanoen nämä tietokokonaisuudet sisältävät käsittämättömän määrän tietoa.
Vaikka ymmärrämmekin prosessin, suuri osa näiden järjestelmien konepellin alla tapahtuvasta toiminnasta jää meidän näkökenttämme ulkopuolelle. Toki hallitsemme syötteitä ja tuotoksia ja koulutamme järjestelmää, mutta se, miten nämä algoritmit toimivat ja tekevät päätöksiä, on edelleen jonkinlainen mysteeri. New Yorkin yliopiston tekoälyprofessori Sam Bowmanin sanoin, “Me rakensimme sen, me koulutimme sen, mutta emme tiedä, mitä se tekee.”
Nopea suunnittelu auttaa meitä hallitsemaan tätä kaaosta käyttämällä tuotoksia, jotka tuottavat ennustettavia ja käyttökelpoisia tuloksia. Ne tarjoavat meille väylän, jonka kautta voimme avata näiden sovellusten sisältämät valtavat tietomäärät.
Tieteenala on nousemassa uudeksi uramuodoksi
ja kursseja syntyy kaikkialla, kun yritykset miettivät, miten ne voivat hyödyntää tätä tehokasta teknologiaa.
Miten nopea suunnittelu voi auttaa
ohjelmistoautomaation avulla?
Ohjelmistoautomaatiolla ja LLM:llä on paljon yhteistä. Molemmat tarjoavat välähdyksen tulevaisuudesta, jossa koneet täydentävät ihmisen luovuutta ja luovat nopeampia ja tuottavampia työpaikkoja.
On useita jännittäviä alueita, joilla nämä kaksi teknologiaa voivat lähentyä toisiaan. Seuraavassa on kolme tapaa, joilla voimme käyttää kehotustekniikkaa ohjelmistoautomaatiossa.
#1. Koodin luominen
Koodin kirjoittaminen on yksi suurten kielimallien lupaavimmista sovelluksista. Tekoälyn LLM-ohjelmat ovat lapsenkengissä. Lähivuosina tekniikan pitäisi kehittyä, kun resursseja lisätään sekä tietojenkäsittelyyn että koulutukseen.
Pitkällä aikavälillä nämä edistysaskeleet voivat johtaa siihen, että tekoäly voi kirjoittaa kokonaisia ohjelmia ihmisen puuttuessa asiaan vain vähän tai ei ollenkaan. Toistaiseksi LLM:llä on kuitenkin joitakin rajoituksia. LLM-koodauksen tuloksen laatu riippuu pääasiassa syötteen laadusta. Roskat sisään, roskat ulos, kuten sanotaan.
Esteenä ei tietenkään ole vain tehokas kehotustekniikka. Kuten ehdotetaan ChatGPT ja suuret kielimallit akateemisessa maailmassa: Mahdollisuudet ja haasteet (Meyer, 2023): “Tällä hetkellä ChatGPT onnistuu todennäköisemmin pienten koodilohkojen tarkassa kirjoittamisessa, kun taas sen luotettavuus suurempien/monimutkaisempien ohjelmien (esim. ohjelmistopaketin) kirjoittamisessa on kyseenalainen.”
Nature-lehdessä hiljattain julkaistussa artikkelissa eräät tietojenkäsittelytieteilijät varoittivat lisäksi, että koodin tuottamiseen LLM:n avulla pitäisi suhtautua varovaisesti. Toinen nykyaikainen paperi,
Suuret kielimallit ja yksinkertaiset, typerät viat
(Jesse, 2023) osoitti, kuinka suosittu LLM, Codex, jota myyjä Copilot käyttää, tuottaa “tunnettuja, sanatarkkoja SStuBeja jopa 2x todennäköisemmin kuin tunnettua, sanatarkkaa oikeaa koodia”.
Vaikka näitä ongelmia ei voi jättää huomiotta, on silti paljon perusteltua innostusta siitä, miten nämä ohjelmat voivat auttaa demokratisoimaan ohjelmistokehitystä tukemalla sekä teknisiä että ei-teknisiä tiimejä.
Ehkä vaikuttavinta on se, että ChatGPT:n kaltaiset työkalut voivat tuottaa toimivaa koodia hyvin nopeasti. Oikean kehotteen avulla insinöörit voivat lyhentää tietyntyyppisen koodin ohjelmointiin kuluvaa aikaa ja varmistaa nopeamman ohjelmistokehityksen elinkaaren.
Vuoden 2022 lopussa suosittu ohjelmakeskus
Stack Overflow kielsi tekoälyn tuottaman
vastauksia sen foorumilla. He viittasivat sovellukseen liittyvään suureen virhetasoon ja epätarkkuuksiin. Teknologia on kuitenkin vasta kehittymässä, ja lisäksi tyytymättömyys tekoälyn tuottamiin tuloksiin johtuu yhtä paljon huonosta kehityksestä kuin itse teknologiasta.
Huolimatta tekniikkaan liittyvistä epäilyistä, –
McKinseyn äskettäinen artikkeli
korostaa, miten nopea suunnittelu vaikuttaa jo nyt ohjelmoinnin maailmaan. Konsulttiyrityksen Tekoälyn tila vuonna 2023: Generatiivisen tekoälyn läpimurtovuosi jakoi kaksi mielenkiintoista suuntausta. Ensinnäkin 7 prosenttia tekoälyyn investoineista organisaatioista palkkaa pikaisesti insinöörejä. Toiseksi tekoälyä käyttävät yritykset ovat vähentäneet tekoälyyn liittyviä ohjelmistosuunnittelutehtäviä 38 prosentista 28 prosenttiin.
Yksi tapa tulkita näitä suuntauksia on, että yritykset ovat tyytyväisiä tähän asetukseen ja valmiita luovuttamaan ohjelmistoautomaation koneilleen. Vaikka nämä luvut saattavat hätkähdyttää nykyisiä insinöörejä, McKinseyn tutkimuksen mukaan “vain 8 prosenttia sanoo, että heidän työvoimansa koko pienenee yli viidenneksellä”. Kaiken kaikkiaan insinöörien on luultavasti koulutettava itsensä uudelleen, jotta he voivat hyödyntää tekoälyn tuottaman ohjelmistoautomaation suuntausta.
Yksi ilmeinen sovellus tekoälyn tuottamalle ohjelmistoautomaatiolle on automaatio-robottien luominen. Vaikka prompt engineering on näennäisesti käyttäjäystävällinen käyttöliittymä, koska siinä keskitytään keskusteluun, jää nähtäväksi, voiko se syrjäyttää nykyiset ratkaisut.
ZAPTESTin kaltaiset ohjelmistot ovat jo monin tavoin demokratisoineet ohjelmistoautomaatiomarkkinoita. Nyt on olemassa koodaamattomia työkaluja, joiden avulla myös muut kuin tekniset tiimit voivat rakentaa korkealaatuisia RPA-robotteja. Vaikka ChatGPT:n kaltaiset ohjelmistot voivat rakentaa botteja, niiden toteuttaminen ja ylläpito voi osoittautua hankalaksi kaikille, jotka eivät ole ohjelmistoinsinöörejä, ja niillekin, jotka ovat.
Ihmisen ja tietokoneen vuorovaikutuksen tallentaminen graafisesta käyttöliittymästä ja näiden liikkeiden muuntaminen koodiksi on paljon käyttäjäystävällisempää kuin kehotteiden käyttö. Kun tähän yhdistetään LLM:n potentiaali tuottaa epävakaata ja virheiden sävyttämää koodia, voidaan sanoa, että RPA-ohjelmistot eivät ole lähitulevaisuudessa menossa minnekään.
#2. Rakenteettoman tiedon muuntaminen
Strukturoimaton data ei ole robottiprosessien automatisoinninvahvuus. Tekniikkaa ei ole rakennettu käsittelemään sähköposteja, kuvia, ääntä ja muita asioita. RPA-työkalut tarvitsevat valmiita tietomalleja, joissa on järjestetyt rakenteet.
Valtaosa jäsentymättömästä datasta on luonnollisen kielen tekstiä. Suuret kielimallit rakennetaan “ymmärtämään” näitä tietoja ja poimimaan niistä semanttinen merkitys. Tämä luo huomattavan mahdollisuuden ryhmille, jotka haluavat tulkita näitä tekstejä ja muuntaa ne RPA-työkalujen kannalta sopivaan muotoon.
Monet tiimit ovat jo vuosia käyttäneet luonnollisen kielen käsittelyä (NLP) apuna tunneanalyysissä. Tämä prosessi, joka tunnetaan myös nimellä mielipiteiden louhinta, auttaa organisaatioita pysymään kärryillä kuluttajien tunteista ja asenteista tuotemerkkejä kohtaan. Useimmiten näitä työkaluja käytetään positiivisten, negatiivisten ja neutraalien tunteiden tunnistamiseen tekstistä. Teknologia pystyy kuitenkin tunnistamaan tunteita myös paljon yksityiskohtaisemmin.
Vaikka markkinoilla on useita työkaluja, jotka tarjoavat tämän toiminnon, LLM tarjoaa mahdollisuuden käyttää sitä monipuolisemmin kuin vain ymmärtämään, miten ihmiset suhtautuvat tuotteeseen tai palveluun. Esimerkiksi data-analytiikan suosio on kasvanut räjähdysmäisesti viime vuosina. Big Data antaa yrityksille etulyöntiaseman, sillä sen avulla ne voivat saada tietoa ja ymmärrystä, jotka auttavat tietoon perustuvassa päätöksenteossa.
Robottiprosessien automatisointityökalut voivat auttaa tietojen keräämisessä. Kuten edellä mainitsimme, he kuitenkin kamppailevat tietyntyyppisten tietojen kanssa. Kun RPA kuitenkin yhdistetään tekoälytyökaluihin, jotka käyttävät suuria kielimalleja, se voi kerätä suuria määriä tietoa ja käyttää sitä Business Intelligence (BI) -työkalujen tarvitsemien tietojen tuottamiseen.
Yksi generatiivisen tekoälyn jännittävimmistä puolista on sen kyky ymmärtää syötettyjä tietoja. Oikeanlaisen kehotussuunnittelun avulla tiimit voivat muuntaa nämä tiedot RPA-työkalujensa kanssa toimivaan muotoon.
RPA voi auttaa tehostamaan Big Datan työnkulkuja. Ensinnäkin voit käyttää sitä apuna sekä tietojen syöttämisessä että poimimisessa. Ehkä arvokkaimmat ja kiehtovimmat käyttötapaukset liittyvät kuitenkin RPA-työkalujen käyttämiseen tietojen muuntamiseen, puhdistamiseen ja lataamiseen tai sen varmistamiseen, että tietojen siirto sujuu nopeasti, tehokkaasti ja tarkasti.
Toinen tärkeä seikka on tiedonhallinta. Tietopyyntöjen automatisointi auttaa organisaatioita pysymään vaatimustenmukaisina ja pitää tiedot poissa käsityöntekijöiden silmistä.
#3. Testausautomaatio
Testauksen automatisointi on noussut ohjelmistokehityspiireissä, koska se tarjoaa nopeamman tavan todentaa ohjelmistoja. Testaus ja laadunvarmistus ovat perinteisesti olleet kalliita ja aikaa vieviä prosesseja; testiautomaatio tarjoaa ratkaisun näihin haasteisiin.
Yksi ensimmäisistä asioista, joita kehotussuunnittelulla voidaan tehdä, on testitapausten laadun parantaminen. Oikeiden kehotusten avulla nämä koneet voivat analysoida testitapauksia ja tunnistaa ongelmat ja korjaustoimenpiteet. Tämä prosessi voi parantaa testitapausten laajuutta ja johtaa kattavampiin testeihin.
Voit esimerkiksi syöttää suurelle kielimallille koodia samalla tavalla kuin ihmisarvostelijalle. Nämä koneet voivat nopeasti käydä läpi koodin ja havaita virheet, viat ja jopa suorituskykyongelmat. Ehkä vielä kiehtovampaa on, että LLM:t tarjoavat myös mahdollisuuden täydentää testitapausten koodia pelkistä pätkistä, mikä nopeuttaa testitapausten luomista.
Prompt engineering pyrkii ratkaisemaan monia niistä ongelmista, jotka ovat johtaneet Agile/DevOps-lähestymistavan kehittymiseen ohjelmistokehityksessä. Insinöörit haluavat tehokkaita, helposti toistettavia testejä, joilla ongelmat voidaan havaita ennen sovellusten käyttöönottoa. Ajatuksena on, että vapauttamalla aikaa ohjelmistokehittäjät voivat keskittyä luovempiin ja arvoa tuottavampiin tehtäviin.
Kuten eräässä klassikkopaperissa todetaan,
Tekninen velka testausautomaatiossa
(K. Wiklund, 2012), ohjelmistokehitystiimit voivat joutua ongelmiin, jos ne käyttävät liikaa aikaa ohjelmistojensa manuaaliseen testaukseen ja todentamiseen. Testausautomaatioratkaisujen alkukustannukset, automaatiokokemuksen puute ja jopa vanhojen menetelmien suosiminen voivat osaltaan aiheuttaa hidastumista.
Yksi ketterän ohjelmistokehityksen kiinnostavimmista näkökohdista on se, että
käyttäytymislähtöinen kehitys (BDD).
Käsitteellä viitataan ohjelmiston kehittämiseen odotetun käyttäjäkäyttäytymisen mukaisesti. Vaikka tämän lähestymistavan toteuttaminen voi selvästi säästää aikaa, monet tiimit kamppailevat tämän automaation toteuttamisessa. Elinikäinen oppiminen voi kuitenkin tarjota ratkaisun.
Yleisimpiä teknisen velan oireita ovat puutteellinen dokumentointi ja vankan testauksen puute. Nämä ovat ongelmia, joita nykypäivän oikeustieteen maisterit voivat auttaa ratkaisemaan. Muut huomattavat oireet, kuten refaktorointi, ovat kuitenkin liian monimutkaisia nykyiselle generatiiviselle tekoälylle, eivätkä ne välttämättä tuo ajansäästöä.
Lopulliset ajatukset
Generatiivisilla tekoälysovelluksilla on valtavat mahdollisuudet. Käyttäjäystävällinen, keskusteleva käyttöliittymä voi kuitenkin olla harhaanjohtava. Monet ihmiset uskovat, että on helppoa tuottaa laadukkaita tuotoksia näistä koneista. Erinomainen nopea suunnittelu on kuitenkin monimutkaisempaa kuin luulisi.
Tehokas prompt engineering vaatii paljon kokeiluja ja erehdyksiä. Se vaatii myös insinööriltä paljon harkintaa, jotta vastaukset ovat hyödyllisiä. Lopuksi työn tarkistaminen ja uudelleen tarkistaminen on tärkeää, koska virheiden mahdollisuus on julkisuudessa hyvin tunnettu.
Vaikka insinöörityön työpaikat saattavat olla nousussa, kaikki eivät ole vakuuttuneita. Harvard Business Review -lehdessä Oguz A. Acar esittää kiehtovan väitteen siitä, että “Tulevat tekoälyjärjestelmien sukupolvet ovat entistä intuitiivisempia ja taitavampia ymmärtämään luonnollista kieltä, mikä vähentää tarvetta tarkkaan suunniteltujen kehotusten käyttöön.”
Mitä tahansa tulevaisuus tuo tullessaan, generatiivinen tekoäly on mukana. Vaikka prompt engineering on paljon lupaava, on vaikea sanoa varmasti, mikä sen rooli tulee olemaan.
Mielenkiintoista on, että ohjelmistotestausautomaatio-ohjelmistot ovat jo täynnä käyttötapauksia ja menestystarinoita, jotka osoittavat niiden soveltuvuuden ohjelmistokehityksen nopeuttamiseen tinkimättä kuitenkaan sovellusten tarkkuudesta tai kattavasta todentamisesta.
ZAPTESTin kaltaisten työkalujen avulla kehittäjät voivat jo nyt puuttua sellaisiin ongelmiin kuin riittämätön aika ja resurssit, tekninen velka, dokumentointi sekä kattava testaus ja RPA. Lisäksi nämä työkalut ovat käyttäjäystävällisempiä kuin prompt engineering -työkalut, joten ne sopivat paljon paremmin muille kuin teknisille tiimeille. Kuten aina, todellinen potentiaali piilee näiden jännittävien automaatiotekniikoiden risteyskohdassa.