Prompts voor taalmodel optimaliseren
Prompts zijn gesprekssignalen die u aan grote taalmodellen (LLM's) geeft, en antwoorden vormgeven op basis van uw query's of instructies. U kunt LLM's bijvoorbeeld vragen om een zin van Engels naar Frans te vertalen of om een samenvatting van een tekst te maken.
In de vorige eenheid hebt u de prompt gemaakt als invoerreeks.
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?"""
In deze prompt geeft u inhoud op voor het taalmodel, samen met de instructies. De inhoud helpt het model resultaten te genereren die relevanter zijn voor de gebruiker.
Het vragen omvat het maken van duidelijke, contextrijke instructies om het model te begeleiden om een gewenst antwoord te genereren. Om een effectieve prompt te maken, zijn precisie en duidelijkheid essentieel. Mogelijk moet u experimenteren en uw prompts voor nauwkeurige resultaten aanpassen.
Voorbeelden gebruiken om het model te begeleiden
U kunt voorbeelden opnemen in uw prompts om het antwoord te helpen begeleiden. De voorbeelden kunnen vóór of na de instructies worden weergegeven. Promptvoorbeelden worden geclassificeerd als zero-shot learning of few-shot learning op basis van het wel of niet bevatten van exacte voltooiingen. Een exacte completering is een specifiek, vooraf gedefinieerd voorbeeld van een antwoord dat is opgenomen in de prompt. Het laat precies zien wat voor soort antwoord er wordt verwacht van de AI, woord voor woord. Deze voorbeelden maken het voor de AI eenvoudiger om de structuur, stijl of toon van de opgegeven voltooiingen na te bootsen.
Zero-shot learning (leren zonder voorbeelden)
Met zero-shot learning worden de instructies wel inbegrepen, maar letterlijke voltooiingen uitgesloten. Zero-shot prompts maken gebruik van de bestaande kennis van het model om een antwoord te genereren. Zero-shot prompts zijn handig als u een algemeen antwoord wilt of wanneer de taak eenvoudig is en er niet veel richtlijnen nodig zijn. Zero-shot prompting is ook minder middelenintensief omdat het afhankelijk is van bestaande kennis.
Hier volgt een voorbeeld van een zero-shot-prompt waarmee het model de gebruikersinvoer evalueert, de intentie van de gebruiker bepaalt en de uitvoer voorafzet met '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:
"""
Leren van weinig voorbeelden
Bij few-shot learning voegt u exacte voltooide voorbeelden toe aan uw prompt om de reactie van het model te sturen. Meestal zijn er één tot vijf voorbeelden opgenomen. In de voorbeelden ziet u de structuur, stijl of het gewenste type antwoord. Few-shot learning genereert meer tokens en zorgt ervoor dat het model zijn kennis bijwerkt. Few-shot prompting is vooral waardevol voor het verminderen van dubbelzinnigheid en het afstemmen van resultaten op de gewenste uitkomst.
Hier volgt een voorbeeld van een few-shot prompt dat het model instrueert om gebruikersinvoer te evalueren, de intentie van de gebruiker te bepalen en de uitvoer vooraf te laten gaan door '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:
"""
Persona's gebruiken in prompts
Het toewijzen van persona's bij het geven van prompts is een techniek die wordt gebruikt om het model te begeleiden bij het aannemen van een specifiek standpunt, toon of expertise bij het genereren van antwoorden. Met persona's kunt u de uitvoer aanpassen aan de context of het publiek van de taak. De persona is handig wanneer u het antwoord nodig hebt om een beroep te simuleren of een toon van stem weer te geven. Als u een persona wilt toewijzen, moet u de roldefinitie duidelijk beschrijven in uw prompt.
Hier volgt een voorbeeld van een prompt die een persona toewijst:
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.
"""
Keten van gedachteprompt
Met een keten van gedachteprompts vraagt u het model om een taak stapsgewijs uit te voeren en om elke stap en het bijbehorende resultaat in de volgorde van de uitvoer weer te geven. Ketenprompts kunnen het ontwerpen van prompts vereenvoudigen door een deel van de uitvoeringsplanning naar het model over te laten. De ketenprompts maken het gemakkelijker om eventuele problemen te isoleren voor een specifieke stap, zodat u weet waar u zich verder moet concentreren. U kunt het model instrueren om de gedachtenketen op te nemen, of u kunt voorbeelden gebruiken om het model te laten zien hoe u taken opsplitst.
Hier volgt een voorbeeld waarin het model wordt geïnstrueerd om de stapsgewijze redenering te beschrijven:
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.
"""
Hier volgt een voorbeeld waarin de stappen voor het uitvoeren van het model worden beschreven:
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.
"""
De uitvoer van deze prompt moet lijken op de volgende uitvoer:
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 voor het maken van prompts
Specifieke invoer levert specifieke uitvoer op: LLM's reageren op basis van de invoer die ze ontvangen. Het maken van duidelijke en specifieke prompts is van cruciaal belang om de gewenste uitvoer te verkrijgen.
Experimenteren is belangrijk: mogelijk moet u deze herhalen en experimenteren met verschillende prompts om te begrijpen hoe het model reacties interpreteert en genereert. Kleine aanpassingen kunnen leiden tot aanzienlijke wijzigingen in resultaten.
Context is van belang: LLM's houden rekening met de context die in de prompt wordt gegeven. U moet ervoor zorgen dat de context goed gedefinieerd en relevant is om nauwkeurige en coherente antwoorden te verkrijgen.
Ambiguïteit afhandelen: houd er rekening mee dat LLM's mogelijk moeite hebben met dubbelzinnige query's. Geef context of structuur om vage of onverwachte resultaten te voorkomen.
Lengte van prompts: hoewel LLM's korte en lange prompts kunnen verwerken, moet u rekening houden met de afweging tussen kortheid en duidelijkheid. Experimenteren met promptlengte kan u helpen de optimale balans te vinden.
Het maken van effectieve prompts vereist duidelijkheid, precisie en doordacht ontwerp. Technieken zoals zero-shot en few-shot learning, persona-opdrachten en ketting-van-gedachteprompts kunnen de kwaliteit en relevantie van de antwoorden verbeteren. Door duidelijke instructies, goed gedefinieerde context en voorbeelden te bieden wanneer dat nodig is, kunt u het model begeleiden om nauwkeurig afgestemde relevante antwoorden te genereren. Als u de beste resultaten wilt behalen, moet u uw prompts experimenteren en verfijnen.