Optimieren von Sprachmodell-Prompts
Eingabeaufforderungen sind Unterhaltungshinweise, die Sie großen Sprachmodellen (LLMs) übergeben, um Antworten basierend auf Ihren Abfragen oder Anweisungen zu gestalten. Sie können z. B. LLMs auffordern, einen Satz von Englisch in Französisch zu konvertieren oder eine Zusammenfassung eines Texts zu generieren.
In der vorherigen Einheit haben Sie die Eingabeaufforderung als Eingabezeichenfolge erstellt:
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?";
Die Aufforderung umfasst das Erstellen klarer, kontextreicher Anweisungen, um das Modell zu leiten, um eine gewünschte Antwort zu generieren. Um eine effektive Eingabeaufforderung, Präzision und Klarheit zu erstellen, ist der Schlüssel. Möglicherweise müssen Sie experimentieren und Ihre Aufforderungen für genaue Ergebnisse anpassen.
Tipps zum Erstellen von Eingabeaufforderungen
Spezifische Eingaben liefern spezifische Ausgaben: LLMs reagieren basierend auf der empfangenen Eingabe. Das Erstellen klarer und spezifischer Eingabeaufforderungen ist entscheidend, um die gewünschte Ausgabe zu erhalten.
Experimentieren ist der Schlüssel: Möglicherweise müssen Sie verschiedene Eingabeaufforderungen durchlaufen und experimentieren, um zu verstehen, wie das Modell Antworten interpretiert und generiert. Kleine Optimierungen können zu erheblichen Änderungen der Ergebnisse führen.
Kontext ist wichtig: LLMs berücksichtigen den in der Eingabeaufforderung bereitgestellten Kontext. Sie sollten sicherstellen, dass der Kontext gut definiert und relevant ist, um genaue und kohärente Antworten zu erhalten.
Mehrdeutigkeit behandeln: Denken Sie daran, dass LLMs mit mehrdeutigen Abfragen kämpfen können. Stellen Sie Kontext oder Struktur bereit, um vage oder unerwartete Ergebnisse zu vermeiden.
Länge der Eingabeaufforderungen: Während LLMs sowohl kurze als auch lange Eingabeaufforderungen verarbeiten können, sollten Sie den Kompromiss zwischen Kürze und Klarheit berücksichtigen. Das Experimentieren mit der Eingabeaufforderungslänge kann Ihnen helfen, das optimale Gleichgewicht zu finden.
Erstellen von Eingabeaufforderungsvorlagen
Das Semantic Kernel SDK unterstützt eine Vorlagensprache, mit der Sie Ausdrücke und Variablen in Ihren Prompts in natürlicher Sprache verwenden können. Dies bedeutet, dass Sie Prompts erstellen können, die mit verschiedenen Eingabeparametern wiederverwendbar sind. Zum Einbetten von Ausdrücken in Ihre Eingabeaufforderungen verwendet die Vorlagensprache geschweifte Klammern {{...}}
.
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 diesem Beispiel wird im Prompt auf die Variable history
verwiesen, die durch das Symbol $
gekennzeichnet ist. Wenn der Prompt aufgerufen wird, wird die Variable history
durch den tatsächlichen Wert im Wörterbuch KernelArguments
ersetzt. Auf diese Weise können Sie Prompts erstellen, die dynamisch mit unterschiedlichen Eingaben aufgefüllt werden können.
Beispielausgabe:
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.
Das Erstellen wiederverwendbarer Prompts ist besonders hilfreich, wenn Sie dieselbe Aufgabe mit unterschiedlichen Eingaben ausführen müssen. In der nächsten Übung üben Sie das Erstellen eigener wiederverwendbarer Prompts mithilfe des Semantic Kernel SDK.