Mann sitzt am PC und gibt mehrere Prompts für die GenAI ein.
NLP

Prompt Engineering: From Zero to GenAI Hero

Lesezeit
14 ​​min

Noch vor wenigen Jahren musste man sich mit viel Aufwand weiterbilden, um professionelle Texte zu schreiben, digitale Bilder zu erschaffen oder funktionsfähigen Code zu programmieren. Generative KI-Anwendungen, wie ChatGPT, stellen in Aussicht, eine vergleichbare Qualität zu ermöglichen, bei gleichzeitig einfachem Zugang für die breite Masse an Menschen. Die Ergebnisse von generativer KI sind längst noch nicht perfekt, aber wir stehen erst am Anfang eines disruptiven Wandels. Innerhalb kürzester Zeit ist unsere natürliche menschliche Sprache zur beliebtesten Programmiersprache der Welt geworden.


Die Anwendungsmöglichkeiten haben sich zwar nicht grundlegend verändert, jedoch ist das, was zuvor bereits möglich war, nun leichter zugänglich und in erheblich kürzerer Zeit umsetzbar. Umso wichtiger ist es, den Schlüssel zur generativen KI, das Prompt Engineering, besser zu verstehen und nützliche Techniken und Methoden zu meistern.

Was bedeutet Prompt Engineering?

Der Begriff Prompt in seiner ursprünglichen Bedeutung bezeichnet die Aufforderung an Nutzer:innen, eine Eingabe in ein Computersystem zu schreiben, beispielsweise über ein Command Line Interface (CLI) [1]. In der heutigen Zeit verbindet man Prompts jedoch vor allem mit der Eingabe von Nutzer:innen in ein generatives KI-Modell. Ein Prompt kann in verschiedenen Modalitäten dem generativen KI-Modell übergeben werden. Typischerweise schreiben wir einen Prompt in Form eines Textes in natürlicher Sprache, jedoch sind auch andere Modalitäten wie Bild, Audio oder Video möglich.

Ein Prompt ist demnach eine Nachricht in unterschiedlichen Modalitäten, die wir an ein generatives KI-Modell schicken.

Prompt Engineering hingegen ist

„Der iterative Prozess zur Ermittlung des „richtigen“ Prompts an ein generatives KI-Modell, um das optimale Ergebnis zu erzielen“

Die sechs Elemente eines Prompts

Auch wenn ein Prompt aus unterschiedlichen Modalitäten bestehen kann, fokussieren wir uns in diesem Blogbeitrag erstmal nur auf den Text Input und Output. Ein effektiver Prompt an ein Sprachmodell (z.B. GPT-4o, Mistral Large, Claude 3 etc.) besteht häufig aus weit mehr Teilen als der eigentlichen Anweisung (Englisch: instruction). Prompts können unterschiedliche Formate und Komplexität besitzen. Je nach Anwendungsfall macht es Sinn einen Prompt komplexer aufzubauen oder eher simpel und prägnant. Dabei ist es wichtig zu verstehen, dass die Sprachmodelle nicht inhärent ein Verständnis von genau diesen Prompt-Elementen haben. Die Elemente sind viel mehr eine Guideline und Best Practices, mit dem Ziel bessere Resultate zu erzielen. Im Folgenden schauen wir uns einmal die einzelnen Bauteile eines Prompts im Detail an.

💡 Der Unterschied zwischen Modell und Interface
Sprachmodell: Das trainierte KI-Modell (z.B. GPT-4o). Häufig spricht man auch von einem Large Language Modell (abk. LLM)
Interface: Die Nutzungsoberfläche (z. B. ChatGPT)

 


Die sechs Elemente eines Prompts [2] [3]

1. Input Prompt

Am Anfang einer Interaktion mit einem Sprachmodell steht in der Regel eine Problemstellung, die man mit Hilfe eines LLMs lösen möchte. Dafür müssen wir dem Modell einen Input übergeben. Das kann zum Beispiel ein Text sein, den wir zusammenfassen möchten oder auch eine Fragestellung wie zum Beispiel “Was ist Prompt Engineering?“.


Beispiel: Input Prompt

Die Antwort auf unsere Frage wurde mit GPT 3.5 erzeugt, der ersten Modellversion, die initial über ChatGPT verfügbar war. Die Antwort des Modells ist sehr unpräzise und trifft nicht unsere Erwartungen (siehe Infobox Halluzination). Die Frage klingt zwar sehr einfach, jedoch ist sie für diese Version des Modells nicht trivial.

💡 Limitierung der Halluzination
Halluzinationen beziehen sich auf die Tendenz von großen Sprachmodellen, falsche oder erfundene Informationen zu generieren [4].
In unserem Beispiel behauptet das Modell, Prompt Engineering ist ein Ansatz zur Umsetzung von Anforderungen. Diese Aussage ist ungenau bzw. falsch. Die Hauptursache liegt darin, dass der Trainingsdatensatz von GPT-3.5 bis September 2021 reicht [5]. Unser Verständnis von Prompt Engineering ist jedoch erst ab 2022 (Veröffentlichung ChatGPT) maßgeblich geprägt worden.

2. Instruction Prompt

Eine der einfachsten Prompting-Methoden ist das Geben von Anweisungen (auch Instruction Prompting genannt). Zu Beginn eines Prompts können wir so definieren, wie sich die KI verhalten soll und was ihre Aufgabe ist. Im Falle eines Chatbots im Service Management, sollte ein Chatbot zum Beispiel immer freundlich sein und gezielte Rückfragen stellen, sofern noch Informationen des Nutzers fehlen. Bei der Formulierung der Anweisung kann ein Prompt Engineer auch definieren, welche Handlung die KI durchführen soll. Schlagwörter wie zum Beispiel „Schreibe“, „Klassifiziere“, „Fasse zusammen“, „Übersetze“ oder „Ordne“, können hier platziert werden.


Beispiel: Instruction Prompt

In unserem Beispiel wollen wir weiterhin die Frage, was Prompt Engineering ist, beantworten. Da wir jetzt neben dem Input auch einen Bereich für die Instruction haben, macht es Sinn, den dynamischen User Input durch ein Trennzeichen zu markieren. Die Trennzeichen helfen dem Modell, bei komplexeren Prompt-Konstrukten Systemanweisungen von User-Eingaben zu trennen (siehe Infobox System und User Prompt). Trennzeichen erhöhen die Lesbarkeit und reduzieren die Fehlerwahrscheinlichkeit. Mögliche Trennzeichen sind z.B. +++, `, ###, <user_input>.

Unsere Instruktion weist das Modell an, die Frage faktisch korrekt zu beantworten. Die Antwort ist tatsächlich korrekter als zuvor und stellt die Erstellung von Texten mehr in den Fokus. Jedoch fehlt der Aspekt des Prompts, also der Input in ein Sprachmodell.  

💡 System und User Prompt
Als Entwickler ist es möglich, dem Sprachmodell neben dem User Prompt, auch einen System Prompt zu übergeben.
System Prompt: Dient dazu, einen grundlegenden Rahmen und ein einheitliches Verhalten für die KI zu schaffen. Er stellt sicher, dass die KI innerhalb vordefinierter ethischer und operativer Richtlinien arbeitet.
User Prompt: Konzentriert sich auf unmittelbare, spezifische Nutzerbedürfnisse. Er steuert die Echtzeit-Interaktionen mit der KI.

Aufgrund des eingeschränkten Wissens über Prompt Engineering von GPT-3.5 (Ende der Trainingsdaten im September 2021), müssen wir dem Modell dieses Wissen nachträglich übergeben. Diese Wissens- oder auch Kontexterweiterung können wir über das nächste Prompt-Element erreichen.

3. Context Prompt

Es gibt im Grunde zwei Möglichkeiten, dem Modell neues Wissen beizubringen.
Möglichkeit 1: Ein sogenanntes Fine-Tuning, bei dem wir mit einem neuen Trainingsdatensatz die Gewichte des Modells verändern.
Möglichkeit 2: Kontexterweiterung mit Hilfe von Prompt Engineering.

Wir konzentrieren uns auf die Möglichkeit 2, durch die wir den Prompt mit neuen Informationen erweitern. Das Ziel ist es, dem Modell alle relevanten Informationen zur Umsetzung einer Aufgabe mitzugeben. Die Informationen kann man entweder manuell in einen Prompt einfügen, oder man bindet systematisch verschiedene Quellen ein, wie beispielsweise interne Dokumente eines Unternehmens aus dem Intranet, Wiki-Dokumentationen oder auch Office 365-Dokumente wie Word, PowerPoint etc. (siehe Infobox Retrieval Augmented Generation)


Beispiel: Context Prompt

In unserem Beispiel erweitern wir das Wissen des Modells mit Hilfe eines Auszugs aus dem Tech Blog von Lilian Weng. Damit haben wir endlich ein faktisch korrekte Antwort auf unsere Frage generiert. In dieser Definition wird Prompt Engineering auch noch einmal von Fine-tuning abgegrenzt, da wir explizit die Gewichte des Modells nicht anpassen.

💡 Retrieval Augmented Generation
Ein typischer Use Case ist das sogenannte Retrieval Augmented Generation (kurz: RAG). Beim RAG wird Information Retrieval, also das Auffinden von externen Dokumenten, mit einem Sprachmodell kombiniert. Mehr dazu findet man in diesem Blogpost oder auf unserer Website Chat with your data.

Für den ein oder anderen mag diese Antwort jedoch zu technisch sein. Mit dem nächsten Prompt Element können wir dem entgegenwirken.

4. Role Prompt

Häufig ist der erste Baustein eines Prompts die Zuweisung einer Rolle an die KI. Zum Beispiel könnte dein Prompt mit „Du bist ein Service Portal Mitarbeiter“ oder „Du bist ein Senior Java Entwickler“ beginnen und dann die KI auffordern, eine Service Frage oder Programmieraufgaben zu lösen. Die KI versucht dabei die Rolle zu imitieren, wodurch wir einen indirekten Einfluss auf den Sprachstil, die Tonalität oder auch den Detailgrad der generierten Antwort erreichen.


Beispiel: Role Prompt

In unserem Beispiel wünschen wir uns eine einfache Erklärung eines komplexen Themas. Dafür geben wir der KI die Rolle eines Kindergärtners. Das Sprachmodell versucht nun, weiterhin unseren übergebenen Kontext zu verwenden, jedoch die Antwort so zu generieren, dass Kinder die Antwort verstehen.

💡 Konfiguration: Temperatur
Neben Änderungen am Prompt selbst, können wir als Nutzer ebenfalls Modellparameter wie zum Beispiel die sogenannte Temperatur anpassen. Wenn wir ein eher kreativeres Ergebnis erzielen wollen, kann man die Temperatur höher einstellen (maximal 1) und wenn wir ein eher logisches und deterministisches Ergebnis erhalten möchten, sollte man die Temperatur niedriger stellen (minimal 0).

5. Examples Prompt

Diese Technik wird auch als “few-shot prompting“ bezeichnet. Das Wort “shot“ ist hier ein Synonym zum Wort Beispiel. Wenn wir also von zero-shot sprechen, geben wir dem Sprachmodell keine Beispiele, wohingegen few-shot prompting eine geringe Menge an Beispielen impliziert. Beispiele zu definieren hilft uns vor allem dabei, die Ausgabe eines Sprachmodells auf eine bestimmte Weise zu strukturieren.
In den meisten Fällen verwendet man Input/Output Paare als Beispiele. Das Sprachmodell versucht Muster in den Beispielen zu erkennen und einen neuen, ungesehenen Input anhand dieser Muster ähnlich zu verarbeiten.

💡 Anwendungsbeispiel
Für unsere Fragestellung (Was ist Prompt Engineering?) eignen sich Example Prompts nur bedingt für eine Verbesserung der Ergebnisse. Daher hier ein passendes Anwendungsbeispiel zu einer anderen Problemstellung:
Prompt
Klassifiziere das Sentiment einer Filmrezension.
Review: „Der Film war eine Zeitverschwendung“
Sentiment: negativ
Review: „Ich konnte während des gesamten Films nicht aufhören zu lachen!“
Sentiment: positiv
Review: „Die Spezialeffekte waren beeindruckend“
Sentiment:

In diesem Beispiel verwenden wir zwei Beispiele mit dem Input Review und dem Output Sentiment. Das Sprachmodell erkennt das Muster des Outputs und erzeugt für neue Input Reviews Ergebnisse im selben Stil. In diesem Fall würde das Sprachmodell den Output “positiv“ generieren.

Instruction

Examples

Input

6. Output Prompt

Für uns Menschen ist natürlich gesprochener Text sehr einfach zu verarbeiten. Eine Maschine kann jedoch mit solchen unstrukturierten Daten nicht gut umgehen. Zu diesem Zweck kann man das letzte Prompt Element nutzen, den Output Prompt. Die Möglichkeiten sind hierbei sehr umfänglich. Falls wir Programmcode erstellen wollen, können wir zum Beispiel darum bitten, die Ausgabe als Python Script zu erzeugen. Wollen wir die Ausgabe in ein anderes System integrieren, können wir ein JSON Format erzeugen lassen.
In unserem Beispiel kombinieren wir sämtliche bereits gelernten Prompt Elemente und erweitern den Prompt um unsere Output Spezifikation.


Beispiel: Output Prompt

Durch das JSON Format können wir nun die Ergebnisse eines Sprachmodells auf strukturierte Weise ausgeben lassen. Das JSON-Objekt lässt sich beliebig erweitern. In diesem Fall erzeugen wir sowohl eine kindgerechte Antwort, als auch eine für Expert:innen.

Was ist alles möglich durch Prompt Engineering?

Generative KI macht viele Arbeitsschritte in unserem Leben einfacher. Prompt Engineering ist der Schlüssel, um das Potenzial von generativer KI voll auszuschöpfen. Wenn wir also von den Möglichkeiten von Prompt Engineering sprechen, müssen wir uns allgemein mit der Frage beschäftigen, für welche Use Cases sich generative KI besonders gut eignet. Dabei gibt es vor allem 4 Cluster, bei denen Prompt Engineering aktiv helfen kann:

  1. Conversational AI
  2. Textverständnis
  3. Inhaltserstellung
  4. Document AI


Generative AI Use Cases

Konkrete Use Cases kann man auf unserer Website zum Thema Prompt Engineering einsehen.

Wie geht man mit Fehlern um?

Häufig können Fehler auftreten, weil wir eine komplexe Aufgabe stellen und das Modell direkt eine Antwort generieren lassen. Am besten gibt man dem Modell “Zeit zum Nachdenken“. Das kann man zum Beispiel erreichen, indem man eine komplexe Frage in weniger komplexe Unteraufgaben aufteilt. Eine andere Taktik ist, das Modell direkt zu instruieren, eine Schritt-für-Schritt Lösung auszuarbeiten. Zum Beispiel kann man an das Ende eines Prompt „Erstelle eine Schritt-für-Schritt Lösung“ (engl. „Let’s think step by step“) anhängen.
Generell sollte man nicht frustriert sein, wenn das Ergebnis nicht auf Anhieb den Erwartungen entspricht. Prompt Engineering ist ein iterativer Prozess, bei dem wir etwas versuchen und wenn es nicht funktioniert, verfeinern den Prompt und wiederholen folgendes Vorgehen:

  1. Etwas ausprobieren
  2. Analysieren, an welchen Stellen das Ergebnis noch nicht wie gewünscht ist
  3. Prompt Elemente verbessern, mehr Zeit zum Nachdenken geben
  4. Sofern sinnvoll, Anweisungen mit einer Gruppe von Beispielen verfeinern
  5. wiederholen

Ausblick

Da wir nun die Grundlagen von Prompt Engineering beherrschen, bleibt noch die Frage: Was gibt es noch?
Neben den Prompt-Elementen gibt es noch eine Reihe weiterer Prompt-Engineering-Techniken, unter anderem Chain-of-Thought, Self-Consistency, Retrieval Augmented Generation (RAG) oder Reflexion. Diese Techniken sind jedoch Teil für einen zukünftigen Blogartikel und werden hier nicht weiter betrachtet.

Key Takeaways

In diesem Blog sind wir tiefer in die Welt des Prompt Engineering eingetaucht. Zum Abschluss hier noch einmal die Key Takeaways:

  • Bei Prompt Engineering handelt es sich um einen iterativen Prozess zur Ermittlung der richtigen Nachricht an ein generatives KI-Modell, um das optimale Ergebnis zu erzielen.
  • Ein Prompt kann aus bis zu 6 Elementen bestehen.
  • Sprachmodelle können halluzinieren.
  • Durch Prompt Engineering können wir den Kontext eines Sprachmodells erweitern und damit dem Modell Wissen übergeben, welches nicht Teil der Trainingsdaten war.
  • Wir können unstrukturierte Texte in strukturierte Output-Formate transformieren.
  • Es gibt zahlreiche Use Cases bei denen Prompt Engineering nützlich sein kann.

Referenzen

[1] https://en.wikibooks.org/wiki/Guide_to_Unix/Explanations/Shell_Prompt

[2] https://learnprompting.org/docs/basics/formalizing

[3] https://www.promptingguide.ai/introduction/elements

[4] https://arxiv.org/pdf/2305.11747.pdf

[5] https://platform.openai.com/docs/models/gpt-3-5-turbo

 

Hat dir der Beitrag gefallen?

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert