AI serija intervjua 12: Kako optimizirati prompt?
Optimizacija prompta (Prompt Engineering / Optimization) je ključna vještina da se veliki jezički model "sluša", posebno u RAG sistemima, direktno određuje da li će model vjerno slijediti pretraženi sadržaj, izbjeći halucinacije i ispoštovati format izlaza.
1. Ključni principi optimizacije prompta
- Jasnoća > složenost: Jednostavne, jasne instrukcije su često efikasnije od otmjenih lanaca misli.
- Dovoljno ograničenja: Jasno recite modelu "šta smije, a šta ne smije raditi".
- Pružite primjere: Few-shot je stabilniji od Zero-shot.
- Provjerljivost: Neka model iznese reference ili povjerenje, radi lakše procjene.
- Iterativna optimizacija: Počnite od osnovne linije, mijenjajte samo jednu varijablu odjednom i uporedite rezultate.
2. Konkretne tehnike optimizacije (od lakšeg ka težem)
1. Postavka uloge (System Prompt)
Ti si profesionalni asistent za korisničku podršku. Odgovaraj samo na osnovu [Referentnih materijala] datih ispod.
Ako ne znaš odgovor, reci direktno "Nema relevantnih informacija u materijalima", ne izmišljaj.
- Uloga: Postavljanje granica i tona.
- Tačke podešavanja: Ton (profesionalno/prijateljski), jačina ograničenja (strogo/opušteno).
2. Jasna instrukcija
❌ Loše: "Odgovori na pitanje korisnika."
✅ Dobro: "Odgovori isključivo na osnovu [Referentnih materijala] ispod. Ako referentni materijali ne sadrže odgovor, odgovori 'Ne mogu odgovoriti na ovo pitanje'."
3. Kontrola formata izlaza
Izlaz u sljedećem JSON formatu:
{
"answer": "tvoj odgovor",
"confidence": "visok/srednji/nizak",
"sources": [1, 3]
}
- Namjena: Olakšava parsiranje, referenciranje i debagiranje.
4. Few-shot primjeri (veoma efikasni)
Primjer 1:
Pitanje: Koliko dana godišnjeg odmora?
Referentni materijal: Pravilo godišnjeg odmora: 1 godina = 5 dana, 10 godina = 10 dana.
Odgovor: 1 godina = 5 dana, 10 godina = 10 dana.
Primjer 2:
Pitanje: Kako se obračunava prekovremeni rad?
Referentni materijal: Radnim danom 1.5x, vikendom 2x.
Odgovor: Radnim danom 1.5x, vikendom 2x.
Sada odgovori:
Pitanje: {korisničko pitanje}
Referentni materijal: {pretraženi sadržaj}
Odgovor:
- Savjet: Primjeri trebaju pokriti različite nivoe težine, najbolje uključiti jedan primjer "ne mogu odgovoriti".
5. Obavezno citiranje
Na kraju odgovora označi broj izvora sa [citation:X]. Na primjer: "Godišnji odmor je 5 dana[citation:1]."
Ako koristiš više izvora, označi svaki posebno.
6. Postavljanje praga za odbijanje odgovora
- Čvrsto ograničenje: "Ako su referentni materijali potpuno nepovezani s pitanjem, odgovori 'Materijali nisu relevantni'."
- Meko ograničenje: Kombinuj sa skorom povjerenja pretrage; ako je ispod praga, automatski idi na granu odbijanja.
7. Lanac misli (Chain-of-Thought) za višestepeno zaključivanje
Pitanje: Ko je šef Zhang Sana?
Koraci: 1. Prvo pronađi odjel Zhang Sana. 2. Zatim pronađi rukovodioca tog odjela. 3. Daj konačan odgovor.
Razmišljaj korak po korak, a zatim iznesi odgovor.
8. Negativne instrukcije (Negative Prompting)
Ne izmišljaj odgovore. Ne koristi nejasne riječi poput "možda", "vjerovatno". Ne iznosi brojeve koji nisu u referentnim materijalima.
3. Kako ocijeniti kvalitet prompta?
| Indikator | Značenje | Kako mjeriti |
|---|---|---|
| Vjernost | Da li je odgovor striktno baziran na referentnim materijalima | Ručno ili RAGAS Faithfulness |
| Tačnost odbijanja | Da li se odbija kada treba | Izračunaj na test setu bez odgovora |
| Stopa praćenja formata | Da li je izlaz u JSON/citati po zahtjevu | RegEx provjera |
| Zadovoljstvo korisnika | Da li je odgovor koristan | Online povratne informacije / A/B testiranje |
Preporuka: Pripremi mali test set (20-50 rubnih slučajeva), pokreni ga nakon svake promjene prompta i zabilježi promjene.
4. Uobičajene zamke i smjerovi optimizacije
| Problem | Mogući uzrok | Metoda podešavanja |
|---|---|---|
| Model ignoriše referentne materijale, odgovara sam | Instrukcije nisu dovoljno jake | Promijeni u "isključivo na osnovu" i koristi few-shot za prikaz odbijanja |
| Model uvijek kaže "ne znam" | Prag odbijanja previsok | Smanji prag ili provjeri kvalitet pretrage |
| Format izlaza je neuredan, nije JSON | Instrukcije nejasne | Dodaj stroge primjere formata ili koristi function calling |
| Odgovor predugačak/prekratak | Nije specificirana dužina | "Odgovori u najviše 3 rečenice" |
| Greška u višestepenom zaključivanju | Model nema dovoljno sposobnosti zaključivanja | Traži postepeno zaključivanje ili koristi jači model |
| Halucinacije brojeva/datuma | Model se oslanja na vlastito znanje | Naglasi "Ne koristi nijedan broj iz svog pamćenja, gledaj samo u materijale" |
评论
暂无已展示的评论。
发表评论(匿名)