PromptQuorumPromptQuorum
Startseite/Prompt Engineering/Zuverlässige strukturierte Daten mit Prompts: 3 Techniken
Techniken

Zuverlässige strukturierte Daten mit Prompts: 3 Techniken

·9 Min. Lesezeit·Von Hans Kuepper · Gründer von PromptQuorum, Multi-Model-AI-Dispatch-Tool · PromptQuorum

Die meisten Ausfälle bei strukturierter Ausgabe entstehen innerhalb gültigen JSON — erforderliche Felder fehlen, Daten sind als einfache Strings formatiert, Enum-Werte sind falsch geschrieben, nullable Felder geben Leerstrings statt null zurück. APIs mit JSON-Modus und tool_use verhindern nicht analysierbare Ausgaben, tun aber nichts gegen Schema-Konformitätsfehler. Drei Prompt-Techniken beheben das, was JSON-Modus hinterlässt.

Drei Prompt-Muster erreichen 95% oder mehr strukturierte Output-Zuverlässigkeit ohne API-Änderungen: Schema im Prompt einbetten, dem Modell ein gültiges Ausgabebeispiel zeigen und feldspezifische Anweisungen für Typ, Format und null-Behandlung hinzufügen. Diese Muster funktionieren über GPT-4o, Claude 4.6 Sonnet und Gemini 2.5 Pro, mit oder ohne nativen JSON-Modus.

⚡ Quick Facts

  • ·APIs mit JSON-Modus (OpenAI response_format, Anthropic tool_use) erzwingen analysierbares JSON, garantieren aber nicht Feldpräsenz, korrekte Datentypen oder gültige Enum-Werte — Schema-Konformitätsfehler erfordern Prompt-Level-Kontrollen
  • ·Modelle ohne API-erzwungenen JSON-Modus erreichen 80–85% strukturierte Output-Zuverlässigkeit nur mit Schema im Prompt; das Hinzufügen eines gültigen Ausgabebeispiels erhöht dies auf 90–92%
  • ·Enum-Felder mit mehr als 5 Werten benötigen alle erlaubten Werte, die explizit im Prompt aufgelistet sind — Modelle erfinden plausible Werte außerhalb des Geltungsbereichs, wenn die Enum-Liste im Prompt fehlt
  • ·Ein 20-Test-Fall-Set (10 Happy Path, 5 Edge Cases, 5 gegnerisch) ist ausreichend, um die häufigsten strukturierten Output-Prompt-Fehler vor der Produktionsbereitstellung zu identifizieren

Wichtige Erkenntnisse

JSON-Modus API-Ebene stoppt fehlerhafte JSON-Syntax, nicht Schema-Konformitätsfehler. Gültiges JSON kann fehlende Felder, falsche Typen und ungültige Enum-Werte enthalten, die alle nachgelagerte Validierung fehlschlagen lassen.

Schema im Prompt einbetten ist das Fundament. Ein strukturiertes JSON-Template direkt im Prompt zeigt dem Modell Feldnamen, Verschachtelungstiefe und Typen durch Struktur, nicht Prosa.

Ein gültiges Ausgabebeispiel erhöht die Zuverlässigkeit um 5–10 Prozentpunkte. Das Modell sieht, wie ein bestandenes Ergebnis aussieht, und folgt besser.

Feldspezifische Anweisungen für Typ, Format und null-Behandlung sind kritisch. "Enum-Feld" ist mehrdeutig; "status (genau eines von: 'active', 'inactive', 'pending' — keine Abkürzungen)" ist nicht.

95% Pass-Rate auf einem 20-Fall-Test-Set ist das Produktions-Gate. Unter 95% benötigen Sie einen Korrektur-Loop, der die Kosten verdoppelt und die Latenz verdoppelt. Über 95% kann in Produktion gehen.

Prompt-Design bestimmt strukturierte Output-Zuverlässigkeit

JSON-Modus APIs (OpenAI response_format, Anthropic tool_use, Google Gemini responseMimeType) erzwingen analysierbares JSON, tun aber nichts für Schema-Konformität — erforderliche Felder präsent, Datentypen korrekt, Enum-Werte gültig. Diese Fehler entstehen trotz API-Level-Enforcement und erfordern Prompt-Design-Kontrollen.

🔍 JSON-Modus ist nicht genug

API-erzwungener JSON-Modus verhindert unparsierbare Ausgaben (Leerzeichen in JSON, Anführungszeichen nicht escaped). Er verhindert nicht Schema-Konformität: ein Modell mit aktiviertem JSON-Modus kann gültiges JSON mit fehlenden Feldern, falschem Typ und ungültigen Werten zurückgeben. Schema-Konformität ist ein Prompt-Problem, nicht ein API-Problem.

🔍 Testen Sie zuerst mit Schema im Prompt allein

Modelle ohne API-JSON-Modus (ältere APIs, lokale LLMs) erreichen 80–85% strukturierte Output-Zuverlässigkeit nur mit Schema im Prompt. Dadurch wird die Baseline deutlich und zeigt, wo die restlichen 15–20 Prozentpunkte sinnvoll hinzufügen.

Schema direkt im Prompt einbetten

Das Schema als JSON-Template direkt im Prompt zu zeigen ist die höchste-Rendite-Technik. Prompts, die das Schema nur in Prosa beschreiben ("eine Liste von Feldern"), sind mehrdeutig. Das Modell sieht nicht klar Feldnamen, Verschachtelungstiefe oder Typ und rät.

🔍 Verschachtelte Objekte auf mehrere Zeilen verteilen

Verschachtelte Strukturen auf eine Zeile zu quetschen macht es für Modelle schwer, Tiefe zu erkennen. Multi-Line-Templates mit Einzug sind viel leichter zu folgen.

🔍 Null-Werte und Arrays explizit zeigen

Nutzen Sie den Template, um zu zeigen, wie null aussieht (nicht "nil", nicht "N/A", sondern null) und wie ein leeres Array aussieht ([] nicht null). Wenn das nicht Ihr Template ist, werden diese Dinge falsch gemacht.

Mehrdeutig — keine Struktur

Geben Sie eine Liste von Kundendaten zurück.

Schema-Template mit Feldtypen durch Struktur gezeigt

Geben Sie die Kundendaten in diesem exakten JSON-Format zurück: { "customer_id": "string", "name": "string", "email": "string", "purchases": ["item1", "item2"], "total_spent": 0.00, "is_premium": true } Aufnahme aller Felder. Nie null.

Dem Modell ein gültiges Ausgabebeispiel zeigen

Ein Ausgabebeispiel erhöht die Zuverlässigkeit um 5–10 Prozentpunkte und kostet wenig Tokens. Das Modell sieht ein bestandenes Ausgabe-Muster und folgt besser, besonders für Felder mit mehrdeutigen Typen (ist eine Datumsliste ein Array oder kommagetrennt?) oder Enum-Werte (ist es 'ACTIVE' oder 'active'?).

🔍 Ein Beispiel genügt für die meisten Fälle

Zwei oder mehr Beispiele helfen, wenn Ihre Datentypen je nach Eingabebedingung sinnvoll unterschiedlich sind. Für die meisten Aufgaben verdoppelt ein zweites Beispiel die Token-Kosten ohne Zuverlässigkeitsvorteil.

🔍 Beispiel für Grenzzustände wählen, nicht nur Happy Path

Ein Beispiel mit allen Feldern gefüllt ist weniger wertvoll als eines mit einem optionalen leeren Feld, das null zeigt, oder einem Array mit einem Element. Dadurch sieht das Modell, wie es mit Grenzfällen umgehen soll.

Keine Beispiele — Modell rät bei Enum

Geben Sie Kundendetails als JSON zurück. Felder: customer_id, status. Input: {{ data }}

Beispiel zeigt Format, Typus, Enum-Wertschreibweise

Geben Sie Kundendetails als JSON zurück. Felder: customer_id (string), status (enum: 'active', 'inactive', 'pending'). Beispiel: {"customer_id": "CUST-12345", "status": "active"} Input: {{ data }}

Feldspezifische Anweisungen, nicht nur ein Schema schreiben

Feldspezifische Anweisungen für Typ, Format, zulässige Werte und null-Behandlung heben die Zuverlässigkeit von 90% auf 95%+. Diese Anweisungen sind die finale Schicht, die Ambiguität entfernt.

FeldtypHäufiger FehlerFeldanweisung, die ihn verhindert
Ganzzahl vs. FloatModell gibt Float zurück, wenn Integer erwartet"score (Ganzzahl — keine Dezimalstellen, z.B. 4 nicht 4.0)"
Enumeration (5+ Werte)Modell erfindet Werte nicht auf der ListeAlle Werte aufgelistet: "Verwenden Sie nur Werte aus der Liste. Keine Abkürzungen."
Nullable-FeldModell gibt "" statt null zurück"Geben Sie null zurück, wenn der Wert unbekannt ist. Geben Sie "" nur zurück, wenn das Feld bekannt leer ist."
Datums-StringModell verwendet verschiedene Formate"date_created (ISO 8601: '2026-05-15')"
ArrayModell gibt null für leeres Array zurück"Geben Sie immer ein Array zurück, auch wenn leer. [] nicht null."

🔍 Anweisungen sollten spezifisch und validierbar sein

Eine Feldanweisung wie "gute Qualität" ist nicht validierbar. "Genau ISO 8601 oder Fehler" ist validierbar. Validierbare Anweisungen unterstützen die spätere automatisierte Testautomatisierung.

🔍 Nutzen Sie Regex oder Beispiele für Formate

Für Datums-, Telefon- oder Formatfelder ein Regex oder 2–3 Beispiele geben, nicht nur Prosa: "format: /^\d{3}-\d{3}-\d{4}$/ (z.B. 555-123-4567)"

JSON, YAML oder CSV nach Aufgabe und Durchsetzung wählen

Die meisten strukturierten Output-Aufgaben benötigen JSON. YAML und CSV sind schneller zu schreiben für Menschen, aber Modelle sind weniger zuverlässig in ihnen ohne API-Erzwingung. JSON mit API-Modus hat den höchsten Zuverlässigkeitsboden.

FormatZuverlässigkeitsboden ohne APIZuverlässigkeitsboden mit APIBest für
JSON80–85%95%+Verschachtelte Strukturen, APIs, Logging
YAML70–75%85–90%Menschen lesbar, keine genestete Struktur
CSV65–70%80–85%Flache Tabellen, Batch-Datenerfassung
XML75–80%90–95%Legacy-Systeme, die XML benötigen

🔍 JSON ist die Default-Wahl

Verwenden Sie JSON, wenn Sie verschachtelte Strukturen haben oder API-Erzwingung nutzen können. Das gibt den höchsten Zuverlässigkeitsboden.

🔍 CSV für flache Tabellenstrukturen testen

CSV ist schneller für einfache tabellarische Daten (eine Zeile = ein Datensatz) und günstiger in Tokens. Wenn Sie nur 3–5 Spalten haben, CSV mit Schema testen; wenn Verschachtelung auftritt, wechseln zu JSON.

Das Modell seine fehlerhafte Ausgabe selbst korrigieren lassen

Wenn ein strukturierter Output-Prompt fehlschlägt, senden Sie einen Korrektur-Prompt mit der ursprünglichen Anweisung, der fehlerhaften Ausgabe und dem spezifischen Validierungsfehler. Modelle erholen sich in 60–75% der Fälle aus ihrer eigenen fehlerhaften Antwort ohne Prompt-Umschreibung.

Ein Korrektur-Prompt hat drei erforderliche Teile: (1) eine Wiederholung dessen, wie die Ausgabe aussehen muss (das Schema oder Format), (2) die fehlerhafte Ausgabe exakt wie das Modell sie zurückgab, (3) der spezifische Validierungsfehler — "erforderliches Feld 'invoice_id' fehlt", "Betrag ist String, erwartet Float". Diese dreiteilige Struktur gibt dem Modell genug Kontext, um das spezifische Problem zu beheben, anstatt eine andere Antwort mit anderen Fehlern zu generieren.

🔍 Wenn Korrektur zweimal fehlschlägt, beheben Sie den Basis-Prompt

Wenn der Korrektur-Prompt beim zweiten Versuch keine gültige Ausgabe erzeugt, ist das Problem im Basis-Prompt, nicht in den Eingabedaten. Stoppen Sie die Wiederholung und diagnostizieren Sie das Ausfallmuster: Welches Feld schlägt fehl, unter welchen Eingabebedingungen. Fügen Sie eine Feldanweisung oder Schema-Änderung hinzu, um den Fehler in der Quelle zu verhindern.

⚠️ Korrektur-Prompts addieren Latenz und Kosten

Jeder Korrektur-Prompt verdoppelt API-Kosten und Latenz für diesen Anruf. Verwenden Sie Korrektur-Prompts nur für Grenzfall-Fehler (<10% der Ausgaben). Wenn Ihr strukturierter Output-Prompt mehr als 10% der Zeit fehlschlägt, beheben Sie den Basis-Prompt statt einen Korrektur-Loop in Produktion zu bauen.

Mehrdeutige Wiederholung — kein Fehlerkontext

Sie haben ungültige Ausgabe zurückgegeben. Bitte versuchen Sie erneut und geben Sie gültiges JSON zurück. {{original_prompt}}

Korrektur-Prompt mit Schema, Ausgabe und spezifischen Fehlern

Ihre vorherige Antwort hat die Validierung nicht bestanden. Beheben Sie nur die unten aufgelisteten Fehler und geben Sie korrigiertes JSON zurück. Erwartetes Schema: { "invoice_id": "string", "amount": 0.00, "status": "string" } Ihre vorherige Antwort: { "invoice_id": null, "amount": "150.00", "status": "PAID" } Validierungsfehler: - invoice_id ist null, muss aber ein erforderliches String-Feld sein — extrahieren Sie es aus der Eingabe - amount ist ein String ("150.00"), muss aber ein Float sein (150.00) - status muss Kleinbuchstaben sein: verwenden Sie 'paid', nicht 'PAID' Geben Sie nur das korrigierte JSON-Objekt zurück.

Prompt-Muster für Arrays, Enums und nullable Felder

Arrays, Enums und nullable Felder sind die drei häufigsten Quellen für strukturierte Output-Fehler, die Schema im Prompt allein nicht verhindert. Jede benötigt ein spezifisches Anweisungsmuster im Prompt.

DatentypHäufiger FehlerPrompt-Muster, das ihn verhindert
Array (0 Elemente)Modell gibt null statt [] zurück"Geben Sie ein leeres Array [] zurück, wenn keine Elemente vorhanden sind. Geben Sie nie null für Array-Felder zurück."
Array (1+ Elemente)Modell gibt einzelnes Objekt statt Array zurück, wenn nur ein Element gefunden"Geben Sie immer ein Array zurück, auch wenn nur ein Element vorhanden ist. Einzelne Elemente müssen eingehüllt sein: {...}"
Enumeration (2–5 Werte)Modell kürzt ab oder erfindet ähnliche Werte"status: genau eines von: 'active', 'inactive', 'pending' — keine Abkürzungen oder Varianten"
Enumeration (6+ Werte)Modell erfindet Werte nicht auf der ListeAlle Werte in einer nummerierten Liste aufführen, dann: "Verwenden Sie nur Werte aus der obigen Liste. Keine Abkürzungen oder Kombinationen."
Nullable-FeldModell gibt "" statt null zurück, oder lässt Feld ganz weg"Geben Sie null zurück, wenn der Wert unbekannt ist. Geben Sie "" nur zurück, wenn das Feld bekannt leer ist. Beziehen Sie immer das Feld ein — lassen Sie es nicht weg."
Ganzzahl vs. FloatModell gibt Float zurück, wenn Integer erwartet, oder String für beide"score (Ganzzahl — keine Dezimalstellen, z.B. 4 nicht 4.0)" oder "price (Float — genau 2 Dezimalstellen, z.B. 12.99 nicht 13)"
Verschachtetes ObjektModell vereinfacht verschachtetes Objekt zu flachen Schlüsseln (z.B. "address.city" statt {"address": {"city": ...}})Zeigen Sie die vollständige verschachtelte Struktur im Schema-Template mit richtigem Einzug. Nur-Prosa-Beschreibung der Verschachtelung wird häufig zu flachen Schlüsseln vereinfacht.

⚠️ null vs. undefined vs. auslassen

JSON hat keinen undefined-Wert, aber Modelle verhalten sich manchmal so — lassen ein Feld ganz weg, wenn sie denken, der Wert ist unbekannt, anstatt null zurückzugeben. Wenn nachgelagerter Code hasOwnProperty()-Prüfungen nutzt, ist ein ausgelassenes Feld anders als ein null-Feld. Addieren Sie: "Beziehen Sie immer jedes Feld im Schema ein, auch wenn der Wert null ist."

🔍 Verschachtelte Enums brauchen Extra-Spezifität

Enums in verschachteten Objekten sind anfälliger für Tippfehler oder Abkürzungen als Top-Level-Enums. Wenn Sie ein Enum in einem verschachteten Objekt haben, wiederholen Sie die Anweisung nahe an der Stelle, wo das Feld im Schema-Template auftaucht, nicht nur in einem allgemeinen Feldregeln-Abschnitt.

Strukturierte Output-Zuverlässigkeit messen

Zielen Sie auf eine 95%+ Pass-Rate auf einem 20-Fall-Test-Set, bevor Sie einen strukturierten Output-Prompt in Produktion bereitstellen. Unterhalb von 95% treten Produktionsfehler häufig genug auf, um einen Korrektur-Loop zu erfordern — der Latenz addiert und API-Kosten verdoppelt für jeden fehlgeschlagenen Anruf.

Messen Sie die Zuverlässigkeit auf Feldebene, nicht nur insgesamt. Ein Prompt mit 95% Gesamtpass-Rate aber 60% Pass-Rate auf einem Enum-Feld ist ein Prompt mit einem bekannten Produktionsausfallmodus. Feldebene-Messung sagt Ihnen genau, welche Anweisung Sie hinzufügen oder verstärken müssen.

  1. 1
    Bestätigen Sie Pass/Fail-Kriterien für jedes Schema-Feld. Für jedes Feld: Typ ist korrekt, erforderliches Feld ist präsent, Enum-Wert ist auf der zulässigen Liste, Datumsformat passt zu erforderlichem Muster. Schreiben Sie diese als programmgesteuerte Überprüfungen — nicht visuelle Inspektion. Dieser Schritt erzeugt Ihr Test-Orakel.
  2. 2
    Erstellen Sie ein 20-Fall-Test-Set. Zehn Happy-Path-Eingaben (typisch, wohlgeformte Daten), fünf Edge Cases (fehlende optionale Felder, langer Text, ungewöhnliche Werte, mehrsprachiger Inhalt), fünf gegnerische Eingaben (in Feldwerte eingebettete Anweisungen, extreme Daten, mehrdeutige Typen). Verwenden Sie realistische Eingaben aus Ihrer echten Datendomäne.
  3. 3
    Führen Sie bei Temperatur 0 aus und zeichnen Sie Pass/Fail pro Feld auf. Führen Sie alle 20 Fälle bei Temperatur 0 für deterministische, wiederholbare Ergebnisse aus. Zeichnen Sie auf, ob jedes Feld in jedem Test-Fall besteht oder fehlschlägt — nicht nur das Gesamtergebnis. Feldebene-Ausfallmuster identifizieren, welche Anweisung fehlt.
  4. 4
    Beheben Sie das Feld mit der niedrigsten Pass-Rate und testen Sie erneut. Addieren oder verstärken Sie eine Feldanweisung: Typ, Format, null-Behandlung oder Enum-Werte. Führen Sie alle 20 Fälle erneut aus. Eine einzelne gezielt Anweisung hebt typischerweise die Gesamtpass-Rate um 5–15 Prozentpunkte. Wiederholen Sie, bis die Gesamtpass-Rate 95% oder höher ist.
  5. 5
    Validieren Sie den Prompt auf einem zweiten Modell. Führen Sie das volle 20-Fall-Set gegen ein zweites Modell mit dem gleichen Prompt aus. Ein Prompt bei 95%+ auf GPT-4o aber 70% auf Claude 4.6 Sonnet ist modellabhängig. Entweder addieren Sie explizitere Anweisungen, um auf beiden zu bestehen, oder dokumentieren Sie, für welches Modell der Prompt validiert ist, und switchen nicht ohne Retestung.

🔍 Führen Tests bei Temperatur 0 durch

Führen Sie strukturierte Output-Test-Sets bei Temperatur 0 durch, um deterministische, wiederholbare Ergebnisse zu erhalten. Ein Prompt, der bei Temperatur 0 besteht, ist zuverlässig von Design — nicht Glück. Erhöhen Sie die Temperatur nur, nachdem der Prompt bei 95%+ determiniert besteht, und testen Sie dann das Set bei der neuen Temperatur erneut, um sicherzustellen, dass Zuverlässigkeit hält.

🔍 Nutzen Sie PromptQuorum für Multi-Modell-Vergleich

PromptQuorum führt Ihr 20-Fall-Test-Set gegen GPT-4o, Claude 4.6 Sonnet und Gemini 2.5 Pro gleichzeitig aus und zeigt feldspezifische Pass-Raten Seite an Seite. Dies identifiziert modellabhängige Fehler in einem Durchlauf statt drei.

5 häufige strukturierte Output-Prompt-Fehler

Die fünf häufigsten Fehler bei strukturiertem Output-Prompting erzeugen alle das gleiche Symptom — regelmäßige oder systematische Fehler — benötigen aber verschiedene Fixes. Die Diagnose, welchen Fehler Sie haben, bevor Sie Anweisungen addieren, spart Zeit.

Schema in Prosa beschreiben statt es einzubetten

Why it hurts: Prosa-Beschreibungen sind mehrdeutig — "eine Elementeliste" könnte ein Array, kommagetrennte String oder nummerierte Liste bedeuten; "der Gesamtpreis" könnte String oder Float sein

Fix: Betten Sie das erwartete Schema als JSON-Template direkt im Prompt ein. Das Template zeigt Feldnamen, Verschachtelungstiefe und Werttypen durch Struktur statt Prosa-Beschreibung.

Nicht angeben, wie mit fehlenden oder unbekannten Werten umzugehen ist

Why it hurts: Modelle erfinden plausible Werte für unbekannte Felder statt null zurückzugeben — Daten werden zu "unknown", Beträge zu 0, fehlende IDs zu "N/A" — nichts davon besteht Typ-Validierung

Fix: Addieren Sie explizite null-Behandlung für jedes nullable Feld: "Geben Sie null zurück, wenn der Wert nicht aus der Eingabe bestimmt werden kann. Raten oder erfinden Sie keine Werte. Geben Sie keinen Leerstring zurück."

Nur gegen das Modell testen, auf dem Sie den Prompt entwickelt haben

Why it hurts: Strukturierte Output-Zuverlässigkeit variiert erheblich zwischen Modellen — ein Prompt bei 95% auf GPT-4o kann bei 70% auf Claude 4.6 Sonnet scheitern aufgrund unterschiedlichen Instruction-Folgens bei Schema-Konstraints

Fix: Führen Sie jeden strukturierten Output-Prompt gegen mindestens 2 Modelle aus, bevor Sie ihn als modellunabhängig behandeln. Nutzen Sie PromptQuorum oder direkte API-Calls zum Test von Prompts über Modelle hinweg in einem Schritt.

Fehlgeschlagene Ausgaben mit dem gleichen Prompt wiederholen

Why it hurts: Ein fehlschlagender Prompt bei Temperatur 0 wiederholt erzeugt den gleichen Fehler jedes Mal. Bei höherer Temperatur erzeugt er variierende aber immer noch fehlende Ausgaben — verschiedene Fehler, gleiche Grundursache

Fix: Nutzen Sie einen Korrektur-Prompt mit dem spezifischen Validierungsfehler und der fehlerhaften Ausgabe, oder diagnostizieren Sie das Ausfallmuster (welches Feld, welcher Eingabetyp) und addieren Sie eine gezielt Feldanweisung zum Basis-Prompt.

JSON-Modus als komplette strukturierte Output-Lösung behandeln

Why it hurts: JSON-Modus verhindert nicht analysierbare Ausgabe aber nicht Schema-Konformitätsfehler — ein Modell mit JSON-Modus kann immer noch gültiges JSON mit fehlenden Feldern, falschem Typ und ungültigen Enum-Werten zurückgeben, alle davon scheitern nachgelagert Validierung

Fix: Beziehen Sie immer Schema im Prompt und Feldanweisungen ein, sogar wenn Sie API-erzwungenen JSON-Modus nutzen. Siehe Strukturierte Ausgabe und JSON-Modus für API-Konfiguration — dieses Handbuch behandelt die Prompt-Level-Ergänzung.

Weiterführende Ressourcen

Quellen

Wenden Sie diese Techniken gleichzeitig mit 25+ KI-Modellen in PromptQuorum an.

PromptQuorum kostenlos testen →

← Zurück zu Prompt Engineering

Zuverlässige strukturierte Daten mit Prompts: 3 Techniken