Prompts voor taalmodel optimaliseren

Voltooid

Prompts zijn gesprekssignalen die u aan grote taalmodellen (LLM's) geeft, en antwoorden vormgeven op basis van uw query's of instructies. U kunt bijvoorbeeld vragen om LLM's om een zin te converteren van Engels naar Frans of om een samenvatting van een tekst te genereren.

In de vorige les hebt u de prompt gemaakt als invoertekenreeks:

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

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.

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.

  • Experimenten is belangrijk: mogelijk moet u verschillende prompts herhalen en experimenteren om te begrijpen hoe het model antwoorden 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.

Promptsjablonen maken

De Semantische Kernel-SDK ondersteunt een tijdelijke taal waarmee u expressies en variabelen kunt gebruiken in uw prompts in natuurlijke taal. Dit betekent dat u prompts kunt maken die herbruikbaar zijn met verschillende invoerparameters. Als u expressies wilt insluiten in uw prompts, gebruikt de sjabloontaal accolades {{...}}.

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;

var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    "your-deployment-name",
    "your-endpoint",
    "your-api-key",
    "deployment-model");

builder.Plugins.AddFromType<ConversationSummaryPlugin>();
var kernel = builder.Build();

string history = @"In the heart of my bustling kitchen, I have embraced 
    the challenge of satisfying my family's diverse taste buds and 
    navigating their unique tastes. With a mix of picky eaters and 
    allergies, my culinary journey revolves around exploring a plethora 
    of vegetarian recipes.

    One of my kids is a picky eater with an aversion to anything green, 
    while another has a peanut allergy that adds an extra layer of complexity 
    to meal planning. Armed with creativity and a passion for wholesome 
    cooking, I've embarked on a flavorful adventure, discovering plant-based 
    dishes that not only please the picky palates but are also heathy and 
    delicious.";

string prompt = @"This is some information about the user's background: 
    {{$history}}

    Given this user's background, provide a list of relevant recipes.";

var result = await kernel.InvokePromptAsync(prompt, 
    new KernelArguments() {{ "history", history }});

Console.WriteLine(result);

In dit voorbeeld wordt naar de history variabele verwezen in de prompt, aangeduid met het $ symbool. Wanneer de prompt wordt aangeroepen, wordt de history variabele vervangen door de werkelijke waarde in de KernelArguments woordenlijst. Hiermee kunt u prompts maken die dynamisch kunnen worden gevuld met verschillende invoerwaarden.

Hier volgt de voorbeelduitvoer:

1. Lentil and vegetable soup - a hearty, filling soup that is perfect for a cold day. This recipe is vegetarian and can easily be adapted to accommodate allergies.

2. Cauliflower "steaks" - a delicious and healthy main course that is sure to satisfy even the pickiest of eaters. This recipe is vegetarian and can easily be made vegan.

3. Quinoa salad with roasted vegetables - a healthy and filling salad that is perfect for any occasion. This recipe is vegetarian and can easily be adapted to accommodate allergies.

4. Peanut-free pad Thai - a classic dish made without peanut sauce, perfect for those with peanut allergies. This recipe is vegetarian and can easily be made vegan.

5. Black bean and sweet potato enchiladas - a delicious and healthy twist on traditional enchiladas. This recipe is vegetarian and can easily be made vegan.

Het maken van herbruikbare prompts is vooral handig wanneer u dezelfde taak met verschillende invoer moet uitvoeren. In de volgende oefening oefent u met het maken van uw eigen herbruikbare prompts met behulp van de Semantische Kernel SDK.