Optimera instruktioner för språkmodeller

Slutförd

Frågor är konversationssignaler som du ger till stora språkmodeller (LLM), som formar svar baserat på dina frågor eller instruktioner. Du kan till exempel uppmana LLM:er att konvertera en mening från engelska till franska eller generera en sammanfattning av en text.

I föregående lektion skapade du kommandotolken som indatasträng:

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?"""

I den här prompten anger du innehåll till språkmodellen tillsammans med anvisningarna. Innehållet hjälper modellen att generera resultat som är mer relevanta för användaren.

Att fråga handlar om att skapa tydliga, sammanhangsrika instruktioner som vägleder modellen för att generera ett önskat svar. För att skapa en effektiv uppmaning är precision och klarhet nyckeln. Du kan behöva experimentera och justera dina frågor för att få korrekta resultat.

Använd exempel för att vägleda modellen

Du kan ta med exempel i dina uppmaningar för att hjälpa till att vägleda svaret. Exemplen kan komma före eller efter instruktionerna. Exempel på uppgifter klassificeras som zero-shot-lärande eller few-shot-lärande baserat på om de innehåller ordagranna fullständningar. Ett ordagrant slutförande är ett specifikt, fördefinierat exempel på ett svar som ingår i prompten. Den visar exakt vilken typ av svar som förväntas av AI:n, ord för ord. De här exemplen gör det enklare för AI:n att efterlikna strukturen, stilen eller tonen i de angivna slutförandena.

Nollskottsinlärning

Med zero-shot learning inkluderar du instruktionerna men exkluderar fullständiga svar. Nollskottsprompter bygger på modellens befintliga kunskaper för att generera ett svar. Zero-shot-promptar är användbara när du vill ha en allmän respons eller när uppgiften är okomplicerad och inte behöver mycket vägledning. Zero-shot-frågor är också mindre resursintensiva eftersom det förlitar sig på befintlig kunskap.

Här är ett exempel på en zero-shot-prompt som instruerar modellen att utvärdera användarindata, fastställa användarens avsikt och inleda utdata med "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: 
"""

Få skottinlärning

Med few-shot learning inkluderar du ordagranna avslutningar i din prompt för att hjälpa till att vägleda modellens svar. Vanligtvis ingår ett till fem exempel. Exemplen visar vilken struktur, stil eller typ av svar du vill ha. Few-shot-inlärning genererar fler tokens och gör också att modellen uppdaterar sin kunskap. Few-shot-promptning är särskilt värdefullt för att minska tvetydigheten och anpassa resultaten till det önskade resultatet.

Här är ett exempel på en få-exempel-prompt som talar om för modellen att utvärdera användarindata, fastställa användarens avsikt och inleda utdata med "Avsikt: ".

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:
"""

Använd personas i uppmaningar

Att tilldela personas i en prompt är en teknik som används för att vägleda modellen att anta en specifik synvinkel, ton eller expertis när man genererar svar. Med personas kan du skräddarsy utdata för att bättre passa uppgiftens kontext eller målgrupp. Persona är användbar när du behöver svaret för att simulera ett yrke eller återspegla en ton av röst. Om du vill tilldela en persona bör du tydligt beskriva rolldefinitionen i din fråga.

Här är ett exempel på en uppmaning som tilldelar en persona:

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.
"""

Kedja av tankefråga

Genom att använda en tankekedja uppmanar du modellen att utföra en uppgift steg för steg och att presentera varje steg och dess resultat i rätt ordning i utdata. Kedjepromptning kan förenkla promptdesign genom att överföra en del av körningsplaneringen till modellen. Kedjeprompterna gör det enklare att isolera eventuella problem till ett specifikt steg så att du vet var du ska fokusera ytterligare. Du kan instruera modellen att inkludera dess tankekedja, eller så kan du använda exempel för att visa modellen hur du delar upp uppgifter.

Här är ett exempel som instruerar modellen att beskriva det stegvisa resonemanget:

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.
"""

Här är ett exempel som beskriver stegen för att slutföra modellen:

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.
"""

Utdata från den här prompten bör likna följande utdata:

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.

Tips för att skapa frågor

  • Specifika indata ger specifika utdata: LLM:er svarar baserat på de indata de tar emot. Det är viktigt att skapa tydliga och specifika frågor för att få önskade utdata.

  • Experimentering är nyckel: Du kan behöva iterera och experimentera med olika uppmaningar för att förstå hur modellen tolkar och genererar svar. Små justeringar kan leda till betydande förändringar i resultatet.

  • Kontextfrågor: LLM:er tar hänsyn till den kontext som anges i prompten. Du bör se till att kontexten är väldefinierad och relevant för att få korrekta och sammanhängande svar.

  • Hantera tvetydighet: Tänk på att LLM:er kan ha problem med tvetydiga frågor. Ange kontext eller struktur för att undvika vaga eller oväntade resultat.

  • Frågans längd: Även om LLM:er kan bearbeta både korta och långa frågor bör du överväga kompromissen mellan korthet och klarhet. Om du experimenterar med promptlängd kan du hitta den optimala balansen.

Att skapa effektiva frågor kräver klarhet, precision och genomtänkt design. Tekniker som zero-shot och few-shot learning, personstilldelning och tankekedjefrågor kan förbättra svarens kvalitet och relevans. Genom att tillhandahålla tydliga instruktioner, väldefinierade kontexter och exempel när det behövs kan du vägleda modellen att generera finjusterade relevanta svar. Kom ihåg att experimentera och förfina dina frågor för att uppnå bästa resultat.