Optimera frågor om språkmodeller
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?";
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.
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.
Skapa promptmallar
SDK:t för semantisk kernel stöder ett mallspråk som gör att du kan använda uttryck och variabler i dina frågor på naturligt språk. Det innebär att du kan skapa frågor som kan återanvändas med olika indataparametrar. För att bädda in uttryck i dina frågor använder mallspråket klammerparenteser {{...}}
.
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);
I det här exemplet refereras variabeln history
i kommandotolken, som anges av symbolen $
. När kommandotolken anropas ersätts variabeln history
med det faktiska värdet som anges i KernelArguments
ordlistan. På så sätt kan du skapa frågor som kan fyllas i dynamiskt med olika indata.
Här är exempelutdata:
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.
Det är särskilt användbart att skapa återanvändbara frågor när du behöver utföra samma uppgift med olika indata. I nästa övning övar du på att skapa egna återanvändbara frågor med hjälp av Semantic Kernel SDK.