Oletko joskus kokenut, että keskustelusi ChatGPT:n kanssa kiertävät kehää tai etenevät väärään suuntaan? Etkö saa chatbottia tuottamaan haluamaasi vastausta tai vastaus tulee väärässä muodossa? Luultavasti syötteesi (eli prompti) ei ollut tarpeeksi selkeä tai et antanut tekoälylle riittävästi tietoa, jota se tarvitsi tehtävän suorittamiseen.
Syötesuunnittelu eli promptaus on noussut keskeiseksi taidoksi generatiivisen tekoälyn käyttöä. Se on taito, jonka kuka tahansa voi oppia nopeasti, kunhan jaksaa kokeilla ja harjoitella. Chatbottien kanssa oikeanlaisen syötteen laatiminen on avain tekoälymallien täyden potentiaalin avaamiseen. Tässä kirjoituksessa tarkastelen promptaamisen yleisiä periaatteita ja tekniikoita.
Promptaus pähkinänkuoressa
Syötesuunnittelu on prosessi, jossa muotoillaan ja hienosäädetään syötteitä eli prompeja keskusteleville tekoälymalleille eli chatboteille (esim. ChatGPT), jotta ne tuottaisivat hyödyllisempiä tuloksia. Se tarkoittaa kysymysten, käskyjen ja kontekstin suunnittelua siten, että tekoälyltä saa tarkan vastauksen nopeammin kuin yksinkertaisella keskustelevalla tyylillä.
Keskusteleva, vapaa tyyli on hyvä silloin kun esim. pallottelet ideoita tai haluat hienosäätää vastauksia, mutta se ei ole paras tapa silloin kun sinulla on tietty tehtävänanto. Tällöin hyvin suunniteltu, rakenteellinen prompti voi säästää merkittävästi aikaa ja parantaa tekoälytyökalusta saatavaa hyötyä.
Tehokas prompti vaatii suunnittelua
Tehokas rakenteellinen prompti vaatii suunnittelua ja kykyä sanoittaa ongelma. Chatbotit perustuvat suuriin kielimalleihin, jotka generoivat vastauksensa sana kerrallaan todennäköisyyslaskennan keinoin. Syötteet toimivat tässä prosessissa suunnan näyttäjänä siinä mihin prosessi lopulta päätyy; jos prosessi lähtee jo heti alussa väärään suuntaan, on myös lopputulos yleensä huono.
Promptien kanssa ei tarvitse tavoitella täydellisyyttä, jo perusasioiden omaksuminen riittää pitkälle. Toimivin prompti on harvoin se ensimmäinen prompti, joten muutama iteraatio on yleensä tarpeen. Investointi syötesuunnittelun oppimiseen maksaa todennäköisesti itsensä nopeasti takaisin tekoälyn käytön tehostumisen kautta.
Mallit ja palvelut, sekä promptien malliriippuvuus
Tällä hetkellä kyvykkäimmät tekoäly-chatbotit ovat ChatGPT (OpenAI), Gemini (Google), Claude (Anthropic) [1], sekä Microsoftin Copilot, joka pohjautuu toistaiseksi OpenAI:n malleihin. Vaikka näiden pohjana on aina suuri kielimalli, ne ovat pohjimmiltaan palveluita, jotka hyödyntävät useita erilaisia malleja taustalla; käyttäjä ei voi suoraan tietää miten tietty palvelu käsittelee annettuja prompteja, minkä takia promptaaminen on osittain palvelusta riippuvaa [2].
Erityisesti Copilot on järjestelmä, joka käsittelee käyttäjän syötteitä ennen niiden lähettämistä kielimallille. Siten tämän järjestelmän promptaaminen eroaa muiden chatbotien, kuten ChatGPT:n promptauksesta joissa promptit menevät suoraan kielimallille. Myös uusimmat OpenAI:n mallit ’o1’ ja ’o1-mini’ ovat järjestelmiä, jossa kielimallia iteroidaan useita (kymmeniä) kertoja automaattisesti. Myös näitä malleja on promptattava hieman eri tavalla kuin perinteisiä malleja. Tässä artikkelissa keskityn lähinnä ”perinteisiin” ja vielä toistaiseksi vallalla oleviin kielimalleihin, joita ovat mm. GPT-4o, Gemini Pro 1.5, Claude 3.5 ja Llama 3.1 mallit ja niiden variaatiot.
Keinoja hyvään promptaukseen
Kun chatbottia käytetään tietotyön tukena, meillä on yleensä mielessä jokin tehtävä, jonka haluamme ratkaista tekoälyn avulla. Tällöin kannattaa kirjoittaa rakenteellinen prompti. Tehokkaan rakenteellisen promptin laatiminen vaatii selkeyttä, kontekstia ja tarkaa ohjeistamista.
Selkeys ja tarkkuus: Selkeys ja tarkkuus ovat tärkeimmät hyvän promptin tunnusmerkit. Epämääräiset tai moniselitteiset promptit voivat saada tekoälymallit sekaisin, koska ne eivät tiedä mihin keskittyä. Antamalla yksityiskohtaisia tietoja, kuten halutun formaatin tai vastauksen pituuden, saat mallin keskittymään oleelliseen. Esimerkiksi komennon ”tiivistä tämä kokousmuistio” tai ”tee lyhyt kirjoitus” sijaan kannattaa sanoa vaikkapa ”tiivistä tämä kokousmuistio yhteen kappaleeseen keskittyen pääpäätöksiin ja seuraaviin askeleisiin” ja ”tee 5-7 lauseen kirjoitus”.
Tehtävän konteksti: Kontekstuaalinen tieto auttaa tekoälymallia räätälöimään vastauksensa tarpeidesi mukaisesti. Lisäämällä relevanttia taustatietoa, kuten dataa, esimerkkejä, mihin vastausta tarvitaan tai kuka on tuotoksen kohderyhmä, voidaan parantaa huomattavasti vastauksen osuvuutta. Esimerkiksi omien relevanttien liitetiedostojen lisääminen (teksti tai muu data) on aina suositeltavaa.
Ohjeistus: Promptin tyyli viittaa siihen, miten prompti on muotoiltu, oli kyseessä sitten käsky, kysymys tai roolipohjainen pyyntö. Tyyli kannattaa valita tehtävän mukaan.
- Suorat käskyt: Kun selkeys on tärkeää ja tehtävä suoraviivainen, suora käsky on usein tehokkain. Esimerkiksi ”Tiivistä tämä muistio viidellä lauseella”.
- Roolipohjaiset ohjeet: Antamalla tekoälylle roolin, esim. ”Toimi projektipäällikkönä ja hahmottele tämän projektin tärkeimmät vaiheet”, voit pyytää mallia tuottamaan vastauksia tietystä näkökulmasta käsin.
- Askel-askeleelta ohjeet: Monimutkaisiin tehtäviin kannattaa antaa vaiheittaiset ohjeet, jolloin tekoälyn vastausten tarkkuus paranee. Esimerkiksi ”Tiivistä ensin muistiinpanot yhteen kappaleeseen, listaa sitten kolme pääasiallista toimenpidettä”. Tehtävät voi jakaa peräkkäisiin prompteihin.
Tavoitteena on aina kommunikoida tekoälymallin kanssa niin, ettei tulkinnanvaraa jää. Hyvän rakenteellisen promptin tekemiseen on olemassa valmiita pohjia. Otamme esimerkiksi CO-STAR pohjan.
Rakenteelliset promptauspohjat: CO-STAR
Rakenteellinen prompti sisältää aina seuraavat ydinosat: ohjeistus, konteksti, kysymys ja muotoilu. Näiden aukikirjoittamista varten on olemassa kymmeniä valmiita pohjia [3]. Yksi erityisen hyvä pohja on CO-STAR, joka on tarkoitettu yksityiskohtaisen promptin kirjoittamisen avuksi. Sen rakenne on seuraava:
- (Context) Oleelliset taustatiedot (esimerkit ja tausta-aineistot)
- (Objective) Tavoite tai tehtävä (esim. esseekirjoitus, mainosteksti tai raportti)
- (Style) Tekstin tyylilaji (esim. humoristinen, juridinen tai virkakieli)
- (Tone) Tekstin sävy (esim. lämmin, neutraali tai suoraviivainen)
- (Audience) Tavoiteltu kohderyhmä (esim. yrityskumppani tai asiantuntijat)
- (Response) Vastauksen muotoilu (esim. viisi lausetta tai bullet pointit)
Otetaan esimerkkinä organisaation sisäisen ohjeistuksen päivittäminen lähtien raakaversiosta, joka voidaan kopioida osaksi syötettä tai antaa erillisenä liitetiedostona chatbotille.
# KONTEKSTI #
Olen toimistopäällikkö ja päivitän yrityksemme etätyöpolitiikkaa, jotta se olisi selkeämpi, yhdenmukainen ja helpommin saavutettavissa kaikille työntekijöille. Tässä on raakaversio sisällöstä:
[ensimmäinen raakaversio tekstinä tai liitetiedostona]
# TAVOITE #
Puhtaaksikirjoita antamani etätyöohjeistus uudelleen siten, että se on selkeä, tiivis ja helposti ymmärrettävä kaikille työntekijöille. Selitä kaikki monimutkaiset sanat ja kohdat.
# TYYLI #
Käytä selkeää ja helposti ymmärrettävää suomen kieltä.
# SÄVY #
Käytä neutraalia sävyä.
# KOHDERYHMÄ #
Kaikki yrityksen toimistotyöntekijät, kuten sihteerit, avustajat, asiantuntijat ja IT-tukihenkilöt.
# VASTAUKSEN MUOTO #
Anna tulos rakenteellisena tekstinä ja numeroi kappaleet.
On suositeltavaa erottaa promptin eri osat # tai ””” merkeillä tai tageilla <tyyli>...</tyyli>. Templaattia voi myös lyhentää, mikäli jotkin osat eivät ole tarpeellisia, esim. vastauksen muotoilulle tai sävylle ei ole erityisvaatimuksia.
Älä ylibuukkaa promptia
Nykyiset chatbotit tukevat useita kymmeniä tai satoja sivuja pitkiä prompteja. Hyvässä promptissa on aina riittävästi tietoa, mutta ei liikaa, ja prompti sisältää yhden tehtävän kerrallaan. Liian suppeiden promptien ohella yleinen virhe on myös promptin täyttäminen liiallisella määrällä tietoa, ohjeita tai erilaisia tehtäviä. Kun prompti on liian monimutkainen, tekoälymallit voivat mennä sekaisin siinä, mikä on oleellista. Hyvä nyrkkisääntö on että yksi prompti sisältää yhden tehtävän ja vain sen tiedon, joka tämän tehtävän suorittamiseen tarvitaan. Monimutkaiset tehtävät kannattaa jakaa useampiin peräkkäisiin prompteihin.
Esimerkki ylibuukatusta promptista: ”Tiivistä raportti X, sisältäen kaikki tärkeimmät mittarit ja taustatiedot, sekä sidosryhmien palaute, sekä anna seuraavat toimenpiteet ja kuka ne tekee.”. Tämä prompti sisältää liikaa dataa ja tehtäviä. Parempi tapa on jakaa data ja tehtävät osiin ja erillisiin komentoihin. Aloita näin: ”Tiivistä raportin X tärkeimmät mittarit ja pääkohdat ranskalaisilla viivoilla”, jatka sitten ”Listaa kolme pääasiallista sidosryhmien palautetta ja suositeltavat seuraavat toimenpiteet.” ja lopuksi ”Lue toimenpiteet ja ehdota kuka voisi toteuttaa ne.”
Anna esimerkkejä ja kokeile tehosteita
Mikäli tehtävälle löytyy havainnollisia esimerkkejä miten se voidaan suorittaa, niitä kannattaa antaa syötteen mukana (kontekstitieto). Tämä on niin kutsuttua ”few-shot” promptaamista, joka mahdollistaa tekoälyn opettaminen osana promptia. Yleensä 3-5 hyvin valittua esimerkkiä riittää.
On myös huomattu, että tiettyjen lauseiden (”tehosteiden”) lisääminen promptiin voi parantaa chatbottien vastauksia. Tällaisia tehosteita ovat esimerkiksi seuraavat:
- "Hengitä syvään ja ajattele askel askeleelta”
- "Saat 200 dollarin tipin täydellisestä ratkaisusta"
- "Urani riippuu tehtävän onnistumisesta" tai "Tämä on elämän ja kuoleman kysymys”
Niitä voi kokeilla lisätä omaan promptiin. Tulokset riippuvat kuitenkin vahvasti siitä, mitä palvelua ja malliversiota käytetään. Esimerkiksi Copilotin tai uusimpien malliversioiden tapauksessa (OpenAI:n o1 mallit) kikat eivät välttämättä toimi hyvin.
Tunne järjestelmäsyötteiden ja käyttäjän syötteiden ero
Syötteitä on pääasiassa kahdenlaisia, eivätkä ne ole samanarvoisia. Olemme edellä tarkastelleet käyttäjän antamia syötteitä, mutta jokaisessa kaupallisessa chatbotissa on myös ns. järjestelmäsyötteitä, jotka määrittävät tekoälyn käyttäytymistä ja rajoja. Nämä järjestelmäsyötteet ajetaan aina ennen käyttäjän omia komentoja chatbotille.
Osa järjestelmäsyötteistä on kiinteitä tekoälykehittäjän asettamia (ns. pohjasyötteet) ja tällä hetkellä salaisia muille paitsi Claude mallille [4]. Käyttäjä voi kuitenkin monesti asettaa myös omia järjestelmäsyötteitä ja tämä mahdollisuus löytyy mm. ChatGPT:n asetuksista.
Järjestelmäsyötteen asettaminen ei ole välttämätöntä, mutta erittäin suositeltavaa. Omalla järjestelmäsyötteellä voi esimerkiksi ohjeistaa tekoälyä vastaamaan aina toimitusjohtajana tai lakiasiantuntijana ja antaa mukaan taustatietoa, jolloin vastaukset saadaan aina samalla johdonmukaisella tyylillä ilman toistuvaa erillistä pyyntoä.
Yhteenveto ja promptauksen tulevaisuus
Olemme käyneet läpi promptauksen perusteet. Lisätietoa promptauksesta löytyy erityisesti palveluntarjoajien ohjeista [2] ja muista oppaista [5]. Aivan kuten muitakin digitaalisia taitoja, myös promptaustaitoa on ylläpidettävä. Tämä johtuu siitä, että kielimalleista paljastuu edelleen uusia piirteitä ja tekoälymallit myös kehittyvät nopeasti. Tällä hetkellä nähtävissä on ainakin kaksi merkittävää kehityssuuntaa, joita kannattaa tarkkailla:
Mallit osaavat promptata itseään. Tekoälyä voidaan käyttää paitsi prompteihin vastaamiseen, myös itse promptien tekemiseen. Tällöin puhutaan ”metapromptaamisesta”, jolla saadut promptit ovat yleensä parempia kuin ihmisen kirjoittamat. Esimerkiksi Claude ja ChatGPT tarjoavat metapromptausta osana palvelujaan ja saatavilla on myös runsaasti promptaukseen erikoistuneita työkaluja.
Älykkäämmät mallit vaativat vähemmän promptien hienosäätöä. Mallien kehittyessä tarkan syötesuunnittelun merkitys vähenee. Uudet tekoälymallit eivät ole yhtä herkkiä promptien muotoilulle ja erilaisten ”kikkojen” vaikutus vähenee, tästä esimerkkinä OpenAI:n o1 mallit. Promptauksen tarve ei kuitenkaan ole poistumassa ihan lähitulevaisuudessa, joten siihen on syytä toistaiseksi panostaa.
Kirjoittaja: Janne Kautonen on vanhempi tutkija Haaga-Helian ammattikorkeakoulussa. Hän suoritti filosofian maisterin (2005) ja tohtorin tutkinnot (2012) Jyväskylän yliopistossa tilastollisen fysiikan alalta. Hän on tehnyt tutkimusta Aalto-yliopistossa ja Carnegie Mellon yliopistossa neurotieteen, datatieteen ja laskennallisten tieteiden aloilta. Vuodesta 2019 lähtien hän on työskennellyt Haaga-Heliassa, keskittyen erityisesti datatieteeseen, kognitiotieteisiin, sovellettuun koneoppimiseen ja tekoälyyn, sekä koulutusteknologiaan liittyen. Hänellä on runsaasti kokemusta erilaisten tekoälymallien opettamisesta, käytöstä ja soveltamisesta.
Lähteet:
- Ajantasainen chatbottien ranking-lista: https://lmarena.ai/
- Palveluntarjoajien mallikohtaisia promptausohjeita:
- OpenAI:
Yleinen: https://platform.openai.com/docs/guides/prompt-engineering
o1 mallit: https://platform.openai.com/docs/guides/reasoning/advice-on-prompting - Google: https://workspace.google.com/learning/content/gemini-prompt-guide ja https://cloud.google.com/discover/what-is-prompt-engineering
- Microsoft: https://copilot.cloud.microsoft/en-US/prompts
- Anthropic: https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering
- Meta: https://www.llama.com/docs/how-to-guides/prompting
- OpenAI:
- Rakenteellisen promptin pohjia: https://fvivas.com/en/19-formulas-and-prompt-structures-for-chatgpt
- Claude järjestelmäsyötteet: https://docs.anthropic.com/en/release-notes/system-prompts
- Promptausohjeita ja oppaita: