# Prompt Engineering

Prompt Engineering ist ein Konzept der künstlichen Intelligenz (KI), insbesondere der Verarbeitung natürlicher Sprache (englisch: natural language processing, NLP) (Computerlinguistik). Dabei wird ein Prompt, also die Aufgabe, die von der KI erledigt werden soll, in das Eingabefeld geschrieben, z. B. als Frage, statt implizit vorgegeben. Prompt Engineering funktioniert typischerweise, indem es eine oder mehrere Aufgaben in einen prompt-basierten Datensatz umwandelt und ein Sprachmodell mit dem sogenannten „prompt-basierten Lernen“ trainiert.
Die Sprachmodelle GPT-2 und GPT-3 waren wichtige Schritte im Prompt Engineering. Im Jahr 2021 zeigte das Multitask Prompt Engineering unter Verwendung mehrerer NLP-Datensätze eine gute Leistung bei neuen Aufgaben.
Die breite Zugänglichkeit dieser Tools wurde durch die Veröffentlichung mehrerer Open-Source-Projekt-Notizen und von der Community geführter Projekte zur Bildsynthese vorangetrieben.
Im Jahr 2022 wurden Modelle für maschinelles Lernen (ML) wie DALL-E 2, Stable Diffusion und Midjourney für die Öffentlichkeit freigegeben. Diese Modelle verwenden Anweisungen in Text-Form (englisch: text prompts) als Eingabe und verwenden diese, um Bilder zu erzeugen, was eine neue Kategorie des Gestaltens mittels Texten (englisch: prompt engineering) im Zusammenhang mit der Text-zu-Bild-Anregung (englisch: text-to-image prompting) erschuf.

## Arten von Prompts

Abhängig vom System unterscheidet man zwischen unterschiedlichen Arten von Prompts:
* Ein Systemprompt (englisch: system prompt) beinhaltet Instruktionen für einen bestimmten KI-Agenten. Der Systemprompt wird dem Benutzer nicht angezeigt.
* Der Benutzerprompt (englisch: user prompt) beinhaltet die Instruktionen eines Benutzers an das System.
* Als Agentenprompt (englisch: agent prompt) bezeichnet man die Ausgabe eines KI-Agenten.
Eine Serie von Prompts wird zu einer Konversation (englisch: chat) zusammengeführt. Je nach System besteht die Möglichkeit, dass an einer Konversation mehrere Benutzer und KI-Agenten beteiligt sind, wobei jedem Benutzer bzw. Agenten unterschiedliche Aufgaben zukommen.
Beispielsweise kann eine Unterhaltung in einem System für Reisebuchungen die folgenden Stakeholder beinhalten:
* Ein oder mehrere Personen einer Reisegruppe, welche eine bestimmte Reise buchen möchte(n)
* Ein Berater des Reisebüro-Unternehmens, welcher die Unterhaltung leitet
* Spezialisierte KI-Assistenten, welche zusätzliche Informationen bereitstellen:
** Informationen zu Hotels (Standort, Kosten etc.)
** Informationen zu Reiseverbindungen (Flugzeug, Zug etc.)
** Wettervorhersage
** Informationen zu Sehenswürdigkeiten und kulturellen Veranstaltungen am Reiseziel
Zudem unterscheidet man Prompts nach ihrer Modalität (Text, Bild, Audio, Video), wobei ein Prompt auch mehrere Modalitäten beinhalten kann.

## Prompt Caching

Systemprompts und Agentenprompts werden wiederholt verwendet. Es ist daher möglich, diese Prompts nur einmalig mittels des Tokenizers als Token-Vektoren zu codieren und das Ergebnis in einem Cache oder Datenbank zu speichern. Bei wiederholter Verwendung ergibt sich eine bessere Performance, da der Prompt nicht erneut codiert werden muss.

## Nutzerschnittstelle

Die Nutzung von Prompts zur Steuerung von KI ändert nach Jakob Nielsen zum dritten Mal in der Computergeschichte die Denkweise von Dateneingaben: Auf die Batch-Verarbeitung und die befehlsbasierte Interaktion folge nun die absichtsbasierte Ergebnisspezifikation, bei der Benutzer dem Computer sagen, was sie wollen, und nicht, wie er es tun soll.

## Text Prompting
### Bestandteile eines Text-Prompt

Typische Bestandteile eines Text-Prompt umfassen Rolle, Tonalität, Kontext, Aufgabenstellung und Ausgabeformat. Es gibt Anleitungen für die Formulierung von Text-Prompts.
Beispiel:
Ein effektiver Prompt setzt sich aus einer gezielten Kombination verschiedener Prompt-Muster zusammen. Zu den gängigen Mustern gehören das Persona-Muster, das Unendliche Generationsmuster und das Template-Muster. Diese Muster werden verwendet, um die generativen Fähigkeiten eines Modells, insbesondere bei autoregressiven Sprachmodellen, optimal zu nutzen.
Bei der autoregressiven Textgenerierung hat jedes erzeugte Token (Wort oder Satzzeichen) eine direkte Auswirkung auf alle nachfolgenden Token. Dies bedeutet, dass bereits das Hinzufügen eines spezifischen Begriffs oder einer Rolle, wie etwa „Rechtsanwalt“, einen erheblichen Einfluss auf die Qualität der generierten Antwort haben kann. Der Begriff „Rechtsanwalt“ aktiviert während des Interferenzprozesses des Sprachmodells verwandte Token, die dem Benutzer ohne spezifische Fachkenntnisse möglicherweise nicht bekannt sind, aber entscheidend für die fachliche Präzision und Kohärenz der Antwort sind.
Durch die gezielte Auswahl von Prompt-Mustern und Begriffen lässt sich die Leistung von Sprachmodellen erheblich steigern, da das Modell kontextbezogene Assoziationen besser erkennen und nutzen kann.

### Zero-Shot-Prompting

Als Zero-Shot-Prompt bezeichnet man es, wenn auf eine Anfrage des Benutzers eine Antwort durch einen Agent erzeugt wird. Im Idealfall kann der Agent die Anfrage des Benutzers direkt beantworten bzw. ausführen.

### Few-Shot-Prompting

Als Few-Shot-Prompting bezeichnet man es, wenn die Antwort des Agenten die Anfrage des Benutzers nicht vollständig beantworten kann. Der Benutzer stellt daher zusätzliche Informationen und Instruktionen bereit, um die Antwort des Agenten in eine bestimmte Richtung zu führen.

### Chain-of-Thought (Gedankenkette)

Chain-of-Thought (CoT) Prompting ist eine Prompt-Engineering-Technik, die darauf abzielt, die Argumentationsfähigkeit großer Sprachmodelle (Large Language Models, LLMs) zu verbessern, indem sie sie dazu veranlasst, eine Reihe von Zwischenschritten zu generieren, die zur endgültigen Antwort eines mehrstufigen Problems führen. Bei Nutzung bestehender LLMs kann die schrittweise Verfeinerung der Fragestellung zu verbesserten Antworten führen.
Während LLMs bei verschiedenen Aufgaben zur Verarbeitung natürlicher Sprache eine beeindruckende Leistung zeigen, haben sie immer noch Schwierigkeiten bei einigen Denkaufgaben, die logisches Denken und mehrere Lösungsschritte erfordern, wie etwa arithmetische Fragen oder Fragen zum gesunden Menschenverstand.
Dafür werden Modelle verwendet, die eine Gedankenkette erzeugen, um logische Textaufgaben zu lösen, die sonst falsch gelöst würden. Die Gedankenkette ähnelt einer Lösung und kann auch als solche interpretiert werden. Sie ahmt einen schrittweisen Denkprozess nach, um zu einer Antwort zu gelangen. Die Lösungen und Erklärungen werden normalerweise nach der endgültigen Antwort ausgegeben.
Das Chain-of-thought prompting hat als Methode zur Erleichterung des Denkens in Sprachmodellen mehrere vorteilhafte Eigenschaften:
* Es ermöglicht, mehrstufige Probleme in Zwischenschritte zu zerlegen, was bedeutet, dass zusätzliche Berechnungen Problemen zugewiesen werden können, die mehr Denkschritte erfordern.
* Es bietet ein interpretierbares Fenster zum Verhalten des Modells, das Hinweise darauf gibt, wie es zu einer bestimmten Antwort gekommen sein könnte, und Möglichkeiten, Fehler zu beheben, wenn der Denkpfad falsch war.
* Es kann für Aufgaben wie mathematische Textaufgaben, logisches Denken und Symbolverarbeitung verwendet werden und ist prinzipiell auf jede Aufgabe anwendbar, die Menschen mithilfe von Sprache lösen können.
* Es kann in ausreichend großen Sprachmodellen hervorgerufen werden, indem Beispiele von Gedankenketten in die Muster von Few-Shot-Prompting aufgenommen werden.

### Tree-of-Thought (Gedankenbaum)

Tree-of-Thought (ToT) bezeichnet eine Strategie, bei der mehrere Antworten mittels Chain-of-Thought generiert werden und anschließend die Antworten – gewichtet und gefiltert – zusammgengeführt werden.

### Self-Consistency-Prompting

Sprachmodelle besitzen kein vollständiges Wissen der Welt und interpolieren bzw. konfabulieren fehlendes Wissen. Diese Eigenschaft von Sprachmodellen ermöglicht es, Anfragen an das Modell auf eine kreative Weise zu beantworten, anstatt ausschließlich auf vorhandenes Wissen zurückgreifen zu können. Allerdings führt dies auch dazu, dass eine Anfrage des Benutzers, auf die eine objektiv richtige Antwort existiert, dem Modell aber unbekannt ist, auf eine Weise beantwortet wird, die richtig erscheinen kann, jedoch nicht den Tatsachen entspricht. Man spricht in diesem Zusammenhang von einer Halluzination.
Als Self-Consistency-Prompting bezeichnet man es, wenn dieselbe Anfrage des Benutzers mehrfach an einen KI-Agenten gestellt wird. Bei einer Information, welche das Modell als Fakt erlernt hat, liefert das Modell eine konsistente Antwort. Konfabulierte Antworten fallen jedoch jedes Mal unterschiedlich aus.

### Reflexion-Prompting

Als Reflexion-Prompting bezeichnet man es, wenn ein KI-Agent Feedback zu einem Prompt erstellt. Man unterscheidet hierbei zwischen:
* Umformulieren und Ergänzen einer Benutzeranfrage
* Das Bewerten einer Antwort des KI-Agenten, welcher der KI-Agent selbst getätigt hat (Selbstreflexion)
* Das Bewerten einer Antwort eines anderen KI-Agenten (Fremdreflexion)

### Reverse Prompting

Das Reverse Prompting ist eine Methode in der das Modell gebeten wird, anhand einer Few-Shot-Prompting-Konversation oder eines Bildes einen Prompt zu generieren, der möglichst zu dem gleichen Ergebnis im Zuge eines Zero-Shot-Prompts geführt hätte.

### Plan like a Graph

Plan like a Graph (PLaG) ist eine Methode in der das Sprachmodell angewiesen wird, eine zu lösende Textaufgabe als Graph zu repräsentieren, etwa als Mermaid-Diagramm oder Python-Code, bevor das Problem gelöst wird.

### Negativer Prompt

Ein Negativer Prompt liefert dem Modell Informationen was es nicht tun soll. Beispielsweise kann man ein Bildgenerator-Modell dazu anleiten, ein Landschaftsbild ohne Häuser zu erstellen. Die Information, dass keine Häuser dargestellt werden sollen, stellt hierbei den negativen Prompt dar. Einfache Sprachmodelle haben jedoch Schwierigkeiten einen negativen Prompt zu verstehen. Ein negativer Prompt sollte daher mit einem „positiven“ Prompt (welches Ergebnis ist erwünscht) ergänzt und bekräftigt werden.

### Prompt Injection

Das Verwenden spezifischer Texteingaben, um an Hintergrundinformationen oder nicht zur Veröffentlichung bestimmte Ausgaben der Sprachmodelle zu gelangen, wird Prompt Injection genannt. Die Bezeichnung entspringt der SQL-Injection, bei der ebenfalls eine spezifische Eingabe des Benutzers zu einem, vom Betreiber des Systems nicht vorgesehenem, Verhalten führt. Da Sprachmodelle anhand von zwischenmenschlichen Konversationen trainiert werden, funktionieren oft auch Social Engineering-Methoden wie Erpressung oder Identitätsbetrug.
Forscher widmen sich deren Vermeidung, verwerfen dies aber auch als nicht gänzlich lösbares Problem.

## Nicht-Text Prompting
### Text-zu-Bild

Die Modelle des maschinellen Lernens (ML) wie DALL-E 2, Stable Diffusion und Midjourney verwenden Texteingabeaufforderungen (Prompts) und generieren daraus Bilder, wodurch eine neue Kategorie der Eingabeaufforderungstechnik im Zusammenhang mit Text-zu-Bild-Eingabeaufforderungen eingeführt wurde.
Ein Text-zu-Bild-Prompt kann die Beschreibung des künstlerischen Motivs (beispielsweise leuchtend orange Mohnblumen), das bevorzugte Medium (etwa digitale Malerei oder Fotografie), den gewählten Stil (zum Beispiel hyperrealistisch oder Pop-Art), die Art der Beleuchtung (wie Randbeleuchtung oder Dämmerungslicht) sowie Farbe und Beschaffenheit enthalten. Dadurch lassen sich präzisere Ergebnisse erzielen.

### Kombination von Text-Grafischen Nutzerschnittstelle (GUI)

Die KI-Forschung von Meta Segment Anything veröffentlichte 2023, ein Modell, das eine Bildsegmentierung durch Eingabeaufforderung durchführen kann. Es unterstützt drei Formen der Eingabeaufforderung: einzuschließende und auszuschließende Punkte, Begrenzungsrahmen und Auswahlen.
Mit der Funktion „Vary (Variieren)“ haben Benutzer von Midjourney die Möglichkeit, bestimmte Teile eines Bildes auszuwählen und diese mithilfe von Texteingabeaufforderungen zu ändern. Benutzer können beispielsweise einen Teil des Bildes auswählen, der ihnen nicht gefällt, und ihn mithilfe einer Eingabeaufforderung umwandeln. Das Tool bietet auch die Möglichkeit, Elemente hinzuzufügen, beispielsweise das Hinzufügen von Accessoires zu einem Porträt. Dieser Vorgang wird in anderen Werkzeugen als „Inpainting“ bezeichnet. Einige Tools bieten zudem auch das Outpainting an, bei dem ein Bild am Rand vergrößert und um fiktive Elemente erweitert wird.