Wie Prompt Engineering funktioniert
Aufgrund der Art und Weise, wie OpenAI-Modelle trainiert werden, gibt es bestimmte Prompt-Formate, die besonders gut funktionieren und zu nützlicheren Modellausgaben führen.
Der offizielle Prompt-Engineering-Guide von OpenAI ist meist der beste Einstieg für Prompting-Tipps.
Unten stellen wir eine Reihe von Prompt-Formaten vor, die unserer Erfahrung nach gut funktionieren – probiere aber gern auch andere Formate aus, die besser zu deiner Aufgabe passen.
Faustregeln und Beispiele
Hinweis: „{text input here}“ ist ein Platzhalter für den tatsächlichen Text/Kontext
1. Nutze das neueste Modell
Für die besten Ergebnisse empfehlen wir generell, die neuesten, leistungsfähigsten Modelle zu verwenden. Neuere Modelle lassen sich meist leichter per Prompt steuern.
Hinweis: Beim Prompting eines Reasoning-Modells gibt es einige Unterschiede gegenüber dem Prompting eines GPT-Modells. Mehr Details hier.
2. Stelle die Anweisungen an den Anfang des Prompts und verwende ### oder """ zur Trennung von Anweisung und Kontext
Weniger effektiv ❌:
Fasse den folgenden Text als Stichpunktliste mit den wichtigsten Punkten zusammen.
{text input here}Besser ✅:
Fasse den folgenden Text als Stichpunktliste mit den wichtigsten Punkten zusammen.
Text: """
{text input here}
"""3. Sei spezifisch, beschreibend und so detailliert wie möglich in Bezug auf den gewünschten Kontext, das Ergebnis, die Länge, das Format, den Stil usw.
Sei konkret in Bezug auf Kontext, Ergebnis, Länge, Format, Stil usw.
Weniger effektiv ❌:
Schreibe ein Gedicht über OpenAI. Besser ✅:
Schreibe ein kurzes, inspirierendes Gedicht über OpenAI, mit Fokus auf den jüngsten DALL-E-Produktlaunch (DALL-E ist ein Text-zu-Bild-ML-Modell), im Stil von {famous poet}4. Verdeutliche das gewünschte Ausgabeformat mit Beispielen
Weniger effektiv ❌:
Extrahiere die im Text unten erwähnten Entitäten. Extrahiere die folgenden 4 Entitätstypen: Firmennamen, Personennamen, spezifische Themen und Leitmotive.
Text: {text}Zeig es und sag es: Modelle reagieren besser, wenn man ihnen konkrete Formatvorgaben zeigt. Das macht es außerdem leichter, mehrere Ausgaben zuverlässig programmgesteuert zu parsen.
Besser ✅:
Extrahiere die wichtigsten im Text unten erwähnten Entitäten. Extrahiere zuerst alle Firmennamen, dann alle Personennamen, dann spezifische Themen, die zum Inhalt passen, und schließlich allgemeine übergeordnete Leitmotive
Gewünschtes Format:
Company names: <comma_separated_list_of_company_names>
People names: -||-
Specific topics: -||-
General themes: -||-
Text: {text}5. Starte mit Zero-shot, dann Few-shot; wenn beides nicht funktioniert, dann fine-tunen
✅ Zero-shot
Extrahiere Keywords aus dem folgenden Text.
Text: {text}
Keywords:✅ Few-shot – gib ein paar Beispiele
Extrahiere Keywords aus den entsprechenden Texten unten.
Text 1: Stripe provides APIs that web developers can use to integrate payment processing into their websites and mobile applications.
Keywords 1: Stripe, payment processing, APIs, web developers, websites, mobile applications
##
Text 2: OpenAI has trained cutting-edge language models that are very good at understanding and generating text. Our API provides access to these models and can be used to solve virtually any task that involves processing language.
Keywords 2: OpenAI, language models, text processing, API.
##
Text 3: {text}
Keywords 3:✅ Fine-tune: Best Practices fürs Fine-Tuning hier.
6. Reduziere „fluffige“ und ungenaue Beschreibungen
Weniger effektiv ❌:
Die Beschreibung für dieses Produkt sollte ziemlich kurz sein, nur ein paar Sätze, und nicht viel mehr.Besser ✅:
Beschreibe dieses Produkt in einem Absatz mit 3 bis 5 Sätzen.7. Sag nicht nur, was man nicht tun soll – sag stattdessen, was man tun soll
Weniger effektiv ❌:
Im Folgenden ist ein Gespräch zwischen einem Agenten und einer Kundin bzw. einem Kunden. DO NOT ASK USERNAME OR PASSWORD. DO NOT REPEAT.
Customer: I can’t log in to my account.
Agent:Besser ✅:
Im Folgenden ist ein Gespräch zwischen einem Agenten und einer Kundin bzw. einem Kunden. Der Agent versucht, das Problem zu diagnostizieren und eine Lösung vorzuschlagen, stellt dabei jedoch keine Fragen zu personenbezogenen Daten (PII). Anstatt nach PII wie Benutzername oder Passwort zu fragen, verweist der Agent die Nutzerin bzw. den Nutzer auf den Hilfeartikel www.samplewebsite.com/help/faq
Customer: I can’t log in to my account.
Agent:8. Speziell für Code-Generierung: Verwende „leitende Wörter“, um das Modell in ein bestimmtes Muster zu lenken
Weniger effektiv ❌:
# Schreibe eine einfache Python-Funktion, die
# 1. mich nach einer Zahl in Meilen fragt
# 2. Meilen in Kilometer umrechnetIm Codebeispiel unten deutet das Hinzufügen von „import“ dem Modell an, dass es in Python anfangen soll zu schreiben. (Ähnlich ist „SELECT“ ein guter Hinweis für den Beginn eines SQL-Statements.)
Besser ✅:
# Schreibe eine einfache Python-Funktion, die
# 1. mich nach einer Zahl in Meilen fragt
# 2. Meilen in Kilometer umrechnet
import9. Nutze die Funktion „Generate Anything“
Entwickler:innen können die Funktion „Generate Anything“ nutzen, um eine Aufgabe oder die erwartete Ausgabe in natürlicher Sprache zu beschreiben und einen passenden Prompt zu erhalten.
Mehr über die Nutzung der Funktion „Generate Anything“ erfahren.
Parameter
In der Regel sind model und temperature die am häufigsten verwendeten Parameter, um die Modellausgabe zu verändern.
model- Leistungsfähigere Modelle sind in der Regel teurer und können eine höhere Latenz haben.temperature- Ein Maß dafür, wie oft das Modell ein weniger wahrscheinliches Token ausgibt. Je höher dietemperature, desto zufälliger (und meist kreativer) ist die Ausgabe. Das ist jedoch nicht dasselbe wie „Wahrheitstreue“. Für die meisten faktischen Anwendungsfälle wie Datenextraktion und wahrheitsgetreue Q&A ist einetemperaturevon 0 am besten.max_completion_tokens(maximale Länge) - Steuert nicht die Länge der Ausgabe, sondern ist ein harter Cutoff für die Token-Generierung. Idealerweise stößt du selten an dieses Limit, da dein Modell entweder stoppt, wenn es „fertig“ ist, oder wenn es eine von dir definierte Stop-Sequenz erreicht.stop(Stop-Sequenzen) - Eine Menge von Zeichen (Tokens), die – sobald sie generiert werden – die Textgenerierung stoppen.
Weitere Parameterbeschreibungen findest du in der API-Referenz.
