For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Hauptnavigation

Prompt Engineering

Erziele bessere Ergebnisse mit Strategien für Prompt Engineering.

Mit der OpenAI API kannst du ein großes Sprachmodell nutzen, um aus einem Prompt Text zu generieren, ähnlich wie mit ChatGPT. Modelle können nahezu jede Art von Textantwort generieren, etwa Code, mathematische Gleichungen, strukturierte JSON-Daten oder Texte, die wie von Menschen geschrieben klingen.

Hier ist ein einfaches Beispiel mit der Responses API.

Text aus einem einfachen Prompt generieren
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  input: "Write a one-sentence bedtime story about a unicorn.",
});

console.log(response.output_text);

Die Eigenschaft output der Antwort enthält ein Array mit den vom Modell generierten Inhalten. In diesem einfachen Beispiel gibt es nur eine Ausgabe, die so aussieht:

[
  {
    "id": "msg_67b73f697ba4819183a15cc17d011509",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "output_text",
        "text": "Under the soft glow of the moon, Luna the unicorn danced through fields of twinkling stardust, leaving trails of dreams for every child asleep.",
        "annotations": []
      }
    ]
  }
]

Das Array output enthält oft mehr als ein Element! Es kann Tool-Aufrufe, Daten zu den von Reasoning-Modellen generierten Reasoning-Token und weitere Elemente enthalten. Du kannst nicht davon ausgehen, dass die Textausgabe des Modells unter output[0].content[0].text zu finden ist.

Einige unserer offiziellen SDKs stellen in Modellantworten die praktische Eigenschaft output_text bereit. Sie fasst alle Textausgaben des Modells in einer einzigen Zeichenfolge zusammen. So kannst du einfacher auf die Textausgabe des Modells zugreifen.

Neben reinem Text kannst du das Modell auch strukturierte Daten im JSON-Format zurückgeben lassen. Diese Funktion heißt strukturierte Ausgaben.

Ein Modell auswählen

Wenn du Inhalte über die API generierst, ist die Wahl des Modells eine wichtige Entscheidung. Du legst es in den obigen Codebeispielen mit dem Parameter model fest. Hier findest du eine vollständige Liste der verfügbaren Modelle. Bei der Auswahl eines Modells für die Textgenerierung solltest du einige Faktoren berücksichtigen.

  • Reasoning-Modelle erzeugen eine interne Gedankenkette, um den eingegebenen Prompt zu analysieren. Sie eignen sich besonders gut dafür, komplexe Aufgaben zu verstehen und mehrere Schritte zu planen. In der Regel sind sie allerdings langsamer und teurer in der Nutzung als GPT-Modelle.
  • GPT-Modelle sind schnell, kosteneffizient und sehr intelligent. Sie profitieren jedoch von genaueren Anweisungen dazu, wie sie Aufgaben erledigen sollen.
  • Bei großen und kleinen Modellen (mini oder nano) gilt es, zwischen Geschwindigkeit, Kosten und Intelligenz abzuwägen. Große Modelle verstehen Prompts besser und lösen Probleme aus verschiedenen Fachgebieten effektiver. Kleine Modelle sind dagegen in der Regel schneller und günstiger in der Nutzung.

Wenn du dir unsicher bist, ist gpt-6-astra eine gute Standardwahl für die allgemeine Textgenerierung und die schrittweise Verbesserung von Prompts.

Prompt Engineering

Beim Prompt Engineering formulierst du wirksame Anweisungen für ein Modell, damit es zuverlässig Inhalte generiert, die deinen Anforderungen entsprechen.

Da die von einem Modell generierten Inhalte nicht deterministisch sind, braucht es sowohl Gespür als auch systematisches Vorgehen, um mit Prompts die gewünschte Ausgabe zu erzielen. Mit geeigneten Techniken und bewährten Methoden kannst du jedoch zuverlässig gute Ergebnisse erreichen.

Manche Techniken des Prompt Engineering funktionieren mit jedem Modell, etwa die Verwendung von Nachrichtenrollen. Unterschiedliche Modelltypen, zum Beispiel Reasoning- und GPT-Modelle, benötigen aber möglicherweise unterschiedlich formulierte Prompts, um die besten Ergebnisse zu erzielen. Selbst verschiedene Snapshots von Modellen derselben Familie können unterschiedliche Ergebnisse liefern. Wenn du komplexere Anwendungen entwickelst, empfehlen wir dir daher dringend:

  • Lege für deine Anwendungen im Produktivbetrieb bestimmte Modell-Snapshots fest, zum Beispiel gpt-4.1-2025-04-14, um ein konsistentes Verhalten sicherzustellen
  • Erstelle Tests und Evaluierungssuiten, die das Verhalten von Prompts messen. So kannst du die Leistung überwachen, wenn du Prompts weiterentwickelst oder Modellversionen wechselst und aktualisierst

Sehen wir uns nun einige Tools und Techniken an, mit denen du Prompts erstellen kannst.

Nachrichtenrollen und das Befolgen von Anweisungen

Mit dem API-Parameter instructions oder über Nachrichtenrollen kannst du dem Modell Anweisungen mit unterschiedlichen Autoritätsstufen geben.

Der Parameter instructions gibt dem Modell übergeordnete Anweisungen dazu, wie es sich beim Generieren einer Antwort verhalten soll. Dazu gehören Tonfall, Ziele und Beispiele für korrekte Antworten. Alle auf diese Weise übergebenen Anweisungen haben Vorrang vor einem Prompt im Parameter input.

Text mit Anweisungen generieren
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  reasoning: { effort: "low" },
  instructions: "Talk like a pirate.",
  input: "Are semicolons optional in JavaScript?",
});

console.log(response.output_text);

Das obige Beispiel entspricht ungefähr der Verwendung der folgenden Eingabenachrichten im Array input:

Text mit Nachrichten unterschiedlicher Rollen generieren
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  reasoning: { effort: "low" },
  input: [
    {
      role: "developer",
      content: "Talk like a pirate.",
    },
    {
      role: "user",
      content: "Are semicolons optional in JavaScript?",
    },
  ],
});

console.log(response.output_text);

Beachte, dass der Parameter instructions nur für die aktuelle Anfrage zur Antwortgenerierung gilt. Wenn du den Parameter previous_response_id verwendest, um den Gesprächszustand zu verwalten, sind die in früheren Gesprächsrunden verwendeten instructions nicht im Kontext enthalten.

Die OpenAI-Modellspezifikation beschreibt, wie unsere Modelle Nachrichten je nach Rolle unterschiedliche Prioritäten zuweisen.

developeruserassistant
Nachrichten mit der Rolle developer enthalten Anweisungen von den Personen, die die Anwendung entwickeln. Sie haben Vorrang vor Nachrichten mit der Rolle user.Nachrichten mit der Rolle user enthalten Anweisungen von den Personen, die die Anwendung nutzen. Sie sind Nachrichten mit der Rolle developer nachgeordnet.Vom Modell generierte Nachrichten haben die Rolle assistant.

Ein Gespräch über mehrere Runden kann aus mehreren Nachrichten dieser Typen sowie aus weiteren Inhaltstypen bestehen, die sowohl du als auch das Modell bereitstellen. Hier erfährst du mehr darüber, wie du den Gesprächszustand verwaltest.

Du kannst dir Nachrichten mit den Rollen developer und user wie eine Funktion und ihre Argumente in einer Programmiersprache vorstellen.

  • Nachrichten mit der Rolle developer legen die Regeln und die Geschäftslogik des Systems fest, ähnlich wie eine Funktionsdefinition.
  • Nachrichten mit der Rolle user liefern Eingaben und Konfiguration, auf die die Anweisungen aus Nachrichten mit der Rolle developer angewendet werden, ähnlich wie Argumente einer Funktion.

Prompts im Code versionieren

Speichere Prompts für den Produktivbetrieb im Code deiner Anwendung, statt wiederverwendbare Prompt-Objekte zu erstellen. Wenn du Prompts im Code verwaltest, kannst du typisierte Eingaben, Code Reviews, Tests und deinen üblichen Deployment-Prozess nutzen, um das Modellverhalten zu ändern.

OpenAI kündigt wiederverwendbare Prompt-Objekte in der API ab. Ab dem 3. Juni 2026 wird die Erstellung von Prompts weniger in den Vordergrund gestellt. Die Abschaltung von v1/prompts ist für den 30. November 2026 geplant. Den aktuellen Zeitplan findest du auf der Seite zu Abkündigungen. Dort kannst du dich über den aktuellen Stand informieren.

Für neue Arbeiten am Prompt Engineering:

  • Lege Funktionen zum Erstellen von Prompts in einem kleinen Modul nahe der Funktionalität ab, die sie unterstützen.
  • Verwende typisierte Funktionsargumente oder Schemas für dynamische Werte wie Kundendaten, Dateien oder Aufgabenoptionen.
  • Übergib die generierten Werte für instructions und input direkt an die Responses API.
  • Ergänze repräsentative Test-Fixtures, Tests und Evaluierungsprüfungen, bevor du Prompts für den Produktivbetrieb änderst.
  • Veröffentliche Prompt-Änderungen über dein Deployment-System. Nutze Feature-Flags oder die Konfiguration, wenn du Änderungen schrittweise einführen möchtest.

Wenn deine Integration bereits einen gespeicherten Prompt über eine Prompt-ID oder Version aufruft, nutze den Migrationsleitfaden für Prompt-Objekte, um diesen Prompt in den Code zu übernehmen.

Nachrichten mit Markdown und XML formatieren

Wenn du developer- und user-Nachrichten schreibst, kannst du mit einer Kombination aus Markdown-Formatierung und XML-Tags dem Modell helfen, die logischen Grenzen zwischen deinem Prompt und den Kontextdaten zu erkennen.

Mit Markdown-Überschriften und -Listen kannst du einzelne Abschnitte eines Prompts kennzeichnen und dem Modell ihre Hierarchie vermitteln. Außerdem können sie deine Prompts während der Entwicklung lesbarer machen. XML-Tags helfen dabei, Anfang und Ende eines Inhalts abzugrenzen, etwa eines Dokuments, das als Referenz dient. Mit XML-Attributen kannst du zudem Metadaten zu Inhalten im Prompt definieren, auf die du in deinen Anweisungen Bezug nehmen kannst.

Eine Developer-Nachricht enthält im Allgemeinen die folgenden Abschnitte, meist in dieser Reihenfolge. Welche Inhalte und welche Reihenfolge am besten funktionieren, kann jedoch vom verwendeten Modell abhängen:

  • Identität: Beschreibe den Zweck, den Kommunikationsstil und die übergeordneten Ziele des Assistenten.
  • Anweisungen: Gib dem Modell vor, wie es die gewünschte Antwort generieren soll. Welche Regeln soll es befolgen? Was soll es tun, und was darf es niemals tun? Dieser Abschnitt kann je nach Anwendungsfall mehrere Unterabschnitte enthalten, etwa dazu, wie das Modell benutzerdefinierte Funktionen aufrufen soll.
  • Beispiele: Gib Beispiele für mögliche Eingaben und die jeweils gewünschte Ausgabe des Modells an.
  • Kontext: Gib dem Modell alle zusätzlichen Informationen, die es möglicherweise für eine Antwort benötigt, etwa private oder proprietäre Daten, die nicht in seinen Trainingsdaten enthalten sind, oder andere Daten, die du für besonders relevant hältst. Diese Inhalte stehen meist am besten gegen Ende deines Prompts, da du für verschiedene Generierungsanfragen unterschiedlichen Kontext angeben kannst.

Das folgende Beispiel zeigt, wie du mit Markdown und XML-Tags eine developer-Nachricht mit klar getrennten Abschnitten und ergänzenden Beispielen erstellst.

Eine Developer-Nachricht zur Codegenerierung
# Identity

You are coding assistant that helps enforce the use of snake case
variables in JavaScript code, and writing code that will run in
Internet Explorer version 6.

# Instructions

* When defining variables, use snake case names (e.g. my_variable)
  instead of camel case names (e.g. myVariable).
* To support old browsers, declare variables using the older
  "var" keyword.
* Do not give responses with Markdown formatting, just return
  the code as requested.

# Examples

<user_query>
How do I declare a string variable for a first name?
</user_query>

<assistant_response>
var first_name = "Anna";
</assistant_response>

Kosten und Latenz mit Prompt-Caching reduzieren

Platziere beim Erstellen einer Nachricht Inhalte, die du voraussichtlich immer wieder in deinen API-Anfragen verwendest, möglichst am Anfang deines Prompts und unter den ersten API-Parametern, die du im JSON-Anfragetext an Chat Completions oder Responses übergibst. So kannst du mit Prompt-Caching Kosten und Latenz so weit wie möglich reduzieren.

Few-Shot-Lernen

Mit Few-Shot-Lernen kannst du ein großes Sprachmodell auf eine neue Aufgabe ausrichten, indem du einige Ein- und Ausgabebeispiele in den Prompt aufnimmst, statt das Modell durch Fine-Tuning anzupassen. Das Modell erkennt das Muster in diesen Beispielen implizit und wendet es auf einen Prompt an. Zeige dabei möglichst unterschiedliche Eingaben mit den jeweils gewünschten Ausgaben.

Üblicherweise gibst du Beispiele als Teil einer developer-Nachricht in deiner API-Anfrage an. Hier siehst du eine developer-Nachricht mit Beispielen, die einem Modell zeigen, wie es Bewertungen des Kundenservice als positiv oder negativ klassifizieren soll.

# Identity

You are a helpful assistant that labels short product reviews as
Positive, Negative, or Neutral.

# Instructions

* Only output a single word in your response with no additional formatting
  or commentary.
* Your response should only be one of the words "Positive", "Negative", or
  "Neutral" depending on the sentiment of the product review you are given.

# Examples

<product_review id="example-1">
I absolutely love this headphones — sound quality is amazing!
</product_review>

<assistant_response id="example-1">
Positive
</assistant_response>

<product_review id="example-2">
Battery life is okay, but the ear pads feel cheap.
</product_review>

<assistant_response id="example-2">
Neutral
</assistant_response>

<product_review id="example-3">
Terrible customer service, I'll never buy from them again.
</product_review>

<assistant_response id="example-3">
Negative
</assistant_response>

Relevante Kontextinformationen einbeziehen

Es ist oft hilfreich, zusätzliche Kontextinformationen in deinen Prompt aufzunehmen, die das Modell für seine Antwort nutzen kann. Dafür gibt es einige häufige Gründe:

  • Du möchtest dem Modell Zugriff auf proprietäre Daten oder andere Daten geben, die nicht in seinem Trainingsdatensatz enthalten sind.
  • Du möchtest die Antwort des Modells auf eine bestimmte Auswahl an Ressourcen beschränken, die du als besonders hilfreich eingestuft hast.

Die Technik, eine Generierungsanfrage an das Modell um relevanten Kontext zu ergänzen, wird auch als Retrieval-Augmented Generation (RAG) bezeichnet. Du kannst deinem Prompt auf verschiedene Weise zusätzlichen Kontext hinzufügen. Beispielsweise kannst du eine Vektordatenbank abfragen und den zurückgegebenen Text in den Prompt aufnehmen oder das integrierte Tool zur Dateisuche von OpenAI verwenden, um Inhalte auf Grundlage hochgeladener Dokumente zu generieren.

Das Kontextfenster bei der Planung berücksichtigen

Modelle können bei einer Generierungsanfrage nur eine begrenzte Datenmenge als Kontext berücksichtigen. Diese Speichergrenze wird als Kontextfenster bezeichnet und in Tokens gemessen. Tokens sind Einheiten der übergebenen Daten, von Text bis hin zu Bildern.

Die Größe des Kontextfensters variiert je nach Modell vom niedrigen Hunderttausenderbereich bis zu einer Million Tokens bei neueren GPT-4.1-Modellen. Die genaue Größe für das jeweilige Modell findest du in der Modelldokumentation.

Prompts für aktuelle Modelle formulieren

GPT-Modelle wie gpt-6-astra profitieren von präzisen Anweisungen, die die zur Erledigung der Aufgabe erforderliche Logik und die benötigten Daten ausdrücklich im Prompt angeben. Beginne mit dem aktuellen Leitfaden zum Formulieren von Prompts, um das neueste Modell optimal zu nutzen.

GPT-6 Astra prompting guide

Erziele mit deinen Prompts für das neueste Modell die besten Ergebnisse: mit aktuellen Empfehlungen, praktischen Beispielen und Hinweisen zur Migration.

Bewährte Methoden zum Formulieren von Prompts für das neueste Modell

Eine vollständige und aktuelle Anleitung findest du unter Bewährte Methoden zum Formulieren von Prompts für das neueste Modell. Die folgenden praktischen Hinweise gelten weiterhin.

Prompts für Reasoning-Modelle formulieren

Beim Formulieren von Prompts für ein Reasoning-Modell gibt es einige Unterschiede zu GPT-Modellen zu beachten. In der Regel erzielen Reasoning-Modelle bessere Ergebnisse, wenn sie für eine Aufgabe nur übergeordnete Vorgaben erhalten. GPT-Modelle hingegen profitieren von sehr präzisen Anweisungen.

Den Unterschied zwischen Reasoning- und GPT-Modellen kannst du dir so vorstellen:

  • Ein Reasoning-Modell ist wie ein erfahrenes Teammitglied. Du kannst ihm ein Ziel vorgeben und darauf vertrauen, dass es die Details selbst ausarbeitet.
  • Ein GPT-Modell ist wie ein weniger erfahrenes Teammitglied. Es arbeitet am besten mit ausdrücklichen Anweisungen, die auf ein bestimmtes Ergebnis abzielen.

Weitere Informationen zu bewährten Methoden beim Einsatz von Reasoning-Modellen findest du in diesem Leitfaden.

Nächste Schritte

Jetzt kennst du die Grundlagen von Texteingaben und -ausgaben. Als Nächstes könntest du dir eine dieser Ressourcen ansehen.

Einen Prompt im Playground erstellen

Nutze den Playground, um Prompts zu entwickeln und schrittweise zu verbessern.

JSON-Daten mit strukturierten Ausgaben generieren

Stelle sicher, dass die von einem Modell ausgegebenen JSON-Daten einem JSON-Schema entsprechen.

Vollständige API-Referenz

Sieh dir alle Optionen zur Textgenerierung in der API-Referenz an.

Weitere Ressourcen

Weitere Anregungen findest du im OpenAI Cookbook. Es enthält Beispielcode und Links zu Ressourcen von Drittanbietern, darunter: