AI-sarjan haastattelu 12: Promptin optimointi
Promptin optimointi (Prompt Engineering / Optimization) on keskeinen taito suurten kielimallien "tottelevaisuuden" saavuttamiseksi. Erityisesti RAG-järjestelmissä se määrittää, noudattaako malli uskollisesti haettua sisältöä, välttääkö se hallusinaatioita ja tuottaako se oikeassa muodossa olevia tulosteita.
1. Promptin optimoinnin keskeiset periaatteet
- Selkeys > monimutkaisuus: Yksinkertaiset suorat ohjeet ovat usein tehokkaampia kuin hienostuneet ajatusketjut.
- Anna riittävästi rajoitteita: Kerro mallille selkeästi "mitä se saa tehdä ja mitä ei".
- Tarjoa esimerkkejä: Few-shot on vakaampi kuin zero-shot.
- Todennettavuus: Pyydä mallia viittaamaan lähteisiin tai ilmoittamaan luottamustaso, jotta lopputulosta voidaan arvioida.
- Iteratiivinen optimointi: Aloita perustasosta, muuta vain yhtä muuttujaa kerrallaan ja vertaa tuloksia.
2. Erityisiä optimointitekniikoita (helposta vaikeaan)
1. Roolin asetus (System Prompt)
Olet ammattimainen asiakaspalveluavustaja. Voit vastata kysymyksiin vain alla olevien [viitemateriaalien] perusteella.
Jos et tiedä vastausta, sano suoraan "Tiedoissa ei ole aiheeseen liittyviä tietoja", älä keksi itse.
- Vaikutus: Asettaa rajat ja sävyn.
- Optimointikohta: Sävy (ammattimainen/ystävällinen), rajoitteiden voimakkuus (tiukka/joustava).
2. Selkeät ohjeet
❌ Huono: "Vastaa käyttäjän kysymykseen."
✅ Hyvä: "Ainoastaan alla olevan [viitemateriaalin] perusteella. Jos viitemateriaali ei sisällä vastausta, sano 'En voi vastata tähän kysymykseen'."
3. Tulosteen muodon hallinta
Tulosta seuraavassa JSON-muodossa:
{
"answer": "vastauksesi",
"confidence": "korkea/keskitaso/matala",
"sources": [1, 3]
}
- Käyttötarkoitus: Helpottaa loppukäyttäjän jäsentämistä, viittaamista ja virheenkorjausta.
4. Few-shot -esimerkit (erittäin tehokas)
Esimerkki 1:
Kysymys: Kuinka monta lomapäivää on?
Viitemateriaali: Lomapäiväsäännöt: 1 vuoden täytyttyä 5 päivää, 10 vuoden täytyttyä 10 päivää.
Vastaus: 1 vuoden täytyttyä 5 päivää, 10 vuoden täytyttyä 10 päivää.
Esimerkki 2:
Kysymys: Miten ylityökorvaus lasketaan?
Viitemateriaali: Arkipäivän ylityö 1,5-kertainen, viikonloppu 2-kertainen.
Vastaus: Arkipäivä 1,5-kertainen, viikonloppu 2-kertainen.
Vastaa nyt:
Kysymys: {käyttäjän kysymys}
Viitemateriaali: {haettu sisältö}
Vastaus:
- Vinkki: Esimerkkien tulisi kattaa eri vaikeustasoja, ja on hyvä sisällyttää yksi esimerkki, jossa ei voida vastata.
5. Pakotetut viittaukset
Merkitse lähteen numero vastauksen loppuun muodossa [citation:X]. Esimerkiksi: "Lomapäiviä on 5 [citation:1]."
Jos käytetään useita lähteitä, merkitse ne erikseen.
6. Kieltäytymiskynnyksen asettaminen
- Kova rajoite: "Jos viitemateriaali on täysin epäolennainen kysymykseen nähden, sano 'Materiaali ei liity aiheeseen'."
- Pehmeä rajoite: Yhdistä haun luottamuspistemäärä; jos se on alle kynnyksen, siirry automaattisesti kieltäytymishaaraan.
7. Ajatusketju (Chain-of-Thought) monivaiheiseen päättelyyn
Kysymys: Kuka on Zhang Sanin pomo?
Vaiheet: 1. Selvitä ensin Zhang Sanin osasto. 2. Selvitä sitten osaston johtaja. 3. Anna lopullinen vastaus.
Mieti vaiheittain ja tulosta sitten.
8. Kielto-ohjeet (Negative Prompting)
Älä keksi vastauksia. Älä käytä epämääräisiä sanoja kuten "mahdollisesti" tai "ehkä". Älä tulosta mitään lukuja, jotka eivät ole viitemateriaalissa.
3. Miten arvioida promptin hyvyyttä?
| Mittari | Merkitys | Miten mitataan |
|---|---|---|
| Uskollisuus | Onko vastaus tiukasti viitemateriaalin mukainen? | Manuaalinen tai RAGAS:n Faithfulness |
| Kieltäytymistarkkuus | Kieltäytyykö malli kun sen pitäisi? | Lasketaan testijoukossa ilman vastauksia |
| Muodon noudattaminen | Tuottaako malli JSON-muodon/viittaukset vaaditusti? | Regex-tarkistus |
| Käyttäjätyytyväisyys | Onko vastaus hyödyllinen? | Online-palaute / A/B-testaus |
Ehdotus: Valmistele pieni testijoukko (20-50 reunatapausta), aja se jokaisen promptin muutoksen jälkeen ja kirjaa muutokset.
4. Yleisiä ongelmia ja optimointisuuntia
| Ongelma | Mahdollinen syy | Optimointitapa |
|---|---|---|
| Malli jättää huomiotta viitemateriaalin ja vastaa itse | Ohje ei ole tarpeeksi vahva | Muuta muotoon "Ainoastaan alla olevan materiaalin perusteella" ja käytä few-shot -esimerkkejä kieltäytymisestä |
| Malli sanoo aina "en tiedä" | Kieltäytymiskynnys liian korkea | Laske kynnystä tai tarkista haun laatu |
| Tulosteen muoto on sekaisin, ei JSON:n mukaan | Ohje on epäselvä | Lisää tiukka muotoesimerkki tai käytä function calling -toimintoa |
| Vastaus liian pitkä/lyhyt | Pituutta ei ole määritelty | "Vastaa enintään kolmella virkkeellä" |
| Monivaiheinen päättely epäonnistuu | Mallin päättelykyky ei riitä | Pyydä esittämään vaiheittainen päättely tai vaihda vahvempaan malliin |
| Hallusinaatioita numeroissa/päivämäärissä | Malli luottaa omaan tietoonsa | Korosta "Älä käytä mitään muistamiasi lukuja, katso vain materiaalia" |
评论
暂无已展示的评论。
发表评论(匿名)