Skip to content

Latest commit

 

History

History
404 lines (253 loc) · 46.3 KB

File metadata and controls

404 lines (253 loc) · 46.3 KB

Základy návrhu promptů

Základy návrhu promptů

Úvod

Tento modul se zabývá základními koncepty a technikami pro vytváření efektivních promptů v generativních AI modelech. Způsob, jakým napíšete svůj prompt pro LLM, má také význam. Pečlivě vytvořený prompt může přinést kvalitnější odpovědi. Ale co přesně znamenají pojmy jako prompt a návrh promptů? A jak mohu zlepšit vstupní prompt, který posílám LLM? To jsou otázky, na které se pokusíme odpovědět v této kapitole a v následující.

Generativní AI je schopná vytvářet nový obsah (např. text, obrázky, zvuk, kód atd.) na základě požadavků uživatele. Toho dosahuje pomocí velkých jazykových modelů (Large Language Models) jako je série GPT ("Generative Pre-trained Transformer") od OpenAI, které jsou trénovány na přirozeném jazyce a kódu.

Uživatelé nyní mohou s těmito modely komunikovat pomocí známých paradigmat, jako je chat, aniž by potřebovali technické znalosti nebo školení. Modely jsou založené na prompty - uživatelé posílají textový vstup (prompt) a dostávají zpět odpověď od AI (výstup). Poté mohou "chatovat s AI" iterativně, v konverzacích na více úrovních, a upravovat svůj prompt, dokud odpověď neodpovídá jejich očekáváním.

"Prompty" se nyní stávají primárním programovacím rozhraním pro aplikace generativní AI, které modelům říkají, co mají dělat, a ovlivňují kvalitu vrácených odpovědí. "Návrh promptů" je rychle se rozvíjející oblast studia, která se zaměřuje na návrh a optimalizaci promptů, aby poskytovaly konzistentní a kvalitní odpovědi ve velkém měřítku.

Cíle učení

V této lekci se naučíme, co je návrh promptů, proč je důležitý a jak můžeme vytvářet efektivnější prompty pro daný model a cíle aplikace. Porozumíme základním konceptům a osvědčeným postupům pro návrh promptů - a dozvíme se o interaktivním prostředí "sandbox" v Jupyter Notebooks, kde můžeme tyto koncepty aplikovat na skutečné příklady.

Na konci této lekce budeme schopni:

  1. Vysvětlit, co je návrh promptů a proč je důležitý.
  2. Popsat komponenty promptu a jak se používají.
  3. Naučit se osvědčené postupy a techniky pro návrh promptů.
  4. Aplikovat naučené techniky na skutečné příklady pomocí OpenAI endpointu.

Klíčové pojmy

Návrh promptů: Praxe navrhování a zdokonalování vstupů, které vedou AI modely k produkci požadovaných výstupů. Tokenizace: Proces převodu textu na menší jednotky, nazývané tokeny, které model dokáže pochopit a zpracovat. LLM laděné na instrukce: Velké jazykové modely (LLM), které byly doladěny pomocí specifických instrukcí za účelem zlepšení přesnosti a relevance jejich odpovědí.

Sandbox pro učení

Návrh promptů je v současnosti spíše umění než věda. Nejlepší způsob, jak si v něm zlepšit intuici, je více cvičit a přijmout přístup pokus-omyl, který kombinuje odborné znalosti v dané oblasti aplikace s doporučenými technikami a optimalizacemi specifickými pro model.

Jupyter Notebook, který doprovází tuto lekci, poskytuje prostředí sandbox, kde si můžete vyzkoušet, co jste se naučili - buď průběžně, nebo jako součást závěrečné výzvy kódování. K provedení cvičení budete potřebovat:

  1. Klíč API Azure OpenAI - koncový bod služby pro nasazený LLM.
  2. Python Runtime - prostředí, ve kterém lze Notebook spustit.
  3. Lokální proměnné prostředí - dokončete kroky SETUP nyní, abyste byli připraveni.

Notebook obsahuje startovací cvičení - ale doporučujeme přidat vlastní sekce Markdown (popis) a Code (požadavky na prompt), abyste si mohli vyzkoušet více příkladů nebo nápadů - a rozvíjet svou intuici pro návrh promptů.

Ilustrovaný průvodce

Chcete získat celkový přehled o tom, co tato lekce pokrývá, než se do ní ponoříte? Podívejte se na tento ilustrovaný průvodce, který vám poskytne přehled hlavních témat a klíčových poznatků, o kterých byste měli přemýšlet v každé z nich. Plán lekce vás provede od pochopení základních konceptů a výzev k jejich řešení pomocí relevantních technik návrhu promptů a osvědčených postupů. Upozorňujeme, že sekce "Pokročilé techniky" v tomto průvodci odkazuje na obsah pokrytý v další kapitole tohoto kurzu.

Ilustrovaný průvodce návrhem promptů

Naše startupová mise

Nyní si povíme, jak toto téma souvisí s naší startupovou misí přinést inovace AI do vzdělávání. Chceme vytvářet aplikace poháněné AI pro personalizované vzdělávání - takže se zamysleme nad tím, jak různí uživatelé naší aplikace mohou "navrhovat" prompty:

  • Administrátoři mohou požádat AI, aby analyzovala data z učebních osnov a identifikovala mezery v pokrytí. AI může výsledky shrnout nebo je vizualizovat pomocí kódu.
  • Učitelé mohou požádat AI, aby vytvořila plán lekce pro cílovou skupinu a téma. AI může vytvořit personalizovaný plán ve specifickém formátu.
  • Studenti mohou požádat AI, aby je doučovala v obtížném předmětu. AI může studenty vést lekcemi, nápovědou a příklady přizpůsobenými jejich úrovni.

To je jen špička ledovce. Podívejte se na Prompty pro vzdělávání - otevřenou knihovnu promptů vytvořenou odborníky na vzdělávání - abyste získali širší představu o možnostech! Vyzkoušejte některé z těchto promptů v sandboxu nebo v OpenAI Playground a podívejte se, co se stane!

Co je návrh promptů?

Tuto lekci jsme začali definicí návrhu promptů jako procesu navrhování a optimalizace textových vstupů (promptů) za účelem dosažení konzistentních a kvalitních odpovědí (výstupů) pro daný cíl aplikace a model. Můžeme si to představit jako dvoustupňový proces:

  • navrhování počátečního promptu pro daný model a cíl
  • zdokonalování promptu iterativně za účelem zlepšení kvality odpovědi

Tento proces je nutně založen na pokusech a omylech, které vyžadují intuici uživatele a úsilí k dosažení optimálních výsledků. Proč je tedy důležitý? Abychom na tuto otázku odpověděli, musíme nejprve pochopit tři koncepty:

  • Tokenizace = jak model "vidí" prompt
  • Základní LLM = jak základní model "zpracovává" prompt
  • LLM laděné na instrukce = jak model nyní vidí "úkoly"

Tokenizace

LLM vidí prompty jako sekvenci tokenů, kde různé modely (nebo verze modelu) mohou tokenizovat stejný prompt různými způsoby. Protože LLM jsou trénovány na tokenech (a ne na surovém textu), způsob, jakým jsou prompty tokenizovány, má přímý dopad na kvalitu generované odpovědi.

Chcete-li získat intuici o tom, jak tokenizace funguje, vyzkoušejte nástroje jako OpenAI Tokenizer uvedený níže. Zkopírujte svůj prompt - a podívejte se, jak se převádí na tokeny, věnujte pozornost tomu, jak jsou zpracovávány znaky mezer a interpunkce. Upozorňujeme, že tento příklad ukazuje starší LLM (GPT-3) - takže při použití novějšího modelu může být výsledek odlišný.

Tokenizace

Koncept: Základní modely

Jakmile je prompt tokenizován, hlavní funkcí "Základního LLM" (nebo základního modelu) je předpovědět token v této sekvenci. Protože LLM jsou trénovány na obrovských textových datových sadách, mají dobrý přehled o statistických vztazích mezi tokeny a mohou tuto předpověď provést s určitou jistotou. Upozorňujeme, že nerozumí významu slov v promptu nebo tokenu; vidí pouze vzor, který mohou "dokončit" svou další předpovědí. Mohou pokračovat v předpovídání sekvence, dokud je uživatel nezasáhne nebo dokud nenastane nějaká předem stanovená podmínka.

Chcete vidět, jak funguje dokončování na základě promptů? Zadejte výše uvedený prompt do Chat Playground v Azure OpenAI Studio s výchozím nastavením. Systém je nakonfigurován tak, aby prompty považoval za požadavky na informace - takže byste měli vidět výstup, který odpovídá tomuto kontextu.

Ale co když uživatel chtěl vidět něco konkrétního, co splňuje nějaká kritéria nebo cíl úkolu? Zde přicházejí na scénu LLM laděné na instrukce.

Dokončování chatu základního LLM

Koncept: LLM laděné na instrukce

LLM laděné na instrukce začíná základním modelem a doladí ho pomocí příkladů nebo párů vstup/výstup (např. vícenásobné "zprávy"), které mohou obsahovat jasné instrukce - a odpověď od AI se snaží tyto instrukce dodržet.

Používá techniky jako Reinforcement Learning with Human Feedback (RLHF), které mohou model naučit dodržovat instrukce a učit se z zpětné vazby, aby produkoval odpovědi, které jsou lépe přizpůsobené praktickým aplikacím a více relevantní pro cíle uživatele.

Vyzkoušejme to - vraťte se k výše uvedenému promptu, ale nyní změňte systémovou zprávu, aby poskytla následující instrukci jako kontext:

Shrňte obsah, který vám byl poskytnut, pro žáka druhé třídy. Udržte výsledek na jeden odstavec s 3-5 odrážkami.

Vidíte, jak je výsledek nyní přizpůsoben požadovanému cíli a formátu? Učitel může nyní tuto odpověď přímo použít ve svých prezentacích pro danou třídu.

Dokončování chatu LLM laděného na instrukce

Proč potřebujeme návrh promptů?

Nyní, když víme, jak jsou prompty zpracovávány LLM, pojďme si povědět o důvodech, proč potřebujeme návrh promptů. Odpověď spočívá v tom, že současné LLM představují řadu výzev, které činí spolehlivé a konzistentní výstupy obtížnějšími bez úsilí věnovaného konstrukci a optimalizaci promptů. Například:

  1. Odpovědi modelu jsou stochastické. Stejný prompt pravděpodobně přinese různé odpovědi s různými modely nebo verzemi modelů. A může dokonce přinést různé výsledky se stejným modelem v různých časech. Techniky návrhu promptů nám mohou pomoci minimalizovat tyto variace poskytováním lepších mantinelů.

  2. Modely mohou vytvářet smyšlené odpovědi. Modely jsou předtrénovány na velkých, ale konečných datových sadách, což znamená, že nemají znalosti o konceptech mimo tento rozsah tréninku. Výsledkem je, že mohou produkovat výstupy, které jsou nepřesné, smyšlené nebo přímo protichůdné známým faktům. Techniky návrhu promptů pomáhají uživatelům identifikovat a zmírnit takové smyšlenky, např. požádáním AI o citace nebo odůvodnění.

  3. Schopnosti modelů se liší. Novější modely nebo generace modelů budou mít bohatší schopnosti, ale také přinesou jedinečné zvláštnosti a kompromisy v nákladech a složitosti. Návrh promptů nám může pomoci vyvinout osvědčené postupy a pracovní postupy, které abstrahují rozdíly a přizpůsobují se požadavkům specifickým pro modely škálovatelným a bezproblémovým způsobem.

Podívejme se na to v praxi v OpenAI nebo Azure OpenAI Playground:

  • Použijte stejný prompt s různými nasazeními LLM (např. OpenAI, Azure OpenAI, Hugging Face) - viděli jste rozdíly?
  • Použijte stejný prompt opakovaně se stejným nasazením LLM (např. Azure OpenAI Playground) - jak se tyto variace lišily?

Příklad smyšlenek

V tomto kurzu používáme termín "smyšlenka" k označení jevu, kdy LLM někdy generují fakticky nesprávné informace kvůli omezením ve svém tréninku nebo jiným omezením. Možná jste o tom také slyšeli pod pojmem "halucinace" v populárních článcích nebo výzkumných pracích. Nicméně důrazně doporučujeme používat termín "smyšlenka", abychom náhodou neantropomorfizovali chování tím, že bychom přisuzovali lidskou vlastnost výsledku řízenému strojem. To také posiluje zásady odpovědné AI z hlediska terminologie, odstraňuje termíny, které mohou být v některých kontextech považovány za urážlivé nebo neinkluzivní.

Chcete získat představu o tom, Webové vyhledávání mi ukázalo, že existují fiktivní příběhy (např. televizní seriály nebo knihy) o válkách na Marsu – ale žádné z roku 2076. Zdravý rozum nám také říká, že rok 2076 je v budoucnosti a tudíž nemůže být spojen s reálnou událostí.

Co se tedy stane, když tento dotaz zadáme různým poskytovatelům LLM?

Odpověď 1: OpenAI Playground (GPT-35)

Odpověď 1

Odpověď 2: Azure OpenAI Playground (GPT-35)

Odpověď 2

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

Odpověď 3

Jak se dalo očekávat, každý model (nebo verze modelu) generuje mírně odlišné odpovědi díky stochastickému chování a rozdílům ve schopnostech modelu. Například jeden model cílí na publikum osmého ročníku, zatímco druhý předpokládá středoškolské studenty. Ale všechny tři modely vytvořily odpovědi, které by mohly přesvědčit neinformovaného uživatele, že událost byla skutečná.

Techniky návrhu dotazů, jako je metaprompting a konfigurace teploty, mohou do určité míry snížit výskyt smyšlených odpovědí modelu. Nové architektury návrhu dotazů také bezproblémově začleňují nové nástroje a techniky do toku dotazů, aby zmírnily nebo snížily některé z těchto efektů.

Případová studie: GitHub Copilot

Tuto sekci zakončíme tím, že si uděláme představu o tom, jak se návrh dotazů používá v reálných řešeních, a podíváme se na jednu případovou studii: GitHub Copilot.

GitHub Copilot je váš „AI programátorský partner“ – převádí textové dotazy na návrhy kódu a je integrován do vašeho vývojového prostředí (např. Visual Studio Code) pro bezproblémový uživatelský zážitek. Jak je zdokumentováno v sérii níže uvedených blogů, nejranější verze byla založena na modelu OpenAI Codex – přičemž inženýři rychle zjistili potřebu model doladit a vyvinout lepší techniky návrhu dotazů, aby se zlepšila kvalita kódu. V červenci představili vylepšený AI model, který jde nad rámec Codexu pro ještě rychlejší návrhy.

Přečtěte si příspěvky v pořadí, abyste sledovali jejich cestu učení.

Můžete také procházet jejich blog o inženýrství pro další příspěvky, jako je tento, který ukazuje, jak jsou tyto modely a techniky aplikovány pro pohon reálných aplikací.


Konstrukce dotazů

Viděli jsme, proč je návrh dotazů důležitý – nyní pochopíme, jak jsou dotazy konstruovány, abychom mohli vyhodnotit různé techniky pro efektivnější návrh dotazů.

Základní dotaz

Začněme základním dotazem: textový vstup zaslaný modelu bez dalšího kontextu. Zde je příklad – když pošleme první slova americké národní hymny do OpenAI Completion API, okamžitě dokončí odpověď dalšími řádky, což ilustruje základní predikční chování.

Dotaz (Vstup) Dokončení (Výstup)
Oh say can you see Zdá se, že začínáte text „The Star-Spangled Banner“, národní hymny Spojených států. Celý text je ...

Komplexní dotaz

Nyní přidáme kontext a instrukce k základnímu dotazu. Chat Completion API nám umožňuje vytvořit komplexní dotaz jako kolekci zpráv s:

  • Páry vstup/výstup odrážející uživatelský vstup a odpověď asistenta.
  • Systémovou zprávou nastavující kontext pro chování nebo osobnost asistenta.

Požadavek má nyní podobu níže, kde tokenizace efektivně zachycuje relevantní informace z kontextu a konverzace. Změna systémového kontextu může mít stejně velký dopad na kvalitu dokončení jako poskytnuté uživatelské 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?"}
    ]
)

Instrukční dotaz

V předchozích příkladech byl uživatelský dotaz jednoduchým textovým dotazem, který lze interpretovat jako žádost o informace. U instrukčních dotazů můžeme tento text použít k podrobnějšímu specifikování úkolu, čímž poskytneme AI lepší vodítko. Zde je příklad:

Dotaz (Vstup) Dokončení (Výstup) Typ instrukce
Napište popis občanské války vrácen jednoduchý odstavec Jednoduchý
Napište popis občanské války. Uveďte klíčová data a události a popište jejich význam vrácen odstavec následovaný seznamem klíčových dat událostí s popisy Komplexní
Napište popis občanské války v 1 odstavci. Uveďte 3 odrážky s klíčovými daty a jejich významem. Uveďte další 3 odrážky s klíčovými historickými postavami a jejich příspěvky. Výstup vraťte jako soubor JSON vráceny podrobnější informace v textovém poli, formátované jako JSON, které můžete zkopírovat do souboru a ověřit podle potřeby Komplexní. Formátovaný.

Primární obsah

V předchozích příkladech byl dotaz stále poměrně otevřený, což umožnilo LLM rozhodnout, která část jeho předem naučené databáze je relevantní. S návrhovým vzorem primárního obsahu je vstupní text rozdělen na dvě části:

  • instrukci (akci)
  • relevantní obsah (který ovlivňuje akci)

Zde je příklad, kde je instrukcí „shrňte to ve 2 větách“.

Dotaz (Vstup) Dokončení (Výstup)
Jupiter je pátá planeta od Slunce a největší v naší Sluneční soustavě. Je to plynný obr s hmotností tisíciny hmotnosti Slunce, ale dva a půlkrát větší než všechny ostatní planety Sluneční soustavy dohromady. Jupiter je jedním z nejjasnějších objektů viditelných pouhým okem na noční obloze a je znám starověkým civilizacím již před zaznamenanou historií. Je pojmenován po římském bohu Jupiterovi.[19] Při pohledu ze Země může být Jupiter dostatečně jasný, aby jeho odražené světlo vrhalo viditelné stíny,[20] a je průměrně třetím nejjasnějším přírodním objektem na noční obloze po Měsíci a Venuši.
Shrňte to ve 2 krátkých větách
Jupiter, pátá planeta od Slunce, je největší ve Sluneční soustavě a je známá jako jeden z nejjasnějších objektů na noční obloze. Pojmenovaný po římském bohu Jupiterovi, je plynným obrem s hmotností dva a půlkrát větší než všechny ostatní planety Sluneční soustavy dohromady.

Segment primárního obsahu lze použít různými způsoby k efektivnějšímu řízení instrukcí:

  • Příklady – místo toho, abychom modelu explicitně říkali, co má dělat, poskytneme mu příklady požadovaného výstupu a necháme ho odvodit vzor.
  • Vodítka – následujeme instrukci „vodítkem“, které připraví model na relevantnější odpovědi.
  • Šablony – jedná se o opakovatelné „recepty“ pro dotazy s proměnnými (místy), které lze přizpůsobit daty pro konkrétní případy použití.

Pojďme si tyto techniky prozkoumat v praxi.

Použití příkladů

Toto je přístup, kdy použijete primární obsah k „nakrmení modelu“ několika příklady požadovaného výstupu pro danou instrukci a necháte ho odvodit vzor pro požadovaný výstup. Na základě počtu poskytnutých příkladů můžeme mít zero-shot prompting, one-shot prompting, few-shot prompting atd.

Dotaz nyní sestává ze tří komponent:

  • Popis úkolu
  • Několik příkladů požadovaného výstupu
  • Začátek nového příkladu (který se stává implicitním popisem úkolu)
Typ učení Dotaz (Vstup) Dokončení (Výstup)
Zero-shot "The Sun is Shining". Přeložte do španělštiny "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áč oběhl mety => Baseball
Hráč zahrál eso => Tenis
Hráč zahrál šestku => Kriket
Hráč provedl smeč =>
Basketbal

Všimněte si, jak jsme museli poskytnout explicitní instrukci („Přeložte do španělštiny“) v zero-shot prompting, ale v one-shot prompting se odvodí. Příklad few-shot ukazuje, jak přidání více příkladů umožňuje modelům dělat přesnější závěry bez dalších instrukcí.

Vodítka v dotazech

Další technikou pro použití primárního obsahu je poskytnutí vodítek místo příkladů. V tomto případě dáváme modelu „nápovědu“ správným směrem tím, že ho nastartujeme úryvkem, který odráží požadovaný formát odpovědi. Model pak „vezme vodítko“ a pokračuje v tomto duchu.

Počet vodítek Dotaz (Vstup) Dokončení (Výstup)
0 Jupiter je pátá planeta od Slunce a největší v naší Sluneční soustavě. Je to plynný obr s hmotností tisíciny hmotnosti Slunce, ale dva a půlkrát větší než všechny ostatní planety Sluneční soustavy dohromady. Jupiter je jedním z nejjasnějších objektů viditelných pouhým okem na noční obloze a je znám starověkým civilizacím již před zaznamenanou historií.
Shrňte to
Jupiter je největší planeta v naší Sluneční soustavě a pátá od Slunce. Je to plynný obr s hmotností 1/1000 Slunce, ale je těžší než všechny ostatní planety dohromady. Starověké civilizace znají Jupiter již dlouho a je snadno viditelný na noční obloze.
1 Jupiter je pátá planeta od Slunce a největší v naší Sluneční soustavě. Je to plynný obr s hmotností tisíciny hmotnosti Slunce, ale dva a půlkrát větší než všechny ostatní planety dohromady. Jupiter je jedním z nejjasnějších objektů viditelných pouhým okem na noční obloze a je známý již od dob starověkých civilizací, ještě před zaznamenanou historií.
Shrňte to
Co jsme se naučili je, že Jupiter
je pátá planeta od Slunce a největší v naší Sluneční soustavě. Je to plynný obr s hmotností tisíciny hmotnosti Slunce, ale dva a půlkrát větší než všechny ostatní planety dohromady. Je snadno viditelný pouhým okem a je známý již od starověku.
2 Jupiter je pátá planeta od Slunce a největší v naší Sluneční soustavě. Je to plynný obr s hmotností tisíciny hmotnosti Slunce, ale dva a půlkrát větší než všechny ostatní planety dohromady. Jupiter je jedním z nejjasnějších objektů viditelných pouhým okem na noční obloze a je známý již od dob starověkých civilizací, ještě před zaznamenanou historií.
Shrňte to
Top 3 fakta, která jsme se naučili:
1. Jupiter je pátá planeta od Slunce a největší v naší Sluneční soustavě.
2. Je to plynný obr s hmotností tisíciny hmotnosti Slunce...
3. Jupiter je viditelný pouhým okem již od starověku ...

Šablony pro zadání

Šablona pro zadání je předem definovaný recept na zadání, který lze uložit a znovu použít podle potřeby, aby bylo možné dosáhnout konzistentnějších uživatelských zkušeností ve velkém měřítku. V nejjednodušší formě je to jednoduše sbírka příkladů zadání jako tento od OpenAI, která poskytuje interaktivní komponenty zadání (zprávy uživatele a systému) a formát požadavku řízený API - pro podporu opětovného použití.

V jeho složitější formě, jako tento příklad od LangChain, obsahuje zástupné symboly, které lze nahradit daty z různých zdrojů (uživatelský vstup, kontext systému, externí datové zdroje atd.) pro dynamické generování zadání. To nám umožňuje vytvořit knihovnu opakovaně použitelných zadání, která lze použít k programovému dosažení konzistentních uživatelských zkušeností ve velkém měřítku.

Nakonec skutečná hodnota šablon spočívá ve schopnosti vytvářet a publikovat knihovny zadání pro vertikální aplikační domény - kde je šablona zadání nyní optimalizována tak, aby odrážela kontext nebo příklady specifické pro aplikaci, které činí odpovědi relevantnějšími a přesnějšími pro cílové uživatelské publikum. Prompts For Edu je skvělým příkladem tohoto přístupu, který kurátoruje knihovnu zadání pro vzdělávací doménu s důrazem na klíčové cíle, jako je plánování lekcí, návrh učebních osnov, doučování studentů atd.

Podpůrný obsah

Pokud uvažujeme o konstrukci zadání jako o kombinaci instrukce (úkolu) a cíle (primárního obsahu), pak sekundární obsah je jako další kontext, který poskytujeme, aby ovlivnil výstup nějakým způsobem. Mohou to být parametry ladění, pokyny k formátování, taxonomie témat atd., které mohou modelu pomoci přizpůsobit jeho odpověď tak, aby vyhovovala požadovaným uživatelským cílům nebo očekáváním.

Například: Vzhledem k katalogu kurzů s rozsáhlými metadaty (název, popis, úroveň, metadata, instruktor atd.) o všech dostupných kurzech v učebních osnovách:

  • můžeme definovat instrukci "shrňte katalog kurzů pro podzim 2023"
  • můžeme použít primární obsah k poskytnutí několika příkladů požadovaného výstupu
  • můžeme použít sekundární obsah k identifikaci 5 nejdůležitějších "tagů".

Nyní může model poskytnout shrnutí ve formátu ukázaném několika příklady - ale pokud má výsledek více tagů, může upřednostnit 5 tagů identifikovaných v sekundárním obsahu.


Nejlepší postupy pro tvorbu zadání

Nyní, když víme, jak mohou být zadání konstruována, můžeme začít přemýšlet o tom, jak je navrhnout, aby odrážela nejlepší postupy. Můžeme o tom přemýšlet ve dvou částech - mít správný přístup a aplikovat správné techniky.

Přístup k tvorbě zadání

Tvorba zadání je proces pokusů a omylů, takže mějte na paměti tři široké vodítka:

  1. Porozumění doméně je důležité. Přesnost a relevance odpovědí závisí na doméně, ve které aplikace nebo uživatel působí. Použijte svou intuici a odborné znalosti v dané doméně k dalšímu přizpůsobení technik. Například definujte osobnosti specifické pro doménu ve svých systémových zadáních nebo použijte šablony specifické pro doménu ve svých uživatelských zadáních. Poskytněte sekundární obsah, který odráží kontexty specifické pro doménu, nebo použijte vodítka a příklady specifické pro doménu, aby model směřoval k známým vzorcům použití.

  2. Porozumění modelu je důležité. Víme, že modely jsou stochastické povahy. Ale implementace modelů se mohou také lišit z hlediska datových sad, které používají (předem naučené znalosti), schopností, které poskytují (např. prostřednictvím API nebo SDK), a typu obsahu, pro který jsou optimalizovány (např. kód vs. obrázky vs. text). Pochopte silné stránky a omezení modelu, který používáte, a použijte tyto znalosti k prioritizaci úkolů nebo vytvoření přizpůsobených šablon, které jsou optimalizovány pro schopnosti modelu.

  3. Iterace a validace jsou důležité. Modely se rychle vyvíjejí, stejně jako techniky pro tvorbu zadání. Jako odborník na danou doménu můžete mít jiný kontext nebo kritéria pro vaši konkrétní aplikaci, která nemusí platit pro širší komunitu. Použijte nástroje a techniky pro tvorbu zadání k "nastartování" konstrukce zadání, poté iterujte a validujte výsledky pomocí své vlastní intuice a odborných znalostí v dané doméně. Zaznamenejte své poznatky a vytvořte databázi znalostí (např. knihovny zadání), která může být použita jako nový základ pro ostatní, pro rychlejší iterace v budoucnu.

Nejlepší postupy

Nyní se podívejme na běžné nejlepší postupy doporučené odborníky z OpenAI a Azure OpenAI.

Co Proč
Vyhodnoťte nejnovější modely. Nové generace modelů pravděpodobně mají lepší funkce a kvalitu - ale mohou také přinést vyšší náklady. Vyhodnoťte jejich dopad, poté se rozhodněte o migraci.
Oddělte instrukce a kontext. Zkontrolujte, zda váš model/provident definuje oddělovače pro jasnější rozlišení instrukcí, primárního a sekundárního obsahu. To může modelům pomoci přesněji přiřadit váhy tokenům.
Buďte konkrétní a jasní. Poskytněte více detailů o požadovaném kontextu, výsledku, délce, formátu, stylu atd. To zlepší jak kvalitu, tak konzistenci odpovědí. Zaznamenejte recepty do opakovaně použitelných šablon.
Buďte popisní, používejte příklady. Modely mohou lépe reagovat na přístup "ukaž a vysvětli". Začněte s přístupem zero-shot, kde mu dáte instrukci (ale žádné příklady), poté zkuste few-shot jako vylepšení, poskytnutím několika příkladů požadovaného výstupu. Používejte analogie.
Používejte vodítka pro zahájení odpovědí. Nasměrujte model k požadovanému výsledku tím, že mu poskytnete několik úvodních slov nebo frází, které může použít jako výchozí bod pro odpověď.
Zdůrazněte důležité. Někdy je potřeba modelu zopakovat instrukce. Poskytněte instrukce před a po primárním obsahu, použijte instrukci a vodítko atd. Iterujte a validujte, co funguje.
Pořadí je důležité. Pořadí, ve kterém modelu prezentujete informace, může ovlivnit výstup, dokonce i v učebních příkladech, díky efektu nedávnosti. Vyzkoušejte různé možnosti, abyste zjistili, co funguje nejlépe.
Dejte modelu "únik". Poskytněte modelu záložní odpověď, kterou může poskytnout, pokud z nějakého důvodu nemůže úkol dokončit. To může snížit pravděpodobnost, že model vygeneruje nesprávné nebo smyšlené odpovědi.

Stejně jako u jakéhokoli nejlepšího postupu, pamatujte, že vaše zkušenosti se mohou lišit v závislosti na modelu, úkolu a doméně. Použijte je jako výchozí bod a iterujte, abyste zjistili, co funguje nejlépe pro vás. Neustále přehodnocujte svůj proces tvorby zadání, jakmile budou k dispozici nové modely a nástroje, s důrazem na škálovatelnost procesu a kvalitu odpovědí.

Zadání

Gratulujeme! Dostali jste se na konec lekce! Je čas otestovat některé z těchto konceptů a technik na skutečných příkladech!

Pro naše zadání budeme používat Jupyter Notebook s cvičeními, která můžete interaktivně dokončit. Notebook můžete také rozšířit o vlastní buňky Markdown a kódu, abyste mohli sami prozkoumat nápady a techniky.

Začněte tím, že si forknete repozitář, poté

  • (Doporučeno) Spusťte GitHub Codespaces
  • (Alternativně) Klonujte repozitář na své lokální zařízení a použijte ho s Docker Desktop
  • (Alternativně) Otevřete Notebook ve svém preferovaném prostředí pro běh Notebooků.

Dále nakonfigurujte své proměnné prostředí

  • Zkopírujte soubor .env.copy v kořenovém adresáři repozitáře do .env a vyplňte hodnoty AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_DEPLOYMENT. Vraťte se do sekce Learning Sandbox, abyste se dozvěděli jak.

Dále otevřete Jupyter Notebook

  • Vyberte runtime kernel. Pokud používáte možnosti 1 nebo 2, jednoduše vyberte výchozí kernel Python 3.10.x poskytovaný vývojářským kontejnerem.

Nyní jste připraveni spustit cvičení. Všimněte si, že zde nejsou žádné správné nebo špatné odpovědi - jde jen o zkoumání možností metodou pokusů a omylů a budování intuice pro to, co funguje pro daný model a aplikační doménu.

Z tohoto důvodu v této lekci nejsou žádné segmenty řešení kódu. Místo toho bude Notebook obsahovat buňky Markdown s názvem "Moje řešení:", které ukazují jeden příklad výstupu pro referenci.

Kontrola znalostí

Které z následujících zadání je dobré podle rozumných nejlepších postupů?

  1. Ukaž mi obrázek červeného auta
  2. Ukaž mi obrázek červeného auta značky Volvo a modelu XC90 zaparkovaného u útesu při západu slunce
  3. Ukaž mi obrázek červeného auta značky Volvo a modelu XC90

Odpověď: 2, je to nejlepší zadání, protože poskytuje detaily o "čem" a jde do specifik (ne jen jakékoliv auto, ale konkrétní značka a model) a také popisuje celkové prostředí. 3 je další nejlepší, protože také obsahuje hodně popisu.

🚀 Výzva

Zkuste využít techniku "vodítka" s tímto zadáním: Doplňte větu "Ukaž mi obrázek červeného auta značky Volvo a ". Co vám model odpoví a jak byste to vylepšili?

Skvělá práce! Pokračujte v učení

Chcete se dozvědět více o různých konceptech tvorby zadání? Navštivte stránku pro další učení, kde najdete další skvělé zdroje na toto téma.

Přejděte na lekci 5, kde se podíváme na pokročilé techniky tvorby zadání!


Prohlášení:
Tento dokument byl přeložen pomocí služby AI pro překlad Co-op Translator. I když se snažíme o přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.