Dieses Modul behandelt grundlegende Konzepte und Techniken zur Erstellung effektiver Prompts für generative KI-Modelle. Wie Sie Ihren Prompt an ein LLM formulieren, ist ebenfalls entscheidend. Ein sorgfältig gestalteter Prompt kann eine bessere Antwortqualität erzielen. Aber was genau bedeuten Begriffe wie Prompt und Prompt Engineering? Und wie verbessere ich den Prompt-Input, den ich an das LLM sende? Diese Fragen wollen wir in diesem und im nächsten Kapitel beantworten.
Generative KI ist in der Lage, neue Inhalte (z. B. Text, Bilder, Audio, Code usw.) als Antwort auf Benutzeranfragen zu erstellen. Dies geschieht mithilfe von Large Language Models wie der GPT-Serie von OpenAI („Generative Pre-trained Transformer“), die für die Nutzung natürlicher Sprache und Code trainiert wurden.
Benutzer können jetzt mit diesen Modellen über vertraute Paradigmen wie Chat interagieren, ohne technische Vorkenntnisse oder Schulungen zu benötigen. Die Modelle sind promptbasiert – Benutzer senden eine Texteingabe (Prompt) und erhalten die 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 somit zur primären Programmierschnittstelle für generative KI-Anwendungen, die den Modellen sagen, was sie tun sollen, und die Qualität der zurückgegebenen Antworten beeinflussen. „Prompt Engineering“ ist ein schnell wachsendes Forschungsfeld, das sich auf das Design und die Optimierung von Prompts konzentriert, um konsistente und qualitativ hochwertige Antworten in großem Maßstab zu liefern.
In dieser Lektion lernen wir, was Prompt Engineering ist, warum es wichtig ist und wie wir effektivere Prompts für ein bestimmtes Modell und Anwendungsziel erstellen können. Wir verstehen die Kernkonzepte und bewährte Methoden des Prompt Engineerings – und lernen eine interaktive Jupyter-Notebook-„Sandbox“-Umgebung kennen, in der wir diese Konzepte an realen Beispielen anwenden können.
Am Ende dieser Lektion werden wir in der Lage sein:
- Zu erklären, was Prompt Engineering ist und warum es wichtig ist.
- Die Bestandteile eines Prompts zu beschreiben und wie sie verwendet werden.
- Best Practices und Techniken des Prompt Engineerings zu erlernen.
- Gelernte Techniken an realen Beispielen anzuwenden, unter Verwendung eines OpenAI-Endpunkts.
Prompt Engineering: Die Praxis, Eingaben so zu gestalten und zu verfeinern, dass KI-Modelle gewünschte Ausgaben erzeugen.
Tokenisierung: Der Prozess, Text in kleinere Einheiten, sogenannte Tokens, umzuwandeln, 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.
Prompt Engineering ist derzeit eher Kunst als Wissenschaft. Der beste Weg, unsere Intuition dafür zu verbessern, ist es, mehr zu üben und einen Trial-and-Error-Ansatz zu verfolgen, der Fachwissen aus dem Anwendungsbereich mit empfohlenen Techniken und modell-spezifischen Optimierungen kombiniert.
Das zu dieser Lektion gehörende Jupyter Notebook bietet eine Sandbox-Umgebung, in der Sie das Gelernte ausprobieren können – entweder direkt oder im Rahmen der Code-Herausforderung am Ende. Um die Übungen auszuführen, benötigen Sie:
- Einen Azure OpenAI API-Schlüssel – den Service-Endpunkt für ein bereitgestelltes LLM.
- Eine Python-Laufzeitumgebung – in der das Notebook ausgeführt werden kann.
- Lokale Umgebungsvariablen – schließen Sie jetzt die SETUP-Schritte ab, um bereit zu sein.
Das Notebook enthält Starter-Übungen – Sie sind jedoch eingeladen, eigene Markdown- (Beschreibungen) und Code- (Prompt-Anfragen) Abschnitte hinzuzufügen, um weitere Beispiele oder Ideen auszuprobieren und Ihre Intuition für das Prompt-Design zu stärken.
Möchten Sie einen Überblick über die Themen dieser Lektion erhalten, bevor Sie tiefer einsteigen? Schauen Sie sich diesen illustrierten Leitfaden an, der Ihnen die Hauptthemen und die wichtigsten Erkenntnisse für jedes Thema vermittelt. Die Roadmap der Lektion führt Sie vom Verständnis der Kernkonzepte und Herausforderungen bis hin zur Anwendung relevanter Techniken und Best Practices des Prompt Engineerings. Beachten Sie, dass der Abschnitt „Fortgeschrittene Techniken“ in diesem Leitfaden auf Inhalte verweist, die im nächsten Kapitel dieses Curriculums behandelt werden.
Kommen wir nun dazu, wie dieses Thema mit unserer Startup-Mission zusammenhängt, KI-Innovationen in die Bildung zu bringen. 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, Lehrpläne zu analysieren, um Lücken in der Abdeckung zu identifizieren. Die KI kann Ergebnisse zusammenfassen oder sie mit Code visualisieren.
- Lehrkräfte könnten die KI bitten, einen Unterrichtsplan für eine Zielgruppe und ein Thema zu erstellen. Die KI kann den personalisierten Plan in einem vorgegebenen Format erstellen.
- Schüler könnten die KI bitten, sie in einem schwierigen Fach zu unterrichten. Die KI kann Schüler nun mit Lektionen, Hinweisen und Beispielen auf ihrem Niveau unterstützen.
Das ist nur die Spitze des Eisbergs. Schauen Sie sich Prompts For Education an – eine Open-Source-Prompt-Bibliothek, kuratiert von Bildungsexperten – um ein breiteres Spektrum der Möglichkeiten zu entdecken! Probieren Sie einige dieser Prompts in der Sandbox oder im OpenAI Playground aus, um zu sehen, was passiert!
Wir haben diese Lektion damit begonnen, Prompt Engineering als den Prozess des Gestaltens und Optimierens von Texteingaben (Prompts) zu definieren, um konsistente und qualitativ hochwertige Antworten (Completions) für ein bestimmtes Anwendungsziel und Modell zu liefern. Man kann sich das als einen zweistufigen Prozess vorstellen:
- den initialen Prompt für ein bestimmtes Modell und Ziel gestalten
- den Prompt iterativ verfeinern, um die Antwortqualität zu verbessern
Dies ist zwangsläufig ein Trial-and-Error-Prozess, der Benutzerintuition und Aufwand erfordert, um optimale Ergebnisse zu erzielen. 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 Grundmodell einen Prompt „verarbeitet“
- Instruction-Tuned LLMs = wie das Modell jetzt „Aufgaben“ erkennen kann
Ein LLM sieht Prompts als Sequenz von Tokens, wobei verschiedene Modelle (oder Modellversionen) denselben Prompt unterschiedlich tokenisieren können. Da LLMs auf Tokens (und nicht auf rohem Text) trainiert werden, hat die Art der Tokenisierung direkten Einfluss auf die Qualität der generierten Antwort.
Um ein Gefühl dafür zu bekommen, wie Tokenisierung funktioniert, probieren Sie Tools wie den OpenAI Tokenizer aus, der unten gezeigt wird. Kopieren Sie Ihren Prompt hinein und sehen Sie, wie dieser in Tokens umgewandelt wird, achten Sie darauf, wie Leerzeichen und Satzzeichen behandelt werden. Beachten Sie, dass dieses Beispiel ein älteres LLM (GPT-3) zeigt – bei neueren Modellen kann das Ergebnis anders ausfallen.
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 riesigen Textdatensätzen trainiert sind, haben sie ein gutes Verständnis der statistischen Zusammenhänge zwischen Tokens und können diese Vorhersage mit gewisser Sicherheit treffen. Beachten Sie, dass sie die Bedeutung der Wörter im Prompt oder Token nicht verstehen; sie erkennen lediglich ein Muster, das sie mit ihrer nächsten Vorhersage „vervollständigen“ können. Sie können die Sequenz so lange vorhersagen, bis die Vorhersage durch Benutzereingriff oder eine vorgegebene Bedingung beendet wird.
Möchten Sie sehen, wie promptbasierte Completion funktioniert? Geben Sie den obigen Prompt im Azure OpenAI Studio Chat Playground mit den Standardeinstellungen ein. Das System ist so konfiguriert, dass Prompts als Informationsanfragen behandelt werden – Sie sollten also eine Antwort erhalten, die diesem Kontext entspricht.
Aber was, wenn der Benutzer etwas Spezifisches sehen möchte, das bestimmte Kriterien oder ein Aufgaben-Ziel erfüllt? Hier kommen instruction-tuned LLMs ins Spiel.
Ein Instruction Tuned LLM baut auf dem Foundation-Modell auf und wird mit Beispielen oder Eingabe-/Ausgabe-Paaren (z. B. mehrstufigen „Nachrichten“) feinabgestimmt, die klare Anweisungen enthalten können – und die Antwort der KI versucht, dieser Anweisung zu folgen.
Dabei kommen Techniken wie Reinforcement Learning mit menschlichem Feedback (RLHF) zum Einsatz, die das Modell darin trainieren, Anweisungen zu befolgen und aus Feedback zu lernen, sodass es Antworten liefert, die besser für praktische Anwendungen geeignet und relevanter für die Ziele der Nutzer sind.
Probieren wir es aus – nehmen Sie den oben genannten Prompt und ändern Sie nun die Systemnachricht, um folgende Anweisung als Kontext zu geben:
Fasse den bereitgestellten Inhalt für eine Zweitklässlerin/einen Zweitklässler zusammen. Halte das Ergebnis in einem Absatz mit 3-5 Stichpunkten.
Sehen Sie, wie das Ergebnis nun auf das gewünschte Ziel und Format abgestimmt ist? Eine Lehrkraft kann diese Antwort direkt in ihren Folien für den Unterricht verwenden.
Jetzt, wo wir wissen, wie Prompts von LLMs verarbeitet werden, sprechen wir darüber, warum wir Prompt Engineering brauchen. Die Antwort liegt darin, dass aktuelle LLMs eine Reihe von Herausforderungen mit sich bringen, die es erschweren, zuverlässige und konsistente Completions zu erzielen, ohne Aufwand in die Konstruktion und Optimierung der Prompts zu stecken. Zum Beispiel:
-
Modellantworten sind stochastisch. Derselbe Prompt wird wahrscheinlich mit verschiedenen Modellen oder Modellversionen unterschiedliche Antworten erzeugen. Und er kann sogar mit dem gleichen Modell zu unterschiedlichen Zeiten verschiedene Ergebnisse liefern. Prompt Engineering-Techniken können helfen, diese Variationen zu minimieren, indem sie bessere Leitplanken setzen.
-
Modelle können Antworten erfinden. Modelle sind mit großen, aber begrenzten Datensätzen vortrainiert, was bedeutet, dass ihnen Wissen über Konzepte außerhalb dieses Trainings fehlt. Daher können sie Antworten erzeugen, die ungenau, erfunden oder direkt widersprüchlich zu bekannten Fakten sind. Prompt Engineering-Techniken helfen Nutzern, solche Erfindungen zu erkennen und zu mindern, z. B. indem die KI nach Quellenangaben oder Begründungen gefragt wird.
-
Modelle unterscheiden sich in ihren Fähigkeiten. Neuere Modelle oder Modellgenerationen verfügen über umfangreichere Fähigkeiten, bringen aber auch eigene Besonderheiten und Kompromisse bei Kosten und Komplexität mit sich. Prompt Engineering kann uns helfen, Best Practices und Workflows zu entwickeln, die Unterschiede abstrahieren und sich modell-spezifischen Anforderungen skalierbar und nahtlos anpassen.
Sehen wir uns das im OpenAI- oder Azure OpenAI Playground an:
- Verwenden Sie denselben Prompt mit verschiedenen LLM-Bereitstellungen (z. B. OpenAI, Azure OpenAI, Hugging Face) – haben Sie die Unterschiede bemerkt?
- Verwenden Sie denselben Prompt mehrfach mit dem gleichen LLM (z. B. Azure OpenAI Playground) – wie unterschieden sich diese Variationen?
In diesem Kurs verwenden wir den Begriff „Fabrication“ (Erfindung), um das Phänomen zu beschreiben, dass LLMs manchmal faktisch falsche Informationen generieren, bedingt durch Einschränkungen im Training oder andere Faktoren. In populären Artikeln oder Forschungsarbeiten wird dies oft als „Halluzinationen“ bezeichnet. Wir empfehlen jedoch ausdrücklich, den Begriff „Fabrication“ zu verwenden, um eine unbeabsichtigte Vermenschlichung des Verhaltens zu vermeiden, indem man einer maschinengesteuerten Ausgabe menschliche Eigenschaften zuschreibt. Dies unterstützt auch die Richtlinien für verantwortungsvolle KI aus terminologischer Sicht, indem Begriffe vermieden werden, die in manchen Kontexten als anstößig oder nicht inklusiv gelten könnten.
Möchten Sie ein Gefühl dafür bekommen, wie Erfindungen entstehen? Denken Sie an einen Prompt, der die KI anweist, Inhalte zu einem nicht existierenden Thema zu generieren (um sicherzustellen, dass es nicht im Trainingsdatensatz enthalten ist). Zum Beispiel habe ich diesen Prompt ausprobiert:
Die Schüler sollen ein Verständnis für die Ursachen, den Verlauf und die Folgen des Marskriegs von 2076 entwickeln. Außerdem sollen sie die Bedeutung dieses Konflikts für die Zukunft der Menschheit im Weltraum reflektieren.
2 Unterrichtsstunden (je 45 Minuten)
- Lehrbuchkapitel zum Marskrieg von 2076
- Karten und Diagramme des Marsgebiets
- Videos und Zeitzeugenberichte (sofern verfügbar)
- Arbeitsblätter mit Fragen und Aufgaben
- Kurze Vorstellung des Themas: Was war der Marskrieg von 2076?
- Diskussion: Warum könnte es zu einem Krieg auf dem Mars gekommen sein?
- Gemeinsames Erarbeiten der politischen, wirtschaftlichen und sozialen Hintergründe
- Analyse der Ressourcenknappheit und territorialen Streitigkeiten
- Überblick über die wichtigsten Ereignisse und Schlachten
- Vorstellung der beteiligten Parteien und ihrer Strategien
- Auswirkungen auf die Marskolonien und die Erde
- Technologische und gesellschaftliche Veränderungen
- Welche Lehren können aus dem Marskrieg gezogen werden?
- Wie könnte die Zukunft der Marsbesiedlung aussehen?
- Zusammenfassung der wichtigsten Punkte
- Hausaufgabe: Kurzer Aufsatz über die Bedeutung des Marskriegs für die Menschheit
- Mitarbeit in der Diskussion
- Qualität der Hausaufgabe
- Verständnis der Zusammenhänge in einem kurzen Test in der nächsten Stunde Eine Websuche zeigte mir, dass es fiktive Berichte (z. B. Fernsehserien oder Bücher) über Marskriege gibt – aber keine aus dem Jahr 2076. Der gesunde Menschenverstand sagt uns auch, dass 2076 in der Zukunft liegt und daher nicht mit einem realen Ereignis in Verbindung gebracht werden kann.
Was passiert also, wenn wir diese Eingabeaufforderung bei verschiedenen LLM-Anbietern ausführen?
Antwort 1: OpenAI Playground (GPT-35)
Antwort 2: Azure OpenAI Playground (GPT-35)
Antwort 3: : Hugging Face Chat Playground (LLama-2)
Wie erwartet liefert jedes Modell (bzw. jede Modellversion) aufgrund stochastischen Verhaltens und unterschiedlicher Modellfähigkeiten leicht unterschiedliche Antworten. Zum Beispiel richtet sich ein Modell an ein Publikum der 8. Klasse, während das andere einen Schüler der Oberstufe annimmt. Aber alle drei Modelle erzeugten Antworten, die einen uninformierten Nutzer davon überzeugen könnten, dass das Ereignis real war.
Techniken des Prompt Engineerings wie Metaprompting und Temperature-Konfiguration können Modell-Fälschungen bis zu einem gewissen Grad reduzieren. Neue Prompt-Engineering-Architekturen integrieren zudem nahtlos neue Werkzeuge und Techniken in den Prompt-Ablauf, um einige dieser Effekte zu mildern oder zu verringern.
Schließen wir diesen Abschnitt ab, indem wir uns ansehen, wie Prompt Engineering in realen Lösungen eingesetzt wird, anhand einer Fallstudie: GitHub Copilot.
GitHub Copilot ist dein „KI-Paarprogrammierer“ – es wandelt Texteingaben in Code-Vervollständigungen um und ist in deine Entwicklungsumgebung (z. B. Visual Studio Code) integriert, um ein nahtloses Nutzererlebnis zu bieten. Wie in der untenstehenden Blogserie 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, um noch schnellere Vorschläge zu liefern: debuted an improved AI model that goes beyond Codex.
Lies die Beiträge der Reihe nach, um ihre Lernreise nachzuvollziehen.
- Mai 2023 | GitHub Copilot wird besser darin, deinen Code zu verstehen
- Mai 2023 | Inside GitHub: Arbeit mit den LLMs hinter GitHub Copilot
- Jun 2023 | Wie man bessere Prompts für GitHub Copilot schreibt
- Jul 2023 | GitHub Copilot geht mit verbessertem KI-Modell über Codex hinaus
- Jul 2023 | Ein Entwicklerleitfaden für Prompt Engineering und LLMs
- Sep 2023 | Wie man eine Enterprise-LLM-App baut: Lektionen von GitHub Copilot
Du kannst auch ihren Engineering-Blog durchstöbern, um weitere Beiträge wie diesen zu finden, der zeigt, wie diese Modelle und Techniken angewendet werden, um reale Anwendungen voranzutreiben.
Wir haben gesehen, warum Prompt Engineering wichtig ist – jetzt wollen wir verstehen, wie Prompts aufgebaut werden, damit wir verschiedene Techniken für ein effektiveres Prompt-Design bewerten können.
Beginnen wir mit dem einfachen Prompt: eine Texteingabe, die ohne weiteren Kontext an das Modell gesendet wird. Hier ein Beispiel – wenn wir die ersten Worte der US-Nationalhymne an die OpenAI Completion API senden, vervollständigt sie sofort die Antwort mit den nächsten Zeilen und zeigt so das grundlegende Vorhersageverhalten.
| Prompt (Eingabe) | Vervollständigung (Ausgabe) |
|---|---|
| Oh say can you see | Es klingt, als würdest du die Liedtexte von „The Star-Spangled Banner“, der Nationalhymne der Vereinigten Staaten, beginnen. Der vollständige Text lautet ... |
Fügen wir nun 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-/Ausgabepaaren, die den Nutzer-Input und die Assistent-Antwort widerspiegeln.
- Systemnachricht, die den Kontext für das Verhalten oder die Persönlichkeit des Assistenten festlegt.
Die Anfrage sieht nun wie folgt aus, wobei die Tokenisierung relevante Informationen aus Kontext und Gespräch effektiv erfasst. Das Ändern des Systemkontexts kann die Qualität der Vervollständigungen genauso stark beeinflussen wie die vom Nutzer gelieferten 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?"}
]
)In den obigen Beispielen war der Nutzer-Prompt eine einfache Textanfrage, die als Informationsanfrage interpretiert werden kann. Mit Instruktions-Prompts können wir diesen Text nutzen, um eine Aufgabe genauer zu spezifizieren und der KI bessere Anweisungen zu geben. Hier ein Beispiel:
| Prompt (Eingabe) | Vervollständigung (Ausgabe) | Instruktionstyp |
|---|---|---|
| Schreibe eine Beschreibung des Bürgerkriegs | gab einen einfachen Absatz zurück | Einfach |
| Schreibe eine Beschreibung des Bürgerkriegs. Nenne wichtige Daten und Ereignisse und beschreibe deren Bedeutung | gab einen Absatz gefolgt von einer Liste wichtiger Ereignisdaten mit Beschreibungen zurück | Komplex |
| Schreibe eine Beschreibung des Bürgerkriegs in 1 Absatz. Gib 3 Stichpunkte mit wichtigen Daten und deren Bedeutung. Gib 3 weitere Stichpunkte mit wichtigen historischen Persönlichkeiten und deren Beiträgen. Gib die Ausgabe als JSON-Datei zurück | gibt ausführlichere Details in einem Textfeld zurück, formatiert als JSON, das du kopieren, einfügen und bei Bedarf validieren kannst | Komplex. Formatiert. |
In den obigen Beispielen war der Prompt noch recht offen, sodass das LLM selbst entscheiden konnte, welcher Teil seines vortrainierten Datensatzes relevant ist. Beim Designmuster primärer Inhalt wird der Eingabetext in zwei Teile geteilt:
- eine Anweisung (Aktion)
- relevanter Inhalt (der die Aktion beeinflusst)
Hier ein Beispiel, bei dem die Anweisung lautet: „Fasse das in 2 Sätzen zusammen“.
| Prompt (Eingabe) | Vervollständigung (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 im Sonnensystem zusammen. Jupiter ist eines der hellsten Objekte, die mit bloßem Auge am Nachthimmel sichtbar sind, und war schon den alten Zivilisationen vor der aufgezeichneten Geschichte bekannt. Er ist nach dem römischen Gott Jupiter benannt.[19] Von der Erde aus betrachtet kann Jupiter hell genug sein, dass sein reflektiertes Licht sichtbare Schatten wirft,[20] und ist im Durchschnitt das dritthellste natürliche Objekt am Nachthimmel nach Mond und Venus. Fasse das 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. Benannt nach dem römischen Gott Jupiter, ist er ein Gasriese, dessen Masse zweieinhalbmal so groß ist wie die aller anderen Planeten im Sonnensystem zusammen. |
Der primäre Inhaltsabschnitt kann auf verschiedene Weise genutzt werden, um effektivere Anweisungen zu geben:
- Beispiele – statt dem Modell eine explizite Anweisung zu geben, zeige ihm Beispiele, was zu tun ist, und lass es das Muster ableiten.
- Hinweise – folge der Anweisung mit einem „Hinweis“, der die Vervollständigung vorbereitet und das Modell zu relevanteren 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.
Schauen wir uns diese in der Praxis an.
Dies ist ein Ansatz, bei dem du den primären Inhalt nutzt, um dem Modell einige Beispiele der gewünschten Ausgabe für eine bestimmte Anweisung zu „füttern“ und es das Muster für die gewünschte Ausgabe ableiten lässt. Je nach Anzahl der Beispiele spricht man von Zero-Shot-, One-Shot- oder Few-Shot-Prompting.
Der Prompt besteht nun aus drei Komponenten:
- einer Aufgabenbeschreibung
- einigen Beispielen der gewünschten Ausgabe
- dem Beginn eines neuen Beispiels (das zur impliziten Aufgabenbeschreibung wird)
| Lernart | Prompt (Eingabe) | Vervollständigung (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 => Baseball Der Spieler schlug ein Ass => Tennis Der Spieler schlug eine Sechs => Cricket Der Spieler machte einen Slam-Dunk => |
Basketball |
Beachte, dass wir beim Zero-Shot-Prompting eine explizite Anweisung („Übersetze ins Spanische“) geben mussten, die beim One-Shot-Prompting-Beispiel implizit abgeleitet wird. Das Few-Shot-Beispiel zeigt, wie mehr Beispiele dem Modell erlauben, genauere Schlüsse ohne zusätzliche Anweisungen zu ziehen.
Eine weitere Technik zur Nutzung des primären Inhalts ist, Hinweise statt Beispiele zu geben. Dabei geben wir dem Modell einen Anstoß in die richtige Richtung, indem wir mit einem Ausschnitt beginnen, der das gewünschte Antwortformat widerspiegelt. Das Modell „nimmt den Hinweis auf“ und setzt in diesem Stil fort.
| Anzahl der Hinweise | Prompt (Eingabe) | Vervollständigung (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 im Sonnensystem zusammen. Jupiter ist eines der hellsten Objekte, die mit bloßem Auge am Nachthimmel sichtbar sind, und war schon den alten Zivilisationen vor der aufgezeichneten Geschichte bekannt. |
Zusammenfassung | Jupiter ist der größte Planet in unserem Sonnensystem und der fünfte von der Sonne aus gesehen. 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. Er ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne, aber zweieinhalbmal so schwer wie alle anderen Planeten im Sonnensystem zusammen. Jupiter ist eines der hellsten Objekte, die mit bloßem Auge am Nachthimmel sichtbar sind, und war schon den alten Zivilisationen vor der schriftlichen Geschichte bekannt.
Zusammenfassung
Was wir gelernt haben, ist, dass Jupiter | der fünfte Planet von der Sonne und der größte im Sonnensystem ist. Er ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne, aber zweieinhalbmal so schwer 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. Er ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne, aber zweieinhalbmal so schwer wie alle anderen Planeten im Sonnensystem zusammen. Jupiter ist eines der hellsten Objekte, die mit bloßem Auge am Nachthimmel sichtbar sind, und war schon den alten Zivilisationen vor der schriftlichen Geschichte bekannt.
Zusammenfassung
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. Er ist ein Gasriese mit einer Masse von einem Tausendstel der Sonne...
3. Jupiter ist seit der Antike mit bloßem Auge sichtbar ... |
| | | |
Eine Prompt-Vorlage ist ein vordefiniertes Rezept für einen Prompt, das gespeichert und bei Bedarf wiederverwendet werden kann, um konsistentere Nutzererfahrungen in großem 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 (Benutzereingaben, Systemkontext, externe Datenquellen usw.) ersetzt werden können, um einen Prompt dynamisch zu erzeugen. So können wir eine Bibliothek wiederverwendbarer Prompts erstellen, die programmatisch konsistente Nutzererfahrungen in großem Maßstab ermöglichen.
Der eigentliche Wert von Vorlagen liegt schließlich in der Möglichkeit, Prompt-Bibliotheken für vertikale Anwendungsbereiche zu erstellen und zu veröffentlichen – wobei die Prompt-Vorlage nun optimiert ist, um anwendungsspezifischen Kontext 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, da es eine Sammlung von Prompts für den Bildungsbereich mit Schwerpunkt auf wichtigen Zielen wie Unterrichtsplanung, Lehrplanentwicklung, Schülerbetreuung usw. kuratiert.
Wenn wir den Prompt-Aufbau als eine Anweisung (Aufgabe) und ein Ziel (primärer Inhalt) betrachten, dann ist sekundärer Inhalt wie zusätzlicher Kontext, den wir bereitstellen, um die Ausgabe auf irgendeine Weise zu beeinflussen. Das können Einstellungsparameter, Formatierungsanweisungen, Themen-Taxonomien usw. sein, die dem Modell helfen, seine Antwort besser auf die gewünschten Nutzerziele oder Erwartungen abzustimmen.
Beispiel: Angenommen, wir haben einen Kurskatalog mit umfangreichen Metadaten (Name, Beschreibung, Niveau, Metadaten-Tags, Dozent usw.) zu allen verfügbaren Kursen im Lehrplan:
- Wir können eine Anweisung definieren, um den Kurskatalog für Herbst 2023 zusammenzufassen
- Wir können den primären Inhalt nutzen, um einige Beispiele für die gewünschte Ausgabe bereitzustellen
- Wir können den sekundären Inhalt verwenden, um die Top 5 „Tags“ von Interesse zu identifizieren.
Das Modell kann dann eine Zusammenfassung im Format der Beispiele liefern – aber wenn ein Ergebnis mehrere Tags hat, kann es die 5 im sekundären Inhalt identifizierten Tags priorisieren.
Jetzt, wo wir wissen, wie Prompts aufgebaut werden können, können wir darüber nachdenken, wie man sie gestaltet, um Best Practices zu berücksichtigen. Wir können das in zwei Teile gliedern – die richtige Einstellung und die passenden Techniken.
Prompt Engineering ist ein Prozess von Versuch und Irrtum, daher sollten drei grundlegende Leitlinien beachtet werden:
-
Domänenverständnis ist entscheidend. Die Genauigkeit und Relevanz der Antwort hängt von der Domäne ab, in der die Anwendung oder der Nutzer tätig ist. Nutze deine Intuition und dein Fachwissen, um die Techniken weiter anzupassen. Definiere zum Beispiel domänenspezifische Persönlichkeiten in deinen System-Prompts oder verwende domänenspezifische Vorlagen in den Nutzer-Prompts. Stelle sekundäre Inhalte bereit, die domänenspezifische Kontexte widerspiegeln, oder nutze domänenspezifische Hinweise und Beispiele, um das Modell auf vertraute Nutzungsmuster zu lenken.
-
Modellverständnis ist wichtig. Wir wissen, dass Modelle von Natur aus stochastisch sind. Aber auch die Implementierungen können sich hinsichtlich des Trainingsdatensatzes (vortrainiertes Wissen), der bereitgestellten Fähigkeiten (z. B. über API oder SDK) und des optimierten Inhalts (z. B. Code vs. Bilder vs. Text) unterscheiden. Verstehe die Stärken und Grenzen des verwendeten Modells und nutze dieses Wissen, um Aufgaben zu priorisieren oder angepasste Vorlagen zu erstellen, die auf die Fähigkeiten des Modells optimiert sind.
-
Iteration & Validierung sind entscheidend. Modelle entwickeln sich schnell weiter, ebenso die Techniken des Prompt Engineerings. Als Fachexperte hast du möglicherweise weitere Kontexte oder Kriterien für deine spezifische Anwendung, die für die breite Community nicht gelten. Nutze Tools und Techniken des Prompt Engineerings, um den Prompt-Aufbau „anzustoßen“, iteriere dann und validiere die Ergebnisse mit deiner eigenen Intuition und deinem Fachwissen. Dokumentiere deine Erkenntnisse und erstelle eine Wissensbasis (z. B. Prompt-Bibliotheken), die von anderen als neue Grundlage für schnellere Iterationen genutzt werden kann.
Schauen wir uns nun gängige Best Practices an, die von OpenAI und Azure OpenAI empfohlen werden.
| Was | Warum |
|---|---|
| Die neuesten Modelle evaluieren. | Neue Modellgenerationen bieten wahrscheinlich verbesserte Funktionen und Qualität – können aber auch höhere Kosten verursachen. Bewerte sie hinsichtlich ihres Nutzens und entscheide dann über eine Migration. |
| Anweisungen & Kontext trennen | Prüfe, ob dein Modell/Anbieter Begrenzer definiert, um Anweisungen, primäre und sekundäre Inhalte klarer zu unterscheiden. Das hilft Modellen, Token-Gewichte genauer zuzuordnen. |
| Sei spezifisch und klar | Gib mehr Details zum gewünschten Kontext, Ergebnis, Länge, Format, Stil usw. Das verbessert sowohl Qualität als auch Konsistenz der Antworten. Halte Rezepte in wiederverwendbaren Vorlagen fest. |
| Sei beschreibend, nutze Beispiele | Modelle reagieren oft besser auf eine „zeigen und erzählen“-Methode. Beginne mit einem Zero-Shot-Ansatz, bei dem du nur eine Anweisung gibst (ohne Beispiele), und verfeinere dann mit Few-Shot, indem du einige Beispiele für die gewünschte Ausgabe lieferst. Nutze Analogien. |
| Nutze Hinweise, um Antworten anzustoßen | Lenke das Modell auf ein gewünschtes Ergebnis, indem du ihm einige einleitende Wörter oder Phrasen gibst, die es als Ausgangspunkt für die Antwort verwenden kann. |
| Wiederhole dich | Manchmal muss man sich gegenüber dem Modell wiederholen. Gib Anweisungen vor und nach dem primären Inhalt, nutze eine Anweisung und einen Hinweis usw. Iteriere und validiere, was am besten funktioniert. |
| Reihenfolge ist wichtig | Die Reihenfolge, in der du Informationen präsentierst, kann die Ausgabe beeinflussen, auch bei Lernbeispielen, wegen des „Recency Bias“. Probiere verschiedene Optionen aus, um das beste Ergebnis zu finden. |
| Gib dem Modell eine „Ausweichmöglichkeit“ | Gib dem Modell eine Fallback-Antwort, die es liefern kann, falls es die Aufgabe aus irgendeinem Grund nicht erfüllen kann. Das reduziert die Wahrscheinlichkeit, dass das Modell falsche oder erfundene Antworten generiert. |
Wie bei jeder Best Practice gilt: Deine Erfahrungen können je nach Modell, Aufgabe und Domäne variieren. Nutze diese Empfehlungen als Ausgangspunkt und iteriere, um das für dich Beste zu finden. Überprüfe deinen Prompt-Engineering-Prozess regelmäßig neu, wenn neue Modelle und Tools verfügbar werden, mit Fokus auf Skalierbarkeit und Antwortqualität.
Herzlichen Glückwunsch! Du hast das Ende der Lektion erreicht! Jetzt ist es Zeit, einige der Konzepte und Techniken mit echten Beispielen zu testen!
Für unsere Aufgabe verwenden wir ein Jupyter Notebook mit Übungen, die du interaktiv bearbeiten kannst. Du kannst das Notebook auch mit eigenen Markdown- und Code-Zellen erweitern, um Ideen und Techniken selbstständig zu erkunden.
- (Empfohlen) Starte GitHub Codespaces
- (Alternativ) Klone das Repository auf dein lokales Gerät und nutze es mit Docker Desktop
- (Alternativ) Öffne das Notebook mit deiner bevorzugten Notebook-Laufzeitumgebung.
- Kopiere die Datei
.env.copyim Repository-Stammverzeichnis nach.envund fülle die Werte fürAZURE_OPENAI_API_KEY,AZURE_OPENAI_ENDPOINTundAZURE_OPENAI_DEPLOYMENTaus. Kehre dann zum Abschnitt Learning Sandbox zurück, um zu erfahren, wie es geht.
- Wähle den Laufzeit-Kernel aus. Wenn du Option 1 oder 2 nutzt, wähle einfach den standardmäßigen Python 3.10.x Kernel, der vom Dev-Container bereitgestellt wird.
Du bist bereit, die Übungen auszuführen. Beachte, dass es hier keine richtigen oder falschen Antworten gibt – es geht darum, Optionen durch Ausprobieren zu erkunden und ein Gespür dafür zu entwickeln, was für ein bestimmtes Modell und eine bestimmte Anwendungsdomäne funktioniert.
Aus diesem Grund gibt es in dieser Lektion keine Code-Lösungsabschnitte. Stattdessen enthält das Notebook Markdown-Zellen mit dem Titel „Meine Lösung:“, die ein Beispielergebnis zur Orientierung zeigen.
Welcher der folgenden Prompts entspricht guten Best Practices?
- Zeig mir ein Bild von einem roten Auto
- Zeig mir ein Bild von einem roten Auto der Marke Volvo und Modell XC90, das an einer Klippe mit Sonnenuntergang geparkt ist
- Zeig mir ein Bild von einem roten Auto der Marke Volvo und Modell XC90
Antwort: 2, es ist der beste Prompt, da er Details zum „Was“ liefert und ins Detail geht (nicht irgendein Auto, sondern eine bestimmte Marke und Modell) und auch die Umgebung beschreibt. 3 ist der zweitbeste, da es ebenfalls viele Beschreibungen enthält.
Versuche, die „Hinweis“-Technik mit dem Prompt zu nutzen: Vervollständige den Satz „Zeig mir ein Bild von einem roten Auto der Marke Volvo und “. Wie antwortet das Modell, und wie würdest du den Prompt verbessern?
Möchtest du mehr über verschiedene Konzepte des Prompt Engineerings erfahren? Besuche die Seite für weiterführendes Lernen, um weitere großartige Ressourcen zu diesem Thema zu finden.
Gehe weiter zu Lektion 5, wo wir uns fortgeschrittene Prompt-Techniken ansehen!
Haftungsausschluss:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. 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.







