Optimalizace výzev jazykového modelu

Dokončeno

Výzvy jsou konverzační pomůcky, které dáváte velkým jazykovým modelům (LLM), tvarování odpovědí na základě vašich dotazů nebo pokynů. Můžete například vyzvat LLM k převodu věty z angličtiny do francouzštiny nebo vygenerovat souhrn textu.

V předchozí lekci jste vytvořili výzvu jako vstupní řetězec:

string input = @"I'm a vegan in search of new recipes. I love spicy food! 
Can you give me a list of breakfast recipes that are vegan friendly?";
input = """I'm a vegan in search of new recipes. I love spicy food! 
Can you give me a list of breakfast recipes that are vegan friendly?"""

V této výzvě poskytnete obsah jazykovému modelu spolu s pokyny. Obsah pomáhá modelu generovat výsledky, které jsou pro uživatele relevantnější.

Tvoření zahrnuje tvorbu jasných, na kontext bohatých pokynů, aby vedly model k vygenerování požadované odpovědi. Pokud chcete vytvořit efektivní výzvu, přesnost a srozumitelnost jsou klíčové. Možná budete muset experimentovat a upravit výzvy k přesnému výsledku.

Použití příkladů k vedení modelu

Do výzev můžete zahrnout příklady, které vám pomůžou s odpovědí. Příklady můžou přijít před pokyny nebo po těchto pokynech. Příklady výzev se klasifikují jako učení s nulovým příkladem nebo učení s několika příklady na základě toho, jestli obsahují doslovné doplňky. Doslovné dokončování je konkrétní předdefinovaný příklad odpovědi, která je součástí výzvy. Ukazuje přesně, jaký druh odpovědi se od umělé inteligence očekává, slovo pro slovo. Tyto příklady usnadňují AI napodobování struktury, stylu nebo tónu zadaných dokončení.

Učení bez příkladů

Při zero-shot učení zahrnete pokyny, ale vyloučíte doslovné dokončování. Výzvy s nulovým snímkem se spoléhají na stávající znalosti modelu a vygenerují odpověď. Výzvy s nulovým snímkem jsou užitečné, když chcete obecnou odpověď nebo když je úkol jednoduchý a nevyžaduje mnoho pokynů. Zero-shot prompting je také méně náročné na prostředky, protože spoléhá na existující znalosti.

Tady je příklad zero-shot výzvy, která modelu říká, aby vyhodnotil uživatelský vstup, určil záměr uživatele a před výstupem přidal "Intent: ".

string prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent: 
""";
prompt = f"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent: 
"""

Několik snímků učení

S učením z několika příkladů zahrnete do výzvy doslovná dokončení, která vám pomohou vést odpověď modelu. Obvykle se zahrne jeden až pět příkladů. Příklady ukazují požadovanou strukturu, styl nebo typ odpovědi. Učení s malým množstvím dat vytváří více tokenů a také způsobuje, že model aktualizuje své znalosti. Výzvy k několika snímkům jsou zvláště cenné pro snížení nejednoznačnosti a sladění výsledků s požadovaným výsledkem.

Tady je příklad výzvy typu few-shot, která modelu přikazuje vyhodnotit uživatelský vstup, určit záměr uživatele a před výstupem předchází textem "Intent: ".

string prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.

User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage

User Input: Can you send the full update to the marketing team?
Intent: SendEmail

User Input: {request}
Intent:
""";
prompt = f"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.

User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage

User Input: Can you send the full update to the marketing team?
Intent: SendEmail

User Input: {request}
Intent:
"""

Použijte persony ve výzvách

Přiřazování rolí ve výzvách je technika, kterou model používá k tomu, aby při generování odpovědí přijal určitý pohled, tón nebo odborné znalosti. Personas umožňuje přizpůsobit výstup tak, aby lépe vyhovoval kontextu nebo cílové skupině úkolu. Osoba je užitečná, když potřebujete odpověď na simulaci povolání nebo odráží tón hlasu. Pokud chcete přiřadit osobu, měli byste jasně popsat definici role ve výzvě.

Tady je příklad výzvy, která přiřadí osobu:

string prompt = $"""
You are a highly experienced software engineer. Explain the concept of asynchronous programming to a beginner.
""";
prompt = """
You are a highly experienced software engineer. Explain the concept of asynchronous programming to a beginner.
"""

Řetěz myšlenkových výzev

S řetězem myšlenkových výzev zobrazíte model výzvu k provedení úkolu krok za krokem a k zobrazení každého kroku a jeho výsledku ve výstupu. Zřetězování výzev může zjednodušit přípravu výzvy tím, že na model přesměruje plánování provádění. Série výzev usnadňuje izolaci jakýchkoli problémů na konkrétní krok, abyste věděli, kam zaměřit další úsilí. Můžete dát modelu pokyn, aby zahrnoval svůj řetěz myšlenek, nebo můžete použít příklady k zobrazení modelu, jak rozdělit úkoly.

Tady je příklad, který dává modelu pokyn, aby popisoval podrobné důvody:

string prompt = $"""
A farmer has 150 apples and wants to sell them in baskets. Each basket can hold 12 apples. If any apples remain after filling as many baskets as possible, the farmer will eat them. How many apples will the farmer eat?
Instructions: Explain your reasoning step by step before providing the answer.
""";
prompt = """
A farmer has 150 apples and wants to sell them in baskets. Each basket can hold 12 apples. If any apples remain after filling as many baskets as possible, the farmer will eat them. How many apples will the farmer eat?
Instructions: Explain your reasoning step by step before providing the answer.
"""

Tady je příklad, který popisuje kroky pro dokončení modelu:

prompt = $"""
Instructions: A farmer has 150 apples and wants to sell them in baskets. Each basket can hold 12 apples. If any apples remain after filling as many baskets as possible, the farmer will eat them. How many apples will the farmer eat?

First, calculate how many full baskets the farmer can make by dividing the total apples by the apples per basket:
1. 

Next, subtract the number of apples used in the baskets from the total number of apples to find the remainder: 
1.

"Finally, the farmer will eat the remaining apples:
1.
""";
prompt = """
Instructions: A farmer has 150 apples and wants to sell them in baskets. Each basket can hold 12 apples. If any apples remain after filling as many baskets as possible, the farmer will eat them. How many apples will the farmer eat?

First, calculate how many full baskets the farmer can make by dividing the total apples by the apples per basket:
1. 

Next, subtract the number of apples used in the baskets from the total number of apples to find the remainder: 
1.

Finally, the farmer will eat the remaining apples:
1.
"""

Výstup této výzvy by se měl podobat následujícímu výstupu:

Divide 150 by 12 to find the number of full baskets the farmer can make: 150 / 12 = 12.5 full baskets
The farmer can make 12 full baskets with 12 apples each.
Multiply 12 full baskets by 12 apples per basket to find the number of apples used in the baskets: 12 * 12 = 144 apples
Subtract the number of apples used in the baskets from the total number of apples: 150 - 144 = 6 apples
The farmer will eat 6 remaining apples.

Tipy pro vytváření výzev

  • Konkrétní vstupy poskytují konkrétní výstupy: LLM reagují na základě vstupu, který obdrží. Vytvoření jasných a konkrétních výzev je zásadní pro získání požadovaného výstupu.

  • Experimentování je klíčové: Možná budete muset iterovat a experimentovat s různými výzvami, abyste pochopili, jak model interpretuje a generuje odpovědi. Malé úpravy můžou vést k významným změnám výsledků.

  • Na kontextu záleží: LLMs berou v úvahu kontext uvedený ve výzvě. Měli byste zajistit, aby byl kontext dobře definovaný a relevantní pro získání přesných a koherentních odpovědí.

  • Zpracovat nejednoznačnost: Mějte na paměti, že LLM mohou mít potíže s nejednoznačnými dotazy. Zadejte kontext nebo strukturu, abyste se vyhnuli vágním nebo neočekávaným výsledkům.

  • Délka podnětů: Zatímco modely LLM mohou zpracovávat jak krátké, tak i dlouhé podněty, měli byste zvážit kompromis mezi stručností a srozumitelností. Experimentování s délkou výzvy vám pomůže najít optimální rovnováhu.

Vytváření efektivních výzev vyžaduje srozumitelnost, přesnost a promyšlený návrh. Techniky, jako učení bez příkladů a učení s malým počtem příkladů, přiřazení osob a řetězení myšlenek, mohou zlepšit kvalitu a relevantnost odpovědí. Poskytnutím jasných pokynů, dobře definovaných kontextů a příkladů v případě potřeby můžete model vést k vygenerování jemně vyladěných relevantních odpovědí. Abyste dosáhli nejlepších výsledků, nezapomeňte experimentovat a upřesňovat výzvy.