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:
enumfür feste Auswahlmöglichkeiten.minimum/maximumfür numerische Wertebereiche.patternfür Zeichenfolgen, die per Regex validiert werden.format-Hinweise wiedate-timeoderemail.
{
'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_formatBeschreibungen 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
- Warum strukturierte Ausgaben
- JSON Schema in Prompts
- Tool- und Function-Schemas
- Reparatur- und Validierungsschleifen