Prompt Engineering
Prompt Engineering gestaltet Anweisungen, Kontext und Beispiele für ein KI-Modell, um dessen Ausgabe ohne erneutes Training zu steuern – von LLMs bis hin zu Computer Vision.
Prompt Engineering bezeichnet die Gestaltung der Eingabe für ein generatives Modell. Dazu gehören Anweisungen, Kontext, Beispiele und das gewünschte Ausgabeformat, mit denen sich die Ausgabe des Modells steuern lässt, ohne seine Modellgewichte zu ändern. Bekannt wurde das Verfahren mit GPT-3: In Language Models are Few-Shot Learners (2020) zeigte OpenAI, dass ein Modell mit 175 Milliarden Parametern neue Aufgaben ohne Gradientenaktualisierungen ausführen kann, wenn der Prompt die Aufgabe beschreibt und einige Beispiele enthält. Die Arbeit bezeichnet diese Fähigkeit als In-Context Learning. Heute ist der Prompt das wichtigste Mittel zur Steuerung von großen Sprachmodellen (LLMs), Bild-Sprach-Modellen (VLMs), Text-zu-Bild-Generatoren und promptgesteuerten Bildverarbeitungsmodellen.
Kerntechniken#
- Anweisungen und Rollen: Ein System-Prompt legt die Rolle, Regeln und Zielgruppe des Modells fest. Trennzeichen wie Überschriften oder Tags im XML-Stil grenzen Anweisungen von den verarbeiteten Daten ab.
- Few-Shot-Beispiele: Ausgearbeitete Eingabe-Ausgabe-Paare zeigen die Aufgabe und das Antwortformat genauer als eine Beschreibung. Ein Prompt ohne Beispiele wird als Zero-Shot bezeichnet.
- Ausgabeformat: Der Prompt gibt das Format vor, zum Beispiel eine Liste oder JSON mit bestimmten Schlüsseln. Wenn der Code das Ergebnis verarbeiten muss, erzwingen strukturierte Ausgaben beim Dekodieren ein Schema, statt sich auf die Anfrage zu verlassen.
- Chain-of-Thought-Prompting: Fordert Zwischenschritte der Überlegung vor der Antwort an und erhöht so die Genauigkeit bei mehrstufigen Problemen.
- Prompt Chaining: Teilt eine komplexe Aufgabe in mehrere Prompts auf, von denen jeder eine einzelne, klar umrissene Aufgabe übernimmt. Code verbindet die Prompts miteinander.
- Abgerufener Kontext: Fügt Dokumente oder Daten ein, die bei einer Suche gefunden wurden, damit das Modell anhand bereitgestellter Fakten statt aus dem Gedächtnis antwortet.
Bereitgestellte Fakten verringern Halluzinationen. Dabei spielt auch ihre Position eine Rolle: Die Studie Lost in the Middle ergab, dass Modelle Informationen am besten nutzen, wenn sie am Anfang oder Ende eines langen Kontextfensters stehen, und am schlechtesten, wenn sie in der Mitte verborgen sind.
Die Wirkung von Beispielen lässt sich am besten an einem Basismodell beobachten, das nie instruction-getunt wurde. Dieses Snippet gibt GPT-2, geladen mit Transformers von Hugging Face, dieselbe Anweisung einmal mit und einmal ohne drei Beispiele:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
# The same instruction, without and with three worked examples that show the answer format
instruction = "Convert each country to its capital city.\n"
prompts = {
"zero-shot": instruction + "Italy:",
"few-shot": instruction + "France: Paris\nJapan: Tokyo\nCanada: Ottawa\nItaly:",
}
for name, prompt in prompts.items():
inputs = tokenizer(prompt, return_tensors="pt")
output = model.generate(**inputs, max_new_tokens=4, do_sample=False, pad_token_id=tokenizer.eos_token_id)
completion = tokenizer.decode(output[0, inputs.input_ids.shape[1] :])
print(f"{name}: {completion!r}")Es gibt zero-shot: '\n\nItaly is' und few-shot: ' Rome\nSpain:' aus. Die Anweisung allein brachte GPT-2 dazu, Prosa über Italien zu schreiben. Mit den drei Beispielen antwortete GPT-2 im erwarteten Format mit „Rome“ und setzte das Muster mit dem nächsten Land fort.
Prompt-Design ist empirisch#
Kleine Änderungen der Formulierung oder des Layouts können die Ergebnisse stark beeinflussen. Melanie Sclar und Kollegen maßen Genauigkeitsunterschiede von bis zu 76 Punkten bei LLaMA-2-13B, die allein auf Formatierungsänderungen wie Trennzeichen, Groß- und Kleinschreibung sowie Abständen beruhten. Diese Empfindlichkeit blieb auch bei größeren Modellen, mehr Beispielen und Instruction Tuning bestehen. Prompts werden daher wie Code entwickelt: Man testet sie mit einer festen Menge von Eingaben, für die korrekte Ausgaben bekannt sind, überarbeitet sie anhand der Fehlschläge und versieht sie mit Versionsnummern. Das gehört zur Routine von LLMOps.
Dieser Prozess lässt sich automatisieren. Automatic Prompt Engineer (APE) von Yongchao Zhou und Kollegen lässt ein LLM mögliche Anweisungen vorschlagen und behält diejenigen bei, die bei Beispielen am besten abschneiden. In Large Language Models Are Human-Level Prompt Engineers erreichten die von APE erstellten Anweisungen bei 19 von 24 Aufgaben gleich gute oder bessere Ergebnisse als die von Menschen verfassten.
Prompts für Bildverarbeitungsmodelle#
In der Computer Vision gibt es verschiedene Arten von Prompts. Text-zu-Bild-Generatoren wie Stable Diffusion reagieren auf Beschreibungen von Motiv, Stil, Beleuchtung und Bildaufbau sowie auf negative Prompts, die Unerwünschtes aufzählen. Promptfähige Segmentierungsmodelle akzeptieren visuelle Prompts wie Punkte und Boxen. Metas SAM 3 akzeptiert außerdem kurze Nominalphrasen und segmentiert jedes Vorkommen des genannten Konzepts. Ultralytics Platform nutzt das für die automatische Annotation mit Text-Prompts.
Open-Vocabulary-Detektoren wandeln Klassennamen in Prompts um. Ultralytics YOLOE erkennt und segmentiert alle Klassen, die in set_classes() angegeben werden, zum Beispiel „forklift“ oder „double-decker bus“. Dazu vergleicht das Modell Regionsmerkmale mit den Texteinfassungen dieser Namen. Die Formulierung verändert also direkt, was das Modell findet. Da der Abgleich auf dem Aussehen beruht, gibt es keine verlässliche visuelle Entsprechung für Prompts, die vom Zustand, der Position oder einem Vergleich abhängen, etwa „damaged“, „left-most“ oder „the one being carried“. Am besten eignen sich Namen, die gängigen Kategorien entsprechen.
Prompt Engineering und verwandte Begriffe#
- Prompt Tuning: Lernt durch Gradientenabstieg auf gekennzeichneten Daten kontinuierliche Prompt-Vektoren. Beim Prompt Engineering wird der Prompt von Hand in natürlicher Sprache verfasst.
- Fine-Tuning: Ändert die Modellgewichte durch Training auf einem gekennzeichneten Datensatz. Prompt Engineering lässt das Modell unverändert und findet zur Inferenzzeit statt.
- Context Engineering: Umfasst alles, was in einer Anwendung in den Modellkontext gelangt, darunter abgerufene Dokumente, Werkzeugergebnisse und Speicher. Prompt Engineering befasst sich mit dem Verfassen von Anweisungen und Beispielen.
- Prompt Injection: Ein Angriff, bei dem Anweisungen in Texten oder Bildern verborgen werden, die das Modell liest, sodass sie den Prompt des Entwicklers außer Kraft setzen.










