Skip to content

Latest commit

 

History

History
401 lines (247 loc) · 45.5 KB

File metadata and controls

401 lines (247 loc) · 45.5 KB

Základy tvorby promptov

Základy tvorby promptov

Úvod

Tento modul pokrýva základné koncepty a techniky pre vytváranie efektívnych promptov v generatívnych AI modeloch. Spôsob, akým napíšete svoj prompt pre LLM, je tiež dôležitý. Starostlivo zostavený prompt môže dosiahnuť lepšiu kvalitu odpovede. Ale čo presne znamenajú pojmy ako prompt a tvorba promptov? A ako môžem zlepšiť prompt vstup, ktorý posielam LLM? Na tieto otázky sa pokúsime odpovedať v tejto kapitole a nasledujúcej.

Generatívna AI je schopná vytvárať nový obsah (napríklad text, obrázky, zvuk, kód a pod.) v reakcii na požiadavky používateľov. Dosahuje to pomocou veľkých jazykových modelov ako séria GPT od OpenAI („Generative Pre-trained Transformer“), ktoré sú trénované na používanie prirodzeného jazyka a kódu.

Používatelia môžu teraz s týmito modelmi interagovať pomocou známych paradigiem, ako je chat, bez potreby technických znalostí alebo školenia. Modely sú promptovo založené – používatelia posielajú textový vstup (prompt) a dostanú späť AI odpoveď (doplnenie). Potom môžu „konverzovať s AI“ iteratívne, v niekoľkých kolách, zjemňovať svoj prompt, až kým odpoveď nebude vyhovovať ich očakávaniam.

„Prompty“ sa tak stávajú primárnym programovacím rozhraním pre generatívne AI aplikácie, ktoré modelom hovoria, čo majú robiť, a ovplyvňujú kvalitu vrátených odpovedí. „Tvorba promptov“ je rýchlo rastúca študijná oblasť, ktorá sa zameriava na návrh a optimalizáciu promptov, aby sa dodávali konzistentné a kvalitné odpovede v škálovateľnom rozsahu.

Ciele učenia

V tejto lekcii sa naučíme, čo je tvorba promptov, prečo je dôležitá a ako môžeme vytvárať efektívnejšie prompty pre daný model a cieľ aplikácie. Pochopíme základné koncepty a najlepšie postupy tvorby promptov – a zoznámime sa s interaktívnym prostredím Jupyter Notebooks „sandbox“, kde môžeme vidieť tieto koncepty aplikované na reálne príklady.

Na konci tejto lekcie budeme vedieť:

  1. Vysvetliť, čo je tvorba promptov a prečo je dôležitá.
  2. Popísať komponenty promptu a ich využitie.
  3. Naučiť sa najlepšie postupy a techniky tvorby promptov.
  4. Aplikovať naučené techniky na reálne príklady pomocou OpenAI endpointu.

Kľúčové pojmy

Tvorba promptov: Prax navrhovania a zdokonaľovania vstupov na vedenie AI modelov k požadovaným výstupom.

Tokenizácia: Proces rozdelenia textu na menšie jednotky, nazývané tokeny, ktoré model dokáže pochopiť a spracovať.

Inštrukčne ladené LLM: Veľké jazykové modely (LLM), ktoré boli doladené špecifickými inštrukciami za účelom zlepšenia presnosti a relevantnosti odpovedí.

Sandbox na učenie

Tvorba promptov je v súčasnosti viac umením než vedou. Najlepším spôsobom, ako si zlepšiť intuíciu, je praktizovať viac a prijať prístup pokusu a omylu, ktorý spája odbornosť v danej oblasti aplikácie s odporúčanými technikami a optimalizáciami špecifickými pre model.

Jupyter Notebook, ktorý sprevádza túto lekciu, poskytuje sandbox prostredie, kde si môžete vyskúšať, čo ste sa naučili – priamo počas štúdia alebo ako súčasť záverečnej úlohy. Na vykonanie cvičení budete potrebovať:

  1. Kľúč API Azure OpenAI – služobný endpoint pre nasadený LLM.
  2. Python Runtime – v ktorom je možné Notebook spustiť.
  3. Lokálne premenné prostrediateraz dokončite kroky Nastavenia, aby ste boli pripravení.

Notebook prichádza s začiatočnými cvičeniami – ale ste povzbudzovaní pridať si vlastné časti Markdown (popis) a Kód (požiadavky promptov), aby ste si mohli vyskúšať viac príkladov alebo nápadov a rozvíjať intuitívne zručnosti návrhu promptov.

Ilustrovaný sprievodca

Chcete získať veľký prehľad o tom, čo táto lekcia pokrýva, ešte pred tým, než sa do nej pustíte? Pozrite si tento ilustrovaný sprievodca, ktorý vám poskytne prehľad o hlavnej téme a kľúčových bodoch na zamyslenie v každom z nich. Plán lekcie vás prevedie od pochopenia základných konceptov a výziev po ich riešenie pomocou relevantných techník a najlepších postupov tvorby promptov. Upozorňujeme, že sekcia „Pokročilé techniky“ v tomto sprievodcovi sa vzťahuje na obsah pokrytý v nasledujúcej kapitole tohto učebného plánu.

Ilustrovaný sprievodca tvorbou promptov

Naš startup

Teraz si povedzme, ako sa táto téma vzťahuje k nášmu startupu so zámerom priniesť AI inovácie do vzdelávania. Chceme budovať AI-poháňané aplikácie personalizovaného učenia – tak si premyslime, ako by rôzni používatelia našej aplikácie mohli „navrhovať“ prompty:

  • Administrátori môžu požiadať AI o analýzu dát kurikula na identifikáciu medzier vo výučbe. AI môže zhrnúť výsledky alebo ich vizualizovať pomocou kódu.
  • Učitelia môžu požiadať AI o generovanie plánu lekcie pre cieľové publikum a tému. AI môže zostaviť personalizovaný plán vo vopred určenom formáte.
  • Študenti môžu požiadať AI o doučovanie v zložitej téme. AI môže teraz viesť študentov pomocou lekcií, nápoved a príkladov prispôsobených ich úrovni.

To je len špička ľadovca. Pozrite si Prompty pre vzdelávanie – open-source knižnicu promptov zostavenú vzdelávacími expertmi – aby ste získali širší prehľad o možnostiach! Skúste spustiť niektoré z týchto promptov v sandboxe alebo pomocou OpenAI Playground a pozrite, čo sa stane!

Čo je tvorba promptov?

Lekciu sme začali definovaním tvorby promptov ako procesu navrhovania a optimalizácie textových vstupov (promptov) na dosiahnutie konzistentných a kvalitných odpovedí (doplnení) pre daný cieľ aplikácie a model. Môžeme to považovať za dvojkrokový proces:

  • navrhnúť počiatočný prompt pre daný model a cieľ
  • iteratívne vylepšovať prompt na zlepšenie kvality odpovede

Je to nevyhnutne proces pokusu a omylu, ktorý vyžaduje intuíciu používateľa a úsilie na dosiahnutie optimálnych výsledkov. Prečo je to teda dôležité? Aby sme odpovedali na túto otázku, musíme najskôr pochopiť tri pojmy:

  • tokenizácia = ako model „vidí“ prompt
  • základné LLM = ako základný model „spracúva“ prompt
  • inštrukčne ladené LLM = ako model teraz môže vidieť „úlohy“

Tokenizácia

LLM vidí prompt ako sekvenciu tokenov, kde rôzne modely (alebo verzie modelu) môžu ten istý prompt tokenizovať rôznymi spôsobmi. Keďže LLM sú trénované na tokenoch (a nie na surovom texte), spôsob, akým sa prompty tokenizujú, má priamy vplyv na kvalitu vytvorenej odpovede.

Pre lepšiu predstavu o tom, ako tokenizácia funguje, skúste nástroje ako OpenAI Tokenizer uvedený nižšie. Skopírujte tam svoj prompt a pozrite sa, ako sa premení na tokeny, venujte pozornosť tomu, ako sa spracovávajú medzery a interpunkcia. Upozorňujeme, že tento príklad ukazuje starší LLM (GPT-3) – skúsenosť s novším modelom môže viesť k inému výsledku.

Tokenizácia

Koncept: Základné modely

Keď je prompt tokenizovaný, primárnou funkciou "základného LLM" (alebo základného modelu) je predpovedať token v tejto sekvencii. Keďže LLM sú trénované na obrovských textových datasetoch, majú dobré povedomie o štatistických vzťahoch medzi tokenmi a dokážu túto predpoveď vykonať s istou mierou istoty. Upozorňujeme, že nerozumejú významu slov v promte alebo tokene; vidia len vzor, ktorý môžu „doplniť“ ďalšou predpoveďou. Môžu pokračovať v predpovedaní sekvencie, až kým ich nezastaví zásah používateľa alebo nejaká vopred stanovená podmienka.

Chcete vidieť, ako funguje doplnenie na základe promptu? Vložte vyššie uvedený prompt do Azure OpenAI Studio Chat Playground so štandardným nastavením. Systém je nastavený tak, aby považoval prompty za požiadavky na informácie – takže by ste mali vidieť doplnenie, ktoré vyhovuje tomuto kontextu.

Ale čo keď používateľ chce vidieť niečo konkrétne, čo vyhovuje určitým kritériám alebo cieľu úlohy? Práve tu prichádzajú do hry inštrukčne ladené LLM.

Base LLM Chat Completion

Koncept: Inštrukčne ladené LLM

Inštrukčne ladený LLM začína so základným modelom a doladí ho pomocou príkladov alebo vstupno-výstupných párov (napr. viackolové „správy“), ktoré môžu obsahovať jasné inštrukcie – a odpoveď AI sa snaží túto inštrukciu dodržať.

Používa techniky ako Reinforcement Learning with Human Feedback (RLHF), ktoré môžu trénovať model na dodržiavanie inštrukcií a učiť sa z spätnej väzby, aby produkoval odpovede, ktoré sú praktickejšie a viac relevantné pre cieľ používateľa.

Skúsme to – vráťte sa k vyššie uvedenému promptu, ale teraz zmeňte systémovú správu tak, aby dala nasledujúcu inštrukciu ako kontext:

Zhrň obsah, ktorý máte k dispozícii, pre žiaka druhej triedy. Výsledok udržte v jednom odstavci s 3-5 odrážkami.

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

Instruction Tuned LLM Chat Completion

Prečo potrebujeme tvorbu promptov?

Keď už vieme, ako LLM spracúvajú prompty, porozprávajme sa o tom, prečo potrebujeme tvorbu promptov. Odpoveď spočíva v tom, že súčasné LLM predstavujú niekoľko výziev, ktoré robia dosiahnutie spoľahlivých a konzistentných doplnení náročnejším bez investovania úsilia do tvorby a optimalizácie promptov. Napríklad:

  1. Odpovede modelov sú stochastické. Ten istý prompt pravdepodobne vyprodukuje rôzne odpovede s rôznymi modelmi alebo verziami modelu. Môže dokonca vyprodukovať rôzne výsledky s tým istým modelom v rôznom čase. Techniky tvorby promptov nám môžu pomôcť minimalizovať tieto variácie tým, že poskytujú lepšie zábrany.

  2. Modely môžu vymýšľať odpovede. Modely sú predtrénované na veľkých, ale konečných datasetoch, čo znamená, že nemajú vedomosti o konceptoch mimo rozsahu tréningu. Výsledkom môže byť, že vytvoria doplnenia, ktoré sú nepresné, smyšlené alebo priamo protirečia známym faktom. Techniky tvorby promptov pomáhajú používateľom takéto vymýšľanie identifikovať a zmierniť, napríklad tým, že AI požiadajú o citácie alebo odôvodnenie.

  3. Schopnosti modelov sa budú líšiť. Novšie modely alebo generácie modelov budú mať bohatšie schopnosti, ale tiež prinášajú jedinečné zvláštnosti a kompromisy v nákladoch a komplexnosti. Tvorba promptov nám pomôže vyvinúť najlepšie postupy a pracovné postupy, ktoré abstrahujú rozdiely a prispôsobujú sa požiadavkám jednotlivých modelov škálovateľným a bezproblémovým spôsobom.

Pozrime sa na to v praxi v OpenAI alebo Azure OpenAI Playground:

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

Príklad vymýšľania odpovedí

V tomto kurze používame termín „vymýšľanie (“fabrication“)“ na označenie javu, keď LLM niekedy generujú faktograficky nesprávne informácie v dôsledku obmedzení v ich tréningu alebo iných okolností. Môžete sa s tým stretnúť aj pod pojmom „halucinácie“ v populárnych článkoch alebo vedeckých prácach. Avšak dôrazne odporúčame používať termín „vymýšľanie“, aby sme náhodou neantropomorfizovali správanie pripisovaním ľudskej vlastnosti strojovo riadenému výsledku. Toto tiež posilňuje zásady zodpovednej AI z hľadiska terminológie, vyhýbajúc sa výrazom, ktoré môžu byť v niektorých kontextoch považované za nevhodné alebo neinkluzívne.

Chcete si spraviť predstavu, ako vymýšľanie funguje? Predstavte si prompt, ktorý inštruuje AI generovať obsah k neexistujúcej téme (aby ste sa uistili, že nie je v tréningovom datasete). Napríklad – vyskúšal som tento prompt:

Prompt: vygeneruj plán lekcie o Marťianskej vojne v roku 2076. Webové vyhľadávanie mi ukázalo, že existovali fiktívne príbehy (napr. televízne seriály alebo knihy) o marťanských vojnách – ale nijaké z roku 2076. Zdravý rozum nám tiež hovorí, že rok 2076 je v budúcnosti a preto sa nemôže spájať so skutočnou udalosťou.

Tak čo sa stane, keď tento prompt spustíme u rôznych poskytovateľov 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 očakávalo, každý model (alebo verzia modelu) generuje mierne odlišné odpovede vďaka stochastickému správaniu a rozdielom v schopnostiach modelov. Napríklad jeden model cielený na 8. triedu, zatiaľ čo iný predpokladá študenta strednej školy. Ale všetky tri modely vytvorili odpovede, ktoré by mohli presvedčiť neinformovaného používateľa, že udalosť bola skutočná.

Techniky prompt engineering ako metaprompting a nastavenie temperature môžu do istej miery znížiť výrobu nepravdivých informácií modelom. Nové architektúry prompt engineering tiež plynulo integrujú nové nástroje a techniky do toku promptu, aby zmiernili alebo znížili tieto efekty.

Prípadová štúdia: GitHub Copilot

Záverom tejto sekcie si prejdime, ako sa prompt engineering používa v reálnych riešeniach na príklade jednej prípadovej štúdie: GitHub Copilot.

GitHub Copilot je váš „AI parťák programátor“ – prevádza textové prompty na dokončenia kódu a je integrovaný do vášho vývojového prostredia (napr. Visual Studio Code) pre plynulý zážitok používateľa. Ako dokumentujú nasledujúce blogy, najskoršia verzia bola založená na modeli OpenAI Codex – inžinieri rýchlo pochopili potrebu doladenia modelu a vyvinuli lepšie techniky prompt engineering na zlepšenie kvality kódu. V júli predstavili vylepšený AI model, ktorý ide nad rámec Codexu pre ešte rýchlejšie návrhy.

Prečítajte si blogy v poradí, aby ste sledovali ich učebný proces.

Môžete tiež prezerať ich inžiniersky blog pre ďalšie príspevky ako tento, ktorý ukazuje, ako sa tieto modely a techniky aplikujú pri tvorbe reálnych aplikácií.


Tvorba promptu

Videli sme, prečo je prompt engineering dôležitý – teraz si rozoberme, ako sa prompt stavia, aby sme mohli vyhodnotiť rôzne techniky na efektívnejšie navrhovanie promptov.

Základný prompt

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

Prompt (Vstup) Dokončenie (Výstup)
Oh say can you see Znie to, akoby ste začínali text piesne „The Star-Spangled Banner“, národnej hymny USA. Celý text znie takto ...

Komplexný prompt

Teraz pridáme ku základnému promptu kontext a inštrukcie. Chat Completion API nám umožňuje zostaviť komplexný prompt ako súbor správ obsahujúcich:

  • páry vstup/výstup, ktoré odrážajú vstup používateľa a odpoveď asistenta,
  • systémovú správu nastavujúcu kontext pre správanie alebo charakter asistenta.

Žiadosť teraz vyzerá takto, kde tokenizácia efektívne zachytáva relevantné informácie z kontextu a konverzácie. Zmena systémového kontextu môže mať preto podobný vplyv na kvalitu dokončení ako poskytované vstupy používateľa.

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 používateľský prompt jednoduchá textová otázka, ktorú bolo možné interpretovať ako dopyt po informáciách. Pri inštrukčných promptoch môžeme tento text použiť na podrobnejšie špecifikovanie úlohy a tým poskytnúť modelu lepšie usmernenie. Tu je príklad:

Prompt (Vstup) Dokončenie (Výstup) Typ inštrukcie
Napíš popis Občianskej vojny vrátil jednoduchý odsek Jednoduchý
Napíš popis Občianskej vojny. Uveď kľúčové dátumy a udalosti a opíš ich význam vrátil odsek, po ktorom nasleduje zoznam kľúčových dátumov s popismi Komplexný
Napíš popis 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 dôležitými historickými osobnosťami a ich príspevkami. Výstup vráť vo formáte JSON vracia podrobnejšie údaje v textovom poli, formátované ako JSON, ktorý môžete skopírovať do súboru a podľa potreby overiť Komplexný. Formátovaný.

Primárny obsah

V uvedených príkladoch bol prompt stále pomerne otvorený, čo umožnilo LLM rozhodnúť, ktorá časť jeho predtrénovaného datasetu je relevantná. So vzorcom dizajnu primárny obsah sa vstupný text rozdeľuje na dve časti:

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

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

Prompt (Vstup) Dokončenie (Výstup)
Jupiter je piata planéta od Slnka a najväčšia v Slnečnej sústave. Je to plynný obor s hmotnosťou iba tisícinu Slnka, no dvakrát a pol ťažší než všetky ostatné planéty Slnečnej sústavy dokopy. Jupiter je jeden z najsvietivejších objektov viditeľných voľným okom na nočnej oblohe a bol známy starovekým civilizáciám už pred zaznamenanou históriou. Je pomenovaný po rímskom bohu Jupiterovi.[19] Z pohľadu Zeme môže byť Jupiter natoľko jasný, že jeho odrazené svetlo vrhá viditeľné tiene,[20] a je v priemere tretím najsvietivejším prírodným objektom na nočnej oblohe po Mesiaci a Venuši.
Zhrň to v 2 krátkych vetách
Jupiter, piata planéta od Slnka, je najväčšia v Slnečnej sústave a je známa ako jeden z najsvietivejších objektov na nočnej oblohe. Pomenovaná po rímskom bohovi Jupiterovi, je to plynný obor s hmotnosťou dvakrát a pol väčšou ako všetky ostatné planéty dohromady.

Segment primárneho obsahu možno využiť rôznymi spôsobmi na efektívnejšie inštrukcie:

  • Príklady – namiesto priameho inštruovania modelu mu poskytneme príklady požadovaných výstupov a necháme ho, aby odvodil vzor.
  • Náznaky – nasledujú po inštrukcii ako „návnada“, ktorá pripraví dokončenie a usmerní model k relevantnejším odpovediam.
  • Šablóny – opakovateľné „recepty“ na prompty s miestami na doplnenie (premennými), ktoré možno prispôsobiť konkrétnym dátam pre dané použitie.

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

Použitie príkladov

Tento prístup využíva primárny obsah na „nakŕmenie modelu“ príkladmi želaných výstupov pre danú inštrukciu, aby model odviedol vzor požadovaného výstupu. Podľa počtu príkladov rozlišujeme zero-shot prompting, one-shot prompting, few-shot prompting a pod.

Prompt teraz pozostáva z troch častí:

  • popis úlohy,
  • niekoľko príkladov želaného výstupu,
  • začiatok nového príkladu (ktorý implicitne opisuje ďalšiu úlohu).
Typ učenia Prompt (Vstup) Dokončenie (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 Hráč bežal po metách => Baseball
Hráč zahral esák => Tenis
Hráč dal šesťku => Kriket
Hráč spravil slam-dunk =>
Basketbal

Všimnite si, že pri zero-shot sme museli uviesť explicitnú inštrukciu („Prelož do španielčiny“), no pri one-shot sa táto inštrukcia odviedla z príkladu. Few-shot ukazuje, že pridanie viacerých príkladov umožňuje modelom presnejšie odvodiť vzory bez ďalších inštrukcií.

Náznaky v promptoch

Ďalšia technika využívania primárneho obsahu je poskytnutie náznakov namiesto príkladov. Tu modelu „naznačujeme“ smerovanie tým, že začneme mu to útržkom, ktorý reflektuje požadovaný formát odpovede. Model potom „berie náznak“ a pokračuje v danom smere.

Počet náznakov Prompt (Vstup) Dokončenie (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 iba tisícinu Slnka, no dvakrát a pol ťažší než všetky ostatné planéty Slnečnej sústavy dokopy. Jupiter je jeden z najsvietivejších objektov viditeľných voľným okom na nočnej oblohe, a bol známy starovekým civilizáciám už pred zaznamenanou históriou.
Zhrň toto
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 Slnka, ale je ťažší než všetky ostatné planéty dohromady. Staroveké civilizácie poznali Jupiter už dlho 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 jednu tisícinu hmotnosti Slnka, ale dvojnásobne a pol vyššou ako všetky ostatné planéty v slnečnej sústave dokopy. Jupiter je jeden z najjasnejších objektov viditeľných voľným okom na nočnej oblohe a bol známy starovekým civilizáciám už pred zaznamenanou históriou.
Zhrnutie
Čo sme sa naučili je, že Jupiter
je piatou planétou od Slnka a najväčšou v slnečnej sústave. Je to plynný obor s hmotnosťou jednu tisícinu hmotnosti Slnka, ale dvojnásobne a pol vyššou ako všetky ostatné planéty dokopy. Je ľahko viditeľný voľným okom a je známy 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 jednu tisícinu hmotnosti Slnka, ale dvojnásobne a pol vyššou ako všetky ostatné planéty v slnečnej sústave dokopy. Jupiter je jeden z najjasnejších objektov viditeľných voľným okom na nočnej oblohe a bol známy starovekým civilizáciám už pred zaznamenanou históriou.
Zhrnutie
Top 3 fakty, ktoré sme sa naučili:
1. Jupiter je piatou planétou od Slnka a najväčšou v slnečnej sústave.
2. Je to plynný obor s hmotnosťou jednu tisícinu hmotnosti Slnka...
3. Jupiter je viditeľný voľným okom od starovekých čias ...

Šablóny výziev

Šablóna výzvy je preddefinovaný recept na výzvu, ktorý môže byť uložený a opakovane použitý podľa potreby, aby sa dosiahla konzistentnejšia používateľská skúsenosť vo veľkom meradle. V najjednoduchšej forme je to zbierka príkladov výziev ako tento od OpenAI, ktorý poskytuje interaktívne časti výzvy (správy používateľa a systému) a formát požiadavky riadený API - pre podporu opätovného použitia.

V zložitejšej podobe ako tento príklad od LangChain obsahuje zástupné symboly, ktoré môžu byť nahradené údajmi z rôznych zdrojov (vstup používateľa, systémový kontext, externé zdroje dát atď.) na dynamickú tvorbu výzvy. To nám umožňuje vytvoriť knižnicu opakovane použiteľných výziev, ktoré môžu programovo zabezpečiť konzistentné používateľské skúsenosti vo veľkom.

Nakoniec je skutočná hodnota šablón v možnosti vytvárať a publikovať knižnice výziev pre vertikálne aplikačné domény - kde je šablóna výzvy optimalizovaná tak, aby reflektovala kontext špecifický pre aplikáciu alebo príklady, ktoré robia odpovede relevantnejšími a presnejšími pre cieľové používateľské publikum. Repozitár Prompts For Edu je skvelým príkladom tohto prístupu, zhromažďujúc knižnicu výziev pre vzdelávaciu sféru s dôrazom na kľúčové ciele ako plánovanie hodín, návrh osnov, doučovanie študentov a pod.

Podporný obsah

Ak uvažujeme o konštrukcii výzvy ako o zložení inštrukcie (úlohy) a cieľa (primárneho obsahu), potom sekundárny obsah je ako dodatočný kontext, ktorý poskytujeme na ovplyvnenie výstupu určitým spôsobom. Môže ísť o ladacie parametre, pokyny na formátovanie, taxonómie tém a pod., ktoré môžu pomôcť modelu prispôsobiť svoju odpoveď tak, aby vyhovovala očakávaným cieľom používateľa.

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

  • môžeme definovať pokyn „zhrnúť katalóg kurzov na jeseň 2023“
  • môžeme použiť primárny obsah na poskytnutie niekoľkých príkladov požadovaného výstupu
  • môžeme použiť sekundárny obsah na identifikáciu top 5 záujmových „značiek“.

Model tak môže poskytnúť zhrnutie v tvare ukázanom v príkladoch - no ak má výsledok viacero značiek, uprednostní identifikovaných 5 značiek zo sekundárneho obsahu.


Najlepšie praktiky pre výzvy

Teraz, keď vieme, ako možno výzvy konštruovať, môžeme začať premýšľať o tom, ako ich navrhnúť tak, aby odrážali najlepšie praktiky. Môžeme to rozdeliť na dve časti - mať správny postoj a používať správne techniky.

Postoj pri inžinierstve výziev

Inžinierstvo výziev je proces pokus-omyl, takže majte na pamäti tri široké usmerňujúce faktory:

  1. Dôležitý je kontext domény. Presnosť a relevantnosť odpovede závisí od domény, v ktorej daná aplikácia alebo používateľ pôsobí. Použite svoju intuíciu a odborné znalosti domény na ďalšie prispôsobenie techník. Napríklad definujte osobnosti špecifické pre doménu vo svojich systémových výzvach alebo používajte šablóny špecifické pre doménu vo výzvach používateľov. Poskytnite sekundárny obsah odrážajúci kontexty domény alebo použite signály a príklady špecifické pre doménu na usmernenie modelu k známym vzorcom používania.

  2. Dôležité je pochopenie modelu. Vieme, že modely sú štatistické (stochastické) podľa povahy. Ale implementácie modelov sa môžu líšiť podľa použitého trénovacieho datasetu (predtrénované vedomosti), schopností, ktoré poskytujú (napr. API či SDK), a typu obsahu, na ktorý sú optimalizované (kód, obrázky, text). Pochopte silné a slabé stránky svojho modelu a použite tieto vedomosti na prioritizovanie úloh alebo tvorbu prispôsobených šablón optimalizovaných pre schopnosti modelu.

  3. Dôležitá je iterácia a validácia. Modely sa rýchlo vyvíjajú, rovnako ako techniky inžinierstva výziev. Ako expert v doméne možno máte vlastný kontext alebo kritériá špecifické pre vašu aplikáciu, ktoré nemusia platiť všeobecne. Použite nástroje a techniky inžinierstva výziev na "rýchly štart" konštrukcie výziev, potom výsledky iterujte a validujte s pomocou vlastnej intuície a odbornosti. Zaznamenávajte si poznatky a vytvorte znalostnú databázu (napr. knižnice výziev), ktorú môžu iní používať ako základ pre rýchlejšie iterácie v budúcnosti.

Najlepšie praktiky

Pozrime sa teraz na bežné najlepšie praktiky, ktoré odporúčajú odborníci z OpenAI a Azure OpenAI.

Čo Prečo
Vyhodnoťte najnovšie modely. Nové generácie modelov pravdepodobne ponúkajú vylepšené funkcie a vyššiu kvalitu - no môžu mať tiež vyššie náklady. Vyhodnoťte ich vplyv, potom rozhodnite o migrácii.
Oddelte inštrukcie a kontext Skontrolujte, či váš model/poskytovateľ definuje delimiter-y na jasnejšie oddelenie inštrukcií, primárneho a sekundárneho obsahu. To môže pomôcť modelom presnejšie prideľovať váhy tokenom.
Buďte špecifickí a jasní Poskytnite viac detailov o požadovanom kontexte, výsledku, dĺžke, formáte, štýle atď. To zlepší kvalitu aj konzistenciu odpovedí. Recepty zachyťte v opakovane použiteľných šablónach.
Buďte opisní, používajte príklady Modely môžu reagovať lepšie na prístup „ukáž a povedz“. Začnite s zero-shot prístupom, kedy dáte inštrukciu (bez príkladov), potom skúste few-shot ako zdokonalenie s niekoľkými príkladmi požadovaného výstupu. Použite analógie.
Použite signály na naštartovanie odpovedí Nakopnite ho k požadovanému výsledku tak, že mu dáte niekoľko vedúcich slov alebo fráz, ktoré môže použiť ako východiskový bod pre odpoveď.
Opakovanie Niekedy budete musieť modelu niečo zopakovať. Dajte inštrukcie pred a po primárnom obsahu, použite inštrukciu a signál atď. Iterujte a validujte, čo funguje najlepšie.
Poradie má význam Poradie, v akom poskytujete informácie modelu, môže ovplyvniť výstup, dokonca aj v učebných príkladoch, vďaka efektu nedávnej informácie. Vyskúšajte rôzne možnosti, čo funguje najlepšie.
Doprajte modelu „únik“ Dajte modelu možnosť náhradnej odpovede, ktorú môže poskytnúť, ak nemôže splniť úlohu z nejakého dôvodu. To znižuje pravdepodobnosť generovania falošných či vymyslených odpovedí.

Ako pri každej najlepšej praxi, pamätajte, že vaša skúsenosť sa môže líšiť v závislosti od modelu, úlohy a domény. Použite tieto odporúčania ako východiskový bod a iterujte, kým nenájdete to, čo vám najlepšie vyhovuje. Neustále prehodnocujte svoj proces inžinierstva výziev, ako sa objavujú nové modely a nástroje, so zameraním na škálovateľnosť procesu a kvalitu odpovedí.

Zadanie

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

Pre naše zadanie použijeme Jupyter Notebook s cvičeniami, ktoré môžete riešiť interaktívne. Môžete tiež rozšíriť Notebook vlastnými Markdown a Kódovými bunkami, aby ste samostatne preskúmali nápady a techniky.

Na začiatok, zforkujte repozitár, potom

  • (Odporúčané) Spustite GitHub Codespaces
  • (Alternatívne) Naklonujte repozitár do svojho lokálneho zariadenia a používajte ho s Docker Desktop
  • (Alternatívne) Otvorte Notebook v preferovanom prostredí pre Notebooky.

Ďalej nakonfigurujte svoje premenné prostredia

  • Skopírujte súbor .env.copy v koreňovom adresári repo do .env a vypíšte hodnoty AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_DEPLOYMENT. Potom sa vráťte do sekcie Learning Sandbox, aby ste sa naučili, ako na to.

Potom otvorte Jupyter Notebook

  • Vyberte runtime kernel. Ak používate možnosti 1 alebo 2, jednoducho vyberte predvolený Python 3.10.x kernel, ktorý poskytuje vývojové prostredie.

Ste pripravení spustiť cvičenia. Upozorňujeme, že tu nie sú správne ani nesprávne odpovede - ide o skúmanie možností pokusom-omylom a budovanie intuície pre to, čo funguje pre konkrétny 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 Notebook obsahovať Markdown bunky s názvom „Moje riešenie:“, ktoré ukážu jeden príklad výstupu pre referenciu.

Kontrola vedomostí

Ktorá z nasledujúcich výziev je dobrá výzva podľa rozumných najlepších praktík?

  1. Ukáž mi obrázok červeného auta
  2. Ukáž mi obrázok červeného auta značky Volvo a modelu XC90 zaparkovaného pri útesu pri západe slnka
  3. Ukáž mi obrázok červeného auta značky Volvo a modelu XC90

Odpoveď: 2, je to najlepšia výzva, pretože poskytuje detaily o tom „čo“ a ide do špecifík (nie len akékoľvek auto, ale konkrétna značka a model) a tiež popisuje celkové prostredie. 3 je nasledujúca najlepšia, keďže obsahuje tiež veľa popisu.

🚀 Výzva

Skúste využiť techniku „signál“ s výzvou: Dokonči vetu „Ukáž mi obrázok červeného auta značky Volvo a “. Čo odpovie a ako by ste to zlepšili?

Výborná práca! Pokračujte v učení

Chcete sa dozvedieť viac o rôznych konceptoch inžinierstva výziev? Navštívte stránku s ďalším štúdiom, kde nájdete ďalšie skvelé zdroje na túto tému.

Presuňte sa na Lekciu 5, kde sa pozrieme na pokročilé techniky výziev!


Zrieknutie sa zodpovednosti: Tento dokument bol preložený pomocou AI prekladateľskej služby Co-op Translator. Aj keď sa snažíme o presnosť, prosím majte na pamäti, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie sa odporúča profesionálny ľudský preklad. Neručíme za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.