Schema- und Regelvalidierer
Vorgaben durchsetzen
Schema- und Regelvalidierer ist eine kostenlose AI Prompt Engineering-Lektion auf CoddyKit. Dies ist Lektion 3 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.
Validatoren erzwingen Vertragstreue
Ein Validator ist eine Leitplanke, die die Ausgabe anhand einer expliziten Spezifikation prüft: eines JSON Schema, einer Reihe von Geschäftsregeln oder beidem. Im Gegensatz zu einem Moderationsklassifikator ist ein Validator deterministisch und vollständig prüfbar; dieselbe Eingabe führt immer zum selben Urteil.
Schema-Validierungsschicht
Der erste Validator bestätigt, dass die Ausgabe dem strukturellen Vertrag entspricht. Erfassen Sie alle Fehler, nicht nur den ersten, damit das Reparaturfeedback vollständig ist.
import jsonschema
def schema_errors(obj, schema):
v = jsonschema.Draft202012Validator(schema)
return [f"{list(e.path) or 'root'}: {e.message}"
for e in v.iter_errors(obj)]Über das Schema hinaus: Geschäftsregeln
Schemas können nicht alles ausdrücken. Ein Schema kann festlegen, dass discount eine Zahl ist, aber nicht, dass dieser Wert die Zwischensumme nicht überschreiten darf. Regelvalidatoren codieren diese feldübergreifenden und domänenspezifischen Invarianten.
RULES = [
('discount_le_subtotal', lambda o: o['discount'] <= o['subtotal']),
('total_consistent', lambda o: o['total'] == o['subtotal'] - o['discount']),
('currency_supported', lambda o: o['currency'] in SUPPORTED)
]
def rule_errors(o):
return [name for name, fn in RULES if not fn(o)]Typisierte Modelle als Validatoren
Eine Bibliothek für typisierte Modelle (z. B. Pydantic) dient zugleich als Schema-Generator und Validator und unterstützt benutzerdefinierte Validatoren für Regeln. Ein Parsing-Fehler ist das Urteil.
from pydantic import BaseModel, field_validator
class Order(BaseModel):
subtotal: float
discount: float
total: float
@field_validator('discount')
@classmethod
def discount_ok(cls, v, info):
if v < 0:
raise ValueError('discount must be non-negative')
return vValidatoren für Grounding und Zitate
Bei RAG-Ausgaben ist zu validieren, dass Behauptungen durch den bereitgestellten Kontext gestützt werden. Fordern Sie vom Modell Quell-IDs an und prüfen Sie anschließend, ob jede zitierte ID existiert und ob die zitierten Textstellen tatsächlich in der Quelle vorkommen. Lehnen Sie Antworten ab, die auf fehlende oder erfundene Quellen verweisen.
def citations_valid(answer, sources):
for cite in answer['citations']:
if cite['source_id'] not in sources:
return False
if cite['quote'] not in sources[cite['source_id']]:
return False
return TrueReferenzielle und systemübergreifende Prüfungen
Für manche Regeln sind externe Abfragen erforderlich: Existiert die referenzierte Bestell-ID, ist das Produkt auf Lager, liegt das Datum in einem gültigen Zeitraum? Diese Validatoren fragen Ihre Systeme ab. Halten Sie sie schnell (Caching, Batching), da sie auf dem Antwortpfad liegen.
def order_exists(o):
return db.exists('SELECT 1 FROM orders WHERE id = %s', o['order_id'])Schweregradbasierte Urteile
Nicht alle Verstöße sind gleich schwerwiegend. Kennzeichnen Sie jede Regel mit einem Schweregrad, damit die Pipeline die passende Aktion wählen kann: kritische Verstöße hart blockieren, bei Qualitätsproblemen neu generieren und bei geringfügigen Problemen mit Warnung durchlassen.
RULE_SEVERITY = {
'discount_le_subtotal': 'critical',
'total_consistent': 'critical',
'tone_professional': 'warning'
}Validatoren in der richtigen Reihenfolge kombinieren
Führen Sie Validatoren nach Kosten aufsteigend aus und brechen Sie bei harten Fehlern vorzeitig ab: zuerst das Schema, dann In-Memory-Regeln, anschließend externe Abfragen und zuletzt etwaige modellbasierte Judge-Prüfungen. So minimieren Sie die Kosten auf dem häufigen Ablehnungspfad.
def validate_all(obj):
errs = schema_errors(obj, SCHEMA)
if errs: return Reject(errs, 'critical')
errs = rule_errors(obj)
if errs: return Reject(errs, max_severity(errs))
if not order_exists(obj): return Reject(['order_id'], 'critical')
return Accept()Validatoren liefern Feedback für die Reparatur
Der Nutzen eines Validators vervielfacht sich, wenn seine Meldungen in die Reparaturschleife einfließen. Geben Sie maschinenverwertbare Fehler mit dem Feldpfad, der fehlgeschlagenen Regel und dem fehlerhaften Wert aus, damit das Modell den Fehler in einem Durchlauf gezielt beheben kann.
{'errors': [
{'path': 'discount', 'rule': 'discount_le_subtotal',
'got': 120, 'limit': 100}
]}Validatoren selbst testen
Ein fehlerhafter Validator lässt unbemerkt fehlerhafte Ausgaben durch oder blockiert korrekte Ausgaben. Testen Sie jede Regel mit positiven und negativen Fixtures und ergänzen Sie eigenschaftsbasierte Tests für numerische Invarianten. Die Validator-Suite ist produktionskritischer Code, kein Skript.
def test_discount_rule():
assert rule_errors({'discount':10,'subtotal':100,'total':90}) == []
assert 'discount_le_subtotal' in rule_errors(
{'discount':120,'subtotal':100,'total':-20})Validatoren vs. Constrained Decoding
Constrained Decoding verhindert strukturelle Fehler zum Generierungszeitpunkt, kann aber keine Semantik erzwingen (Ihre Geschäftsregeln sind ihm nicht bekannt). Validatoren erkennen semantische Verstöße nachträglich. Verwenden Sie beides: Decoding für die Form, Validatoren für die Bedeutung und die Reparaturschleife zum Abgleich.
Kurze Überprüfung
Ein JSON Schema kennzeichnet discount und subtotal als Zahlen. Das Modell gibt discount 120 bei subtotal 100 zurück. Welche Schicht sollte dies erkennen?
Zusammenfassung
Schema- und Regelvalidatoren:
- Die Schema-Validierung deckt die Struktur ab; Regelvalidatoren decken die Semantik ab.
- Typisierte Modelle erzeugen Schemas und validieren an einer zentralen Stelle.
- Ergänzen Sie Grounding-, Zitat- und Referenzprüfungen für RAG- und Datenflüsse.
- Kennzeichnen Sie Schweregrade, kombinieren Sie die Prüfungen nach Kosten aufsteigend und geben Sie präzise Reparaturfehler weiter.
- Testen Sie Validatoren als produktionskritischen Code.
Als Nächstes: Validierung durch Selbstkritik, bei der das Modell seine eigene Ausgabe prüft.
Häufig gestellte Fragen
Ist die Lektion „Schema- und Regelvalidierer“ kostenlos?
Ja — der vollständige Text von „Schema- und Regelvalidierer“ 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 „Schema- und Regelvalidierer“?
Vorgaben durchsetzen 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 3 von 4.
Wie lange dauert die Lektion „Schema- und Regelvalidierer“?
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
- Was sind Guardrails?
- Ein- und Ausgabefilterung
- Schema- und Regelvalidierer
- Validierung durch Selbstkritik