Tässä osiossa käydään läpi keskeisiä käsitteitä ja tekniikoita, joiden avulla voidaan luoda tehokkaita kehotteita generatiivisille tekoälymalleille. Myös sillä, miten kirjoitat kehotteesi LLM:lle, on merkitystä. Huolellisesti laadittu kehotus voi tuottaa laadukkaamman vastauksen. Mutta mitä oikeastaan tarkoittavat termit kehotus ja prompt engineering? Ja miten voin parantaa kehotteen syötettä, jonka lähetän LLM:lle? Näihin kysymyksiin pyrimme vastaamaan tässä ja seuraavassa luvussa.
Generatiivinen tekoäly pystyy tuottamaan uutta sisältöä (esim. tekstiä, kuvia, ääntä, koodia jne.) käyttäjän pyynnöstä. Tämä onnistuu suurten kielimallien avulla, kuten OpenAI:n GPT-sarja ("Generative Pre-trained Transformer"), jotka on koulutettu käyttämään luonnollista kieltä ja koodia.
Käyttäjät voivat nyt keskustella näiden mallien kanssa tutulla tavalla, kuten chatissa, ilman teknistä osaamista tai koulutusta. Mallit ovat kehotepohjaisia – käyttäjä lähettää tekstisyötteen (kehotteen) ja saa tekoälyn vastauksen (completion). Keskustelua voi jatkaa useilla kierroksilla, tarkentaen kehotetta, kunnes vastaus vastaa odotuksia.
"Kehotteista" on tullut generatiivisten tekoälysovellusten ohjelmointirajapinta, joka ohjaa malleja ja vaikuttaa vastausten laatuun. "Prompt Engineering" on nopeasti kasvava tutkimusala, joka keskittyy kehotteiden suunnitteluun ja optimointiin laadukkaiden ja johdonmukaisten vastausten tuottamiseksi laajassa mittakaavassa.
Tässä luvussa opimme, mitä Prompt Engineering tarkoittaa, miksi se on tärkeää ja miten voimme laatia tehokkaampia kehotteita tietylle mallille ja sovellustavoitteelle. Käymme läpi keskeiset käsitteet ja parhaat käytännöt – sekä tutustumme interaktiiviseen Jupyter Notebook -ympäristöön, jossa näemme nämä asiat käytännössä.
Luvun lopussa osaamme:
- Selittää, mitä prompt engineering on ja miksi se on tärkeää.
- Kuvata kehotteen osat ja niiden käyttötavat.
- Oppia parhaat käytännöt ja tekniikat kehotteiden suunnitteluun.
- Soveltaa opittuja tekniikoita oikeisiin esimerkkeihin OpenAI-päätepisteen avulla.
Prompt Engineering: Käytäntö, jossa suunnitellaan ja hiotaan syötteitä, jotta tekoälymallit tuottaisivat toivottuja tuloksia. Tokenisaatio: Prosessi, jossa teksti muutetaan pienemmiksi yksiköiksi eli tokeneiksi, joita malli pystyy käsittelemään. Ohjeistuksella hienosäädetyt LLM:t: Suuret kielimallit (LLM), joita on hienosäädetty erityisillä ohjeilla, jotta niiden vastaukset olisivat tarkempia ja osuvampia.
Prompt engineering on tällä hetkellä enemmän taidetta kuin tiedettä. Paras tapa kehittää omaa intuitiota on harjoitella ja käyttää kokeilun ja erehdyksen menetelmää, jossa yhdistetään sovellusalueen asiantuntemus suositeltuihin tekniikoihin ja mallikohtaisiin optimointeihin.
Tämän luvun mukana tuleva Jupyter Notebook tarjoaa hiekkalaatikko-ympäristön, jossa voit kokeilla oppimaasi – joko heti tai luvun lopun kooditehtävissä. Harjoitusten suorittamiseen tarvitset:
- Azure OpenAI API -avaimen – palvelupäätepisteen käyttöön otetulle LLM:lle.
- Python-ympäristön – jossa Notebook voidaan ajaa.
- Paikalliset ympäristömuuttujat – tee SETUP -vaiheet nyt, jotta olet valmis.
Notebook sisältää aloitusharjoituksia – mutta sinua kannustetaan lisäämään omia Markdown- (kuvaus) ja Code- (kehotepyynnöt) osioita, jotta voit kokeilla lisää esimerkkejä ja ideoita – ja kehittää omaa näkemystäsi kehotteiden suunnittelusta.
Haluatko saada yleiskuvan luvun sisällöstä ennen kuin sukellat yksityiskohtiin? Tutustu tähän kuvitettuun oppaaseen, joka esittelee pääaiheet ja tärkeimmät asiat, joita kannattaa pohtia. Luvun etenemispolku vie sinut ydinkäsitteiden ja haasteiden ymmärtämisestä niiden ratkaisemiseen kehotteiden suunnittelun tekniikoilla ja parhailla käytännöillä. Huomaa, että oppaan "Edistyneet tekniikat" -osio viittaa seuraavan luvun sisältöön.
Katsotaanpa, miten tämä aihe liittyy startupimme tavoitteeseen tuoda tekoälyinnovaatioita opetukseen. Haluamme rakentaa tekoälypohjaisia yksilöllisen oppimisen sovelluksia – joten pohditaan, miten eri käyttäjät voisivat "suunnitella" kehotteita:
- Ylläpitäjät voivat pyytää tekoälyä analysoimaan opetussuunnitelman dataa ja tunnistamaan puutteita. Tekoäly voi tiivistää tulokset tai visualisoida ne koodin avulla.
- Opettajat voivat pyytää tekoälyä luomaan oppituntisuunnitelman tietylle kohderyhmälle ja aiheelle. Tekoäly voi rakentaa yksilöllisen suunnitelman halutussa muodossa.
- Opiskelijat voivat pyytää tekoälyä auttamaan vaikeassa oppiaineessa. Tekoäly voi ohjata opiskelijaa oppitunneilla, vihjeillä ja esimerkeillä, jotka on räätälöity heidän tasolleen.
Tämä on vasta alkua. Tutustu Prompts For Education -kirjastoon, joka on avoimen lähdekoodin kehotekirjasto opetuksen asiantuntijoiden kokoamana – saat laajemman käsityksen mahdollisuuksista! Kokeile joitakin kehotteita hiekkalaatikossa tai OpenAI Playgroundissa ja katso, mitä tapahtuu!
Aloitimme tämän luvun määrittelemällä Prompt Engineeringin prosessiksi, jossa suunnitellaan ja optimoidaan tekstisyötteitä (kehotteita), jotta saadaan johdonmukaisia ja laadukkaita vastauksia (completions) tiettyyn sovellustavoitteeseen ja malliin. Voimme ajatella tätä kaksivaiheisena prosessina:
- suunnitellaan alkuperäinen kehotus tietylle mallille ja tavoitteelle
- hiotaan kehotetta vaiheittain, jotta vastauksen laatu paranee
Tämä on väistämättä kokeiluun perustuva prosessi, joka vaatii käyttäjän intuitiota ja vaivannäköä parhaan tuloksen saavuttamiseksi. Miksi tämä on tärkeää? Vastausta varten täytyy ensin ymmärtää kolme käsitettä:
- Tokenisaatio = miten malli "näkee" kehotteen
- Perus-LLM:t = miten perustamalli "käsittelee" kehotteen
- Ohjeistuksella hienosäädetyt LLM:t = miten malli näkee "tehtävät"
LLM näkee kehotteet tokenien jonoina, ja eri mallit (tai malliversiot) voivat tokenisoida saman kehotteen eri tavoin. Koska LLM:t on koulutettu tokeneilla (eivätkä raakatiedolla), kehotteen tokenisointi vaikuttaa suoraan tuotetun vastauksen laatuun.
Jos haluat ymmärtää tokenisaatiota, kokeile esimerkiksi OpenAI Tokenizer -työkalua. Kopioi kehotteesi ja katso, miten se muuttuu tokeneiksi – kiinnitä huomiota välilyönteihin ja välimerkkeihin. Huomaa, että esimerkki näyttää vanhemman LLM:n (GPT-3) – uudemmalla mallilla tulos voi olla erilainen.
Kun kehotus on tokenisoitu, "Base LLM" (tai perustamalli) pyrkii ennustamaan seuraavan tokenin jonossa. Koska LLM:t on koulutettu valtavilla tekstiaineistoilla, ne osaavat arvioida tokenien tilastollisia yhteyksiä ja tehdä ennustuksen varsin luotettavasti. Ne eivät kuitenkaan ymmärrä sanojen merkitystä – ne näkevät vain kuvion, jonka voivat "jatkaa" seuraavalla ennustuksella. Malli jatkaa tokenien ennustamista, kunnes käyttäjä keskeyttää tai jokin ennalta määritelty ehto täyttyy.
Haluatko nähdä, miten kehotepohjainen vastaus toimii? Syötä yllä oleva kehotus Azure OpenAI Studion Chat Playgroundiin oletusasetuksilla. Järjestelmä käsittelee kehotteet tietopyyntöinä – saat vastauksen, joka sopii tähän kontekstiin.
Mutta entä jos käyttäjä haluaa nähdä jotain tiettyä, joka täyttää tietyt kriteerit tai tehtävätavoitteen? Tässä ohjeistuksella hienosäädetyt LLM:t astuvat kuvaan.
Ohjeistuksella hienosäädetty LLM lähtee perustamallista ja hienosäädetään esimerkeillä tai syöte/vastaus-pareilla (esim. monikierroksiset "viestit"), jotka sisältävät selkeitä ohjeita – ja tekoäly yrittää noudattaa annettua ohjetta.
Tässä käytetään esimerkiksi Reinforcement Learning with Human Feedback (RLHF) -tekniikoita, joiden avulla malli noudattaa ohjeita ja oppii palautteesta, jolloin se tuottaa käytännön sovelluksiin sopivampia ja käyttäjän tavoitteisiin osuvampia vastauksia.
Kokeillaan – käytä yllä olevaa kehotetta, mutta vaihda nyt järjestelmäviesti antamaan seuraava ohje kontekstiksi:
Tiivistä sinulle annettu sisältö toisluokkalaiselle. Pidä tulos yhdessä kappaleessa ja 3–5 bulletissa.
Huomaatko, miten tulos on nyt muotoiltu halutun tavoitteen ja muodon mukaan? Opettaja voi käyttää tätä vastausta suoraan luokan dioissa.
Nyt kun tiedämme, miten kehotteet käsitellään LLM:ssä, pohditaan miksi prompt engineering on tarpeen. Syynä on se, että nykyiset LLM:t tuovat mukanaan haasteita, jotka tekevät luotettavien ja johdonmukaisten vastausten tuottamisesta vaikeampaa ilman panostusta kehotteiden suunnitteluun ja optimointiin. Esimerkiksi:
-
Mallien vastaukset ovat satunnaisia. Sama kehotus voi tuottaa eri vastauksia eri malleilla tai malliversioilla. Ja jopa sama malli voi antaa eri tuloksen eri kerroilla. Prompt engineeringin tekniikat auttavat vähentämään näitä vaihteluita antamalla parempia rajoja.
-
Mallit voivat keksiä vastauksia. Mallit on koulutettu laajoilla mutta rajallisilla aineistoilla, joten niiltä puuttuu tietoa aineiston ulkopuolisista asioista. Siksi ne voivat tuottaa vastauksia, jotka ovat epätarkkoja, kuvitteellisia tai ristiriidassa tunnetun tiedon kanssa. Prompt engineeringin tekniikat auttavat tunnistamaan ja vähentämään tällaisia keksittyjä vastauksia, esim. pyytämällä tekoälyltä lähteitä tai perusteluja.
-
Mallien kyvyt vaihtelevat. Uudemmat mallit tai mallisukupolvet tarjoavat laajempia ominaisuuksia, mutta tuovat myös omat erityispiirteensä ja kompromissinsa kustannuksissa ja monimutkaisuudessa. Prompt engineering auttaa kehittämään parhaita käytäntöjä ja työnkulkuja, jotka abstrahoivat erot ja mukautuvat mallikohtaisiin vaatimuksiin skaalautuvasti ja joustavasti.
Kokeile tätä käytännössä OpenAI- tai Azure OpenAI Playgroundissa:
- Käytä samaa kehotetta eri LLM-toteutuksilla (esim. OpenAI, Azure OpenAI, Hugging Face) – huomasitko vaihtelut?
- Käytä samaa kehotetta toistuvasti samalla LLM-toteutuksella (esim. Azure OpenAI playground) – miten tulokset erosivat toisistaan?
Tässä kurssissa käytämme termiä "fabrication" ilmiöstä, jossa LLM:t tuottavat joskus faktuaalisesti virheellistä tietoa johtuen koulutuksen rajoituksista tai muista syistä. Olet ehkä kuullut tästä myös nimitystä "hallucination" artikkeleissa tai tutkimuksissa. Suosittelemme kuitenkin käyttämään termiä "fabrication", jotta emme inhimillistäisi ilmiötä antamalla koneelle ihmismäisiä piirteitä. Tämä tukee myös Vastuullisen tekoälyn periaatteita terminologian näkökulmasta, poistamalla termejä, joita voidaan pitää loukkaavina tai ei-sisällyttävinä joissain yhteyksissä.
Haluatko nähdä, miten keksityt vastaukset syntyvät? Mieti kehotetta, jossa pyydetään tekoälyä tuottamaan sisältöä olemattomasta aiheesta (jotta sitä ei löydy koulutusaineistosta). Esimerkiksi – kokeilin tätä kehotetta:
Tämän oppitunnin tarkoituksena on tutustua Marsin sotaan vuonna 2076, sen taustoihin, tärkeimpiin tapahtumiin ja vaikutuksiin ihmiskunnan tulevaisuudelle.
- Lyhyt katsaus Marsin kolonisaatioon ennen vuotta 2076
- Syyt, jotka johtivat jännitteisiin Marsin ja Maan välillä
- Tärkeimmät osapuolet konfliktissa
-
Marsin sodan taustat
- Miksi Marsin asukkaat halusivat itsenäisyyttä?
- Miten Maan hallinto reagoi Marsin vaatimuksiin?
-
Sodan kulku
- Tärkeimmät taistelut ja strategiat
- Uudet teknologiat, joita sodassa käytettiin
- Sodan vaikutus Marsin ja Maan infrastruktuuriin
-
Sodan seuraukset
- Poliittiset muutokset Marsissa ja Maassa
- Vaikutukset avaruusmatkailuun ja tuleviin kolonisaatioihin
- Rauhanneuvottelut ja niiden tulokset
- Olisiko Marsin sota voitu välttää? Miten?
- Miten teknologian kehitys vaikutti sodan kulkuun?
- Mitä voimme oppia Marsin sodasta tulevaisuuden konflikteja ajatellen?
Kirjoita lyhyt essee siitä, miten Marsin sota muutti ihmiskunnan käsitystä avaruuden valloituksesta ja itsenäisyydestä.
- Linkkejä artikkeleihin ja dokumentteihin Marsin sodasta
- Aikajana sodan tärkeimmistä tapahtumista
- Kartta Marsin tärkeimmistä kaupungeista ja taistelupaikoista
Oppitunnin lopuksi käydään läpi tärkeimmät opit Marsin sodasta ja pohditaan, miten ne vaikuttavat tulevaisuuden avaruuspolitiikkaan. Verkkohaku osoitti, että Marsin sodista on olemassa fiktiivisiä kertomuksia (esim. televisiosarjoja tai kirjoja) – mutta ei vuodelta 2076. Järki sanoo myös, että vuosi 2076 on tulevaisuudessa, joten sitä ei voi liittää todelliseen tapahtumaan.
Mitä siis tapahtuu, kun annamme tämän kehotteen eri LLM-palveluntarjoajille?
Vastaus 1: OpenAI Playground (GPT-35)
Vastaus 2: Azure OpenAI Playground (GPT-35)
Vastaus 3: Hugging Face Chat Playground (LLama-2)
Kuten odotettua, jokainen malli (tai malliversio) tuottaa hieman erilaisia vastauksia johtuen stokastisesta käyttäytymisestä ja mallien kyvykkyyksien eroista. Esimerkiksi yksi malli kohdistaa vastauksensa kahdeksasluokkalaisille, kun taas toinen olettaa käyttäjän olevan lukiolainen. Kaikki kolme mallia kuitenkin tuottivat vastauksia, jotka voisivat vakuuttaa tietämättömän käyttäjän siitä, että tapahtuma oli todellinen.
Kehotteen suunnittelun tekniikat, kuten metaprompting ja lämpötilan säätö, voivat vähentää mallin sepityksiä jossain määrin. Uudet kehotteiden suunnittelun arkkitehtuurit myös tuovat uusia työkaluja ja tekniikoita saumattomasti kehotteiden kulkuun, lieventäen tai vähentäen näitä vaikutuksia.
Päätetään tämä osio tarkastelemalla, miten kehotteiden suunnittelua käytetään oikeissa ratkaisuissa yhden tapaustutkimuksen kautta: GitHub Copilot.
GitHub Copilot on "tekoälypariohjelmoijasi" – se muuntaa tekstikehotteet koodiehdotuksiksi ja on integroitu kehitysympäristöösi (esim. Visual Studio Code) sujuvaa käyttökokemusta varten. Alla olevien blogien mukaan varhaisin versio perustui OpenAI Codex -malliin – insinöörit huomasivat nopeasti tarpeen hienosäätää mallia ja kehittää parempia kehotteiden suunnittelun tekniikoita koodin laadun parantamiseksi. Heinäkuussa esiteltiin parannettu tekoälymalli, joka menee Codexin ohi entistä nopeampia ehdotuksia varten.
Lue julkaisut järjestyksessä, jotta voit seurata heidän oppimismatkaansa.
- Toukokuu 2023 | GitHub Copilot ymmärtää koodiasi yhä paremmin
- Toukokuu 2023 | Kulissien takana: Työskentely GitHub Copilotin LLM-mallien kanssa.
- Kesäkuu 2023 | Näin kirjoitat parempia kehotteita GitHub Copilotille.
- Heinäkuu 2023 | .. GitHub Copilot menee Codexin ohi parannetulla tekoälymallilla
- Heinäkuu 2023 | Kehittäjän opas kehotteiden suunnitteluun ja LLM-malleihin
- Syyskuu 2023 | Näin rakennat yritystason LLM-sovelluksen: Oppeja GitHub Copilotilta
Voit myös selata heidän Engineering-blogiaan löytääksesi lisää julkaisuja, kuten tämän, jossa näytetään, miten näitä malleja ja tekniikoita sovelletaan oikeiden sovellusten rakentamiseen.
Olemme nähneet, miksi kehotteiden suunnittelu on tärkeää – nyt ymmärretään, miten kehotteet rakennetaan, jotta voimme arvioida erilaisia tekniikoita tehokkaampaan kehotteiden suunnitteluun.
Aloitetaan peruskehotteella: tekstisyöte, joka lähetetään mallille ilman muuta kontekstia. Tässä esimerkki – kun lähetämme Yhdysvaltain kansallislaulun ensimmäiset sanat OpenAI:n Completion API:lle, se täydentää vastauksen välittömästi seuraavilla riveillä, mikä havainnollistaa perusennusteen toimintaa.
| Kehotus (Syöte) | Täydennys (Vastaus) |
|---|---|
| Oh say can you see | Kuulostaa siltä, että aloitat "The Star-Spangled Banner" -laulun sanat, joka on Yhdysvaltojen kansallislaulu. Täydet sanat ovat ... |
Lisätään nyt konteksti ja ohjeet peruskehotteeseen. Chat Completion API mahdollistaa monimutkaisen kehotteen rakentamisen viestien kokoelmana, joissa on:
- Syöte/vastaus-parit, jotka heijastavat käyttäjän syötettä ja avustajan vastausta.
- Järjestelmäviesti, joka asettaa avustajan käyttäytymisen tai persoonallisuuden kontekstin.
Pyyntö on nyt alla olevan muotoinen, jossa tokenisointi poimii olennaisen tiedon kontekstista ja keskustelusta. Nyt järjestelmän kontekstin muuttaminen voi vaikuttaa täydennysten laatuun yhtä paljon kuin käyttäjän syötteet.
response = openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)Yllä olevissa esimerkeissä käyttäjän kehotus oli yksinkertainen tekstikysely, joka voidaan tulkita tiedonpyynnöksi. Ohjekehotuksilla voimme käyttää tekstiä tehtävän tarkempaan määrittelyyn ja antaa tekoälylle parempia ohjeita. Tässä esimerkki:
| Kehotus (Syöte) | Täydennys (Vastaus) | Ohjetyyppi |
|---|---|---|
| Kirjoita kuvaus sisällissodasta | palautti yksinkertaisen kappaleen | Yksinkertainen |
| Kirjoita kuvaus sisällissodasta. Anna tärkeimmät päivämäärät ja tapahtumat sekä kuvaile niiden merkitys | palautti kappaleen ja listan tärkeistä tapahtumapäivistä kuvauksineen | Monimutkainen |
| Kirjoita kuvaus sisällissodasta yhdessä kappaleessa. Anna 3 luetelmakohtaa tärkeimmistä päivämääristä ja niiden merkityksestä. Anna 3 luetelmakohtaa tärkeimmistä historiallisista henkilöistä ja heidän panoksestaan. Palauta tulos JSON-tiedostona | palauttaa laajemmat tiedot tekstilaatikossa, muotoiltuna JSONiksi, jonka voi kopioida tiedostoon ja tarkistaa tarvittaessa | Monimutkainen. Muotoiltu. |
Yllä olevissa esimerkeissä kehotus oli vielä melko avoin, jolloin LLM päätti itse, mikä osa sen esikoulutetusta aineistosta oli olennaista. Ensisijaisen sisällön suunnittelumallissa syöte jaetaan kahteen osaan:
- ohje (toiminta)
- olennainen sisältö (joka vaikuttaa toimintaan)
Tässä esimerkissä ohjeena on "tiivistä tämä kahteen lauseeseen".
| Kehotus (Syöte) | Täydennys (Vastaus) |
|---|---|
| Jupiter on viides planeetta Auringosta ja suurin aurinkokunnassa. Se on kaasuplaneetta, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa kaikkien muiden aurinkokunnan planeettojen yhteenlasketusta massasta. Jupiter on yksi kirkkaimmista paljain silmin näkyvistä kohteista yötaivaalla, ja se on tunnettu muinaisista ajoista lähtien. Se on nimetty roomalaisen jumala Jupiterin mukaan.[19] Maasta katsottuna Jupiter voi olla niin kirkas, että sen heijastama valo luo näkyviä varjoja,[20] ja se on keskimäärin kolmanneksi kirkkain luonnollinen kohde yötaivaalla Kuun ja Venuksen jälkeen. Tiivistä tämä kahteen lyhyeen lauseeseen |
Jupiter, viides planeetta Auringosta, on suurin aurinkokunnassa ja tunnetaan yhtenä yötaivaan kirkkaimmista kohteista. Se on nimetty roomalaisen jumala Jupiterin mukaan ja on kaasuplaneetta, jonka massa on kaksi ja puoli kertaa muiden planeettojen yhteismassasta. |
Ensisijaisen sisällön osuutta voi käyttää monin tavoin tehokkaampien ohjeiden antamiseen:
- Esimerkit – sen sijaan, että kerrot mallille suoraan, mitä tehdä, anna sille esimerkkejä halutusta lopputuloksesta ja anna sen päätellä kaava.
- Vihjeet – seuraa ohjetta "vihjeellä", joka ohjaa täydennystä ja ohjaa mallia kohti olennaisempia vastauksia.
- Pohjat – nämä ovat toistettavia "reseptipohjia" kehotteille, joissa on paikkamerkkejä (muuttujia), joita voi räätälöidä tiettyihin käyttötarkoituksiin.
Katsotaan näitä käytännössä.
Tässä lähestymistavassa käytät ensisijaista sisältöä "syöttääksesi mallille" esimerkkejä halutusta lopputuloksesta annetulle ohjeelle ja annat sen päätellä halutun lopputuloksen kaavan. Esimerkkien määrän mukaan puhutaan zero-shot-, one-shot-, few-shot-kehotteista jne.
Kehotus koostuu nyt kolmesta osasta:
- Tehtävän kuvaus
- Muutama esimerkki halutusta lopputuloksesta
- Uuden esimerkin alku (joka toimii implisiittisenä tehtävän kuvauksena)
| Oppimistyyppi | Kehotus (Syöte) | Täydennys (Vastaus) |
|---|---|---|
| Zero-shot | "The Sun is Shining". Käännä espanjaksi | "El Sol está brillando". |
| One-shot | "The Sun is Shining" => ""El Sol está brillando". "It's a Cold and Windy Day" => |
"Es un día frío y ventoso". |
| Few-shot | Pelaaja juoksi pesät ympäri => Baseball Pelaaja löi ässän => Tennis Pelaaja löi kuutosen => Kriketti Pelaaja teki donkin => |
Koripallo |
Huomaa, että zero-shot-kehotteessa piti antaa selkeä ohje ("Käännä espanjaksi"), mutta one-shot-esimerkissä se päätellään. Few-shot-esimerkki osoittaa, miten useamman esimerkin lisääminen mahdollistaa mallille tarkemmat päätelmät ilman lisäohjeita.
Toinen tapa käyttää ensisijaista sisältöä on antaa vihjeitä esimerkkien sijaan. Tässä annamme mallille pienen sysäyksen oikeaan suuntaan aloittamalla halutun vastausmuodon mukaisella katkelmalla. Malli "ottaa vihjeestä kiinni" ja jatkaa samalla linjalla.
| Vihjeiden määrä | Kehotus (Syöte) | Täydennys (Vastaus) |
|---|---|---|
| 0 | Jupiter on viides planeetta Auringosta ja suurin aurinkokunnassa. Se on kaasuplaneetta, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa kaikkien muiden aurinkokunnan planeettojen yhteenlasketusta massasta. Jupiter on yksi kirkkaimmista paljain silmin näkyvistä kohteista yötaivaalla, ja se on tunnettu muinaisista ajoista lähtien. |
Tiivistä tämä | Jupiter on aurinkokuntamme suurin planeetta ja viides aurinkoon nähden. Se on kaasujättiläinen, jonka massa on 1/1000 Auringon massasta, mutta se on silti painavampi kuin kaikki muut planeetat yhteensä. Muinaiset sivilisaatiot ovat tunteneet Jupiterin jo pitkään, ja se näkyy helposti yötaivaalla. |
| 1 | Jupiter on viides planeetta auringosta ja suurin aurinkokunnassa. Se on kaasujättiläinen, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa enemmän kuin kaikkien muiden planeettojen yhteismassa. Jupiter on yksi kirkkaimmista paljain silmin näkyvistä kohteista yötaivaalla, ja se on ollut tunnettu jo ennen kirjoitettua historiaa.
Tiivistä tämä
Opimme, että Jupiter | on viides planeetta auringosta ja suurin aurinkokunnassa. Se on kaasujättiläinen, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa enemmän kuin kaikkien muiden planeettojen yhteismassa. Se näkyy helposti paljain silmin ja on ollut tunnettu jo muinaisista ajoista lähtien. |
| 2 | Jupiter on viides planeetta auringosta ja suurin aurinkokunnassa. Se on kaasujättiläinen, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa enemmän kuin kaikkien muiden planeettojen yhteismassa. Jupiter on yksi kirkkaimmista paljain silmin näkyvistä kohteista yötaivaalla, ja se on ollut tunnettu jo ennen kirjoitettua historiaa.
Tiivistä tämä
3 tärkeintä asiaa, jotka opimme: | 1. Jupiter on viides planeetta auringosta ja suurin aurinkokunnassa.
2. Se on kaasujättiläinen, jonka massa on tuhannesosa Auringon massasta...
3. Jupiter on ollut näkyvissä paljain silmin jo muinaisista ajoista lähtien ... |
| | | |
Kehyspohja on ennalta määritelty resepti kehotteelle, jonka voi tallentaa ja käyttää uudelleen tarpeen mukaan, jotta käyttäjäkokemukset pysyvät johdonmukaisina laajassa mittakaavassa. Yksinkertaisimmillaan se on kokoelma kehotteiden esimerkkejä kuten tämä OpenAI:lta, joka sisältää sekä interaktiiviset kehotteet (käyttäjän ja järjestelmän viestit) että API-pyynnön muodon – mahdollistaen uudelleenkäytön.
Monimutkaisemmassa muodossa, kuten tässä LangChainin esimerkissä, se sisältää paikkamerkkejä, jotka voidaan korvata tiedoilla eri lähteistä (käyttäjän syöte, järjestelmän konteksti, ulkoiset tietolähteet jne.) kehotteen dynaamiseen luomiseen. Näin voidaan rakentaa uudelleenkäytettäviä kehotekirjastoja, joilla johdonmukaiset käyttäjäkokemukset voidaan tuottaa ohjelmallisesti laajassa mittakaavassa.
Lopulta kehyspohjien todellinen arvo on siinä, että voidaan luoda ja julkaista kehotekirjastoja eri sovellusalueille – jolloin kehyspohja on optimoitu sovelluskohtaisella kontekstilla tai esimerkeillä, jotka tekevät vastauksista osuvampia ja tarkempia kohdeyleisölle. Prompts For Edu -repo on hyvä esimerkki tästä lähestymistavasta, sillä se kokoaa kehotekirjaston opetusalalle painottaen tärkeitä tavoitteita kuten tuntisuunnittelu, opetussuunnitelman muotoilu, opiskelijoiden ohjaus jne.
Jos ajattelemme kehotteen rakentamista niin, että siinä on ohje (tehtävä) ja kohde (ensisijainen sisältö), niin toissijainen sisältö on lisäkontekstia, jolla vaikutetaan lopputulokseen jollain tavalla. Se voi olla säätöparametreja, muotoiluohjeita, aiheiden luokitteluja jne., jotka auttavat mallia räätälöimään vastauksensa haluttuihin tavoitteisiin tai odotuksiin.
Esimerkki: Jos meillä on kurssikatalogi, jossa on laajat metatiedot (nimi, kuvaus, taso, metatunnisteet, opettaja jne.) kaikista opetussuunnitelman kursseista:
- voimme antaa ohjeen "tiivistä kurssikatalogi syksylle 2023"
- voimme käyttää ensisijaista sisältöä antamaan muutamia esimerkkejä halutusta lopputuloksesta
- voimme käyttää toissijaista sisältöä tunnistamaan 5 tärkeintä "tunnistetta"
Nyt malli voi antaa yhteenvedon esimerkkien mukaisessa muodossa – mutta jos tuloksessa on useita tunnisteita, se voi priorisoida ne 5, jotka toissijainen sisältö määritteli.
Nyt kun tiedämme, miten kehotteita voidaan rakentaa, voimme alkaa miettiä, miten ne suunnitellaan parhaiden käytäntöjen mukaisesti. Voimme jakaa tämän kahteen osaan – oikean ajattelutavan omaksumiseen ja oikeiden tekniikoiden soveltamiseen.
Kehotetekniikka on kokeiluun perustuva prosessi, joten pidä mielessä kolme laajaa ohjaavaa tekijää:
-
Alueen ymmärrys on tärkeää. Vastausten tarkkuus ja osuvuus riippuvat alueesta, jossa sovellus tai käyttäjä toimii. Hyödynnä omaa intuitiotasi ja asiantuntemustasi räätälöidäksesi tekniikoita. Esimerkiksi määrittele aluekohtaisia persoonallisuuksia järjestelmäkehotteissa tai käytä aluekohtaisia pohjia käyttäjäkehotteissa. Tarjoa toissijaista sisältöä, joka heijastaa alueen kontekstia, tai käytä aluekohtaisia vihjeitä ja esimerkkejä ohjataksesi mallia tutumpiin käyttötapoihin.
-
Mallin ymmärrys on tärkeää. Tiedämme, että mallit ovat luonteeltaan satunnaisia. Mutta mallien toteutukset voivat myös vaihdella sen mukaan, millä aineistolla ne on koulutettu (ennakkotieto), mitä ominaisuuksia ne tarjoavat (esim. API tai SDK) ja minkä tyyppiseen sisältöön ne on optimoitu (esim. koodi vs. kuvat vs. teksti). Ymmärrä käyttämäsi mallin vahvuudet ja rajoitukset, ja hyödynnä tätä tietoa priorisoidaksesi tehtäviä tai rakentaaksesi räätälöityjä pohjia, jotka on optimoitu mallin ominaisuuksille.
-
Iterointi ja validointi ovat tärkeitä. Mallit kehittyvät nopeasti, samoin kehotetekniikat. Alueasiantuntijana sinulla voi olla muuta kontekstia tai kriteerejä omalle sovelluksellesi, jotka eivät päde laajemmin. Käytä kehotetekniikan työkaluja ja menetelmiä "aloittaaksesi" kehotteen rakentamisen, sitten iteroi ja validoi tulokset oman intuitiosi ja asiantuntemuksesi avulla. Tallenna havaintosi ja luo tietopohja (esim. kehotekirjastoja), joita muut voivat käyttää uutena lähtökohtana nopeampaan iterointiin jatkossa.
Tarkastellaan nyt yleisiä parhaita käytäntöjä, joita suosittelevat OpenAI ja Azure OpenAI -asiantuntijat.
| Mitä | Miksi |
|---|---|
| Arvioi uusimmat mallit. | Uusissa mallisukupolvissa on todennäköisesti parempia ominaisuuksia ja laatua – mutta ne voivat myös olla kalliimpia. Arvioi niiden vaikutus ja tee siirtymispäätökset sen mukaan. |
| Erottele ohjeet ja konteksti | Tarkista, määritteleekö mallisi/toimittajasi erottimia, joilla ohjeet, ensisijainen ja toissijainen sisältö erotellaan selkeämmin. Tämä voi auttaa mallia painottamaan sanoja tarkemmin. |
| Ole tarkka ja selkeä | Anna yksityiskohtia halutusta kontekstista, lopputuloksesta, pituudesta, muodosta, tyylistä jne. Tämä parantaa vastausten laatua ja johdonmukaisuutta. Tallenna reseptit uudelleenkäytettäviin pohjiin. |
| Ole kuvaileva, käytä esimerkkejä | Mallit voivat reagoida paremmin "näytä ja kerro" -lähestymistapaan. Aloita zero-shot-menetelmällä, jossa annat ohjeen (ilman esimerkkejä), ja kokeile sitten few-shot-menetelmää, jossa annat muutamia esimerkkejä halutusta lopputuloksesta. Käytä analogioita. |
| Käytä vihjeitä käynnistämään vastauksia | Ohjaa mallia haluttuun lopputulokseen antamalla sille alkusanoja tai lauseita, joita se voi käyttää vastauksen lähtökohtana. |
| Toista tarvittaessa | Joskus mallille täytyy toistaa ohjeita. Anna ohjeet ennen ja jälkeen ensisijaisen sisällön, käytä ohjetta ja vihjettä jne. Iteroi ja validoi, mikä toimii. |
| Järjestyksellä on väliä | Tiedon esittämisjärjestys mallille voi vaikuttaa lopputulokseen, myös oppimisesimerkeissä, kiitos tuoreusvaikutuksen. Kokeile eri vaihtoehtoja ja katso, mikä toimii parhaiten. |
| Anna mallille "varasuunnitelma" | Anna mallille varavastaus, jonka se voi antaa, jos se ei pysty suorittamaan tehtävää. Tämä voi vähentää virheellisten tai keksittyjen vastausten riskiä. |
Kuten kaikissa parhaissa käytännöissä, muista että tulokset voivat vaihdella mallin, tehtävän ja alueen mukaan. Käytä näitä lähtökohtana ja iteroi löytääksesi itsellesi parhaan tavan. Arvioi kehotetekniikan prosessiasi jatkuvasti, kun uusia malleja ja työkaluja tulee saataville, keskittyen prosessin skaalautuvuuteen ja vastausten laatuun.
Onnittelut! Olet päässyt oppitunnin loppuun! Nyt on aika testata opittuja käsitteitä ja tekniikoita oikeilla esimerkeillä!
Tehtävässä käytämme Jupyter Notebookia, jossa voit tehdä harjoituksia interaktiivisesti. Voit myös laajentaa Notebookia omilla Markdown- ja koodisoluilla tutkiaksesi ideoita ja tekniikoita itsenäisesti.
- (Suositus) Käynnistä GitHub Codespaces
- (Vaihtoehto) Kloonaa repo omalle laitteellesi ja käytä sitä Docker Desktopin kanssa
- (Vaihtoehto) Avaa Notebook haluamallasi Notebook-ympäristöllä.
- Kopioi
.env.copytiedosto reposta nimellä.envja täytäAZURE_OPENAI_API_KEY,AZURE_OPENAI_ENDPOINTjaAZURE_OPENAI_DEPLOYMENTarvot. Palaa Learning Sandbox -osioon oppiaksesi lisää.
- Valitse ajoympäristön ydin. Jos käytät vaihtoehtoja 1 tai 2, valitse vain oletus Python 3.10.x -ydin, jonka kehityskontti tarjoaa.
Nyt voit suorittaa harjoitukset. Huomaa, että tässä ei ole oikeita tai vääriä vastauksia – tarkoitus on kokeilla eri vaihtoehtoja ja kehittää intuitiota siitä, mikä toimii kullakin mallilla ja sovellusalueella.
Tämän vuoksi tässä oppitunnissa ei ole koodiratkaisuosioita. Sen sijaan Notebookissa on Markdown-solut otsikolla "Oma ratkaisuni:", joissa näytetään yksi esimerkkivastaus viitteeksi.
Mikä seuraavista on hyvä kehotteiden esimerkki, joka noudattaa järkeviä parhaita käytäntöjä?
- Näytä kuva punaisesta autosta
- Näytä kuva punaisesta Volvo XC90 -autosta, joka on pysäköity kallion viereen auringonlaskussa
- Näytä kuva punaisesta Volvo XC90 -autosta
Vastaus: 2, se on paras kehotteista, koska se kertoo tarkasti "mitä" ja menee yksityiskohtiin (ei vain mikä tahansa auto, vaan tietty merkki ja malli) ja kuvailee myös ympäristön. 3 on seuraavaksi paras, koska siinäkin on paljon kuvausta.
Kokeile, voitko hyödyntää "vihje"-tekniikkaa kehotteella: Täydennä lause "Näytä kuva punaisesta Volvo-merkkisestä autosta ja ". Mitä malli vastaa, ja miten parantaisit sitä?
Haluatko oppia lisää kehotetekniikan eri käsitteistä? Siirry jatko-opiskelusivulle löytääksesi lisää hyviä resursseja aiheesta.
Siirry oppituntiin 5, jossa käsittelemme kehittyneitä kehotetekniikoita!
Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen omalla kielellä tulee pitää ensisijaisena lähteenä. Tärkeissä asioissa suositellaan ammattimaista ihmiskääntäjää. Emme ole vastuussa tämän käännöksen käytöstä mahdollisesti aiheutuvista väärinkäsityksistä tai tulkintavirheistä.







