Prompt Engineering in OpenAI

Abgeschlossen

Die Qualität der Eingabeaufforderungen, die wir an ein KI-Modell senden, wie sie in Azure OpenAI verfügbar sind, beeinflusst direkt die Qualität dessen, was wir zurückbekommen. Bei sorgfältiger Erstellung der Eingabeaufforderungen, die wir an das Modell senden, kann das Modell bessere und interessantere Antworten liefern.

Was ist Prompt Engineering?

Prompt Engineering ist der Prozess des Entwerfens und Optimierens von Eingabeaufforderungen zur besseren Nutzung von KI-Modellen. Das Entwerfen effektiver Eingabeaufforderungen ist entscheidend für den Erfolg von Prompt Engineering und kann die Leistung des KI-Modells bei bestimmten Aufgaben erheblich verbessern. Durch die Bereitstellung relevanter, spezifischer, eindeutiger und gut strukturierter Eingabeaufforderungen kann das Modell den Kontext besser verstehen und genauere Antworten generieren.

Wenn ein OpenAI-Modell beispielsweise Produktbeschreibungen generieren soll, können wir ihm eine detaillierte Beschreibung der Features und Vorteile des Produkts bereitstellen. Durch die Bereitstellung dieses Kontexts kann das Modell genauere und relevantere Produktbeschreibungen generieren.

Prompt Engineering kann auch dazu beitragen, Voreingenommenheit zu verringern und die Fairness in KI-Modellen zu verbessern. Durch das Entwerfen vielfältiger und inklusiver Eingabeaufforderungen können wir sicherstellen, dass das Modell nicht einer bestimmten Gruppe oder Perspektive gegenüber voreingenommen ist.

Wichtig

Unabhängig davon, wie gut die Eingabeaufforderung ist, die Sie entwerfen können, sollten Antworten von KI-Modellen niemals als absolute Wahrheit oder als völlig unvoreingenommen betrachtet werden. Verwenden Sie KI immer verantwortungsbewusst. Weitere Informationen finden Sie unter dem Transparenzhinweis von Microsoft zu Azure OpenAI und in den KI-Prinzipien von Microsoft.

Darüber hinaus kann uns Prompt Engineering helfen, zu verstehen, welche Verweise das Modell verwendet, um seine Antwort zu generieren. Generative KI-Modelle haben eine Vielzahl von Parametern und die Logik, der sie folgen, ist den Benutzenden weitgehend unbekannt, sodass es verwirrend sein kann, wie sie zu ihrer Antwort kommen. Durch das Entwerfen leicht zu verstehender und zu interpretierender Eingabeaufforderungen können wir Menschen helfen, besser zu verstehen, wie das Modell seine Antworten generiert. Dies kann besonders in Bereichen wie dem Gesundheitswesen wichtig sein, wo es von entscheidender Bedeutung ist, zu verstehen, wie das Modell Entscheidungen trifft.

Es gibt verschiedene Methoden, die Sie beim Engineering Ihrer eigenen Prompts verwenden können. Dazu gehören die Bereitstellung von Anweisungen, kontextbezogenen Inhalten, Hinweisen oder Few-Shot-Beispielen sowie die korrekte Reihenfolge von Inhalten in Ihrer Eingabeaufforderung. Die hier behandelten Methoden sind nicht vollständig, da dieser Bereich ein differenziertes und im ständigen Wandel begriffenes Thema ist.

Überlegungen zu API-Endpunkten

Die Beispiele im Rest dieses Moduls konzentrieren sich auf ChatCompletion. Es ist erwähnenswert, dass ChatCompletion auch für Nicht-Chatszenarien verwendet werden kann, in denen Anweisungen in der Systemmeldung enthalten sind und Benutzerinhalte in der Benutzerrollennachricht bereitgestellt werden. Die meisten dieser Beispiele können bei Bedarf geändert werden, um den Completion-Endpunkt zu verwenden.

Im Hinblick auf die Modellverfügbarkeit kann der Completion-Endpunkt mit gpt-3 und früher verwendet werden und ChatCompletion kann mit gpt-35-turbo und späteren Modellen verwendet werden.

Anpassen von Modellparametern

Zusätzlich zu den in diesem Modul erläuterten Techniken kann das Anpassen von Parametern des Modells einen erheblichen Einfluss auf die Antwort haben. Insbesondere temperature und top_p (top_probability) wirken sich am wahrscheinlichsten auf die Antwort eines Modells aus, da beide die Zufälligkeit im Modell steuern, aber auf unterschiedliche Weise.

Höhere Werte erzeugen kreativere und zufälligere Antworten, sind aber wahrscheinlich weniger konsistent oder fokussiert. Antworten, die fiktiv oder einzigartig sein sollen, profitieren von höheren Werten für diese Parameter, während für Inhalte, die konsistent und konkret sein sollen, niedrigere Werte verwendet werden sollten.

Insbesondere ermöglicht hohe temperature eine größere Variation der Satzstruktur und hohe top_p eine größere Variation in Wörtern, die (unter Verwendung einer Vielzahl von Synonymen) verwendet werden.

Versuchen Sie, diese Parameter mit derselben Eingabeaufforderung anzupassen, um zu sehen, wie sie sich auf die Antwort auswirken. Sie sollten jeweils nur temperature oder top_p ändern, aber nicht beide gleichzeitig.

Schreiben effektiver Eingabeaufforderungen

Azure OpenAI-Modelle sind in der Lage, Antworten auf Abfragen in natürlicher Sprache mit bemerkenswerter Genauigkeit zu generieren. Die Qualität der Antworten hängt jedoch weitgehend davon ab, wie gut die Eingabeaufforderung geschrieben ist. Entwickler können die Leistung von Azure OpenAI-Modellen optimieren, indem sie verschiedene Techniken in ihren Eingabeaufforderungen verwenden, was zu genaueren und relevanteren Antworten führt.

Bereitstellen klarer Anweisungen

Das Azure OpenAI-Modell eindeutig nach dem gewünschten Ergebnis zu fragen, ist eine Möglichkeit, die gewünschten Ergebnisse zu erzielen. Je genauer die Beschreibung ist, desto besser kann das Modell eine Antwort generieren, die am besten dem entspricht, wonach Sie suchen.

Angenommen, Sie möchten eine Produktbeschreibung für eine neue Wasserflasche erstellen. Betrachten Sie die Antworten, die den einzelnen Eingabeaufforderungen zugeordnet sind:

Eingabeaufforderung

Write a product description for a new water bottle

Antwort

Introducing the latest addition to our product line - the innovative and eco-friendly water bottle.
Made from high-quality, BPA-free materials, this bottle is designed to keep your beverages at the
perfect temperature for hours. Its sleek and stylish design makes it the perfect accessory for any
outdoor activity or workout session. With its convenient carrying handle and leak-proof lid, you 
can take it with you wherever you go, without worrying about spills or leaks. Plus, its easy-to-clean
design ensures that you can use it again and again, making it the perfect choice for anyone looking 
for a reliable and sustainable water bottle.

Im Gegensatz zu einer ähnlichen Eingabeaufforderung mit klaren Anweisungen.

Eingabeaufforderung

Write a product description for a new water bottle that is 100% recycled. Be sure to include that
it comes in natural colors with no dyes, and each purchase removes 10 pounds of plastic from our 
oceans

Antwort

Introducing our newest water bottle, the eco-friendly choice for the conscious consumer. Made from 
100% recycled materials and available in natural colors with no dyes, this bottle is not only 
stylish but also sustainable. Each purchase of this bottle removes 10 pounds of plastic from 
our oceans, making it a responsible choice for those who care about the environment. Its durable 
and leak-proof design makes it perfect for outdoor activities, while its easy-to-carry handle 
makes it convenient to take on the go. Join us in our mission to reduce plastic waste and choose 
this eco-friendly water bottle for your daily hydration needs.

Durch das Einschließen von Besonderheiten, die eingeschlossen werden müssen, weiß das Modell, welche Informationen der Beschreibung hinzugefügt werden sollen, sodass es für das neue Produkt genauer ist.

Diese Methode kann so extrapoliert werden, dass komplexe Anweisungen eingeschlossen werden, z. B. eine Aufzählungsliste der einzuschließenden Details, die Länge der Antwort oder die gewünschten Formate, die in die Ausgabe eingeschlossen werden sollen. Versuchen Sie, genau nach dem zu fragen, was Sie im Ergebnis sehen möchten, und Sie werden überrascht sein, wie gut das Modell Ihre Anforderung erfüllt.

Format der Anweisungen

Die Formatierung von Anweisungen kann sich auf die Interpretation der Eingabeaufforderung durch das Modell auswirken. Der Rezenzeffekt kann sich auf Modelle auswirken, wobei Informationen, die sich am Ende der Eingabeaufforderung befinden, mehr Einfluss auf die Ausgabe haben können als Informationen am Anfang. Möglicherweise erhalten Sie bessere Antworten, indem Sie die Anweisungen am Ende der Eingabeaufforderung wiederholen und bewerten, wie sich dies auf die generierte Antwort auswirkt.

Dieser Rezenzeffekt kann auch bei der Verwendung von ChatCompletion in einem Chatszenario zum Tragen kommen, in dem neuere Nachrichten in der Unterhaltung, die in der Eingabeaufforderung enthalten sind, einen größeren Einfluss auf die Antwort haben.

Primärer, unterstützender und Basisinhalt

Das Einschließen von Inhalten die das Modell in seiner Antwort verwendet werden soll, ermöglicht es ihm, mit größerer Genauigkeit zu antworten. Diese Inhalte lassen sich in zwei Arten unterscheiden: primärer und unterstützender Inhalt.

Primärer Inhalt bezieht sich auf Inhalte, die Gegenstand der Abfrage sind, z. B. einen zu übersetzenden Satz oder zusammenzufassenden Artikel. Dieser Inhalt wird häufig am Anfang oder Ende der Eingabeaufforderung eingeschlossen (als Anweisung und unterschieden nach ----Blöcken), mit Anweisungen, die erklären, was damit zu tun ist.

Angenommen, wir möchten einen langen Artikel zusammenfassen. Wir könnten ihn in der Eingabeaufforderung in einen ----Block einfügen und dann die Anweisung beenden.

---
<insert full article here, as primary content>
---

Summarize this article and identify three takeaways in a bulleted list

Unterstützende Inhalte sind Inhalte, die die Antwort ändern können, aber nicht im Fokus oder Gegenstand der Eingabeaufforderung sind. Beispiele für unterstützende Inhalte sind z. B. Namen, Präferenzen, zukünftige Datumsangaben, die in die Antwort aufgenommen werden sollen, usw. Die Bereitstellung unterstützender Inhalte ermöglicht dem Modell, vollständiger und genauer zu antworten und die gewünschten Informationen mit höherer Wahrscheinlichkeit einzuschließen.

Das Modell kann beispielsweise aus einer sehr langen Werbe-E-Mail wichtige Informationen extrahieren. Wenn Sie dann der Eingabeaufforderung unterstützende Inhalte mit bestimmten Angaben zu dem hinzufügen, nach dem Sie suchen, kann das Modell eine nützlichere Antwort liefern. In diesem Fall ist die E-Mail der primäre Inhalt, und die bestimmten Angaben dessen, woran Sie interessiert sind, sind unterstützender Inhalt.

---
<insert full email here, as primary content>
---
<the next line is the supporting content>
Topics I'm very interested in: AI, webinar dates, submission deadlines

Extract the key points from the above email, and put them in a bulleted list:

Basisinhalte ermöglichen dem Modell, zuverlässige Antworten zu liefern, indem Inhalte bereitgestellt werden, aus denen das Modell Antworten extrahieren kann. Basisinhalt können ein Essay oder Artikel sein, zu dem Sie dann Fragen stellen, ein FAQ-Dokument des Unternehmens oder Informationen, die aktueller sind als das Datum, zu dem das Modell trainiert wurde. Wenn Sie zuverlässigere und aktuelle Antworten benötigen oder auf nicht veröffentlichte oder bestimmte Informationen verweisen müssen, wird Basisinhalt dringend empfohlen.

Basisinhalt unterscheidet sich vom primären Inhalt darin, dass er die Informationsquelle für die Beantwortung der Eingabeaufforderungs-Abfrage ist, und nicht der Inhalt, der für Zusammenfassung, Übersetzung oder Ähnliches verwendet wird. Wird beispielsweise eine unveröffentlichte wissenschaftliche Arbeit zur Geschichte der KI bereitgestellt, kann das Modell Fragen mithilfe dieses Basisinhalts beantworten.

---
<insert unpublished paper on the history of AI here, as grounding content>
---

Where and when did the field of AI start?

Diese Basisinhaltdaten ermöglichen dem Modell, genauere und fundiertere Antworten zu geben, die möglicherweise nicht Teil des Datasets sind, mit dem es trainiert wurde.

Hinweise

Hinweise sind Leitwörter, auf denen das Modell aufbauen kann, und helfen oft, die Antwort in die richtige Richtung zu lenken. Sie werden häufig, aber nicht immer, mit Anweisungen verwendet. Hinweise sind besonders hilfreich, wenn das Modell zur Codegenerierung aufgefordert wird. Die Codegenerierung wird in einer nachfolgenden Einheit ausführlicher behandelt.