Kielimallit koodarin apuna osana jatkuvaa pienkehitystä
Palomäki, Markus (2024)
Palomäki, Markus
2024
Tietotekniikan DI-ohjelma - Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2024-05-20
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202405095631
https://urn.fi/URN:NBN:fi:tuni-202405095631
Tiivistelmä
Tietokonepelaaja shakkipeleissä, esineiden tunnistaminen valokuvista, robotti-imurit. Näiden ja lukemattomien muiden työkalujen tai palvelujen taustalla toimivat tekoälyt ovat olleet useiden vuosien ajan osa arkielämäämme. Viimeisten vuosien aikana tutkimukset tekoälystä ovat ottaneet suuria harppauksia tuoden yksinkertaisten, yhteen asiaan erikoistuneiden tekoälyjen rinnalle suuria kielimalleja hyödyntäviä, opetettavia tekoälyjä, joiden opettamiseen on käytetty suuria määriä tietoa.
Tämän diplomityön tarkoituksena on tehdä sukellus tämän päivän suuriin kielimalleihin (LLM, Large Language Models), sekä perehtyä niiden hyödyntämiseen sovelluskehittäjän näkökulmasta. Tutkimuksessa tarkasteltiin helposti saatavilla olevien, kielimalleja käyttävien sovellusten ja palveluiden hyödyntämistä osana jatkuvaa IT-yrityksissä toteutettavaa pienkehitystä. Tyypillisesti pienkehitystiimien sovelluskehittäjät työskentelevät samanaikaisesti monien projektien ja siten lukuisten eri teknologioiden ja pilvipalvelujen parissa. Kielimalleista voisi olla suurta hyötyä kehittäjille.
Työtä varten toteutettiin kaksi haastetta, joiden ratkaisemiseksi käytettiin kolmea palvelua: GitHub Copilot, Google Bard ja OpenAI ChatGPT. Haasteet olivat kooltaan ja tavoitteiltaan erilaiset: kuvalle CSS-animaation luominen valmiiseen React-komponenttiin on toteutettavissa muutaman rivin muutoksella, kun taas testiympäristön ja testien luominen Contentful-sisällönhallintajärjestelmää hyödyntävälle React-verkkosovellukselle vaatii monien uusien kirjastojen asentamista, projektitiedostojen muokkaamista ja testien luomista.
Haasteita pyrittiin ratkaisemaan seuraamalla kielimallien antamia ohjeita. Kielimallien välillä aloitussyötteet pidettiin samana ja syötteiden ja vastauksien määrää rajattiin kolmeen. Tällä haluttiin korostaa kielimalleja hyödyntävien sovellusten eroavaisuuksia. Haasteiden lisäksi työssä vertailtiin palvelujen toiminnallisuuksia, tiedon keräämistä ja hinnoittelua, mikä antaa lisätietoa palvelujen hyödynnettävyydestä IT-yrityksissä.
Kokeellisessa tutkimuksessa havaittiin, että kolme valittua kielimallisovellusta eivät vastauksillaan suuremmin eronneet toisistaan. Jokainen malleista antoi samankaltaisia vastauksia auttaen kehittäjää etenemään haasteiden toteuttamisessa. Pienin eroin Copilot nousi esille sen käyttämän kielimallin vuoksi, jota on opetettu ja hienosäädetty sovelluskehittäjiä varten, kun taas Bard ja ChatGPT nousevat esille yleisempään käyttöön soveltuvina kielimalleina. Työn aikana Bard oli kehitysvaiheessa, mikä saattoi vaikuttaa sovelluksen valintaan olla auttamatta kehittäjää luomaan animaatiota uskoen kehittäjän pyytävän kuvanluomista. Pienikokoisen muutoksen, tyylianimaation luomisen toteuttaminen, onnistui kolmen vastauksen ja kehittäjän pienien korjausten jälkeen. Kehitysympäristön luomisessa kolmen vastauksen rajaus ei riittänyt auttamaan kehittäjää luomaan testiympäristöä.
Tämän diplomityön tarkoituksena on tehdä sukellus tämän päivän suuriin kielimalleihin (LLM, Large Language Models), sekä perehtyä niiden hyödyntämiseen sovelluskehittäjän näkökulmasta. Tutkimuksessa tarkasteltiin helposti saatavilla olevien, kielimalleja käyttävien sovellusten ja palveluiden hyödyntämistä osana jatkuvaa IT-yrityksissä toteutettavaa pienkehitystä. Tyypillisesti pienkehitystiimien sovelluskehittäjät työskentelevät samanaikaisesti monien projektien ja siten lukuisten eri teknologioiden ja pilvipalvelujen parissa. Kielimalleista voisi olla suurta hyötyä kehittäjille.
Työtä varten toteutettiin kaksi haastetta, joiden ratkaisemiseksi käytettiin kolmea palvelua: GitHub Copilot, Google Bard ja OpenAI ChatGPT. Haasteet olivat kooltaan ja tavoitteiltaan erilaiset: kuvalle CSS-animaation luominen valmiiseen React-komponenttiin on toteutettavissa muutaman rivin muutoksella, kun taas testiympäristön ja testien luominen Contentful-sisällönhallintajärjestelmää hyödyntävälle React-verkkosovellukselle vaatii monien uusien kirjastojen asentamista, projektitiedostojen muokkaamista ja testien luomista.
Haasteita pyrittiin ratkaisemaan seuraamalla kielimallien antamia ohjeita. Kielimallien välillä aloitussyötteet pidettiin samana ja syötteiden ja vastauksien määrää rajattiin kolmeen. Tällä haluttiin korostaa kielimalleja hyödyntävien sovellusten eroavaisuuksia. Haasteiden lisäksi työssä vertailtiin palvelujen toiminnallisuuksia, tiedon keräämistä ja hinnoittelua, mikä antaa lisätietoa palvelujen hyödynnettävyydestä IT-yrityksissä.
Kokeellisessa tutkimuksessa havaittiin, että kolme valittua kielimallisovellusta eivät vastauksillaan suuremmin eronneet toisistaan. Jokainen malleista antoi samankaltaisia vastauksia auttaen kehittäjää etenemään haasteiden toteuttamisessa. Pienin eroin Copilot nousi esille sen käyttämän kielimallin vuoksi, jota on opetettu ja hienosäädetty sovelluskehittäjiä varten, kun taas Bard ja ChatGPT nousevat esille yleisempään käyttöön soveltuvina kielimalleina. Työn aikana Bard oli kehitysvaiheessa, mikä saattoi vaikuttaa sovelluksen valintaan olla auttamatta kehittäjää luomaan animaatiota uskoen kehittäjän pyytävän kuvanluomista. Pienikokoisen muutoksen, tyylianimaation luomisen toteuttaminen, onnistui kolmen vastauksen ja kehittäjän pienien korjausten jälkeen. Kehitysympäristön luomisessa kolmen vastauksen rajaus ei riittänyt auttamaan kehittäjää luomaan testiympäristöä.