Skip to content

Latest commit

 

History

History
409 lines (255 loc) · 47.9 KB

File metadata and controls

409 lines (255 loc) · 47.9 KB

Grundlagen des Prompt Engineerings

Grundlagen des Prompt Engineerings

Einführung

Dieses Modul behandelt wesentliche Konzepte und Techniken zur Erstellung effektiver Prompts für generative KI-Modelle. Die Art und Weise, wie Sie Ihren Prompt an ein LLM schreiben, ist ebenfalls wichtig. Ein sorgfältig gestalteter Prompt kann eine bessere Antwortqualität erzielen. Aber was bedeuten Begriffe wie Prompt und Prompt Engineering genau? Und wie verbessere ich den Prompt-Input, den ich an das LLM sende? Diese Fragen versuchen wir im Rahmen dieses Kapitels und des nächsten zu beantworten.

Generative KI ist in der Lage, neue Inhalte (z. B. Text, Bilder, Audio, Code usw.) als Antwort auf Benutzeranfragen zu erstellen. Dies wird mit Hilfe von Large Language Models wie der GPT-Serie von OpenAI („Generative Pre-trained Transformer“) erreicht, die für die Verwendung von natürlicher Sprache und Code trainiert wurden.

Benutzer können jetzt mit diesen Modellen über vertraute Paradigmen wie Chat interagieren, ohne technische Kenntnisse oder Schulungen zu benötigen. Die Modelle sind promptbasiert – Benutzer senden eine Texteingabe (Prompt) und erhalten eine KI-Antwort (Completion) zurück. Sie können dann iterativ „mit der KI chatten“ in mehrstufigen Gesprächen und ihren Prompt so lange verfeinern, bis die Antwort ihren Erwartungen entspricht.

„Prompts“ werden nun zur primären Programmierschnittstelle für generative KI-Anwendungen, da sie den Modellen mitteilen, was zu tun ist, und die Qualität der zurückgegebenen Antworten beeinflussen. „Prompt Engineering“ ist ein schnell wachsendes Forschungsfeld, das sich auf die Gestaltung und Optimierung von Prompts konzentriert, um konsistente und qualitativ hochwertige Antworten in großem Maßstab zu liefern.

Lernziele

In dieser Lektion lernen wir, was Prompt Engineering ist, warum es wichtig ist und wie wir effektivere Prompts für ein gegebenes Modell und Anwendungsziel erstellen können. Wir werden grundlegende Konzepte und Best Practices für das Prompt Engineering verstehen – und lernen eine interaktive Jupyter-Notebook-„Sandbox“ kennen, in der wir diese Konzepte an realen Beispielen sehen können.

Am Ende dieser Lektion können wir:

  1. Erklären, was Prompt Engineering ist und warum es wichtig ist.
  2. Die Bestandteile eines Prompts beschreiben und wie sie verwendet werden.
  3. Beste Praktiken und Techniken für Prompt Engineering erlernen.
  4. Erlernte Techniken mit realen Beispielen anwenden, unter Nutzung eines OpenAI-Endpunkts.

Schlüsselbegriffe

Prompt Engineering: Die Praxis, Eingaben so zu gestalten und zu verfeinern, dass KI-Modelle gewünschte Ausgaben liefern. Tokenisierung: Der Prozess der Umwandlung von Text in kleinere Einheiten, sogenannte Tokens, die ein Modell verstehen und verarbeiten kann. Instruction-Tuned LLMs: Große Sprachmodelle (LLMs), die mit spezifischen Anweisungen feinabgestimmt wurden, um ihre Antwortgenauigkeit und Relevanz zu verbessern.

Lern-Sandbox

Prompt Engineering ist derzeit mehr Kunst als Wissenschaft. Der beste Weg, unsere Intuition dafür zu verbessern, besteht darin, mehr zu üben und einen Trial-and-Error-Ansatz zu verfolgen, der fachliches Anwendungswissen mit empfohlenen Techniken und modellspezifischen Optimierungen kombiniert.

Das zur Lektion begleitende Jupyter-Notebook bietet eine Sandbox-Umgebung, in der du das Gelernte ausprobieren kannst – entweder direkt oder als Teil der Code-Herausforderung am Ende. Um die Übungen auszuführen, benötigst du:

  1. Einen Azure OpenAI API-Schlüssel – den Service-Endpunkt für ein bereitgestelltes LLM.
  2. Eine Python Runtime – in der das Notebook ausgeführt werden kann.
  3. Lokale Umgebungsvariablenführe jetzt die SETUP Schritte aus, um bereit zu sein.

Das Notebook enthält Starter-Übungen – aber du bist eingeladen, eigene Markdown- (Beschreibungen) und Code- (Prompt-Anfragen) Abschnitte hinzuzufügen, um weitere Beispiele oder Ideen zu erproben und deine Intuition für die Prompt-Gestaltung zu stärken.

Illustrierter Leitfaden

Möchtest du vor dem Eintauchen einen Überblick darüber, was diese Lektion abdeckt? Sieh dir diesen illustrierten Leitfaden an, der dir ein Gefühl für die Hauptthemen und die wichtigsten Erkenntnisse gibt, über die du jeweils nachdenken kannst. Die Lesson-Roadmap führt dich vom Verständnis der Kernkonzepte und Herausforderungen bis zu deren Lösung mit relevanten Prompt-Engineering-Techniken und Best Practices. Beachte, dass sich der Abschnitt „Erweiterte Techniken“ in diesem Guide auf Inhalte bezieht, die im nächsten Kapitel dieses Curriculums behandelt werden.

Illustrierter Leitfaden zum Prompt Engineering

Unser Startup

Kommen wir nun dazu, wie dieses Thema mit unserer Startup-Mission zur Förderung von KI-Innovationen im Bildungsbereich zusammenhängt. Wir wollen KI-gestützte Anwendungen für personalisiertes Lernen entwickeln – also denken wir darüber nach, wie verschiedene Nutzer unserer Anwendung „Prompts gestalten“ könnten:

  • Administratoren könnten die KI bitten, Lehrplandaten zu analysieren, um Lücken in der Abdeckung zu identifizieren. Die KI kann Ergebnisse zusammenfassen oder durch Code visualisieren.
  • Lehrkräfte könnten die KI bitten, einen Unterrichtsplan für eine bestimmte Zielgruppe und ein Thema zu erstellen. Die KI kann den personalisierten Plan in einem angegebenen Format erstellen.
  • Schüler*innen könnten die KI bitten, sie in einem schwierigen Fach zu unterrichten. Die KI kann die Lernenden nun mit Lektionen, Hinweisen und Beispielen auf ihrem Niveau anleiten.

Das ist nur die Spitze des Eisbergs. Schau dir Prompts For Education an – eine Open-Source-Prompt-Bibliothek, kuratiert von Bildungsexperten –, um ein breiteres Spektrum an Möglichkeiten kennenzulernen! Probiere einige dieser Prompts in der Sandbox oder im OpenAI Playground aus, um zu sehen, was passiert!

Was ist Prompt Engineering?

Wir begannen diese Lektion mit der Definition von Prompt Engineering als dem Prozess des Gestaltens und Optimierens von Texteingaben (Prompts), um für ein gegebenes Anwendungsziel und Modell konsistente und qualitativ hochwertige Antworten (Completions) zu liefern. Man kann dies als einen 2-Schritte-Prozess sehen:

  • den initialen Prompt für ein bestimmtes Modell und Ziel entwerfen
  • den Prompt iterativ verfeinern, um die Antwortqualität zu verbessern

Dies ist notwendigerweise ein Trial-and-Error-Prozess, der Nutzerintuition und Aufwand erfordert, um optimale Ergebnisse zu erzielen. Aber warum ist das wichtig? Um diese Frage zu beantworten, müssen wir zunächst drei Konzepte verstehen:

  • Tokenisierung = wie das Modell den Prompt „sieht“
  • Basis-LLMs = wie das Foundation-Modell einen Prompt „verarbeitet“
  • Instruction-Tuned LLMs = wie das Modell jetzt „Aufgaben“ erkennen kann

Tokenisierung

Ein LLM betrachtet Prompts als Sequenz von Tokens, wobei verschiedene Modelle (oder Versionen desselben Modells) denselben Prompt unterschiedlich tokenisieren können. Da LLMs auf Tokens (und nicht auf Rohtext) trainiert sind, wirkt sich die Art der Tokenisierung direkt auf die Qualität der erzeugten Antwort aus.

Um ein Gefühl dafür zu bekommen, wie Tokenisierung funktioniert, probiere Tools wie den OpenAI Tokenizer aus, der unten gezeigt wird. Kopiere deinen Prompt hinein – und sieh, wie dieser in Tokens umgewandelt wird, achte darauf, wie Leerzeichenzeichen und Satzzeichen behandelt werden. Beachte, dass dieses Beispiel ein älteres LLM (GPT-3) zeigt – bei neueren Modellen kann das Ergebnis abweichen.

Tokenisierung

Konzept: Foundation-Modelle

Nachdem ein Prompt tokenisiert wurde, besteht die Hauptfunktion des "Base LLM" (oder Foundation-Modells) darin, das nächste Token in der Sequenz vorherzusagen. Da LLMs auf massiven Textdatensätzen trainiert sind, haben sie ein gutes Verständnis der statistischen Beziehungen zwischen Tokens und können diese Vorhersage mit gewisser Sicherheit treffen. Beachte, dass sie die Bedeutung der Wörter im Prompt oder Token nicht verstehen; sie erkennen nur ein Muster, das sie durch die nächste Vorhersage „vervollständigen“ können. Sie können diese Vorhersage fortsetzen, bis der Prozess durch Benutzerintervention oder eine vorgegebene Bedingung gestoppt wird.

Möchtest du sehen, wie prompt-basierte Vervollständigungen funktionieren? Gib den oben genannten Prompt im Azure OpenAI Studio Chat Playground mit den Standardeinstellungen ein. Das System ist so konfiguriert, dass Prompts als Informationsanfragen behandelt werden – du solltest also eine Completion sehen, die zu diesem Kontext passt.

Aber was, wenn der Benutzer etwas Spezifisches sehen möchte, das bestimmte Kriterien oder eine Aufgabenstellung erfüllt? Hier kommen instruction-tuned LLMs ins Spiel.

Base LLM Chat Completion

Konzept: Instruction-Tuned LLMs

Ein Instruction Tuned LLM baut auf dem Foundation-Modell auf und wird mit Beispielen oder Input/Output-Paaren (z. B. mehrstufigen „Nachrichten“) feinabgestimmt, die klare Anweisungen enthalten können – und die Antwort der KI versucht, dieser Anweisung zu folgen.

Dies nutzt Techniken wie Reinforcement Learning mit menschlichem Feedback (RLHF), die das Modell darin trainieren, Anweisungen zu befolgen und aus Feedback zu lernen, sodass es Antworten produziert, die besser für praktische Anwendungen geeignet und relevanter für Benutzerziele sind.

Probieren wir es aus – nimm den obigen Prompt und ändere nun die Systemnachricht, sodass die folgende Anweisung als Kontext bereitgestellt wird:

Fasse den bereitgestellten Inhalt für einen Zweitklässlerin zusammen. Halte das Ergebnis in einem Absatz mit 3-5 Aufzählungspunkten.

Siehst du, wie das Ergebnis nun auf das gewünschte Ziel und Format abgestimmt ist? Eine Lehrkraft kann diese Antwort direkt in ihren Folien für die Klasse verwenden.

Instruction Tuned LLM Chat Completion

Warum brauchen wir Prompt Engineering?

Nachdem wir nun wissen, wie Prompts von LLMs verarbeitet werden, sprechen wir darüber, warum wir Prompt Engineering brauchen. Die Antwort liegt darin, dass aktuelle LLMs einige Herausforderungen mit sich bringen, die zuverlässige und konsistente Completions ohne Aufwand bei der Prompt-Gestaltung und -Optimierung erschweren. Zum Beispiel:

  1. Modellantworten sind stochastisch. Derselbe Prompt erzeugt wahrscheinlich unterschiedliche Antworten mit verschiedenen Modellen oder Modellversionen. Und er kann sogar zu unterschiedlichen Zeitpunkten mit dem gleichen Modell verschiedene Ergebnisse liefern. Prompt Engineering-Techniken können helfen, diese Variationen zu minimieren, indem sie bessere Leitplanken schaffen.

  2. Modelle können Antworten erfinden. Modelle werden mit großen, aber endlichen Datensätzen vortrainiert, was bedeutet, dass sie keine Kenntnisse über Konzepte außerhalb dieses Trainings besitzen. Deshalb können sie Antworten erzeugen, die ungenau, erfunden oder direkt im Widerspruch zu bekannten Fakten stehen. Prompt Engineering-Techniken helfen Nutzern, solche Erfindungen zu erkennen und zu mindern, z. B. indem die KI nach Quellenangaben oder Begründungen gefragt wird.

  3. Modellfähigkeiten variieren. Neue Modelle oder Modellgenerationen haben komplexere Fähigkeiten, bringen aber auch eigenständige Eigenheiten und Kompromisse bei Kosten und Komplexität mit sich. Prompt Engineering kann helfen, Best Practices und Workflows zu entwickeln, die Unterschiede abstrahieren und sich skalierbar und nahtlos an modellspezifische Anforderungen anpassen.

Schauen wir uns das im OpenAI- oder Azure OpenAI-Playground an:

  • Verwende denselben Prompt mit verschiedenen LLM-Bereitstellungen (z. B. OpenAI, Azure OpenAI, Hugging Face) – hast du Variationen gesehen?
  • Verwende denselben Prompt wiederholt mit derselben LLM-Bereitstellung (z. B. Azure OpenAI Playground) – wie unterschieden sich diese Variationen?

Beispiel für Erfindungen

In diesem Kurs verwenden wir den Begriff „Erfindung“ für das Phänomen, dass LLMs manchmal faktisch falsche Informationen generieren aufgrund von Beschränkungen in ihrem Training oder anderen Einschränkungen. Du hast diesen Sachverhalt vielleicht auch als „Halluzinationen“ in populären Artikeln oder Forschungsarbeiten gehört. Wir empfehlen jedoch ausdrücklich, den Begriff „Erfindung“ zu verwenden, um zu vermeiden, dass wir das Verhalten vermenschlichen, indem wir einer maschinell erzeugten Antwort menschliche Eigenschaften zuschreiben. Dies unterstützt auch die Verantwortlichen KI-Richtlinien aus sprachlicher Sicht und vermeidet Begriffe, die in manchen Kontexten als anstößig oder nicht inklusiv angesehen werden können.

Möchtest du eine Vorstellung davon bekommen, wie Erfindungen entstehen? Denke an einen Prompt, der die KI anweist, Inhalte zu einem nicht existierenden Thema zu generieren (um sicherzustellen, dass es im Trainingsdatensatz nicht vorkommt). Zum Beispiel habe ich diesen Prompt ausprobiert:

Prompt: Erstelle einen Unterrichtsplan zum Marskrieg von 2076. Eine Websuche zeigte mir, dass es fiktionale Berichte (z. B. Fernsehserien oder Bücher) über Marskriege gab – aber keine im Jahr 2076. Der gesunde Menschenverstand sagt auch, dass 2076 in der Zukunft liegt und daher keinem realen Ereignis zugeordnet werden kann.

Was passiert also, wenn wir diese Eingabeaufforderung bei verschiedenen LLM-Anbietern ausführen?

Antwort 1: OpenAI Playground (GPT-35)

Response 1

Antwort 2: Azure OpenAI Playground (GPT-35)

Response 2

Antwort 3: : Hugging Face Chat Playground (LLama-2)

Response 3

Wie erwartet erzeugt jedes Modell (oder jede Modellversion) durch das stochastische Verhalten und Unterschiede in den Modellfähigkeiten leicht unterschiedliche Antworten. Zum Beispiel richtet sich ein Modell an ein Publikum der 8. Klasse, während das andere von einem Schüler der Oberstufe ausgeht. Aber alle drei Modelle generierten Antworten, die einen uninformierten Nutzer davon überzeugen könnten, dass das Ereignis real sei.

Techniken des Prompt-Engineerings wie Metaprompting und Temperaturkonfiguration können Modell-Erfindungen bis zu einem gewissen Grad reduzieren. Neue Prompt-Engineering-Architekturen integrieren auch nahtlos neue Werkzeuge und Techniken in den Prompt-Ablauf, um einige dieser Effekte zu mildern oder zu verringern.

Fallstudie: GitHub Copilot

Wir schließen diesen Abschnitt ab, indem wir uns ansehen, wie Prompt-Engineering in realen Lösungen verwendet wird, anhand einer Fallstudie: GitHub Copilot.

GitHub Copilot ist dein „KI-Paarprogrammierer“ – es wandelt Texteingaben in Codeergänzungen um und ist in deine Entwicklungsumgebung (z. B. Visual Studio Code) integriert, um ein nahtloses Nutzererlebnis zu bieten. Wie in den unten stehenden Blog-Serien dokumentiert, basierte die erste Version auf dem OpenAI Codex-Modell – wobei die Entwickler schnell erkannten, dass das Modell feinjustiert und bessere Prompt-Engineering-Techniken entwickelt werden müssen, um die Codequalität zu verbessern. Im Juli stellten sie ein verbessertes KI-Modell vor, das über Codex hinausgeht und noch schnellere Vorschläge liefert.

Lies die Beiträge der Reihe nach, um ihre Lernreise nachzuvollziehen.

Du kannst auch ihren Engineering-Blog für weitere Beiträge wie diesen hier durchsuchen, der zeigt, wie diese Modelle und Techniken für reale Anwendungen eingesetzt werden.


Prompt-Erstellung

Wir haben gesehen, warum Prompt-Engineering wichtig ist – jetzt wollen wir verstehen, wie Prompts konstuiert werden, um verschiedene Techniken für ein effektiveres Prompt-Design bewerten zu können.

Einfacher Prompt

Fangen wir mit dem einfachen Prompt an: eine Texteingabe, die ohne weiteren Kontext an das Modell gesendet wird. Hier ein Beispiel – wenn wir die ersten Wörter der US-Nationalhymne an die OpenAI Completion API schicken, ergänzt sie sofort die nächsten Zeilen, was das grundlegende Vorhersageverhalten illustriert.

Prompt (Eingabe) Ergänzung (Ausgabe)
Oh say can you see Es klingt, als begännest du mit dem Liedtext von „The Star-Spangled Banner“, der Nationalhymne der Vereinigten Staaten. Der vollständige Text lautet ...

Komplexer Prompt

Jetzt fügen wir Kontext und Anweisungen zu diesem einfachen Prompt hinzu. Die Chat Completion API erlaubt es uns, einen komplexen Prompt als Sammlung von Nachrichten zu erstellen mit:

  • Eingabe/Ausgabe-Paaren, die die User-Eingabe und Assistant-Antwort widerspiegeln.
  • Systemnachricht, die den Kontext für das Verhalten oder die Persönlichkeit des Assistenten festlegt.

Die Anfrage hat nun die unten gezeigte Form, bei der die Tokenisierung relevante Informationen aus dem Kontext und dem Gespräch effektiv erfasst. Das Ändern des Systemkontexts kann sich dabei auf die Qualität der Ergänzungen genauso stark auswirken wie die vom Nutzer gegebenen Eingaben.

response = openai.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

Instruktions-Prompt

In den obigen Beispielen war der User-Prompt eine einfache Textanfrage, die als Informationsabfrage interpretiert werden kann. Mit Instruktions-Prompts können wir diesen Text verwenden, um eine Aufgabe detaillierter zu spezifizieren und der KI bessere Anweisungen zu geben. Hier ein Beispiel:

Prompt (Eingabe) Ergänzung (Ausgabe) Anweisungstyp
Schreibe eine Beschreibung des Bürgerkriegs gab einen einfachen Absatz zurück Einfach
Schreibe eine Beschreibung des Bürgerkriegs. Gib wichtige Daten und Ereignisse an und beschreibe deren Bedeutung gab einen Absatz mit anschließender Liste wichtiger Ereignisse mit Beschreibungen zurück Komplex
Schreibe eine Beschreibung des Bürgerkriegs in 1 Absatz. Gib 3 Stichpunkte mit Schlüsseldaten und deren Bedeutung. Gib 3 weitere Stichpunkte mit wichtigen historischen Persönlichkeiten und deren Beitrag. Gib die Ausgabe als JSON-Datei zurück gibt umfangreichere Details in einem Textfeld zurück, formatiert als JSON, das kopiert und validiert werden kann Komplex. Formatiert

Primärer Inhalt

In den obigen Beispielen war der Prompt noch recht offen, sodass das LLM entscheiden konnte, welcher Teil seines vortrainierten Datensatzes relevant ist. Mit dem Designmuster primärer Inhalt wird der Eingabetext in zwei Teile gegliedert:

  • eine Anweisung (Aktion)
  • relevanter Inhalt (der die Aktion beeinflusst)

Hier ein Beispiel, bei dem die Anweisung lautet, „fasse dies in 2 Sätzen zusammen“.

Prompt (Eingabe) Ergänzung (Ausgabe)
Jupiter ist der fünfte Planet von der Sonne und der größte im Sonnensystem. Er ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne, aber zweieinhalbmal so groß wie alle anderen Planeten des Sonnensystems zusammen. Jupiter ist eines der hellsten Objekte, die man mit bloßem Auge am Nachthimmel sehen kann, und war schon alten Zivilisationen vor der schriftlichen Überlieferung bekannt. Er ist nach dem römischen Gott Jupiter benannt.[19] Von der Erde aus betrachtet kann Jupiter hell genug sein, um sichtbare Schatten zu werfen,[20] und ist im Durchschnitt das dritthellste natürliche Objekt am Nachthimmel nach Mond und Venus.
Fasse dies in 2 kurzen Sätzen zusammen
Jupiter, der fünfte Planet von der Sonne, ist der größte im Sonnensystem und bekannt als eines der hellsten Objekte am Nachthimmel. Er ist nach dem römischen Gott Jupiter benannt, ein Gasriese mit einer Masse, die zweieinhalbmal so groß ist wie die aller anderen Planeten des Sonnensystems zusammen.

Das Segment für den primären Inhalt kann auf verschiedene Weise genutzt werden, um wirkungsvollere Anweisungen zu geben:

  • Beispiele – Anstatt dem Modell durch eine explizite Anweisung zu sagen, was es tun soll, gibt man ihm Beispiele, was zu tun ist, und lässt es das Muster ableiten.
  • Hinweise – Auf die Anweisung folgt ein „Hinweis“, der die Ergänzung vorbereitet und das Modell auf relevantere Antworten lenkt.
  • Vorlagen – Das sind wiederholbare „Rezepte“ für Prompts mit Platzhaltern (Variablen), die mit Daten für spezifische Anwendungsfälle angepasst werden können.

Lass uns diese in der Praxis betrachten.

Verwendung von Beispielen

Dies ist eine Methode, bei der du dem Modell mit dem primären Inhalt einige Beispiele für die gewünschte Ausgabe zur Verfügung stellst, und es das Muster für die erwünschte Ausgabe ableitet. Je nach Anzahl der Beispiele spricht man von Zero-Shot-Prompting, One-Shot-Prompting, Few-Shot-Prompting usw.

Der Prompt besteht nun aus drei Komponenten:

  • Einer Aufgabenbeschreibung
  • Ein paar Beispielen der gewünschten Ausgabe
  • Dem Beginn eines neuen Beispiels (was zur impliziten Aufgabenbeschreibung wird)
Lernart Prompt (Eingabe) Ergänzung (Ausgabe)
Zero-shot „The Sun is Shining“. Übersetze ins Spanische „El Sol está brillando“.
One-shot „The Sun is Shining“ => „El Sol está brillando“.
„It's a Cold and Windy Day“ =>
„Es un día frío y ventoso“.
Few-shot Der Spieler lief die Bases ab => Baseball
Der Spieler spielte ein Ass => Tennis
Der Spieler schlug eine Six => Cricket
Der Spieler machte einen Dunk =>
Basketball

Beachte, dass wir beim Zero-Shot-Prompting eine explizite Anweisung („Übersetze ins Spanische“) geben mussten, die aber beim One-Shot-Prompting-Beispiel implizit wurde. Das Few-Shot-Beispiel zeigt, dass durch zusätzliche Beispiele Modelle noch genauere Ableitungen ohne zusätzliche Anweisungen treffen können.

Prompt-Hinweise

Eine weitere Technik mit primärem Inhalt ist es, Hinweise statt Beispiele zu geben. Dabei bekommt das Modell einen Anstoß in die richtige Richtung, indem es mit einem Textabschnitt beginnt, der das gewünschte Antwortformat widerspiegelt. Das Modell „nimmt den Hinweis auf“ und führt die Antwort entsprechend fort.

Anzahl der Hinweise Prompt (Eingabe) Ergänzung (Ausgabe)
0 Jupiter ist der fünfte Planet von der Sonne und der größte im Sonnensystem. Er ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne, aber zweieinhalbmal so groß wie alle anderen Planeten des Sonnensystems zusammen. Jupiter ist eines der hellsten Objekte, die man mit bloßem Auge am Nachthimmel sehen kann, und war schon alten Zivilisationen vor der schriftlichen Überlieferung bekannt.
Fasse dies zusammen
Jupiter ist der größte Planet in unserem Sonnensystem und der fünfte von der Sonne aus. Er ist ein Gasriese mit einer Masse von 1/1000 der Sonnenmasse, aber schwerer als alle anderen Planeten zusammen. Alte Zivilisationen kennen Jupiter schon lange, und er ist leicht am Nachthimmel zu sehen.
1 Jupiter ist der fünfte Planet von der Sonne und der größte im Sonnensystem. Es ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne, aber zweieinhalbmal so groß wie alle anderen Planeten im Sonnensystem zusammen. Jupiter ist eines der hellsten Objekte, die mit bloßem Auge im Nachthimmel sichtbar sind, und ist seit der Vorgeschichte alten Zivilisationen bekannt.
Fasse dies zusammen
Was wir gelernt haben, ist, dass Jupiter
der fünfte Planet von der Sonne und der größte im Sonnensystem ist. Es ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne, aber zweieinhalbmal so groß wie alle anderen Planeten zusammen. Er ist mit bloßem Auge leicht sichtbar und seit der Antike bekannt.
2 Jupiter ist der fünfte Planet von der Sonne und der größte im Sonnensystem. Es ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne, aber zweieinhalbmal so groß wie alle anderen Planeten im Sonnensystem zusammen. Jupiter ist eines der hellsten Objekte, die mit bloßem Auge im Nachthimmel sichtbar sind, und ist seit der Vorgeschichte alten Zivilisationen bekannt.
Fasse dies zusammen
Die Top 3 Fakten, die wir gelernt haben:
1. Jupiter ist der fünfte Planet von der Sonne und der größte im Sonnensystem.
2. Es ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne...
3. Jupiter ist seit der Antike mit bloßem Auge sichtbar ...

Prompt-Vorlagen

Eine Prompt-Vorlage ist ein vordefiniertes Rezept für einen Prompt, das bei Bedarf gespeichert und wiederverwendet werden kann, um konsistentere Benutzererfahrungen im großen Maßstab zu ermöglichen. In seiner einfachsten Form ist es einfach eine Sammlung von Prompt-Beispielen wie dieses von OpenAI, das sowohl die interaktiven Prompt-Komponenten (Benutzer- und Systemnachrichten) als auch das API-gesteuerte Anfrageformat bereitstellt – zur Unterstützung der Wiederverwendung.

In einer komplexeren Form wie dieses Beispiel von LangChain enthält es Platzhalter, die mit Daten aus verschiedenen Quellen (Benutzereingabe, Systemkontext, externe Datenquellen usw.) dynamisch ersetzt werden können, um einen Prompt zu erzeugen. Dies ermöglicht uns, eine Bibliothek von wiederverwendbaren Prompts zu erstellen, die zur programmgesteuerten Förderung konsistenter Benutzererfahrungen im großen Maßstab genutzt werden können.

Der tatsächliche Wert von Vorlagen liegt schließlich in der Möglichkeit, Prompt-Bibliotheken für vertikale Anwendungsbereiche zu erstellen und zu veröffentlichen – bei denen die Prompt-Vorlage nun optimiert ist, um spezifischen Anwendungskontext oder Beispiele widerzuspiegeln, die die Antworten für die Zielgruppe relevanter und genauer machen. Das Prompts For Edu Repository ist ein hervorragendes Beispiel für diesen Ansatz, das eine Bibliothek von Prompts für den Bildungsbereich mit Schwerpunkt auf Schlüsselzielen wie Unterrichtsplanung, Curriculum-Design, Schülerbetreuung usw. kuratiert.

Unterstützender Inhalt

Wenn wir an die Konstruktion von Prompts denken als eine Anweisung (Aufgabe) und ein Ziel (Primärinhalt), ist sekundärer Inhalt wie zusätzlicher Kontext, den wir bereitstellen, um die Ausgabe in irgendeiner Weise zu beeinflussen. Es könnten Einstellungsparameter, Formatierungsanweisungen, Themen-Taxonomien usw. sein, die dem Modell helfen, seine Antwort besser an die gewünschten Benutzerziele oder Erwartungen anzupassen.

Zum Beispiel: Angenommen, wir haben einen Kurskatalog mit umfangreichen Metadaten (Name, Beschreibung, Niveau, Metadaten-Tags, Dozent usw.) aller verfügbaren Kurse im Curriculum:

  • Wir können eine Anweisung definieren, den Kurskatalog für Herbst 2023 „zusammenzufassen“.
  • Den Primärinhalt verwenden wir, um einige Beispiele des gewünschten Outputs bereitzustellen.
  • Den sekundären Inhalt setzen wir ein, um die Top 5 „Tags“ von Interesse zu identifizieren.

Nun kann das Modell eine Zusammenfassung in dem durch die Beispiele gezeigten Format liefern – aber wenn ein Ergebnis mehrere Tags hat, kann es die im sekundären Inhalt identifizierten fünf Tags priorisieren.


Best Practices beim Prompting

Jetzt, da wir wissen, wie Prompts konstruiert werden können, können wir anfangen, darüber nachzudenken, wie man sie designt, um bewährte Praktiken widerzuspiegeln. Wir können das in zwei Teile zerlegen – die richtige Einstellung zu haben und die richtigen Techniken anzuwenden.

Prompt Engineering Einstellung

Prompt Engineering ist ein Prozess des Versuch-und-Irrtum, daher behalten Sie drei breite Leitfaktoren im Kopf:

  1. Domänenverständnis ist wichtig. Die Genauigkeit und Relevanz der Antwort hängt von der Domäne ab, in der die Anwendung oder der Benutzer tätig ist. Wenden Sie Ihre Intuition und Domänenexpertise an, um Techniken weiter anzupassen. Definieren Sie z.B. domänenspezifische Persönlichkeiten in Ihren Systemprompts oder nutzen Sie domänenspezifische Vorlagen in Benutzermeldungen. Stellen Sie sekundäre Inhalte bereit, die domänenspezifische Kontexte widerspiegeln, oder verwenden Sie domänenspezifische Hinweise und Beispiele, um das Modell zu gewohnten Mustern zu führen.

  2. Modellverständnis ist wichtig. Wir wissen, dass Modelle naturgemäß stochastisch sind. Aber Implementierungen des Modells können auch hinsichtlich des Trainingsdatensatzes (vortrainiertes Wissen), der bereitgestellten Funktionen (z.B. API oder SDK) und der Art der optimierten Inhalte (z.B. Code vs. Bilder vs. Text) variieren. Verstehen Sie die Stärken und Grenzen des genutzten Modells und verwenden Sie dieses Wissen, um Aufgaben zu priorisieren oder angepasste Vorlagen zu erstellen, die auf die Fähigkeiten des Modells optimiert sind.

  3. Iteration & Validierung sind wichtig. Modelle entwickeln sich schnell weiter, ebenso die Techniken des Prompt Engineerings. Als Domänenexperte haben Sie möglicherweise weitere Kontexte oder Kriterien für Ihre spezifische Anwendung, die für die größere Gemeinschaft nicht gelten. Nutzen Sie Tools und Techniken des Prompt Engineerings, um die Konstruktion von Prompts „anzuwerfen“, dann iterieren und validieren Sie die Ergebnisse mit Ihrer eigenen Intuition und Domänenexpertise. Dokumentieren Sie Ihre Erkenntnisse und erstellen Sie eine Wissensdatenbank (z.B. Prompt-Bibliotheken), die andere als neue Ausgangsbasis für schnellere Iterationen verwenden können.

Best Practices

Sehen wir uns nun gängige Best Practices an, die von OpenAI und Azure OpenAI empfohlen werden.

Was Warum
Bewerten Sie die neuesten Modelle Neue Modellgenerationen haben wahrscheinlich verbesserte Funktionen und Qualität – können aber auch höhere Kosten verursachen. Bewerten Sie sie hinsichtlich Einfluss und treffen Sie dann Migrationsentscheidungen.
Trennen Sie Anweisungen & Kontext Prüfen Sie, ob Ihr Modell/Anbieter Trennzeichen definiert, um Anweisungen, primären und sekundären Inhalt besser zu unterscheiden. Dies kann dem Modell helfen, Token genauer zu gewichten.
Seien Sie spezifisch und klar Geben Sie mehr Details zum gewünschten Kontext, Ergebnis, Länge, Format, Stil usw. Dies verbessert sowohl Qualität als auch Konsistenz der Antworten. Legen Sie Rezepte in wiederverwendbaren Vorlagen fest.
Seien Sie beschreibend, nutzen Sie Beispiele Modelle reagieren oft besser auf einen „Show and Tell“-Ansatz. Beginnen Sie mit einem Zero-Shot-Ansatz, bei dem Sie nur eine Anweisung geben (aber keine Beispiele), und verfeinern Sie dann mit Few-Shot, indem Sie einige Beispiele der gewünschten Ausgabe geben. Verwenden Sie Analogien.
Nutzen Sie Hinweise, um Antworten anzustoßen Lenken Sie das Modell zu einem gewünschten Ergebnis, indem Sie ihm einige Anfangswörter oder -phrasen geben, die es als Ausgangspunkt für die Antwort verwenden kann.
Verstärken Sie Manchmal müssen Sie sich gegenüber dem Modell wiederholen. Geben Sie Anweisungen vor und nach Ihrem Primärinhalt, verwenden Sie eine Anweisung und einen Hinweis etc. Iterieren und validieren Sie, was am besten funktioniert.
Reihenfolge ist wichtig Die Reihenfolge, in der Sie Informationen dem Modell präsentieren, kann die Ausgabe beeinflussen, auch bei Lernbeispielen, aufgrund von Neuheits-Bias. Probieren Sie verschiedene Optionen aus, um das beste Ergebnis zu finden.
Geben Sie dem Modell eine „Ausweichmöglichkeit“ Geben Sie dem Modell eine Fallback-Antwort, die es geben kann, wenn es die Aufgabe aus irgendeinem Grund nicht erfüllen kann. Dies verringert die Wahrscheinlichkeit, dass Modelle falsche oder erfundene Antworten erzeugen.

Wie bei jeder Best Practice gilt: Ihre Erfahrungen können je nach Modell, Aufgabe und Domäne variieren. Nutzen Sie diese als Ausgangspunkt und iterieren Sie, um herauszufinden, was für Sie am besten funktioniert. Bewerten Sie Ihren Prompt Engineering-Prozess ständig neu, wenn neue Modelle und Werkzeuge verfügbar werden, mit Fokus auf Skalierbarkeit des Prozesses und Qualität der Antworten.

Aufgabe

Herzlichen Glückwunsch! Sie haben das Ende der Lektion erreicht! Nun ist es Zeit, einige dieser Konzepte und Techniken mit echten Beispielen zu testen!

Für unsere Aufgabe verwenden wir ein Jupyter Notebook mit Übungen, die Sie interaktiv durchführen können. Sie können das Notebook auch mit eigenen Markdown- und Codezellen erweitern, um Ideen und Techniken eigenständig zu erkunden.

Zum Starten, forken Sie das Repository und dann

  • (Empfohlen) Starten Sie GitHub Codespaces
  • (Alternativ) Klonen Sie das Repository auf Ihr lokales Gerät und verwenden Sie es mit Docker Desktop
  • (Alternativ) Öffnen Sie das Notebook mit Ihrer bevorzugten Notebook-Laufzeitumgebung.

Als Nächstes konfigurieren Sie Ihre Umgebungsvariablen

  • Kopieren Sie die Datei .env.copy im Stammverzeichnis des Repos nach .env und füllen Sie die Werte für AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT und AZURE_OPENAI_DEPLOYMENT aus. Gehen Sie dann zurück zum Learning Sandbox Abschnitt, um zu lernen, wie das geht.

Danach öffnen Sie das Jupyter Notebook

  • Wählen Sie den Laufzeit-Kernel. Wenn Sie Option 1 oder 2 verwenden, wählen Sie einfach den standardmäßig vom Dev-Container bereitgestellten Python 3.10.x Kernel aus.

Sie sind bereit, die Übungen durchzuführen. Beachten Sie, dass es hier keine richtigen oder falschen Antworten gibt – es geht darum, Optionen durch Versuch und Irrtum zu erkunden und Intuition dafür zu entwickeln, was bei einem bestimmten Modell und Anwendungsbereich funktioniert.

Aus diesem Grund gibt es in dieser Lektion keine Code-Lösungsteile. Stattdessen enthält das Notebook Markdown-Zellen mit dem Titel "Meine Lösung:", die ein Beispielergebnis zur Referenz zeigen.

Wissenscheck

Welche der folgenden Prompts folgt einigen vernünftigen Best Practices?

  1. Zeige mir ein Bild eines roten Autos
  2. Zeige mir ein Bild eines roten Autos der Marke Volvo und Modell XC90, das an einer Klippe mit Sonnenuntergang geparkt ist
  3. Zeige mir ein Bild eines roten Autos der Marke Volvo und Modell XC90

A: 2, es ist der beste Prompt, da er Details zum „Was“ liefert und ins Spezifische geht (nicht einfach irgendein Auto, sondern eine bestimmte Marke und Modell) und zudem die Umgebung beschreibt. 3 ist das nächstbeste, da es auch viele Beschreibungen enthält.

🚀 Herausforderung

Versuchen Sie, die „Hinweis“-Technik mit dem Prompt zu nutzen: Vervollständige den Satz "Zeige mir ein Bild eines roten Autos der Marke Volvo und ". Womit antwortet es, und wie würden Sie es verbessern?

Großartige Arbeit! Fahren Sie mit Ihrem Lernen fort

Möchten Sie mehr über verschiedene Konzepte des Prompt Engineerings lernen? Gehen Sie zur Seite für weiterführendes Lernen, um weitere großartige Ressourcen zu diesem Thema zu finden.

Gehen Sie weiter zu Lektion 5, in der wir uns fortgeschrittene Prompting-Techniken ansehen!


Haftungsausschluss:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir auf Genauigkeit achten, bitten wir zu beachten, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das ursprüngliche Dokument in seiner Originalsprache ist als maßgebliche Quelle zu betrachten. Für wichtige Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Nutzung dieser Übersetzung entstehen.