Prompt-Typen

Prompting für strukturierte Ausgabe: JSON, Schemas und Einschränkungen

So erhalten Sie verlässliches JSON und andere strukturierte Ausgaben von einem LLM. Ausgabebeschränkungen, Schemas, Funktionen der Anbieter für strukturierte Ausgabe und Validierung.

Übersetzt aus dem englischen Original. Code, Prompts und Modellausgaben bleiben auf Englisch.

Wenn Code die Antwort eines Modells liest, ist „meistens die richtige Form“ ein Fehler. Prompting für strukturierte Ausgabe ist die Gesamtheit der Praktiken, mit denen ein Modell jedes Mal Daten liefert, die Ihr Programm parsen kann: ein definiertes Format, ausdrückliche Einschränkungen und Validierung.

Drei Zuverlässigkeitsstufen

Stufe Wie Garantie
Nur Prompt Das Format im Prompt beschreiben Keine. Meist richtig, manchmal nicht
JSON-Modus Die API um eine JSON-Antwort bitten Gültiges JSON, aber nicht Ihr Schema
Schema-beschränkte Ausgabe Der API ein JSON Schema mitgeben Die Ausgabe entspricht dem Schema

Verwenden Sie die stärkste Stufe, die Ihr Anbieter bietet. OpenAI, Anthropic und Google bieten alle eine Möglichkeit, eine Antwort auf ein Schema oder das Eingabeschema eines Werkzeugs zu beschränken. Der Prompt zählt auf jeder Stufe, denn ein Schema steuert die Form der Ausgabe und der Prompt ihren Inhalt.

Ausgabebeschränkungen im Prompt formulieren

Nennen Sie das Format, die Felder, die Typen und die erlaubten Werte. Sagen Sie dann, was nicht erscheinen darf.

Extract the order details from the email in the tags.

Return a JSON object with exactly these fields:
- "order_id": string, as written in the email
- "items": array of {"name": string, "quantity": integer}
- "total": number, without currency symbol
- "currency": one of "USD", "EUR", "GBP"

If a field is not present in the email, use null.
Return only the JSON object, with no explanation and no code fence.

<email>
{{email}}
</email>

Vier Details in diesem Prompt verhindern die meisten Fehler:

  1. „Genau diese Felder“ hindert das Modell daran, wohlmeinende Extras hinzuzufügen.
  2. Erlaubte Werte für currency verhindern „US dollars“ und „$“.
  3. Eine Null-Regel gibt dem Modell eine korrekte Möglichkeit, „nicht gefunden“ zu sagen, damit es keinen Wert erfindet.
  4. „Gib nur das JSON zurück“ entfernt den Kommentarsatz, der JSON.parse bricht.

Entwerfen Sie das Schema für das Modell

Ein Schema ist Teil des Prompts. Das Modell liest Feldnamen und Beschreibungen als Anweisungen.

  • Benennen Sie Felder nach ihrem Inhalt. shipping_address ist besser als addr2.
  • Fügen Sie Beschreibungen hinzu bei Feldern, deren Bedeutung nicht offensichtlich ist, einschließlich Einheit und Format: „ISO-8601-Datum, UTC“.
  • Verwenden Sie Enums, wo immer ein Feld eine feste Wertemenge hat.
  • Halten Sie es flach. Tiefe Verschachtelung erhöht die Fehler. Teilen Sie eine sehr komplexe Extraktion in verkettete Prompts.
  • Stellen Sie die Überlegung vor die Antwort. Wenn Sie eine Erklärung und ein Urteil wollen, ordnen Sie die Felder "reasoning" und dann "verdict". Ein Modell schreibt Felder der Reihe nach, sodass eine zuerst geschriebene Überlegung das Urteil beeinflussen kann.

Jenseits von JSON

Strukturierte Ausgabe ist nicht nur JSON.

  • Markdown mit festen Überschriften eignet sich für Antworten, die Menschen lesen: „Verwende genau diese Überschriften: Zusammenfassung, Risiken, Nächste Schritte.“
  • XML-artige Tags lassen sich leicht mit einem regulären Ausdruck extrahieren und vertragen Freitext im Inneren: <answer>…</answer>.
  • Ein einzelnes Token ist das zuverlässigste Format überhaupt. Bitten Sie bei der Klassifikation nur um das Label.
  • CSV oder Tabellen funktionieren für kleine, regelmäßige Daten; Anführungsregeln werden bei Freitext fragil.

Wählen Sie das einfachste Format, das die Information trägt.

Längen- und Inhaltsbeschränkungen

Ausgabebeschränkungen betreffen auch Umfang und Stil:

- At most 3 bullet points, each under 20 words.
- Use only facts from the document. If the document does not say, write "not stated".
- Write in the present tense.

Geben Sie Größen als Zahlen an. „Kurz“ ist keine Einschränkung, auf die sich ein Parser oder ein Layout verlassen kann.

Immer validieren

Validieren Sie selbst bei schema-beschränkter Ausgabe, bevor Sie die Daten verwenden.

  • Parsen und prüfen Sie das Schema jeder Antwort. Eine Antwort kann abgeschnitten werden, wenn sie das Ausgabe-Token-Limit erreicht, und hinterlässt dann abgeschnittenes JSON.
  • Prüfen Sie die Semantik, die das Schema nicht ausdrücken kann: Die Summe stimmt mit der Summe der Positionen überein, das Datum liegt nicht in der Zukunft.
  • Legen Sie den Fehlerpfad fest. Wiederholen Sie einmal mit dem Validierungsfehler im Prompt, dann weichen Sie aus oder markieren zur Prüfung.
  • Führen Sie strukturierte Ausgaben nie blind aus. Ein Feld, das zu einer SQL-Klausel, einem Dateipfad oder einem Shell-Argument wird, braucht dieselbe Bereinigung wie Nutzereingaben. Siehe Prompt-Sicherheit.

Häufige Fehlerbilder

Fehler Ursache Lösung
Text vor oder nach dem JSON Keine „nur“-Anweisung Ergänzen oder den JSON-Modus nutzen
In einen Codeblock gepackt Gewohnheit des Modells „Kein Codeblock“ sagen oder im Code entfernen
Erfundene Werte Keine Regel für fehlende Daten Eine Null- oder „nicht angegeben“-Regel ergänzen
Zusätzliche Felder Offene Formulierung „Genau diese Felder“ sagen; zusätzliche Eigenschaften verbieten
Abgeschnittene Ausgabe Ausgabelimit erreicht Limit erhöhen oder Aufgabe teilen
Uneinheitliche Enum-Schreibweise Werte nicht aufgelistet Die erlaubten Werte auflisten

Den Prompt vor der Ausführung prüfen

Ein fehlendes Ausgabeformat ist der häufigste Befund bei Prompts, die Code speisen. Der PromptFlowEngine-Prompt-Analyzer meldet es, ebenso fehlende Längenvorgaben und nicht abgegrenzte Variablen. Die JSON-Extraktionsvorlage ist ein vollständiges Beispiel, das alle Prüfungen besteht.

Wie sich das in Anwendungscode einfügt, steht unter Prompt Engineering für Entwickler.