Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
In diesem Artikel untersuchen Sie grundlegende Konzepte beim Prompt Engineering. Viele KI-Modelle sind promptbasiert, d. h., sie reagieren auf Benutzereingabetext (einen Prompt) mit einer Antwort, die von Vorhersagealgorithmen (einem Abschluss) generiert wird. Neuere Modelle unterstützen häufig auch Vervollständigungen in Chatformularen, deren Nachrichten auf Rollen („System“, „Benutzer“, „Assistent“) und dem Chatverlauf basieren, um Unterhaltungen aufrechtzuerhalten.
Betrachten Sie dieses Beispiel für Textgenerierung, bei dem der Prompt die Benutzereingabe und die Vervollständigung die Modellausgabe ist:
Prompt: „Der Präsident, der die kürzeste Amtszeit hatte, war “
Vervollständigung: „Pedro Lascurain.“
Der Abschluss scheint richtig zu sein, aber was geschieht, wenn Ihre App US-Geschichtsstudierenden helfen soll? Die 45-minütige Amtszeit von Pedro Lascurains ist die kürzeste für jeden Präsidenten, aber er war Präsident von Mexiko. Die US-Geschichtsstudierenden suchen wahrscheinlich nach William Henry Harrison. Die App könnte ihren vorgesehenen Benutzern eindeutig mehr helfen, wenn Sie ihr etwas Kontext geben würden.
Prompt Engineering ergänzt den Prompt um Kontext, indem Anweisungen, Beispiele und Hinweise bereitgestellt werden, um das Modell zu verbessern und bessere Abschlüsse zu generieren.
Modelle, die eine Textgenerierung unterstützen, erfordern häufig kein bestimmtes Format, aber Sie sollten Ihre Prompts so organisieren, dass klar ist, was eine Anweisung und was ein Beispiel ist. Modelle, die chatbasierte Apps unterstützen, verwenden drei Rollen, um Vervollständigungen zu organisieren: eine Systemrolle, die den Chat steuert, eine Benutzerrolle, um Benutzereingaben darzustellen, und eine Assistentenrolle, um Benutzer:innen zu antworten. Sie unterteilen Ihre Prompts in Nachrichten für jede Rolle:
Eine Anleitung ist ein Text, der dem Modell sagt, wie es reagieren soll. Eine Anleitung kann eine Anweisung oder ein Imperativ sein:
Direktiven sind offener und flexibler als Imperative:
Sie können Inhalte angeben, um den Anweisungen mehr Kontext zu geben.
Primäre Inhalte sind Texte, die das Modell mit einer Anleitung verarbeiten soll. Welche Aktion die Anleitung auch immer nach sich zieht, das Modell führt sie mit dem primären Inhalt aus, um eine Vervollständigung zu erzeugen.
Unterstützende Inhalte sind Texte, auf die Sie sich in einer Anleitung beziehen, die aber nicht das Ziel der Anleitung sind. Das Modell verwendet den unterstützenden Inhalt, um die Anleitung zu vervollständigen, was bedeutet, dass der unterstützende Inhalt auch in den Vervollständigungen erscheint, typischerweise als eine Art Struktur (z. B. in Überschriften oder Spaltenbeschriftungen).
Verwenden Sie Bezeichnungen mit Ihren Anleitungsinhalten, um dem Modell zu helfen, herauszufinden, wie sie mit der Anleitung zu verwenden sind. Machen Sie sich nicht zu viele Gedanken über die Genauigkeit – die Bezeichnungen müssen nicht genau mit den Anleitung übereinstimmen, da das Modell Dinge wie Wortform und Großschreibung handhabt.
Angenommen, Sie verwenden die Anleitung „Fassen Sie die Errungenschaften der US-Präsidenten zusammen“, um eine Liste zu erstellen. Das Modell könnte die Liste auf jede beliebige Weise organisieren und anordnen. Was aber, wenn Sie möchten, dass die Liste die Leistungen nach bestimmten Kategorien gruppiert? Verwenden Sie unterstützende Inhalte, um der Anleitung diese Informationen hinzuzufügen.
Passen Sie Ihre Anleitung so an, dass das Modell nach Kategorien gruppiert, und fügen Sie unterstützende Inhalte hinzu, die diese Kategorien angeben:
prompt = """
Instructions: Summarize US Presidential accomplishments, grouped by category.
Categories: Domestic Policy, US Economy, Foreign Affairs, Space Exploration.
Accomplishments: 'George Washington
- First president of the United States.
- First president to have been a military veteran.
- First president to be elected to a second term in office.
- Received votes from every presidential elector in an election.
- Filled the entire body of the United States federal judges; including the Supreme Court.
- First president to be declared an honorary citizen of a foreign country, and an honorary citizen of France.
John Adams ...' ///Text truncated
""";
Ein Beispiel ist Text, der dem Modell zeigt, wie es reagieren soll, indem Beispiele für Benutzereingaben und Modellausgaben bereitgestellt werden. Das Modell verwendet Beispiele, um abzuleiten, was in Vervollständigungen aufgenommen werden soll. Beispiele können entweder vor oder nach den Anleitungen in einem entwickelten Prompt kommen, aber die beiden sollten nicht miteinander vermischt werden.
Ein Beispiel beginnt mit einem Prompt und kann optional einen Abschluss enthalten. Eine Vervollständigung in einem Beispiel muss nicht die wortwörtliche Antwort enthalten, sondern kann lediglich ein formatiertes Wort, den ersten Punkt einer ungeordneten Liste oder etwas Ähnliches enthalten, um anzugeben, wie jede Vervollständigung beginnen soll.
Beispiele werden basierend darauf, ob sie wortwörtliche Vervollständigungen enthalten, als Zero-Shot-Learning oder Few-Shot-Learning klassifiziert.
Ein Cue ist Text, der die gewünschte Struktur oder das Format der Ausgabe vermittelt. Wie eine Anleitung wird ein Cue vom Modell nicht wie eine Benutzereingabe verarbeitet. Wie ein Beispiel zeigt ein Cue dem Modell, was Sie möchten, anstatt ihm mitzuteilen, was es tun soll. Sie können beliebig viele Cues hinzufügen, sodass Sie das gewünschte Ergebnis durch Iteration erzielen können. Cues werden zusammen mit einer Anleitung oder einem Beispiel verwendet und sollten am Ende des Prompts stehen.
Angenommen, Sie verwenden eine Anleitung, mit der Sie das Modell anweisen, eine Liste der Leistungen von Präsidenten nach Kategorien zu erstellen, zusammen mit unterstützendem Inhalt, der dem Modell mitteilt, welche Kategorien es verwenden soll. Sie entscheiden, dass das Modell eine geschachtelte Liste mit Großbuchstaben für die Kategorien erstellen soll, in der die Leistungen jedes Präsidenten in jeder Kategorie in einer Zeile aufgeführt sind, die mit dem Namen des Präsidenten beginnt, wobei die Präsidenten chronologisch aufgelistet sind. Nach Ihrer Anleitung und dem unterstützenden Inhalt könnten Sie drei Cues hinzufügen, um dem Modell zu zeigen, wie es die Liste strukturieren und formatieren soll:
prompt = """
Instructions: Summarize US Presidential accomplishments, grouped by category.
Categories: Domestic Policy, US Economy, Foreign Affairs, Space Exploration.
Accomplishments: George Washington
First president of the United States.
First president to have been a military veteran.
First president to be elected to a second term in office.
First president to receive votes from every presidential elector in an election.
First president to fill the entire body of the United States federal judges; including the Supreme Court.
First president to be declared an honorary citizen of a foreign country, and an honorary citizen of France.
John Adams ... /// Text truncated
DOMESTIC POLICY
- George Washington:
- John Adams:
""";
.NET bietet verschiedene Tools für Prompts und Chats mit verschiedenen KI-Modellen. Verwenden Sie den Semantic Kernel, um eine Verbindung mit einer Vielzahl von KI-Modellen und -Diensten sowie anderen SDKs wie der offiziellen OpenAI .NET-Bibliothek herzustellen. Der Semantic Kernel enthält Tools zum Erstellen von Prompts mit unterschiedlichen Rollen und zum Verwalten des Chatverlaufs sowie viele andere Features.
Betrachten Sie das folgende Codebeispiel:
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;
// Create a kernel with OpenAI chat completion
#pragma warning disable SKEXP0010
Kernel kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion(
modelId: "phi3:mini",
endpoint: new Uri("http://localhost:11434"),
apiKey: "")
.Build();
var aiChatService = kernel.GetRequiredService<IChatCompletionService>();
var chatHistory = new ChatHistory();
chatHistory.Add(
new ChatMessageContent(AuthorRole.System, "You are a helpful AI Assistant."));
while (true)
{
// Get user prompt and add to chat history
Console.WriteLine("Your prompt:");
chatHistory.Add(new ChatMessageContent(AuthorRole.User, Console.ReadLine()));
// Stream the AI response and add to chat history
Console.WriteLine("AI Response:");
var response = "";
await foreach (var item in
aiChatService.GetStreamingChatMessageContentsAsync(chatHistory))
{
Console.Write(item.Content);
response += item.Content;
}
chatHistory.Add(new ChatMessageContent(AuthorRole.Assistant, response));
Console.WriteLine();
}
Der obige Code enthält Beispiele für die folgenden Konzepte:
AuthorRole.System
-Nachricht.AuthorRole.User
zuzulassen.Sie können auch die Leistungsfähigkeit Ihrer Prompts mit komplexeren Prompt Engineering-Techniken erhöhen, die in eigenen Artikeln ausführlich behandelt werden.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenTraining
Modul
Anwenden von Prompt Engineering mit Azure OpenAI Service - Training
In diesem Modul erfahren Sie, wie das Eingabeaufforderungs-Engineering helfen kann, Eingabeaufforderungen für Verarbeitungsmodelle in natürlicher Sprache zu erstellen und zu optimieren. Prompt Engineering umfasst das Entwerfen und Testen verschiedener Aufforderungen, um die Leistung des Modells bei der Generierung präziser und relevanter Antworten zu optimieren.
Zertifizierung
Microsoft Certified: Azure AI Engineer Associate - Certifications
Entwerfen und implementieren Sie eine Azure KI-Lösung mit Azure KI Services, Azure KI-Suche und Azure OpenAI.