0Pricing
AI Prompt Engineering · Lektion

JSON Schema in Prompts

Die Form der Ausgabe begrenzen

JSON Schema in Prompts ist eine kostenlose AI Prompt Engineering-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Prompt Engineering-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.

Schema als Output-Vertrag

Ein JSON Schema beschreibt deklarativ die Form einer gültigen Ausgabe: Typen, erforderliche Schlüssel, Wertbeschränkungen und Verschachtelungen. Wird es an eine API für strukturiertes Output übergeben, wird es zu einem verbindlichen Vertrag; wird es in einen Prompt eingebettet, dient es als strenge Vorgabe.

Die Beherrschung des Schema-Entwurfs ist die zentrale Fähigkeit für strukturierte Generierung.

Das strict-Flag ändert alles

Im Strict-Modus verlangen Provider, dass jede Eigenschaft in required aufgeführt ist und additionalProperties auf false gesetzt ist. Optionale Felder werden als Union mit null ausgedrückt, nicht durch Weglassen.

{
  'type': 'object',
  'properties': {
    'name': {'type': 'string'},
    'nickname': {'type': ['string', 'null']}
  },
  'required': ['name', 'nickname'],
  'additionalProperties': False
}

Skalare Werte einschränken

Verlagern Sie die Validierung in das Schema statt in die Nachverarbeitung:

  • enum für feste Auswahlmöglichkeiten.
  • minimum/maximum für numerische Wertebereiche.
  • pattern für Zeichenfolgen, die per Regex validiert werden.
  • format-Hinweise wie date-time oder email.
{
  'rating': {'type': 'integer', 'minimum': 1, 'maximum': 5},
  'sku': {'type': 'string', 'pattern': '^[A-Z]{3}-[0-9]{4}$'},
  'created': {'type': 'string', 'format': 'date-time'}
}

Arrays und Tupel

Verwenden Sie items für homogene Arrays und fügen Sie minItems/maxItems hinzu, um die Länge zu begrenzen. Für positionale Tupel übergeben Sie ein Array von Schemas über prefixItems.

{
  'tags': {
    'type': 'array',
    'items': {'type': 'string'},
    'minItems': 1,
    'maxItems': 5
  }
}

Diskriminierte Unions mit oneOf

Modellieren Sie polymorphe Ergebnisse mit oneOf und einem Diskriminatorfeld. Das Modell wählt genau einen Zweig, und Ihr Deserialisierer verzweigt anhand des Tags.

{
  'oneOf': [
    {'type': 'object', 'properties': {
        'kind': {'const': 'email'},
        'address': {'type': 'string', 'format': 'email'}},
     'required': ['kind', 'address']},
    {'type': 'object', 'properties': {
        'kind': {'const': 'phone'},
        'number': {'type': 'string'}},
     'required': ['kind', 'number']}
  ]
}

Schemas aus Typen generieren

Das manuelle Schreiben von Schemas ist fehleranfällig. Leiten Sie sie aus typisierten Modellen ab, damit Schema und Code nie auseinanderlaufen.

from pydantic import BaseModel

class Invoice(BaseModel):
    total: float
    currency: str
    paid: bool

schema = Invoice.model_json_schema()
# pass schema directly to response_format

Beschreibungen sind ebenfalls Prompts

Jede description im Schema wird vom Modell gelesen. Nutzen Sie sie, um die Semantik zu steuern, nicht nur, um Felder zu dokumentieren.

Beispielsweise verbessert eine Beschreibung wie 'ISO-3166-alpha-2-Ländercode, Großbuchstaben' die Feldgenauigkeit spürbar. Betrachten Sie Beschreibungen als in den Vertrag eingebettete Mikro-Prompts.

{
  'country': {
    'type': 'string',
    'description': 'ISO-3166 alpha-2 code, uppercase, e.g. US, TR, DE'
  }
}

Schema in den Prompt einbetten

Wenn der Provider keine native Unterstützung bietet, betten Sie das Schema in den Prompt ein und verlangen Sie Konformität. Kombinieren Sie es mit einem einzigen In-Context-Beispiel und einer ausdrücklichen Anweisung nur JSON, keine Prosa.

SYSTEM = (
  'You output ONLY JSON matching this schema. No markdown, no commentary.\n'
  'Schema:\n' + json.dumps(schema) + '\n'
  'If a value is unknown, use null.'
)

Schema-Aufblähung vermeiden

Übermäßig tiefe oder stark verzweigte Schemas verwirren das Modell und erhöhen die Token-Kosten. Richtlinien:

  • Halten Sie die Verschachtelung flach; wo möglich, sollten Sie sie reduzieren.
  • Bevorzugen Sie Enums gegenüber freien Zeichenfolgen.
  • Teilen Sie ein riesiges Schema auf mehrere fokussierte Aufrufe auf.
  • Einige Provider begrenzen die Verschachtelungstiefe und die Gesamtzahl der Eigenschaften. Prüfen Sie die jeweiligen Limits.

Refs und Wiederverwendung

Verwenden Sie $defs und $ref, um Teilschemas wiederzuverwenden, beispielsweise ein Address-Schema für Rechnungs- und Lieferadressen. Beachten Sie, dass einige Strict-Modi die Rekursionstiefe begrenzen. Prüfen Sie daher die Unterstützung, bevor Sie sich auf selbstreferenzielle Refs verlassen.

{
  '$defs': {
    'Address': {'type': 'object', 'properties': {
        'city': {'type': 'string'}}, 'required': ['city'],
      'additionalProperties': False}
  },
  'type': 'object',
  'properties': {
    'billing': {'$ref': '#/$defs/Address'},
    'shipping': {'$ref': '#/$defs/Address'}
  },
  'required': ['billing', 'shipping'],
  'additionalProperties': False
}

Das Schema selbst validieren

Eine subtile Fehlerklasse: Nicht die Ausgabe, sondern das Schema ist fehlerhaft. Linten und validieren Sie Schemas in CI anhand des JSON-Schema-Metaschemas und führen Sie vor der Veröffentlichung mit einem Beispielobjekt einen Roundtrip durch Ihren Validator aus.

import jsonschema
jsonschema.Draft202012Validator.check_schema(schema)
# also: validate a known-good sample
jsonschema.validate(sample_obj, schema)

Kurztest

Wie wird ein optionales Feld im Strict-Modus eines Providers für JSON Schema korrekt ausgedrückt?

Zusammenfassung

Sie können nun präzise Schemas erstellen:

  • Der Strict-Modus verlangt, dass alle Felder als required aufgeführt sind und additionalProperties auf false gesetzt ist.
  • Schränken Sie skalare Werte mit enum, Wertebereichen, pattern und format ein.
  • Modellieren Sie Polymorphie mit oneOf-Diskriminatoren.
  • Generieren Sie Schemas aus typisierten Modellen und behandeln Sie Beschreibungen als Mikro-Prompts.
  • Validieren Sie das Schema selbst in CI.

Als Nächstes geht es darum, Schemas auf Tool- und Function-Calling-Aufrufe anzuwenden.

Häufig gestellte Fragen

Ist die Lektion „JSON Schema in Prompts“ kostenlos?

Ja — der vollständige Text von „JSON Schema in Prompts“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Prompt Engineering-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „JSON Schema in Prompts“?

Die Form der Ausgabe begrenzen Du übst AI Prompt Engineering mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Prompt Engineering zu starten?

Keine Vorkenntnisse erforderlich. AI Prompt Engineering auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „JSON Schema in Prompts“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Prompt Engineering-Lektion Code schreiben und ausführen?

Ja. Jede AI Prompt Engineering-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum strukturierte Ausgaben
  2. JSON Schema in Prompts
  3. Tool- und Function-Schemas
  4. Reparatur- und Validierungsschleifen
← Zurück zu AI Prompt Engineering