Skip to content

Latest commit

 

History

History
455 lines (292 loc) · 47.7 KB

File metadata and controls

455 lines (292 loc) · 47.7 KB

Základy Prompt Engineeringu

Prompt Engineering Fundamentals

Úvod

Tento modul sa venuje základným pojmom a technikám na vytváranie efektívnych promptov pre generatívne AI modely. Záleží aj na tom, ako svoj prompt pre LLM napíšete. Dobre premyslený prompt môže viesť k lepšej kvalite odpovede. Ale čo presne znamenajú pojmy ako prompt a prompt engineering? A ako môžem zlepšiť vstupný prompt, ktorý posielam LLM? Na tieto otázky sa pokúsime odpovedať v tejto a nasledujúcej kapitole.

Generatívna AI dokáže vytvárať nový obsah (napr. text, obrázky, zvuk, kód atď.) na základe požiadaviek používateľa. Dosahuje to pomocou veľkých jazykových modelov ako je séria GPT ("Generative Pre-trained Transformer") od OpenAI, ktoré sú trénované na prácu s prirodzeným jazykom a kódom.

Používatelia môžu s týmito modelmi komunikovať cez známe rozhrania ako chat, bez potreby technických znalostí či školení. Modely sú prompt-based – používateľ pošle textový vstup (prompt) a dostane AI odpoveď (completion). Môže potom s AI viesť iteratívny "rozhovor", v niekoľkých krokoch prompt upravovať, kým odpoveď nezodpovedá jeho očakávaniam.

"Prompt" sa tak stáva hlavným programovacím rozhraním pre generatívne AI aplikácie, určuje, čo má model robiť a ovplyvňuje kvalitu odpovedí. "Prompt Engineering" je rýchlo rastúca oblasť, ktorá sa zameriava na návrh a optimalizáciu promptov, aby boli odpovede konzistentné a kvalitné vo veľkom rozsahu.

Ciele lekcie

V tejto lekcii sa naučíme, čo je Prompt Engineering, prečo je dôležitý a ako môžeme vytvárať efektívnejšie prompty pre konkrétny model a cieľ aplikácie. Pochopíme základné pojmy a odporúčané postupy pre prompt engineering – a zoznámime sa s interaktívnym prostredím Jupyter Notebooks "sandbox", kde si tieto koncepty vyskúšame na reálnych príkladoch.

Na konci tejto lekcie budeme vedieť:

  1. Vysvetliť, čo je prompt engineering a prečo je dôležitý.
  2. Opísať z čoho sa skladá prompt a ako sa jednotlivé časti používajú.
  3. Naučiť sa najlepšie postupy a techniky pre prompt engineering.
  4. Aplikovať naučené techniky na reálnych príkladoch pomocou OpenAI endpointu.

Kľúčové pojmy

Prompt Engineering: Prax navrhovania a vylepšovania vstupov, ktoré vedú AI modely k požadovaným výstupom. Tokenizácia: Proces rozdelenia textu na menšie jednotky, tzv. tokeny, ktoré model dokáže spracovať a pochopiť. Instruction-Tuned LLMs: Veľké jazykové modely (LLM), ktoré boli doladené špecifickými inštrukciami na zlepšenie presnosti a relevantnosti odpovedí.

Učebný sandbox

Prompt engineering je zatiaľ skôr umenie než veda. Najlepší spôsob, ako si naň vybudovať cit, je veľa trénovať a skúšať metódu pokus-omyl, ktorá kombinuje znalosti z danej oblasti s odporúčanými technikami a optimalizáciami pre konkrétny model.

Jupyter Notebook, ktorý túto lekciu sprevádza, poskytuje sandbox prostredie, kde si môžete všetko vyskúšať – priebežne alebo v rámci záverečnej úlohy. Na spustenie cvičení budete potrebovať:

  1. Azure OpenAI API kľúč – endpoint služby s nasadeným LLM.
  2. Python runtime – prostredie, v ktorom notebook spustíte.
  3. Lokálne environmentálne premennédokončite teraz kroky v SETUP, aby ste boli pripravení.

Notebook obsahuje úvodné cvičenia – ale odporúčame vám pridať si vlastné sekcie Markdown (popis) a Code (prompt požiadavky), aby ste si vyskúšali ďalšie príklady alebo nápady – a vybudovali si cit pre návrh promptov.

Ilustrovaný sprievodca

Chcete si najprv urobiť prehľad, čo táto lekcia pokrýva? Pozrite si tento ilustrovaný sprievodca, ktorý vám ukáže hlavné témy a kľúčové poznatky, na ktoré sa v každej z nich zamerať. Cesta lekciou vás prevedie od pochopenia základných pojmov a výziev až po ich riešenie pomocou relevantných techník a odporúčaných postupov prompt engineeringu. Upozorňujeme, že sekcia "Pokročilé techniky" v tomto sprievodcovi odkazuje na obsah, ktorý bude pokrytý v nasledujúcej kapitole tohto kurzu.

Ilustrovaný sprievodca Prompt Engineeringom

Náš startup

Poďme sa teraz pozrieť, ako táto téma súvisí s naším startupovým cieľom priniesť AI inovácie do vzdelávania. Chceme vytvárať AI aplikácie pre personalizované vzdelávanie – zamyslime sa teda, ako by rôzni používatelia našej aplikácie mohli "navrhovať" prompty:

  • Administrátori môžu požiadať AI, aby analyzovala dáta o učebných osnovách a identifikovala medzery v pokrytí. AI môže výsledky zhrnúť alebo vizualizovať pomocou kódu.
  • Učitelia môžu požiadať AI, aby vytvorila plán hodiny pre konkrétnu cieľovú skupinu a tému. AI pripraví personalizovaný plán v požadovanom formáte.
  • Študenti môžu požiadať AI, aby ich doučovala v náročnom predmete. AI ich môže viesť lekciami, tipmi a príkladmi prispôsobenými ich úrovni.

To je len špička ľadovca. Pozrite si Prompts For Education – open-source knižnicu promptov zostavenú odborníkmi na vzdelávanie – a získajte širší prehľad o možnostiach! Vyskúšajte niektoré z týchto promptov v sandboxe alebo v OpenAI Playground a sledujte, čo sa stane!

Čo je Prompt Engineering?

Túto lekciu sme začali definovaním Prompt Engineeringu ako procesu navrhovania a optimalizácie textových vstupov (promptov) s cieľom dosiahnuť konzistentné a kvalitné odpovede (completions) pre konkrétny cieľ aplikácie a model. Môžeme si to predstaviť ako dvojkrokový proces:

  • navrhnutie počiatočného promptu pre daný model a cieľ
  • postupné vylepšovanie promptu, aby sa zlepšila kvalita odpovede

Je to nevyhnutne proces pokus-omyl, ktorý vyžaduje intuíciu a úsilie používateľa na dosiahnutie optimálnych výsledkov. Prečo je to dôležité? Aby sme na to odpovedali, musíme najprv pochopiť tri pojmy:

  • Tokenizácia = ako model "vidí" prompt
  • Základné LLM = ako základný model "spracováva" prompt
  • Instruction-Tuned LLMs = ako model dokáže vnímať "úlohy"

Tokenizácia

LLM vníma prompty ako sekvenciu tokenov, pričom rôzne modely (alebo ich verzie) môžu ten istý prompt tokenizovať rôzne. Keďže LLM sú trénované na tokenoch (nie na surovom texte), spôsob tokenizácie promptu priamo ovplyvňuje kvalitu vygenerovanej odpovede.

Aby ste získali predstavu, ako tokenizácia funguje, vyskúšajte nástroje ako OpenAI Tokenizer zobrazený nižšie. Skopírujte svoj prompt – a sledujte, ako sa rozdelí na tokeny, pričom si všímajte, ako sa spracúvajú medzery a interpunkcia. Upozorňujeme, že tento príklad ukazuje starší LLM (GPT-3) – pri novšom modeli môžu byť výsledky iné.

Tokenizácia

Pojem: Základné modely

Keď je prompt tokenizovaný, hlavnou úlohou "základného LLM" (alebo Foundation modelu) je predpovedať ďalší token v sekvencii. Keďže LLM sú trénované na obrovských textových datasetoch, majú dobrý prehľad o štatistických vzťahoch medzi tokenmi a dokážu túto predikciu urobiť s určitou istotou. Neznamená to však, že rozumejú významu slov v promptoch alebo tokenoch; vnímajú len vzory, ktoré dokážu "doplniť" ďalšou predikciou. Môžu pokračovať v predikcii sekvencie, kým ich nezastaví používateľ alebo nejaká vopred stanovená podmienka.

Chcete vidieť, ako funguje prompt-based completion? Zadajte vyššie uvedený prompt do Azure OpenAI Studio Chat Playground s predvolenými nastaveniami. Systém je nastavený tak, aby prompty vnímal ako žiadosti o informácie – mali by ste teda dostať odpoveď, ktorá zodpovedá tomuto kontextu.

Čo ak však používateľ chce niečo konkrétne, čo spĺňa určité kritériá alebo cieľ úlohy? Tu prichádzajú na rad instruction-tuned LLM.

Base LLM Chat Completion

Pojem: Instruction Tuned LLMs

Instruction Tuned LLM vychádza zo základného modelu a dolaďuje sa pomocou príkladov alebo párov vstup/výstup (napr. viacotáčkové "správy"), ktoré môžu obsahovať jasné inštrukcie – a AI sa snaží tieto inštrukcie splniť.

Používajú sa na to techniky ako Reinforcement Learning with Human Feedback (RLHF), ktoré model trénujú nasledovať inštrukcie a učiť sa zo spätnej väzby, aby odpovede boli vhodnejšie pre praktické použitie a relevantnejšie pre ciele používateľa.

Vyskúšajme si to – použite vyššie uvedený prompt, ale teraz zmeňte system message a zadajte nasledujúcu inštrukciu ako kontext:

Zhrň obsah, ktorý dostaneš, pre druháka na základnej škole. Výsledok nech je jeden odsek s 3-5 odrážkami.

Vidíte, ako je výsledok teraz prispôsobený požadovanému cieľu a formátu? Učiteľ môže túto odpoveď priamo použiť vo svojich slidoch pre danú triedu.

Instruction Tuned LLM Chat Completion

Prečo potrebujeme Prompt Engineering?

Keď už vieme, ako LLM spracúvajú prompty, poďme sa pozrieť prečo prompt engineering potrebujeme. Odpoveď spočíva v tom, že súčasné LLM prinášajú viacero výziev, ktoré sťažujú dosiahnutie spoľahlivých a konzistentných odpovedí bez toho, aby sme venovali úsilie návrhu a optimalizácii promptov. Napríklad:

  1. Odpovede modelu sú stochastické. Ten istý prompt pravdepodobne vyprodukuje rôzne odpovede pri rôznych modeloch alebo verziách modelu. A dokonca aj pri tom istom modeli v rôznych časoch môžu byť výsledky odlišné. Techniky prompt engineeringu nám môžu pomôcť tieto rozdiely minimalizovať lepším nastavením promptov.

  2. Modely môžu vymýšľať odpovede. Modely sú predtrénované na veľkých, ale konečných datasetoch, takže im chýbajú znalosti o témach mimo tohto rozsahu. Výsledkom môžu byť odpovede, ktoré sú nepresné, vymyslené alebo priamo protirečia známym faktom. Prompt engineering techniky pomáhajú používateľom takéto výmysly odhaliť a zmierniť, napríklad žiadosťou o citácie alebo vysvetlenie.

  3. Schopnosti modelov sa líšia. Novšie modely alebo generácie modelov majú bohatšie možnosti, ale prinášajú aj špecifické zvláštnosti a kompromisy v cene a zložitosti. Prompt engineering nám umožňuje vytvárať odporúčané postupy a workflowy, ktoré abstrahujú rozdiely a prispôsobujú sa špecifikám modelov škálovateľným a plynulým spôsobom.

Vyskúšajte si to v OpenAI alebo Azure OpenAI Playground:

  • Použite ten istý prompt s rôznymi LLM nasadeniami (napr. OpenAI, Azure OpenAI, Hugging Face) – všimli ste si rozdiely?
  • Použite ten istý prompt opakovane s tým istým LLM nasadením (napr. Azure OpenAI playground) – ako sa líšili tieto odpovede?

Príklad fabrikácie

V tomto kurze používame pojem "fabrikácia" na označenie javu, keď LLM niekedy generujú fakticky nesprávne informácie v dôsledku obmedzení v trénovaní alebo iných faktorov. Možno ste sa s tým stretli aj pod pojmom "halucinácie" v populárnych článkoch alebo vedeckých prácach. Odporúčame však používať pojem "fabrikácia", aby sme nepripisovali stroju ľudské vlastnosti. Zároveň to podporuje zásady zodpovednej AI aj z hľadiska terminológie, keďže niektoré výrazy môžu byť v určitých kontextoch považované za nevhodné alebo vylučujúce.

Chcete vidieť, ako fabrikácie fungujú? Skúste prompt, ktorý AI inštruuje vygenerovať obsah na neexistujúcu tému (aby ste mali istotu, že sa v trénovacom datasete nenachádza). Napríklad – ja som vyskúšal tento prompt:

Výzva: vytvorte plán hodiny o Marťanskej vojne v roku 2076.

Plán hodiny: Marťanská vojna v roku 2076

Ciele hodiny

  • Študenti pochopia hlavné príčiny a dôsledky Marťanskej vojny v roku 2076.
  • Študenti budú schopní identifikovať kľúčové postavy, udalosti a technológie spojené s konfliktom.
  • Študenti budú diskutovať o vplyve vojny na vzťahy medzi Zemou a Marsom.

Úvod (10 minút)

  • Stručné predstavenie Marťanskej vojny v roku 2076.
  • Diskusia: Prečo by mohlo dôjsť ku konfliktu medzi Marsom a Zemou?
  • Otázka pre triedu: Aké faktory by mohli viesť k vojne medzi dvoma planétami?

Hlavná časť (30 minút)

1. Príčiny vojny

  • Politické napätie medzi kolóniami na Marse a vládou na Zemi.
  • Súťaž o zdroje, technológie a nezávislosť.
  • Vývoj nových zbraní a obranných systémov.

2. Priebeh konfliktu

  • Hlavné bitky: Bitka o Olympus Mons, obliehanie kolónie New Horizon.
  • Kľúčové postavy: generál Li Wei, prezidentka Marsu Sofia Torres.
  • Použitie pokročilých technológií: robotické jednotky, orbitálne zbrane.

3. Dôsledky vojny

  • Straty na životoch a materiálne škody.
  • Zmena politickej mapy: vznik nezávislého Marťanského štátu.
  • Dlhodobý vplyv na obchod, diplomaciu a vedecký výskum.

Aktivita (15 minút)

  • Rozdeľte študentov do skupín.
  • Každá skupina vytvorí krátku prezentáciu o jednej z hlavných udalostí vojny.
  • Prezentácie pred triedou, diskusia o rôznych pohľadoch na konflikt.

Záver (5 minút)

  • Zhrnutie hlavných bodov hodiny.
  • Otvorená diskusia: Mohla sa vojna zabrániť? Aké ponaučenia si môžeme vziať do budúcnosti?
  • Domáca úloha: Napíšte krátku esej o tom, ako by ste riešili napätie medzi Marsom a Zemou.

Materiály

  • Mapy Marsu a kolónií
  • Prehľad kľúčových postáv a technológií
  • Chronológia udalostí Marťanskej vojny v roku 2076

Poznámky pre učiteľa

  • Povzbudzujte študentov, aby premýšľali kriticky o príčinách a dôsledkoch vojny.
  • Pripomínajte, že ide o fiktívny konflikt, ale témy sú relevantné aj pre skutočné medzinárodné vzťahy. Webové vyhľadávanie mi ukázalo, že existujú fiktívne diela (napr. televízne seriály alebo knihy) o vojnách na Marse – ale žiadne z roku 2076. Zdravý rozum nám tiež hovorí, že rok 2076 je v budúcnosti a teda nemôže byť spojený so skutočnou udalosťou.

Čo sa teda stane, keď tento prompt zadáme rôznym poskytovateľom LLM?

Odpoveď 1: OpenAI Playground (GPT-35)

Odpoveď 1

Odpoveď 2: Azure OpenAI Playground (GPT-35)

Odpoveď 2

Odpoveď 3: Hugging Face Chat Playground (LLama-2)

Odpoveď 3

Ako sa dalo čakať, každý model (alebo verzia modelu) generuje mierne odlišné odpovede vďaka stochastickému správaniu a rozdielom vo schopnostiach modelov. Napríklad jeden model cieli na žiakov 8. ročníka, zatiaľ čo iný predpokladá stredoškoláka. Všetky tri modely však vytvorili odpovede, ktoré by mohli neinformovaného používateľa presvedčiť, že udalosť bola skutočná.

Techniky prompt engineeringu ako metaprompting a nastavenie teploty môžu do určitej miery znížiť výskyt vymyslených odpovedí modelu. Nové architektúry prompt engineeringu tiež plynulo začleňujú nové nástroje a techniky do promptov, aby zmiernili alebo znížili niektoré z týchto efektov.

Prípadová štúdia: GitHub Copilot

Túto časť uzavrieme pohľadom na to, ako sa prompt engineering využíva v reálnych riešeniach na príklade jednej prípadovej štúdie: GitHub Copilot.

GitHub Copilot je váš „AI párový programátor“ – prevádza textové prompty na doplnenia kódu a je integrovaný priamo do vášho vývojového prostredia (napr. Visual Studio Code) pre plynulý používateľský zážitok. Ako je zdokumentované v sérii blogov nižšie, najskoršia verzia bola založená na modeli OpenAI Codex – inžinieri však rýchlo zistili potrebu model doladiť a vyvinúť lepšie techniky prompt engineeringu na zlepšenie kvality kódu. V júli predstavili vylepšený AI model, ktorý ide nad rámec Codexu a ponúka ešte rýchlejšie návrhy.

Prečítajte si príspevky v poradí, aby ste sledovali ich cestu učenia.

Môžete si tiež prezrieť ich Engineering blog pre ďalšie príspevky ako tento, ktorý ukazuje, ako sa tieto modely a techniky používajú pri vývoji reálnych aplikácií.


Konštrukcia promptov

Videli sme, prečo je prompt engineering dôležitý – teraz si vysvetlíme, ako sa prompty vytvárajú, aby sme mohli posúdiť rôzne techniky pre efektívnejší návrh promptov.

Základný prompt

Začnime základným promptom: textový vstup, ktorý sa pošle modelu bez ďalšieho kontextu. Tu je príklad – keď pošleme prvé slová americkej štátnej hymny do OpenAI Completion API, okamžite dokončí odpoveď ďalšími riadkami, čo ilustruje základné predikčné správanie.

Prompt (Vstup) Doplnenie (Výstup)
Oh say can you see Vyzerá to, že začínate text hymny „The Star-Spangled Banner“, štátnej hymny Spojených štátov. Celý text je ...

Komplexný prompt

Teraz pridajme k základnému promptu kontext a inštrukcie. Chat Completion API nám umožňuje vytvoriť komplexný prompt ako kolekciu správ s:

  • dvojicami vstup/výstup, ktoré odrážajú používateľský vstup a odpoveď asistenta
  • systémovou správou, ktorá nastavuje kontext pre správanie alebo osobnosť asistenta

Požiadavka má teraz tvar nižšie, kde tokenizácia efektívne zachytáva relevantné informácie z kontextu a konverzácie. Zmena systémového kontextu môže mať na kvalitu odpovedí rovnako veľký vplyv ako samotné používateľské vstupy.

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?"}
    ]
)

Inštrukčný prompt

V predchádzajúcich príkladoch bol prompt jednoduchý textový dopyt, ktorý sa dá chápať ako žiadosť o informáciu. Pri inštrukčných promptoch môžeme tento text použiť na podrobnejšie zadanie úlohy a poskytnúť AI lepšie usmernenie. Tu je príklad:

Prompt (Vstup) Doplnenie (Výstup) Typ inštrukcie
Napíš opis občianskej vojny vrátil jednoduchý odsek Jednoduchý
Napíš opis občianskej vojny. Uveď kľúčové dátumy a udalosti a popíš ich význam vrátil odsek a zoznam kľúčových dátumov s popismi Komplexný
Napíš opis občianskej vojny v 1 odseku. Uveď 3 odrážky s kľúčovými dátumami a ich významom. Uveď ďalšie 3 odrážky s kľúčovými historickými osobnosťami a ich prínosom. Výstup vráť ako JSON súbor vrátil rozsiahlejšie detaily v textovom poli, naformátované ako JSON, ktorý môžete skopírovať do súboru a validovať Komplexný. Formátovaný.

Primárny obsah

V predchádzajúcich príkladoch bol prompt stále pomerne otvorený a nechával na LLM, aby rozhodlo, ktorá časť jeho predtrénovaného datasetu je relevantná. Pri návrhovom vzore primárny obsah je vstup rozdelený na dve časti:

  • inštrukcia (akcia)
  • relevantný obsah (ktorý ovplyvňuje akciu)

Tu je príklad, kde inštrukcia znie „zhrň toto v 2 vetách“.

Prompt (Vstup) Doplnenie (Výstup)
Jupiter je piata planéta od Slnka a najväčšia v Slnečnej sústave. Je to plynný obor s hmotnosťou tisícinu hmotnosti Slnka, ale dva a pol krát väčšou ako všetky ostatné planéty Slnečnej sústavy dokopy. Jupiter je jedným z najjasnejších objektov viditeľných voľným okom na nočnej oblohe a je známy starovekým civilizáciám už pred začiatkom písanej histórie. Je pomenovaný po rímskom bohovi Jupiterovi.[19] Pri pohľade zo Zeme môže byť Jupiter dostatočne jasný na to, aby jeho odrazené svetlo vrhalo viditeľné tiene,[20] a v priemere je tretím najjasnejším prirodzeným objektom na nočnej oblohe po Mesiaci a Venuši.
Zhrň toto v 2 krátkych vetách
Jupiter, piata planéta od Slnka, je najväčšia v Slnečnej sústave a patrí medzi najjasnejšie objekty na nočnej oblohe. Je pomenovaný po rímskom bohovi Jupiterovi a je to plynný obor, ktorého hmotnosť je dva a pol krát väčšia ako všetky ostatné planéty dokopy.

Segment primárneho obsahu sa dá využiť rôznymi spôsobmi na efektívnejšie zadávanie inštrukcií:

  • Príklady – namiesto explicitnej inštrukcie modelu, čo má robiť, mu dáte príklady požadovaného výstupu a necháte ho odvodiť vzor.
  • Nápovedy – za inštrukciu pridáte „nápovedu“, ktorá navnadí doplnenie a nasmeruje model k relevantnejšej odpovedi.
  • Šablóny – opakovateľné „recepty“ na prompty s premennými, ktoré môžete prispôsobiť konkrétnym dátam a prípadom použitia.

Poďme si to ukázať v praxi.

Použitie príkladov

Tento prístup spočíva v tom, že modelu „naservírujete“ v primárnom obsahu niekoľko príkladov požadovaného výstupu pre danú inštrukciu a necháte ho odvodiť vzor požadovaného výstupu. Podľa počtu poskytnutých príkladov rozlišujeme zero-shot prompting, one-shot prompting, few-shot prompting atď.

Prompt teraz pozostáva z troch častí:

  • Popis úlohy
  • Niekoľko príkladov požadovaného výstupu
  • Začiatok nového príkladu (ktorý sa stáva implicitným popisom úlohy)
Typ učenia Prompt (Vstup) Doplnenie (Výstup)
Zero-shot "The Sun is Shining". Prelož do španielčiny "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 The player ran the bases => Baseball
The player hit an ace => Tennis
The player hit a six => Cricket
The player made a slam-dunk =>
Basketball

Všimnite si, že pri zero-shot promptingu sme museli poskytnúť explicitnú inštrukciu („Prelož do španielčiny“), ale pri one-shot promptingu sa už inštrukcia odvodí z príkladu. Few-shot príklad ukazuje, že pridaním ďalších príkladov dokážu modely presnejšie odvodiť vzor aj bez ďalších inštrukcií.

Nápovedy v promptoch

Ďalšou technikou využitia primárneho obsahu je poskytnúť nápovedy namiesto príkladov. V tomto prípade modelu jemne naznačíte požadovaný formát odpovede tým, že začnete odpoveď krátkym úryvkom v požadovanom štýle. Model potom „chytí nápovedu“ a pokračuje v rovnakom duchu.

Počet nápoved Prompt (Vstup) Doplnenie (Výstup)
0 Jupiter je piata planéta od Slnka a najväčšia v Slnečnej sústave. Je to plynný obor s hmotnosťou tisícinu hmotnosti Slnka, ale dva a pol krát väčšou ako všetky ostatné planéty Slnečnej sústavy dokopy. Jupiter je jedným z najjasnejších objektov viditeľných voľným okom na nočnej oblohe a je známy starovekým civilizáciám už pred začiatkom písanej histórie.

Zhrňte to | Jupiter je najväčšia planéta v našej Slnečnej sústave a piata od Slnka. Je to plynný obor s hmotnosťou 1/1000 hmotnosti Slnka, ale je ťažšia ako všetky ostatné planéty dokopy. Staroveké civilizácie poznali Jupiter už dávno a je ľahko viditeľný na nočnej oblohe. | | 1 | Jupiter je piata planéta od Slnka a najväčšia v Slnečnej sústave. Je to plynný obor s hmotnosťou tisíciny hmotnosti Slnka, ale dva a pol krát ťažšia ako všetky ostatné planéty dokopy. Jupiter patrí medzi najjasnejšie objekty viditeľné voľným okom na nočnej oblohe a je známy už od čias pred písanou históriou.
Zhrňte to
Čo sme sa dozvedeli je, že Jupiter | je piata planéta od Slnka a najväčšia v Slnečnej sústave. Je to plynný obor s hmotnosťou tisíciny hmotnosti Slnka, ale dva a pol krát ťažšia ako všetky ostatné planéty dokopy. Je ľahko viditeľná voľným okom a známa už od staroveku. | | 2 | Jupiter je piata planéta od Slnka a najväčšia v Slnečnej sústave. Je to plynný obor s hmotnosťou tisíciny hmotnosti Slnka, ale dva a pol krát ťažšia ako všetky ostatné planéty dokopy. Jupiter patrí medzi najjasnejšie objekty viditeľné voľným okom na nočnej oblohe a je známy už od čias pred písanou históriou.
Zhrňte to
Top 3 fakty, ktoré sme sa dozvedeli: | 1. Jupiter je piata planéta od Slnka a najväčšia v Slnečnej sústave.
2. Je to plynný obor s hmotnosťou tisíciny hmotnosti Slnka...
3. Jupiter je viditeľný voľným okom už od staroveku ... | | | | |

Šablóny promptov

Šablóna promptu je preddefinovaný recept na prompt, ktorý sa dá uložiť a opakovane používať podľa potreby, aby sa dosiahla konzistentnejšia používateľská skúsenosť vo väčšom rozsahu. V najjednoduchšej podobe je to zbierka príkladov promptov ako tento od OpenAI, ktorý poskytuje interaktívne komponenty promptu (správy používateľa a systému) aj formát požiadavky pre API - na podporu opakovaného použitia.

V zložitejšej podobe, ako tento príklad od LangChain, obsahuje zástupné znaky, ktoré sa dajú nahradiť údajmi z rôznych zdrojov (vstup používateľa, systémový kontext, externé zdroje údajov atď.) na dynamické generovanie promptu. To nám umožňuje vytvárať knižnicu opakovane použiteľných promptov, ktoré sa dajú programovo využívať vo veľkom rozsahu.

Skutočná hodnota šablón spočíva v možnosti vytvárať a publikovať knižnice promptov pre konkrétne aplikačné oblasti – kde je šablóna promptu optimalizovaná tak, aby odrážala špecifický kontext aplikácie alebo príklady, ktoré robia odpovede relevantnejšími a presnejšími pre cieľovú skupinu používateľov. Repozitár Prompts For Edu je skvelým príkladom tohto prístupu, kde sa kurátorsky zhromažďuje knižnica promptov pre vzdelávací sektor s dôrazom na kľúčové ciele ako plánovanie lekcií, tvorba učebných osnov, doučovanie študentov a pod.

Podporný obsah

Ak si predstavíme tvorbu promptu ako zadanie úlohy (inštrukcie) a cieľ (primárny obsah), potom sekundárny obsah je dodatočný kontext, ktorý poskytujeme, aby sme nejakým spôsobom ovplyvnili výstup. Môže ísť o parametre ladenia, pokyny na formátovanie, tematické taxonómie atď., ktoré pomáhajú modelu prispôsobiť odpoveď požadovaným cieľom alebo očakávaniam používateľa.

Napríklad: Ak máme katalóg kurzov s rozsiahlymi metadátami (názov, popis, úroveň, značky, lektor atď.) o všetkých dostupných kurzoch v učebných osnovách:

  • môžeme zadať inštrukciu „zhrň katalóg kurzov na jeseň 2023“
  • ako primárny obsah môžeme poskytnúť niekoľko príkladov požadovaného výstupu
  • sekundárny obsah môžeme použiť na identifikáciu top 5 „značiek“, ktoré nás zaujímajú

Model potom poskytne zhrnutie vo formáte podľa príkladov – ale ak má výsledok viacero značiek, uprednostní tých 5 identifikovaných v sekundárnom obsahu.


Najlepšie postupy pri promptovaní

Keď už vieme, ako sa dajú prompty vytvárať, môžeme začať premýšľať nad tým, ako ich navrhovať podľa najlepších postupov. Môžeme to rozdeliť na dve časti – správne nastavenie mysle a použitie správnych techník.

Nastavenie mysle pri prompt engineeringu

Prompt engineering je proces pokusov a omylov, preto majte na pamäti tri hlavné faktory:

  1. Porozumenie doméne je dôležité. Presnosť a relevantnosť odpovede závisí od domény, v ktorej aplikácia alebo používateľ pôsobí. Využite svoju intuíciu a odborné znalosti na prispôsobenie techník. Napríklad definujte doménovo špecifické osobnosti vo vašich systémových promptoch, alebo použite doménovo špecifické šablóny vo vašich používateľských promptoch. Poskytnite sekundárny obsah, ktorý odráža kontext domény, alebo použite doménovo špecifické nápovedy a príklady, aby ste model nasmerovali k známym vzorom použitia.

  2. Porozumenie modelu je dôležité. Vieme, že modely sú zo svojej podstaty stochastické. Ale implementácie modelov sa môžu líšiť v použitých trénovacích dátach (predtrénované znalosti), v poskytovaných možnostiach (napr. cez API alebo SDK) a v type obsahu, na ktorý sú optimalizované (napr. kód vs. obrázky vs. text). Pochopte silné a slabé stránky modelu, ktorý používate, a využite tieto znalosti na prioritizáciu úloh alebo tvorbu prispôsobených šablón optimalizovaných pre schopnosti modelu.

  3. Iterácia a validácia sú dôležité. Modely sa rýchlo vyvíjajú, rovnako aj techniky prompt engineeringu. Ako odborník na doménu môžete mať ďalší kontext alebo kritériá pre vašu konkrétnu aplikáciu, ktoré nemusia platiť pre širšiu komunitu. Využite nástroje a techniky prompt engineeringu na „rozbehnutie“ tvorby promptov, potom iterujte a validujte výsledky podľa vlastnej intuície a odbornosti. Zaznamenajte svoje poznatky a vytvorte znalostnú databázu (napr. knižnice promptov), ktorú môžu ostatní použiť ako nový základ pre rýchlejšie iterácie v budúcnosti.

Najlepšie postupy

Pozrime sa teraz na bežné odporúčané postupy od odborníkov z OpenAI a Azure OpenAI.

Čo Prečo
Vyhodnoťte najnovšie modely. Nové generácie modelov pravdepodobne ponúkajú lepšie funkcie a kvalitu – ale môžu byť aj drahšie. Vyhodnoťte ich vplyv a potom sa rozhodnite, či migrovať.
Oddelte inštrukcie a kontext Skontrolujte, či váš model/poskytovateľ definuje oddeľovače na jasnejšie rozlíšenie inštrukcií, primárneho a sekundárneho obsahu. To môže modelu pomôcť presnejšie priradiť váhy tokenom.
Buďte konkrétni a jasní Uveďte viac detailov o požadovanom kontexte, výsledku, dĺžke, formáte, štýle atď. Zlepšíte tým kvalitu aj konzistentnosť odpovedí. Ukladajte postupy do opakovane použiteľných šablón.
Buďte opisní, používajte príklady Modely často lepšie reagujú na prístup „ukáž a vysvetli“. Začnite s zero-shot prístupom, kde zadáte len inštrukciu (bez príkladov), potom skúste few-shot ako vylepšenie, kde poskytnete niekoľko príkladov požadovaného výstupu. Používajte analógie.
Používajte nápovedy na rozbehnutie odpovede Nasmerujte model k požadovanému výsledku tým, že mu dáte úvodné slová alebo frázy, ktoré môže použiť ako východiskový bod odpovede.
Opakujte pokyny Niekedy je potrebné modelu zopakovať pokyny. Dajte inštrukcie pred aj po primárnom obsahu, použite inštrukciu aj nápovedu atď. Iterujte a validujte, čo funguje.
Záleží na poradí Poradie, v akom modelu prezentujete informácie, môže ovplyvniť výstup, dokonca aj v príkladoch učenia, kvôli efektu posledných informácií. Skúšajte rôzne možnosti, aby ste zistili, čo je najlepšie.
Dajte modelu „únikovú cestu“ Dajte modelu alternatívnu odpoveď, ktorú môže použiť, ak z nejakého dôvodu nemôže úlohu splniť. Tým znížite riziko, že model vygeneruje nepravdivé alebo vymyslené odpovede.

Ako pri každom odporúčanom postupe, vaše výsledky sa môžu líšiť podľa modelu, úlohy a domény. Použite ich ako východiskový bod a iterujte, aby ste našli, čo vám najviac vyhovuje. Neustále prehodnocujte svoj proces prompt engineeringu, keď sa objavujú nové modely a nástroje, so zameraním na škálovateľnosť procesu a kvalitu odpovedí.

Zadanie

Gratulujeme! Dostali ste sa na koniec lekcie! Teraz je čas vyskúšať niektoré z týchto konceptov a techník na reálnych príkladoch!

Na zadanie použijeme Jupyter Notebook s cvičeniami, ktoré môžete interaktívne vypracovať. Notebook si môžete rozšíriť o vlastné Markdown a kódové bunky, aby ste mohli skúmať vlastné nápady a techniky.

Začnite tak, že si forkujete repozitár, potom

  • (Odporúčané) Spustite GitHub Codespaces
  • (Alternatívne) Naklonujte repozitár do svojho zariadenia a použite ho s Docker Desktop
  • (Alternatívne) Otvorte Notebook vo svojom obľúbenom prostredí pre Notebooky.

Ďalej nastavte svoje environmentálne premenné

  • Skopírujte súbor .env.copy z koreňa repozitára do .env a vyplňte hodnoty AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_DEPLOYMENT. Vráťte sa do sekcie Learning Sandbox, kde sa dozviete viac.

Potom otvorte Jupyter Notebook

  • Vyberte runtime kernel. Ak používate možnosti 1 alebo 2, jednoducho vyberte predvolený kernel Python 3.10.x, ktorý poskytuje vývojársky kontajner.

Ste pripravení spustiť cvičenia. Upozorňujeme, že tu nie sú správne alebo nesprávne odpovede – ide o skúšanie možností metódou pokus-omyl a budovanie intuície, čo funguje pre daný model a aplikačnú doménu.

Z tohto dôvodu v tejto lekcii nie sú segmenty s riešením kódu. Namiesto toho bude v Notebooku Markdown bunka s názvom „Moje riešenie:“, kde je ukázaný jeden príklad výstupu na referenciu.

Kontrola znalostí

Ktorý z nasledujúcich promptov je dobrý a spĺňa rozumné najlepšie postupy?

  1. Ukáž mi obrázok červeného auta
  2. Ukáž mi obrázok červeného auta značky Volvo, model XC90, zaparkovaného pri útesoch so zapadajúcim slnkom
  3. Ukáž mi obrázok červeného auta značky Volvo, model XC90

A: 2, je najlepší prompt, pretože obsahuje detaily o „čo“ a ide do špecifík (nie len akékoľvek auto, ale konkrétna značka a model) a tiež opisuje celkové prostredie. 3 je druhý najlepší, lebo obsahuje veľa popisu.

🚀 Výzva

Skúste využiť techniku „nápovedy“ s promptom: Dokonči vetu „Ukáž mi obrázok červeného auta značky Volvo a “. Čo vám model odpovie a ako by ste to vylepšili?

Skvelá práca! Pokračujte v učení

Chcete sa dozvedieť viac o rôznych konceptoch Prompt Engineeringu? Navštívte stránku na pokračovanie v učení, kde nájdete ďalšie skvelé zdroje k tejto téme.

Pokračujte na Lekciu 5, kde sa pozrieme na pokročilé techniky promptovania!


Vyhlásenie o vylúčení zodpovednosti:
Tento dokument bol preložený pomocou AI prekladateľskej služby Co-op Translator. Hoci sa snažíme o presnosť, upozorňujeme, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Za autoritatívny zdroj sa považuje pôvodný dokument v jeho natívnom jazyku. Pre kritické informácie odporúčame profesionálny ľudský preklad. Nezodpovedáme za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.