Tämä moduuli käsittelee keskeisiä käsitteitä ja tekniikoita tehokkaiden kehotteiden luomiseksi generatiivisissa tekoälymalleissa. Tapa, jolla kirjoitat kehotteen LLM:lle, vaikuttaa myös lopputulokseen. Huolellisesti laadittu kehotus voi tuottaa laadukkaamman vastauksen. Mutta mitä tarkalleen ottaen tarkoittavat termit kehotus ja promptien suunnittelu? 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 luomaan uutta sisältöä (esim. tekstiä, kuvia, ääntä, koodia jne.) käyttäjän pyyntöjen perusteella. Se saavuttaa tämän käyttämällä suuria kielimalleja kuten OpenAI:n GPT ("Generative Pre-trained Transformer") -sarjaa, jotka on koulutettu käyttämään luonnollista kieltä ja koodia.
Käyttäjät voivat nyt olla vuorovaikutuksessa näiden mallien kanssa tuttujen toimintatapojen, kuten chatin, kautta ilman teknistä asiantuntemusta tai koulutusta. Mallit ovat kehotuspohjaisia - käyttäjät lähettävät tekstisyötteen (kehotus) ja saavat takaisin tekoälyn vastauksen (täydennys). He voivat sitten "keskustella tekoälyn kanssa" iteratiivisesti, monivaiheisissa keskusteluissa, hienosäätäen kehotettaan, kunnes vastaus vastaa heidän odotuksiaan.
"Kehotukset" ovat nyt generatiivisten tekoälysovellusten ensisijainen ohjelmointirajapinta, joka kertoo malleille, mitä tehdä ja vaikuttaa palautettujen vastausten laatuun. "Promptien suunnittelu" on nopeasti kasvava tutkimusala, joka keskittyy kehotusten suunnitteluun ja optimointiin johdonmukaisten ja laadukkaiden vastausten tuottamiseksi laajassa mittakaavassa.
Tässä oppitunnissa opimme, mitä promptien suunnittelu on, miksi se on tärkeää ja miten voimme laatia tehokkaampia kehotuksia tietylle mallille ja sovellustavoitteelle. Ymmärrämme keskeiset käsitteet ja parhaat käytännöt promptien suunnittelussa - ja opimme interaktiivisesta Jupyter Notebooks - "hiekkalaatikko"-ympäristöstä, jossa voimme soveltaa näitä käsitteitä todellisiin esimerkkeihin.
Oppitunnin lopussa osaamme:
- Selittää, mitä promptien suunnittelu on ja miksi se on tärkeää.
- Kuvailla kehotteen osat ja niiden käyttötavat.
- Oppia parhaat käytännöt ja tekniikat promptien suunnitteluun.
- Soveltaa opittuja tekniikoita todellisiin esimerkkeihin käyttäen OpenAI:n rajapintaa.
Promptien suunnittelu: Käytäntö suunnitella ja hienosäätää syötteitä ohjaamaan tekoälymalleja tuottamaan haluttuja tuloksia.
Tokenisaatio: Prosessi, jossa teksti muunnetaan pienemmiksi yksiköiksi, joita kutsutaan tokeneiksi, joita malli voi ymmärtää ja käsitellä.
Ohjeviritetyt LLM:t: Suuret kielimallit (LLM:t), joita on hienosäädetty erityisillä ohjeilla vastausten tarkkuuden ja osuvuuden parantamiseksi.
Promptien suunnittelu on tällä hetkellä enemmän taidetta kuin tiedettä. Paras tapa parantaa intuitiota sen suhteen on harjoitella enemmän ja omaksua kokeiluun ja erehdykseen perustuva lähestymistapa, joka yhdistää sovellusalueen asiantuntemuksen suositeltuihin tekniikoihin ja mallikohtaisiin optimointeihin.
Tämän oppitunnin mukana tuleva Jupyter Notebook tarjoaa hiekkalaatikko-ympäristön, jossa voit kokeilla oppimaasi - joko oppitunnin aikana tai lopun koodaushaasteen osana. Harjoitusten suorittamiseen tarvitset:
- Azure OpenAI API -avaimen - palvelupisteen käyttöönotetulle LLM:lle.
- Python-ympäristön - jossa Notebook voidaan suorittaa.
- Paikalliset ympäristömuuttujat - suorita ASENNUS -vaiheet nyt valmistautuaksesi.
Notebook sisältää aloitusharjoituksia - mutta sinua rohkaistaan lisäämään omia Markdown- (kuvaus) ja Code- (kehotuspyynnöt) osioita kokeillaksesi lisää esimerkkejä tai ideoita - ja kehittääksesi intuitiotasi kehotusten suunnittelussa.
Haluatko saada yleiskuvan siitä, mitä tämä oppitunti kattaa ennen kuin sukellat syvemmälle? Tutustu tähän kuvitettuun oppaaseen, joka antaa sinulle käsityksen pääaiheista ja keskeisistä huomioista, joita kannattaa miettiä kunkin aiheen kohdalla. Oppitunnin etenemissuunnitelma vie sinut ydinkäsitteiden ja haasteiden ymmärtämisestä niiden käsittelyyn asiaankuuluvilla promptien suunnittelutekniikoilla ja parhailla käytännöillä. Huomaa, että tämän oppaan "Edistyneet tekniikat" -osio viittaa seuraavan luvun sisältöön tässä oppimateriaalissa.
Puhutaanpa siitä, miten tämä aihe liittyy startupimme missioon tuoda tekoälyinnovaatioita koulutukseen. Haluamme rakentaa tekoälypohjaisia sovelluksia henkilökohtaiselle oppimiselle - joten mietitään, miten eri käyttäjät sovelluksessamme voisivat "suunnitella" kehotuksia:
- Hallinnoijat saattavat pyytää tekoälyä analysoimaan opetussuunnitelman tietoja ja tunnistamaan puutteita sisällössä. Tekoäly voi tiivistää tulokset tai visualisoida ne koodin avulla.
- Opettajat saattavat pyytää tekoälyä luomaan oppituntisuunnitelman kohderyhmälle ja aiheelle. Tekoäly voi rakentaa henkilökohtaisen suunnitelman määritetyssä muodossa.
- Opiskelijat saattavat pyytää tekoälyä opettamaan heitä vaikeassa aiheessa. Tekoäly voi ohjata opiskelijoita oppitunneilla, vihjeillä ja esimerkeillä, jotka on räätälöity heidän tasolleen.
Tämä on vasta jäävuoren huippu. Tutustu Prompts For Education - avoimen lähdekoodin kehotekirjastoon, jonka ovat kuratoineet koulutuksen asiantuntijat - saadaksesi laajemman käsityksen mahdollisuuksista! Kokeile joitakin näistä kehotteista hiekkalaatikossa tai OpenAI Playgroundissa ja katso, mitä tapahtuu!
Aloitimme tämän oppitunnin määrittelemällä promptien suunnittelun prosessiksi, jossa suunnitellaan ja optimoidaan tekstisyötteitä (kehotuksia) tuottamaan johdonmukaisia ja laadukkaita vastauksia (täydennyksiä) tiettyä sovellustavoitetta ja mallia varten. Voimme ajatella tätä kaksivaiheisena prosessina:
- suunnitellaan alkuperäinen kehotus tietylle mallille ja tavoitteelle
- hienosäädetään kehotusta iteratiivisesti vastausten laadun parantamiseksi
Tämä on väistämättä kokeiluun ja erehdykseen perustuva prosessi, joka vaatii käyttäjän intuitiota ja vaivannäköä optimaalisten tulosten saavuttamiseksi. Miksi se sitten on tärkeää? Vastaus tähän kysymykseen edellyttää kolmen käsitteen ymmärtämistä:
- Tokenisaatio = miten malli "näkee" kehotteen
- Perus-LLM:t = miten perustamalli "käsittelee" kehotteen
- Ohjeviritetyt LLM:t = miten malli voi nyt nähdä "tehtävät"
LLM näkee kehotteet tokenien sarjana, jossa eri mallit (tai mallin versiot) voivat tokenisoida saman kehotteen eri tavoin. Koska LLM:t on koulutettu tokeneilla (eikä raakatiedolla), tapa, jolla kehotteet tokenisoidaan, vaikuttaa suoraan tuotetun vastauksen laatuun.
Saadaksesi käsityksen siitä, miten tokenisaatio toimii, kokeile työkaluja kuten OpenAI Tokenizer, joka on esitetty alla. Kopioi kehotteesi - ja katso, miten se muunnetaan tokeneiksi, kiinnittäen huomiota siihen, miten välilyönnit ja välimerkit käsitellään. Huomaa, että tämä esimerkki näyttää vanhemman LLM:n (GPT-3) - joten kokeilu uudemmalla mallilla voi tuottaa erilaisen tuloksen.
Kun kehotus on tokenisoitu, "Perus-LLM" (tai perustamalli) ennustaa seuraavan tokenin kyseisessä sarjassa. Koska LLM:t on koulutettu valtavilla tekstiaineistoilla, niillä on hyvä käsitys tokenien välisistä tilastollisista suhteista ja ne voivat tehdä ennusteen melko luotettavasti. Huomaa, että ne eivät ymmärrä sanojen merkitystä kehotteessa tai tokenissa; ne vain näkevät kuvion, jonka ne voivat "täydentää" seuraavalla ennusteellaan. Ne voivat jatkaa sarjan ennustamista, kunnes käyttäjä keskeyttää prosessin tai jokin ennalta määritetty ehto täyttyy.
Haluatko nähdä, miten kehotuspohjainen täydennys toimii? Syötä yllä oleva kehotus Azure OpenAI Studion Chat Playground -työkaluun oletusasetuksilla. Järjestelmä on konfiguroitu käsittelemään kehotteet tiedonpyyntöinä - joten sinun pitäisi nähdä täydennys, joka vastaa tätä kontekstia.
Mutta entä jos käyttäjä halusi nähdä jotain erityistä, joka täyttää tietyt kriteerit tai tehtävätavoitteen? Tässä kohtaa ohjeviritetyt LLM:t astuvat kuvaan.
Ohjeviritetty LLM alkaa perustamallista ja hienosäätää sitä esimerkeillä tai syöte/vastauspareilla (esim. monivaiheiset "viestit"), jotka voivat sisältää selkeitä ohjeita - ja tekoälyn vastaus pyrkii noudattamaan näitä ohjeita.
Tämä käyttää tekniikoita, kuten ihmisen palautteeseen perustuvaa vahvistusoppimista (RLHF), joka voi kouluttaa mallia noudattamaan ohjeita ja oppimaan palautteesta, jotta se tuottaa vastauksia, jotka sopivat paremmin käytännön sovelluksiin ja ovat käyttäjän tavoitteiden kannalta merkityksellisempiä.
Kokeillaan - palataan yllä olevaan kehotteeseen, mutta muutetaan nyt järjestelmäviestiä antamaan seuraava ohje kontekstina:
Tiivistä sinulle annettu sisältö toisen luokan oppilaalle. Pidä tulos yhdessä kappaleessa, jossa on 3-5 kohtaa.
Huomaatko, kuinka tulos on nyt viritetty vastaamaan haluttua tavoitetta ja muotoa? Opettaja voi nyt käyttää tätä vastausta suoraan luokkansa dioissa.
Nyt kun tiedämme, miten LLM:t käsittelevät kehotteita, puhutaan siitä, miksi tarvitsemme promptien suunnittelua. Vastaus löytyy siitä, että nykyiset LLM:t tuottavat useita haasteita, jotka tekevät luotettavien ja johdonmukaisten täydennysten saavuttamisesta haastavampaa ilman kehotteen rakentamiseen ja optimointiin panostamista. Esimerkiksi:
-
Mallin vastaukset ovat satunnaisia. Sama kehotus tuottaa todennäköisesti erilaisia vastauksia eri malleilla tai malliversioilla. Ja se voi jopa tuottaa erilaisia tuloksia samalla mallilla eri aikoina. Promptien suunnittelutekniikat voivat auttaa meitä minimoimaan nämä vaihtelut tarjoamalla parempia ohjauskehyksiä.
-
Mallit voivat keksiä vastauksia. Mallit on esikoulutettu laajoilla mutta rajallisilla aineistoilla, mikä tarkoittaa, että niiltä puuttuu tietoa koulutuksen ulkopuolisista käsitteistä. Tämän seurauksena ne voivat tuottaa täydennyksiä, jotka ovat epätarkkoja, kuvitteellisia tai suoraan ristiriidassa tunnettujen faktojen kanssa. Promptien suunnittelutekniikat auttavat käyttäjiä tunnistamaan ja lieventämään tällaisia keksintöjä, esimerkiksi pyytämällä tekoälyä antamaan lähteitä tai perusteluja.
-
Mallien kyvyt vaihtelevat. Uudemmilla malleilla tai mallisukupolvilla on rikkaammat kyvyt, mutta ne tuovat mukanaan myös ainutlaatuisia omituisuuksia ja kompromisseja kustannusten ja monimutkaisuuden suhteen. Promptien suunnittelu voi auttaa meitä kehittämään parhaita käytäntöjä ja työnkulkuja, jotka abstrahoivat erot ja mukautuvat mallikohtaisiin vaatimuksiin skaalautuvalla ja saumattomalla tavalla.
Katsotaanpa tätä käytännössä OpenAI:n tai Azure OpenAI Playgroundissa:
- Käytä samaa kehotusta eri LLM-toteutuksilla (esim. OpenAI, Azure OpenAI, Hugging Face) - huomasitko vaihtelut?
- Käytä samaa kehotusta toistuvasti samalla LLM-toteutuksella (esim. Azure OpenAI Playground) - miten nämä vaihtelut erosivat toisistaan?
Tässä kurssissa käytämme termiä "keksintö" viittaamaan ilmiöön, jossa LLM:t joskus tuottavat tosiasiallisesti virheellistä tietoa koulutuksen rajoitusten tai muiden tekijöiden vuoksi. Saatat myös olla kuullut tästä puhuttavan "hallusinaationa" suosituissa artikkeleissa tai tutkimuspapereissa. Suosittelemme kuitenkin vahvasti käyttämään termiä "keksintö", jotta emme vahingossa inhimillistäisi käyttäytymistä antamalla ihmismäisiä piirteitä koneohjatulle lopputulokselle. Tämä myös vahvistaa Vastuullisen tekoälyn ohjeita terminologian näkökulmasta, poistamalla termejä, jotka voivat olla loukkaavia 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 eikä siksi voi liittyä todelliseen tapahtumaan.
Mitä tapahtuu, kun käytämme tätä kehotetta eri LLM-palveluntarjoajien kanssa?
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 kohdistuu kahdeksannen luokan yleisölle, kun taas toinen olettaa lukion opiskelijan. Mutta kaikki kolme mallia tuottivat vastauksia, jotka voisivat vakuuttaa tietämättömän käyttäjän siitä, että tapahtuma oli todellinen.
Kehotetekniikat, kuten metakehotus ja lämpötilan säätö, voivat vähentää mallien virheellisiä vastauksia jossain määrin. Uudet kehotetekniikoiden arkkitehtuurit myös integroivat uusia työkaluja ja tekniikoita saumattomasti kehotteen kulkuun, lieventääkseen tai vähentääkseen näitä vaikutuksia.
Päätetään tämä osio tutustumalla siihen, miten kehotetekniikoita käytetään tosielämän ratkaisuissa tarkastelemalla yhtä tapaustutkimusta: GitHub Copilot.
GitHub Copilot on "AI-pariohjelmoijasi" - se muuntaa tekstikehotteet koodiehdotuksiksi ja on integroitu kehitysympäristöösi (esim. Visual Studio Code) saumattoman käyttäjäkokemuksen takaamiseksi. Kuten alla olevissa blogisarjoissa dokumentoidaan, varhaisin versio perustui OpenAI Codex -malliin - ja insinöörit huomasivat nopeasti tarpeen hienosäätää mallia ja kehittää parempia kehotetekniikoita koodin laadun parantamiseksi. Heinäkuussa he julkaisivat parannetun AI-mallin, joka menee Codexin ohi tarjoten entistä nopeampia ehdotuksia.
Lue julkaisut järjestyksessä, jotta voit seurata heidän oppimismatkaansa.
- Toukokuu 2023 | GitHub Copilot ymmärtää koodiasi entistä paremmin
- Toukokuu 2023 | GitHubin sisällä: Työskentely LLM-mallien kanssa GitHub Copilotin taustalla.
- Kesäkuu 2023 | Kuinka kirjoittaa parempia kehotteita GitHub Copilotille.
- Heinäkuu 2023 | .. GitHub Copilot menee Codexin ohi parannetulla AI-mallilla
- Heinäkuu 2023 | Kehittäjän opas kehotetekniikoihin ja LLM-malleihin
- Syyskuu 2023 | Kuinka rakentaa yrityksen LLM-sovellus: Oppeja GitHub Copilotista
Voit myös selata heidän Engineering-blogiaan löytääksesi lisää julkaisuja, kuten tämän, joka näyttää, miten näitä malleja ja tekniikoita sovelletaan tosielämän sovellusten kehittämiseen.
Olemme nähneet, miksi kehotetekniikat ovat tärkeitä - nyt ymmärretään, miten kehotteet rakennetaan, jotta voimme arvioida erilaisia tekniikoita tehokkaamman kehotteen suunnitteluun.
Aloitetaan peruskehotteesta: 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ä, havainnollistaen perusennustuskäyttäytymistä.
| Kehotus (Syöte) | Täydennys (Vastaus) |
|---|---|
| Oh say can you see | Kuulostaa siltä, että aloitat "The Star-Spangled Bannerin", Yhdysvaltain kansallislaulun, sanat. Täydelliset sanat ovat ... |
Lisätään nyt konteksti ja ohjeet peruskehotteeseen. Chat Completion API antaa meidän rakentaa monimutkaisen kehotteen viestien kokoelmana, jossa:
- Syöte/vastausparit heijastavat käyttäjän syötettä ja avustajan vastausta.
- Järjestelmäviesti asettaa kontekstin avustajan käyttäytymiselle tai persoonallisuudelle.
Pyyntö on nyt alla olevassa muodossa, jossa tokenisointi tehokkaasti tallentaa olennaiset tiedot kontekstista ja keskustelusta. Nyt järjestelmän kontekstin muuttaminen voi vaikuttaa yhtä paljon täydennysten laatuun kuin annetut 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ää kyseistä tekstiä tehtävän tarkempaan määrittelyyn ja tarjota parempaa ohjausta tekoälylle. Tässä esimerkki:
| Kehotus (Syöte) | Täydennys (Vastaus) | Ohjeen tyyppi |
|---|---|---|
| Kirjoita kuvaus sisällissodasta | palautti yksinkertaisen kappaleen | Yksinkertainen |
| Kirjoita kuvaus sisällissodasta. Anna keskeiset päivämäärät ja tapahtumat ja kuvaile niiden merkitys | palautti kappaleen, jota seurasi luettelo keskeisistä tapahtumapäivämääristä ja kuvauksista | Monimutkainen |
| Kirjoita kuvaus sisällissodasta yhdessä kappaleessa. Anna 3 luettelopistettä keskeisistä päivämääristä ja niiden merkityksestä. Anna 3 muuta luettelopistettä keskeisistä historiallisista henkilöistä ja heidän panoksistaan. Palauta vastaus JSON-tiedostona | palautti laajemmat tiedot tekstilaatikossa, muotoiltuna JSON-muotoon, jonka voi kopioida ja liittää tiedostoon ja validoida | Monimutkainen. Muotoiltu. |
Yllä olevissa esimerkeissä kehotus oli edelleen melko avoin, jolloin LLM päätti, mikä osa sen esikoulutetusta tietokannasta oli relevantti. Ensisijaisen sisällön suunnittelumallilla syöte jaetaan kahteen osaan:
- ohje (toiminta)
- olennainen sisältö (joka vaikuttaa toimintaan)
Tässä esimerkki, jossa ohjeena on "tiivistä tämä kahteen lauseeseen".
| Kehotus (Syöte) | Täydennys (Vastaus) |
|---|---|
| Jupiter on viides planeetta Auringosta ja suurin planeetta aurinkokunnassa. Se on kaasujättiläinen, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa kaikkien muiden aurinkokunnan planeettojen yhteenlaskettu massa. Jupiter on yksi kirkkaimmista paljaalla silmällä näkyvistä kohteista yötaivaalla, ja se on ollut tunnettu muinaisista sivilisaatioista lähtien ennen kirjoitettua historiaa. Se on nimetty roomalaisen jumalan Jupiterin mukaan. Kun Jupiteria katsotaan Maasta, se voi olla niin kirkas, että sen heijastunut valo voi heittää näkyviä varjoja, 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 aurinkokunnan suurin ja tunnetaan yhtenä kirkkaimmista kohteista yötaivaalla. Roomalaisen jumalan Jupiterin mukaan nimetty kaasujättiläinen on massaltaan kaksi ja puoli kertaa kaikkien muiden planeettojen yhteenlaskettu massa. |
Ensisijaisen sisällön segmenttiä voidaan käyttää monin tavoin tehokkaampien ohjeiden luomiseen:
- Esimerkit - sen sijaan, että kerrot mallille, mitä tehdä eksplisiittisellä ohjeella, anna sille esimerkkejä siitä, mitä tehdä, ja anna sen päätellä kaava.
- Vihjeet - seuraa ohjetta "vihjeellä", joka ohjaa täydennystä, ohjaten mallia kohti relevantimpia vastauksia.
- Mallipohjat - nämä ovat toistettavia "reseptikehotteita", joissa on paikkamerkkejä (muuttujia), joita voidaan mukauttaa tiettyihin käyttötapauksiin.
Tutkitaan näitä käytännössä.
Tämä on lähestymistapa, jossa käytät ensisijaista sisältöä "syöttämään mallille" joitakin esimerkkejä halutusta tuotoksesta tietylle ohjeelle ja annat sen päätellä halutun tuotoksen kaavan. Annettujen esimerkkien määrän perusteella voimme puhua nolla-, yksi- tai muutaman esimerkin kehotuksesta.
Kehotus koostuu nyt kolmesta osasta:
- Tehtävän kuvaus
- Muutamia esimerkkejä halutusta tuotoksesta
- Uuden esimerkin alku (joka toimii implisiittisenä tehtävän kuvauksena)
| Oppimistyyppi | Kehotus (Syöte) | Täydennys (Vastaus) |
|---|---|---|
| Nolla-esimerkki | "Aurinko paistaa". Käännä espanjaksi | "El Sol está brillando". |
| Yksi-esimerkki | "Aurinko paistaa" => ""El Sol está brillando". "On kylmä ja tuulinen päivä" => |
"Es un día frío y ventoso". |
| Muutaman esimerkin | Pelaaja juoksi pesät => Baseball Pelaaja löi ässän => Tennis Pelaaja löi kuutosen => Cricket Pelaaja teki donkin => |
Koripallo |
Huomaa, kuinka meidän piti antaa eksplisiittinen ohje ("Käännä espanjaksi") nolla-esimerkin kehotuksessa, mutta se päätellään yksi-esimerkin kehotuksessa. Muutaman esimerkin kehotus näyttää, kuinka lisäämällä enemmän esimerkkejä mallit voivat tehdä tarkempia päätelmiä ilman lisäohjeita.
Toinen tekniikka ensisijaisen sisällön käyttämiseen on antaa vihjeitä eikä esimerkkejä. Tässä tapauksessa annamme mallille "sysäyksen" oikeaan suuntaan aloittamalla sen halutun vastausmuodon heijastavalla katkelmalla. Malli sitten "ottaa vihjeen" ja jatkaa samalla tavalla.
| Vihjeiden määrä | Kehotus (Syöte) | Täydennys (Vastaus) |
|---|---|---|
| 0 | Jupiter on viides planeetta Auringosta ja suurin planeetta aurinkokunnassa. Se on kaasujättiläinen, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa kaikkien muiden aurinkokunnan planeettojen yhteenlaskettu massa. Jupiter on yksi kirkkaimmista paljaalla silmällä näkyvistä kohteista yötaivaalla, ja se on ollut tunnettu muinaisista sivilisaatioista ennen kirjoitettua historiaa. Tiivistä Tämä |
Jupiter on aurinkokunnan suurin planeetta ja viides Auringosta. Se on kaasujättiläinen, jonka massa on 1/1000 Auringon massasta, mutta se on painavampi kuin kaikki muut planeetat yhteensä. Muinaiset sivilisaatiot ovat tunteneet Jupiterin pitkään, ja se näkyy helposti yötaivaalla. |
| 1 | Jupiter on viides planeetta Auringosta ja suurin planeetta aurinkokunnassa. Se on kaasujättiläinen, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa kaikkien muiden aurinkokunnan planeettojen yhteenlaskettu massa. Jupiter on yksi kirkkaimmista paljain silmin näkyvistä kohteista yötaivaalla, ja se on ollut tunnettu muinaisista sivilisaatioista lähtien, 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 kaikkien muiden planeettojen yhteenlaskettu massa. Se on helposti paljain silmin nähtävissä ja tunnettu jo muinaisista ajoista lähtien. |
| 2 | Jupiter on viides planeetta Auringosta ja suurin planeetta aurinkokunnassa. Se on kaasujättiläinen, jonka massa on tuhannesosa Auringon massasta, mutta kaksi ja puoli kertaa kaikkien muiden aurinkokunnan planeettojen yhteenlaskettu massa. Jupiter on yksi kirkkaimmista paljain silmin näkyvistä kohteista yötaivaalla, ja se on ollut tunnettu muinaisista sivilisaatioista lähtien, jo ennen kirjoitettua historiaa. Tiivistä tämä 3 tärkeintä oppimaamme asiaa: |
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 paljain silmin nähtävissä jo muinaisista ajoista lähtien ... |
Kehotemalli on ennalta määritelty kehotteen resepti, joka voidaan tallentaa ja käyttää uudelleen tarpeen mukaan, jotta käyttäjäkokemukset olisivat johdonmukaisempia laajassa mittakaavassa. Yksinkertaisimmillaan se on vain kokoelma kehotteiden esimerkkejä, kuten tämä OpenAI:n esimerkki, joka sisältää sekä interaktiiviset kehotekomponentit (käyttäjän ja järjestelmän viestit) että API-pohjaisen pyyntömuodon - tukemaan uudelleenkäyttöä.
Monimutkaisemmassa muodossaan, kuten tämä LangChain-esimerkki, 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 dynaamiseksi luomiseksi. Tämä mahdollistaa uudelleenkäytettävien kehotteiden kirjaston luomisen, joita voidaan käyttää johdonmukaisten käyttäjäkokemusten ohjelmalliseen tuottamiseen laajassa mittakaavassa.
Lopulta mallien todellinen arvo piilee mahdollisuudessa luoda ja julkaista kehotekirjastoja tiettyihin sovellusalueisiin - jolloin kehotemalli on nyt optimoitu heijastamaan sovelluskohtaista kontekstia tai esimerkkejä, jotka tekevät vastauksista kohdeyleisölle merkityksellisempiä ja tarkempia. Prompts For Edu -tietovarasto on hyvä esimerkki tästä lähestymistavasta, sillä se kokoaa kirjaston kehotteita koulutuksen alalle painottaen keskeisiä tavoitteita, kuten oppituntien suunnittelua, opetussuunnitelman laatimista, opiskelijoiden ohjausta jne.
Jos ajattelemme kehotteen rakentamista tehtävänannon (tehtävä) ja kohteen (ensisijainen sisältö) yhdistelmänä, niin toissijainen sisältö on kuin lisäkonteksti, jonka tarjoamme vaikuttaaksemme tulokseen jollain tavalla. Se voi olla hienosäätöparametreja, muotoiluohjeita, aiheiden luokitteluja jne., jotka voivat auttaa mallia räätälöimään vastauksensa vastaamaan haluttuja käyttäjätavoitteita tai -odotuksia.
Esimerkiksi: Kun käytettävissä on kurssikatalogi, joka sisältää laajasti metatietoja (nimi, kuvaus, taso, metatunnisteet, opettaja jne.) kaikista opetussuunnitelman kursseista:
- voimme määritellä tehtävänannon "tiivistä syksyn 2023 kurssikatalogi"
- voimme käyttää ensisijaista sisältöä tarjoamaan muutamia esimerkkejä halutusta lopputuloksesta
- voimme käyttää toissijaista sisältöä tunnistamaan viisi tärkeintä kiinnostavaa "tunnistetta".
Nyt malli voi tarjota tiivistelmän esimerkkien osoittamassa muodossa - mutta jos tuloksessa on useita tunnisteita, se voi priorisoida toissijaisessa sisällössä tunnistetut viisi tärkeintä tunnistetta.
Nyt kun tiedämme, miten kehotteita voidaan rakentaa, voimme alkaa miettiä, miten ne voidaan suunnitella parhaita käytäntöjä noudattaen. Voimme ajatella tätä kahdessa osassa - oikean ajattelutavan omaksumisessa ja oikeiden tekniikoiden soveltamisessa.
Kehotetekniikat perustuvat kokeiluun ja erehdykseen, joten pidä mielessä kolme laajaa ohjenuoraa:
-
Toimialan ymmärrys on tärkeää. Vastausten tarkkuus ja merkityksellisyys riippuvat siitä toimialasta, jolla sovellus tai käyttäjä toimii. Käytä intuitiotasi ja toimialan asiantuntemustasi mukauttaaksesi tekniikoita edelleen. Määrittele esimerkiksi toimialakohtaisia persoonallisuuksia järjestelmäkehotteissasi tai käytä toimialakohtaisia malleja käyttäjäkehotteissasi. Tarjoa toissijaista sisältöä, joka heijastaa toimialakohtaisia konteksteja, tai käytä toimialakohtaisia vihjeitä ja esimerkkejä ohjataksesi mallia kohti tuttuja käyttötapoja.
-
Mallin ymmärrys on tärkeää. Tiedämme, että mallit ovat luonteeltaan stokastisia. Mutta mallien toteutukset voivat myös vaihdella käyttämänsä koulutusdatan (ennalta koulutettu tieto), tarjoamiensa ominaisuuksien (esim. API:n tai SDK:n kautta) ja sen sisällön tyypin mukaan, johon ne on optimoitu (esim. koodi vs. kuvat vs. teksti). Ymmärrä käyttämäsi mallin vahvuudet ja rajoitukset, ja käytä tätä tietoa priorisoidaksesi tehtäviä tai rakentaaksesi räätälöityjä malleja, jotka on optimoitu mallin kykyjen mukaan.
-
Iterointi ja validointi ovat tärkeitä. Mallit kehittyvät nopeasti, samoin kuin kehotetekniikat. Toimialan asiantuntijana sinulla voi olla muuta kontekstia tai kriteerejä, jotka koskevat juuri sinun sovellustasi, mutta eivät välttämättä koske laajempaa yhteisöä. Käytä kehotetekniikoita ja -työkaluja "käynnistääksesi" kehotteen rakentamisen, sitten iteroi ja validoi tulokset oman intuitiosi ja toimialan asiantuntemuksesi avulla. Tallenna oivalluksesi ja luo tietopohja (esim. kehotekirjastoja), joita muut voivat käyttää uutena lähtökohtana nopeampaan iterointiin tulevaisuudessa.
Tarkastellaan nyt yleisiä parhaita käytäntöjä, joita suosittelevat OpenAI ja Azure OpenAI -käytännön asiantuntijat.
| Mitä | Miksi |
|---|---|
| Arvioi uusimmat mallit. | Uusilla mallisukupolvilla on todennäköisesti parannettuja ominaisuuksia ja laatua - mutta ne voivat myös aiheuttaa korkeampia kustannuksia. Arvioi niiden vaikutus ja tee sitten siirtymispäätökset. |
| Erottele ohjeet ja konteksti | Tarkista, määritteleekö mallisi/palveluntarjoajasi erottimia, jotka erottavat ohjeet, ensisijaisen ja toissijaisen sisällön selkeämmin. Tämä voi auttaa malleja määrittämään tarkemmin painoarvot tokeneille. |
| Ole tarkka ja selkeä | Anna enemmän yksityiskohtia halutusta kontekstista, lopputuloksesta, pituudesta, muodosta, tyylistä jne. Tämä parantaa sekä vastausten laatua että johdonmukaisuutta. Tallenna reseptit uudelleenkäytettäviin malleihin. |
| Ole kuvaileva, käytä esimerkkejä | Mallit voivat reagoida paremmin "näytä ja kerro" -lähestymistapaan. Aloita zero-shot-lähestymistavalla, jossa annat sille ohjeen (mutta ei esimerkkejä), ja kokeile sitten few-shot-lähestymistapaa, jossa annat muutamia esimerkkejä halutusta lopputuloksesta. Käytä analogioita. |
| Käytä vihjeitä aloittaaksesi vastaukset | Ohjaa mallia kohti haluttua lopputulosta antamalla sille joitakin johtolauseita tai -sanoja, joita se voi käyttää vastauksen lähtökohtana. |
| Toista tarvittaessa | Joskus sinun täytyy toistaa itseäsi mallille. Anna ohjeet ennen ja jälkeen ensisijaisen sisällön, käytä ohjetta ja vihjettä jne. Iteroi ja validoi nähdäksesi, mikä toimii. |
| Järjestyksellä on väliä | Tiedon esittämisjärjestys mallille voi vaikuttaa tulokseen, jopa oppimisesimerkeissä, kiitos tuoreusvinouman. Kokeile eri vaihtoehtoja nähdäksesi, mikä toimii parhaiten. |
| Anna mallille "pakotie" | Anna mallille varavaihtoehto, jonka se voi tarjota, jos se ei pysty suorittamaan tehtävää jostain syystä. Tämä voi vähentää mallien mahdollisuutta tuottaa vääriä tai keksittyjä vastauksia. |
Kuten minkä tahansa parhaan käytännön kohdalla, muista, että kokemuksesi voi vaihdella mallin, tehtävän ja toimialan mukaan. Käytä näitä lähtökohtana ja iteroi löytääksesi, mikä toimii parhaiten sinulle. Arvioi jatkuvasti kehotetekniikoiden prosessiasi, kun uusia malleja ja työkaluja tulee saataville, keskittyen prosessin skaalautuvuuteen ja vastausten laatuun.
Onnittelut! Olet päässyt oppitunnin loppuun! Nyt on aika testata joitakin näistä konsepteista ja tekniikoista todellisten esimerkkien avulla!
Tehtävää varten käytämme Jupyter Notebookia, jossa voit suorittaa harjoituksia interaktiivisesti. Voit myös laajentaa Notebookia omilla Markdown- ja koodisoluillasi tutkiaksesi ideoita ja tekniikoita itsenäisesti.
- (Suositeltu) Käynnistä GitHub Codespaces
- (Vaihtoehtoisesti) Kloonaa repo paikalliselle laitteellesi ja käytä sitä Docker Desktopin kanssa
- (Vaihtoehtoisesti) Avaa Notebook suosimassasi Notebook-ympäristössä.
- Kopioi
.env.copy-tiedosto reposta.env-tiedostoksi ja täytäAZURE_OPENAI_API_KEY,AZURE_OPENAI_ENDPOINTjaAZURE_OPENAI_DEPLOYMENTarvot. Palaa Learning Sandbox -osioon oppiaksesi lisää.
- Valitse ajonaikainen ydin. Jos käytät vaihtoehtoja 1 tai 2, valitse yksinkertaisesti oletuksena oleva Python 3.10.x -ydin, jonka kehityskontti tarjoaa.
Olet valmis suorittamaan harjoitukset. Huomaa, että tässä ei ole oikeita tai vääriä vastauksia - vain vaihtoehtojen tutkimista kokeilemalla ja erehtymällä sekä intuition rakentamista siitä, mikä toimii tietylle mallille ja sovellusalueelle.
Tästä syystä tässä oppitunnissa ei ole koodiratkaisusegmenttejä. Sen sijaan Notebook sisältää Markdown-soluja otsikolla "Oma ratkaisu:", joka näyttää yhden esimerkkituloksen viitteeksi.
Mikä seuraavista on hyvä kehotus, joka noudattaa kohtuullisia parhaita käytäntöjä?
- Näytä minulle kuva punaisesta autosta
- Näytä minulle kuva punaisesta Volvo-merkkisestä XC90-mallin autosta, joka on pysäköity kallion viereen auringonlaskun aikaan
- Näytä minulle kuva punaisesta Volvo-merkkisestä XC90-mallin autosta
V: 2, se on paras kehotus, koska se antaa yksityiskohtia "mitä" ja menee tarkempiin yksityiskohtiin (ei vain mikä tahansa auto, vaan tietty merkki ja malli), ja se myös kuvailee yleistä ympäristöä. 3 on seuraavaksi paras, koska se sisältää myös paljon kuvausta.
Kokeile hyödyntää "vihje"-tekniikkaa kehotteella: Täydennä lause "Näytä minulle kuva punaisesta Volvo-merkkisestä ". Mitä se vastaa, ja miten voisit parantaa sitä?
Haluatko oppia lisää erilaisista kehotetekniikoista? Siirry jatko-opiskelusivulle löytääksesi muita loistavia resursseja tästä aiheesta.
Siirry oppituntiin 5, jossa tarkastelemme edistyneitä kehotetekniikoita!
Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Tärkeissä tiedoissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.







