Zum Inhalt springen
Aback Tools Logo

Guardrails AI: Strukturierte Ausgabe-Validierung mit JSON Schema

Wie Guardrails AI strukturierte LLM-Ausgaben validiert: die fünf Fehlermodi unvalidierter Antworten, JSON-Schema-Verträge, Pydantic-Integration, reask-Wiederholungen, on_fail-Aktionen und eine kostenlose Schema-Toolchain.

DH
Tutorials & How-Tos13 Min. Lesezeit2,800 Wörter

Sprachmodelle sind probabilistisch - sie garantieren nicht, dass ihre Ausgabe wohlgeformtes JSON ist, alle Pflichtfelder enthält oder die Wertbeschränkungen respektiert, von denen Ihre Anwendung abhängt. Guardrails AI löst dies, indem es LLM-Aufrufe mit einer Validierungsschicht umhüllt, die auf JSON Schema und Python-Validatoren basiert, und bei nicht konformer Modellausgabe automatisch wiederholt. Dieser Leitfaden erklärt genau, wie es funktioniert und wie man eine zuverlässige Pipeline für strukturierte Ausgaben von Grund auf einrichtet.

JSON SchemaKernvertragsformatDraft-07 und 2020-12
reaskAutomatischer WiederholungsmechanismusKonfigurierbare Anzahl an Versuchen
0 UploadsSchema-WerkzeugeBrowser-lokale Schema-Tools

Was ist Guardrails AI?

Guardrails AI ist eine Open-Source-Python-Bibliothek, die darauf ausgelegt ist, LLM-Ausgaben zuverlässig und vorhersagbar zu machen. Sie umhüllt jeden LLM-API-Aufruf - OpenAI, Anthropic, Cohere, lokale Modelle - mit einer Validierungspipeline, die die Modellantwort gegen ein benutzerdefiniertes Schema und einen Satz feldbezogener Validatoren prüft, bevor das Ergebnis an Ihren Anwendungscode zurückgegeben wird.

Die Kernabstraktion ist das `Guard`-Objekt. Sie konstruieren einen Guard aus einem Pydantic-Modell oder einer JSON-Schema-Definition, hängen optional Validatoren an einzelne Felder an und rufen dann den Guard auf, statt das LLM direkt anzusprechen. Der Guard übernimmt Prompt-Konstruktion, Antwort-Parsing, Validierung und automatisches Nachfragen bei Validierungsfehlern - alles in einer einzigen, prüfbaren Pipeline.

Wo Guardrails AI im LLM-Stack sitzt

Guardrails sitzt zwischen Ihrem Anwendungscode und dem LLM-Anbieter. Es ersetzt das Modell nicht und ändert nicht, wie das Modell aufgerufen wird - es fügt dem Aufruf eine Vertrag-Durchsetzungsschicht hinzu. Denken Sie an einen Schema-Validator für API-Antworten, nur dass die „API" ein Sprachmodell ist, das natürliche Sprache erzeugt, und die „Antwort" erst in strukturierte Daten geparst werden muss, bevor sie validiert werden kann.

  • Guard: die Hauptschnittstelle - umhüllt einen LLM-Aufruf und wendet Schema + Validatoren an.
  • ValidationOutcome: das von einem Guard-Aufruf zurückgegebene Ergebnisobjekt - enthält validierte Ausgabe, Bestehen/Fehlschlag-Status und Feldfehler.
  • Validator: ein an ein Schemafeld gebundener Callable, der eine bestimmte Regel durchsetzt (Typ, Bereich, Regex, externe Prüfung).
  • reask: der Wiederholungsmechanismus - schlägt die Validierung fehl, stellt Guardrails dem Modell mit Fehlerkontext erneut die Anfrage.
  • Hub: die Guardrails-Validator-Registrierung - eine kuratierte Sammlung gemeinschaftlicher Validatoren, installierbar via `guardrails hub install`.

Note

Guardrails AI ist nicht dasselbe wie der native strukturierte Ausgabemodus von OpenAI (`response_format: json_object`) und die Tool-Use-API von Anthropic. Diese anbieterspezifischen Features erzwingen grundlegende JSON-Syntax, validieren aber keine Feldwerte, führen keine eigenen Validatoren aus und implementieren keine Wiederholungslogik. Guardrails fügt all das oben auf und funktioniert mit jedem Anbieter.

Warum LLM-Ausgaben Validierung brauchen

Das Grundproblem ist, dass Sprachmodelle darauf trainiert sind, plausiblen Text zu erzeugen - nicht, programmiertechnische Verträge einzuhalten. Selbst wenn Sie ein Modell anweisen, JSON zurückzugeben, kann es Ausgaben mit fehlenden Feldern, falschen Werttypen, zusätzlichen Feldern, die Ihr nachgelagerter Code nicht erwartet, halluzinierten Werten außerhalb erlaubter Bereiche oder Textfragmenten um den JSON-Block herum erzeugen, die das Parsing komplett sprengen.

Die fünf Fehlermodi unvalidierter LLM-Ausgabe

  • Parse-Fehler: das Modell umhüllt das JSON mit Markdown-Codezäunen, fügt Kommentare davor oder danach ein oder erzeugt fehlerhaftes JSON, das nicht geparst werden kann.
  • Fehlende Pflichtfelder: das Modell lässt ein Feld aus, das es füllen sollte, und verursacht einen KeyError oder Nullreferenz-Fehler im nachgelagerten Code.
  • Typverletzungen: ein als Zahl erwartetes Feld kommt als String an, oder ein Boolean kommt als String „true" statt als Literal `true`.
  • Wertrestriktionsverletzungen: ein Bewertungsfeld gibt 11 zurück, obwohl 1-10 erlaubt ist, oder ein Enum-Feld liefert einen Wert außerhalb der definierten Liste.
  • Halluzinierte Struktur: das Modell erfindet zusätzliche Felder oder verschachtelt Objekte anders, als das Schema es vorsieht.

Jeder dieser Fehler kann nachgelagerte Daten stillschweigend korrumpieren, Laufzeit-Ausnahmen verursachen oder schlechte Werte in die Geschäftslogik durchsickern lassen. Für Low-Stakes-Prototypen ist optimistisches Parsing akzeptabel. Für Produktionspipelines - Rechnungsextraktion, klinische Datenverarbeitung, Betrugserkennungssignale, Kundendaten-Anreicherung - ist jede Feldverletzung ein Datenqualitätsproblem, das erkannt und behandelt werden muss.

Der Vertrag zwischen Ihrer Anwendung und dem LLM ist nur so stark wie die Validierung, die Sie bei jeder Antwort durchsetzen. Hoffen ist keine Validierungsstrategie.

- Guardrails AI Dokumentationsphilosophie

Warning

Selbst Modelle mit nativen strukturierten Ausgabemodi (wie `response_format: json_schema` von OpenAI) garantieren nur syntaktisch gültiges JSON, das der Form des Top-Level-Schemas entspricht. Sie validieren nicht, dass ein `rating`-Feld zwischen 1 und 5 liegt, dass ein `email`-Feld eine echte E-Mail-Adresse enthält oder dass ein `status`-Feld einer Ihrer definierten Enum-Werte ist. Semantische Validierung auf Feldebene erfordert immer eine zusätzliche Schicht.

JSON Schema als Validierungsvertrag

JSON Schema ist die Sprache, mit der Guardrails AI beschreibt, wie eine gültige LLM-Antwort aussieht. Eine JSON-Schema-Definition legt die erwartete Objektstruktur fest - welche Felder existieren, ihre Typen, welche erforderlich sind und welche Beschränkungen für ihre Werte gelten. Dieses Schema erfüllt zwei Zwecke: Es sagt Guardrails, wie die geparste Antwort zu validieren ist, und Guardrails nutzt es, um die Prompt-Instruktion zu bauen, die dem Modell vorgibt, welche Form es erzeugen soll.

Was JSON Schema für die LLM-Validierung abdeckt

Für strukturierte Ausgabefälle sind die nützlichsten JSON-Schema-Keywords Typerzwingung, Pflichtfeld-Listen, Enum-Werte, String-Formate und numerische Bereiche. Zusammen decken sie die Mehrheit der feldbezogenen Regeln ab, die eine Extraktions- oder Generierungsaufgabe durchsetzen muss.

product_review_schema.json
json
{
  "$schema": "https://json-schema.org/draft-07/schema",
  "type": "object",
  "required": ["product_name", "rating", "sentiment", "summary"],
  "additionalProperties": false,
  "properties": {
    "product_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "rating": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "sentiment": {
      "type": "string",
      "enum": ["positive", "neutral", "negative"]
    },
    "summary": {
      "type": "string",
      "minLength": 20,
      "maxLength": 500
    },
    "pros": {
      "type": "array",
      "items": { "type": "string" },
      "maxItems": 5
    },
    "cons": {
      "type": "array",
      "items": { "type": "string" },
      "maxItems": 5
    }
  }
}

Dieses Schema weist Guardrails an, jede Antwort abzulehnen, bei der `rating` außerhalb von 1-5 liegt, `sentiment` nicht einer der drei erlaubten Werte ist oder `summary` kürzer als 20 Zeichen ist. In `required` gelistete Felder müssen vorhanden sein. `additionalProperties: false` lehnt zusätzliche Felder ab, die das Modell eigenmächtig hinzufügt.

Schema aus einer Beispielantwort generieren

Beim Entwurf einer neuen Extraktionsaufgabe kostet das Festlegen des ersten Schemas Zeit. Ein praktischer Abkürzungsweg: Führen Sie Ihren Prompt einmal ohne Validierung aus, prüfen Sie das rohe JSON, das das Modell zurückgibt, und nutzen Sie dann den JSON Schema Generator, um daraus automatisch ein Draft-07-Schema abzuleiten. Das generierte Schema erfasst Typen, Pflichtfelder und verschachtelte Struktur. Anschließend verfeinern Sie es - Stringlängen straffen, Enum-Beschränkungen ergänzen, numerische Grenzen setzen - statt jedes Keyword von Hand zu schreiben.

JSON Schema Generator

Fügen Sie beliebige JSON-Payloads ein und erhalten Sie automatisch ein vollständiges Draft-07- oder Draft-2020-12-Schema - browser-lokal, kein Upload, keine Registrierung.

Open tool

Tip

Verwenden Sie `additionalProperties: false` in jedem Guardrails-Schema. Ohne das kann ein Modell Felder wie „confidence": 0.9 oder „notes": „..." hinzufügen, die die Validierung stillschweigend passieren, aber Ihr Datenmodell verschmutzen. Strenge Schemata liefern sauberere Extraktionsergebnisse, weil das Modell seine Unsicherheit nicht in erfundene Felder auslagern kann.

Wie Guardrails AI die Ausgabe validiert

Wer die Validierungspipeline versteht, kann Fehler besser debuggen und für jedes Feld die richtige Reaktionsstrategie konfigurieren. Die Pipeline läuft bei jedem Guard-Aufruf in fester Reihenfolge: Prompt-Injektion, Antwort-Parsing, JSON-Schema-Validierung, Ausführung der feldbezogenen Validatoren und Ergebnisaufbau.

1

Prompt-Injektion

Bevor der Prompt an das LLM gesendet wird, hängt Guardrails einen strukturierten Instruktionsblock an, der aus Ihrem Schema abgeleitet ist. Dieser Block beschreibt das erwartete Ausgabeformat, listet Pflichtfelder mit Typen und Beschränkungen auf und enthält (wenn reask aktiv ist) die Validierungsfehler des vorherigen Versuchs. Die Injektion ist transparent - Sie schreiben Ihren Aufgabenprompt normal, und Guardrails übernimmt die Formatierungsanweisungen.

2

Antwort-Parsing

Nachdem das Modell geantwortet hat, extrahiert Guardrails das JSON aus der Ausgabe. Es behandelt typische Formatierungsgewohnheiten von Modellen: Entfernen von Markdown-Codezäunen, Trimmen von Prosa vor oder nach dem JSON-Block und Korrigieren kleinerer Syntaxprobleme. Lässt sich die Ausgabe nicht in ein Python-dict parsen, löst der Guard sofort einen reask mit einer Parse-Fehlermeldung aus, statt eine Ausnahme zu werfen.

3

JSON-Schema-Validierung

Das geparste dict wird mit einem standardkonformen Validator gegen Ihr JSON Schema geprüft. Typverletzungen, fehlende Pflichtfelder, Enum-Abweichungen und Bereichsverletzungen erzeugen an dieser Stelle strukturierte Fehlerobjekte. Sie können Ihr Schema vorab unabhängig mit der JSON Schema Validator gegen eine Kandidaten-Payload testen, bevor Sie es in einen Guard einbinden.

4

Ausführung der feldbezogenen Validatoren

Nach bestandener JSON-Schema-Prüfung laufen die registrierten Validatoren jedes Felds der Reihe nach. Eingebaute Validatoren sind unter anderem `ValidChoices`, `ValidRange`, `ValidURL`, `NoRefusal`, `ToxicLanguage`, `PIIFilter` und Dutzende mehr aus dem Hub. Eigene Validatoren sind einfache Python-Funktionen mit dem Decorator `@register_validator`. Jeder Validator gibt ein `PassResult` oder `FailResult` mit menschenlesbarer Fehlermeldung zurück.

5

Ergebnisaufbau und reask

Guardrails baut ein `ValidationOutcome` zusammen, das das validierte Ausgabe-dict, einen `validation_passed`-Boolean und eine Liste von Feldfehlern enthält. Schlägt die Validierung fehl und ist `num_reasks` größer null, springt die Pipeline zurück zu Schritt 1, wobei die Validierungsfehler in den Prompt injiziert werden, damit das Modell seine Ausgabe korrigieren kann. Jede reask-Runde verringert den Wiederholungszähler.

on_fail-AktionWas sie tutAm besten für
exceptionWirft sofort ValidationErrorHarte Anforderungen - schnell fehlschlagen
reaskStellt dem Modell die Anfrage mit Fehlerkontext erneutDie meisten Anwendungsfälle strukturierter Ausgaben
fixWendet automatisch eine Korrekturfunktion anNormalisierung (Trim, Kleinschreibung, Umwandlung)
filterEntfernt das fehlgeschlagene Feld aus der AusgabeOptionale Anreicherungsfelder
refrainGibt None für den gesamten Guard-Aufruf zurückKonservative Fallback-Workflows
noopProtokolliert den Fehler, macht aber weiterLogging- und Observability-Pipelines

Rail-Specs und Pydantic-Integration

Guardrails AI unterstützt zwei Schemadefinitionsstile: das ältere Rail-Spec-Format und den modernen Pydantic-Modellansatz. Beide zu kennen ist nützlich, weil Sie Rail-Specs in älteren Codebasen und Community-Beispielen antreffen, während Pydantic seit Guardrails v0.4+ der empfohlene Weg für alle neuen Projekte ist.

Pydantic-Modelle als Guard-Schemata

Der sauberste Weg, ein Guardrails-Ausgabeschema in Python zu definieren, ist eine `BaseModel`-Unterklasse von Pydantic. Pydantic-Modelle haben nativen JSON-Schema-Export, IDE-Typenprüfung und vertraute Python-Syntax. Guardrails-Validatoren hängen Sie über Pydantics `Field()` mit benutzerdefinierten Metadaten an oder importieren Validator-Klassen direkt aus `guardrails`.

review_guard.py
python
from pydantic import BaseModel, Field
from guardrails import Guard
from guardrails.hub import ValidRange, ValidChoices

class ProductReview(BaseModel):
    product_name: str = Field(description="Name of the product reviewed")
    rating: int = Field(
        description="Rating from 1 to 5",
        validators=[ValidRange(min=1, max=5, on_fail="reask")]
    )
    sentiment: str = Field(
        description="Overall sentiment of the review",
        validators=[ValidChoices(
            choices=["positive", "neutral", "negative"],
            on_fail="reask"
        )]
    )
    summary: str = Field(description="One paragraph summary of the review")

# Build the Guard from the Pydantic model
guard = Guard.from_pydantic(ProductReview)

# Call the LLM through the Guard
outcome = guard(
    openai.chat.completions.create,
    model="gpt-4o",
    messages=[{"role": "user", "content": f"Extract a review from: {raw_text}"}],
    num_reasks=2,
)

if outcome.validation_passed:
    review: ProductReview = outcome.validated_output
else:
    print(outcome.error)

Die Pydantic-zu-JSON-Schema-Pipeline

Unter der Haube ruft Guardrails `model.model_json_schema()` auf, um Ihr Pydantic-Modell als JSON Schema zu exportieren, und nutzt dieses Schema dann sowohl für die Prompt-Injektion als auch für die Antwortvalidierung. Das bedeutet: Jedes Pydantic-Modell, das Sie schreiben können, ist automatisch ein gültiger Guardrails-Vertrag. Sie können das generierte Schema selbst inspizieren - fügen Sie eine Beispielantwort in den JSON Schema Generator ein, um das äquivalente Schema zu sehen, und vergleichen Sie es mit der Ausgabe Ihres Pydantic-Modells.

Wenn Ihre Anwendung auf TypeScript basiert, aber einen Python-Guardrails-Dienst aufruft, erzeugt der JSON-zu-Zod-Schema-Konverter aus derselben Beispiel-JSON ein passendes Zod-Schema - nützlich, um denselben Vertrag clientseitig zu validieren, ohne die Schemadefinition manuell zu duplizieren.

Rail-Specs - das Legacy-Format

Rail-Specs sind XML-Dateien, in denen jedes `<output>`-Element ein Feld mit einem `type`-Attribut und einem oder mehreren `<validator>`-Kindelementen beschreibt. Sie stammen aus der Zeit vor der Pydantic-Integration und sind für Python-Entwickler weniger ergonomisch, werden aber weiterhin vollständig unterstützt. Erben Sie eine Guardrails-Codebasis mit `.rail`-Dateien, können Sie jede Spec schrittweise in ein Pydantic-Modell migrieren - das Validierungsverhalten ist äquivalent.

Note

Sie können eine bestehende Rail-Spec in ihr JSON-Schema-Äquivalent umwandeln, indem Sie `guard.json_function_calling_schema` auf einem aus der `.rail`-Datei konstruierten Guard aufrufen. Das ist nützlich für die Migration zu Pydantic oder um zu debuggen, welches Schema der Guard tatsächlich in den Prompt injiziert.

Praktischer Workflow und Toolchain

Ein zuverlässiger Guardrails-Workflow kombiniert Offline-Schemaentwurf, lokales Testen und Produktionsüberwachung. Die Schema-Entwurfsphase - in der Sie festlegen, wie eine gültige Ausgabe aussieht - ist der wichtigste Schritt und profitiert am meisten von dediziertem Werkzeug.

Schritt 1: Schema offline entwerfen

Definieren Sie vor dem Schreiben von Guardrails-Code Ihr Ausgabeschema als eigenständiges JSON-Schema-Dokument. Zuerst in JSON Schema zu arbeiten erlaubt es, den Vertrag unabhängig vom LLM-Aufruf zu iterieren - Sie können Beispiel-Payloads validieren, Beschränkungen anpassen und bestätigen, dass das Schema korrekt ist, bevor Sie API-Credits für Tests ausgeben.

Mit der JSON Schema Validator von Aback Tools fügen Sie ein JSON Schema und eine Kandidaten-Payload ein und sehen sofort Fehler auf Feldebene. Nutzen Sie das, um zu bestätigen, dass Ihre `required`-Arrays, Enum-Listen und numerischen Bereiche wie erwartet funktionieren, bevor Sie das Schema in ein Pydantic-Modell übersetzen. Der JSON Formatter & Validator hilft zu prüfen, ob Ihre Schema-Datei selbst syntaktisch gültiges JSON ist, bevor Sie darauf verweisen.

Schritt 2: Pydantic aus JSON generieren

Haben Sie beim Prototyping Beispiel-LLM-Antworten gesammelt, erzeugt der JSON-zu-Python-Dataclass/Pydantic-Konverter aus einer Beispiel-Payload in einem Schritt ein Pydantic-Modell. Das Werkzeug leitet Feldtypen ab, behandelt verschachtelte Objekte und setzt `Optional` dort ein, wo Felder fehlen können. Verwenden Sie die Ausgabe als Ausgangspunkt und fügen Sie jedem Feld auf Basis der Beschränkungen in Ihrem JSON Schema Guardrails-Validatoren hinzu.

Schritt 3: Lokal mit Mock-Antworten testen

Guardrails-Guards können mit jedem Python-Callable aufgerufen werden, nicht nur mit echten LLM-APIs. Übergeben Sie in der Entwicklung eine Mock-Funktion, die eine feste String-Antwort zurückgibt, um die Validierungspipeline ohne API-Aufrufe zu testen. So iterieren Sie schnell und kostenlos über Schemaänderungen, Validator-Konfigurationen und reask-Prompts, bevor Sie einen bezahlten Modell-Endpoint anbinden.


Empfohlener Schema-Workflow mit Aback Tools

JSON Schema Validator

Validieren Sie beliebige JSON-Payloads gegen ein Schema mit Fehlermeldungen auf Feldebene - browser-lokal, kein Upload, sofortige Ergebnisse.

Open tool

Grenzfälle und Einschränkungen

Guardrails AI verbessert die Zuverlässigkeit strukturierter Ausgaben erheblich, garantiert aber keine Korrektheit. Wer die Einschränkungen kennt, entwirft seine Pipeline mit passenden Rückfallebenen, statt dem Guard blind zu vertrauen.

Reask-Schleifen konvergieren nicht immer

Wenn ein Modell einen bestimmten Validator beständig nicht besteht, hilft mehr reask-Wiederholung nicht - es kostet nur mehr API-Credits für dasselbe Ergebnis. Manche Fehlermodi sind systematisch: Das Modell versteht eine Beschränkung wirklich nicht, oder die Beschränkung ist zu streng, um sie bei der gegebenen Eingabe zuverlässig zu erfüllen. Auditsieren Sie die Fehlerraten Ihrer Validatoren und betrachten Sie hochfrequente Fehlschläge als Signal, entweder die Beschränkungsdefinition oder den Prompt zu überarbeiten.

JSON Schema erkennt keine semantischen Fehler

Ein Schema kann bestätigen, dass `sentiment` einer der Werte `["positive", "neutral", "negative"]` ist, aber nicht verifizieren, dass das zugewiesene Sentiment für den Eingabetext tatsächlich korrekt ist. JSON Schema und Validatoren erzwingen strukturelle und syntaktische Verträge - sie ersetzen weder menschliche Prüfung noch nachgelagerte Qualitätskontrollen für die inhaltliche Richtigkeit. Nutzen Sie Guardrails, um Format und Struktur der Ausgabe durchzusetzen, und wenden Sie separate Bewertungsmaßstäbe für die inhaltliche Korrektheit an.

Latenz- und Kosten-Overhead

Jeder reask-Versuch ist ein zusätzlicher LLM-API-Aufruf zum vollen Token-Preis. Bei einem Guard mit `num_reasks=3` kann eine Extraktion im Worst Case vier LLM-Aufrufe auslösen, bevor sie scheitert. In Hochdurchsatz-Pipelines ist dieser Overhead erheblich. Profilieren Sie die reask-Rate Ihres Guards in der Staging-Umgebung, bevor Sie in Produktion gehen, und setzen Sie `num_reasks=0` für unkritische Felder, wo die on_fail-Aktionen `filter` oder `noop` akzeptable Alternativen zur Wiederholung sind.

EinschränkungAuswirkungAbmilderung
Reask-Schleifen konvergieren nichtVerschwendete API-Credits bei bekannten FehlernValidator-Fehlerraten auditieren; Beschränkungen vereinfachen
Semantische Fehler unerkanntFalsche Werte bestehen strukturelle PrüfungenSeparate Inhaltsbewertungsmaßstäbe anwenden
Latenz durch reasksBis zu 4× die Kosten pro fehlgeschlagenem Aufrufreask-Rate profilieren; filter/noop für unkritische Felder
Keine feldübergreifende ValidierungKann Feld A > Feld B nicht erzwingenPost-Validierungs-Python-Funktion für feldübergreifende Regeln
Anbieterspezifische Prompt-EmpfindlichkeitInjektionsformat beeinflusst die ModellcomplianceMehrere Prompt-Formate testen; native strukturierte Ausgabemodi nutzen

Warning

Verwenden Sie Guardrails nie als alleinige Absicherung für Entscheidungen mit hohem Einsatz. Eine strukturierte Ausgabe, die alle Schema- und Validator-Prüfungen besteht, beruht dennoch auf einer Modellinferenz, die falsch sein kann. Guardrails erzwingt das **Format** der Ausgabe - nicht deren **faktische Richtigkeit**. Wenden Sie für jede Ausgabe, die irreversible Aktionen auslöst, menschliche Prüfung oder nachgelagerte Verifikation an.

Tip

Für feldübergreifende Validierungsregeln, die JSON Schema nicht ausdrücken kann - etwa dass `end_date` immer nach `start_date` liegt - fügen Sie einen Post-Guard-Pydantic-Modellvalidator mit `@model_validator(mode='after')` hinzu. Er läuft, nachdem Guardrails das validierte dict zurückgegeben hat, und gibt Ihnen volle Python-Logik für feldübergreifende Prüfungen ohne eigenen Guardrails-Validator.

Key takeaways

  • Guardrails AI umhüllt LLM-Aufrufe mit einer JSON-Schema-Validierungsschicht und feldbezogenen Validatoren und stellt dem Modell bei Validierungsfehlern automatisch erneut Anfragen.
  • JSON Schema definiert den strukturellen Vertrag - Feldtypen, Pflichtfelder, Enum-Werte und numerische Bereiche. Erzeugen Sie ein Startschema aus einer Beispiel-Payload mit dem JSON Schema Generator.
  • Der reask-Mechanismus stellt dem LLM die Anfrage mit strukturiertem Fehlerkontext erneut - konfigurierbar pro Guard-Aufruf mit `num_reasks`. Hohe reask-Raten deuten auf zu strenge Beschränkungen oder einen schlecht abgestimmten Prompt hin.
  • Pydantic-Modelle sind das empfohlene Schemaformat ab Guardrails v0.4+: Sie exportieren automatisch zu JSON Schema und integrieren sich in die Python-Typenprüfung und IDE-Werkzeuge.
  • Verwenden Sie `additionalProperties: false` in jedem Schema, um zu verhindern, dass das Modell erfundene Felder hinzufügt, die die Validierung stillschweigend passieren, aber Ihr Datenmodell korrumpieren.
  • JSON Schema erzwingt Struktur, nicht semantische Richtigkeit - wenden Sie für die inhaltliche Genauigkeit separate Bewertungsmaßstäbe zusätzlich zur Guardrails-Schemavalidierung an.
  • Validieren Sie Ihr JSON Schema und Kandidaten-Payloads offline mit der JSON Schema Validator, bevor Sie einen Guard in eine live LLM-Pipeline einbinden.

Häufige Fragen

Guardrails AI is a Python library that wraps LLM API calls and validates the model's output against a user-defined schema and set of validators. It is used to enforce structured output from language models - ensuring that responses conform to expected field types, value ranges, formats, and custom business rules. It supports OpenAI, Anthropic, Cohere, and any other LLM provider accessible via a Python callable.

Guardrails AI accepts a Pydantic model or a JSON Schema definition as the output contract for a Guard. It prompts the LLM to return a response matching that schema, then validates the parsed JSON response against the schema's type and constraint rules. Field-level validators are layered on top of the JSON Schema checks to enforce rules that JSON Schema cannot express, such as checking whether a URL resolves or whether a value appears in a live database.

A Rail spec (short for Reliable AI Language) is an XML-based format used in earlier versions of Guardrails AI to define output schemas and attach validators to fields. Modern Guardrails (v0.4+) has largely moved to Pydantic models as the primary way to define the output schema, as Pydantic integrates more naturally with Python type systems and IDE tooling. Rail specs are still supported for backwards compatibility.

Pydantic validates Python objects at parse time - if the data does not match the model, it raises a ValidationError immediately. Guardrails AI goes further by orchestrating the LLM call itself, injecting schema requirements into the prompt, re-prompting the model if the output fails validation, and running validators that check runtime conditions beyond pure type checks. Guardrails uses Pydantic models as the schema definition layer but adds a correction loop on top.

Yes, via two mechanisms. The `fix` on_fail action instructs Guardrails to apply a correction function automatically - for example, converting a string to lowercase or truncating it to a maximum length. The `reask` mechanism re-prompts the LLM with the original prompt plus a structured description of which fields failed validation and why, giving the model a second chance to produce a conforming response. The number of reask retries is configurable.

Guardrails AI supports any Python callable that takes a prompt and returns a string, which means it works with OpenAI (including the Responses API), Anthropic Claude, Cohere, Mistral, local models via Ollama or vLLM, and any LangChain-wrapped provider. For providers with native structured output modes (OpenAI's `response_format`, Anthropic's tool-use API), Guardrails can use those modes to improve first-pass validation rates.

For simple use cases - extracting a fixed set of fields from a single LLM call - writing JSON Schema validation manually with AJV or Pydantic is faster and has no additional dependency. Guardrails AI adds the most value when you need reask retry logic, a library of pre-built validators, hub-distributed community validators, or a consistent validation pipeline across many LLM calls in a larger application. If your validation needs grow beyond basic type checking, Guardrails becomes worth the setup cost.

The primary Guardrails AI library is Python-only. There is no official JavaScript or Go port. For TypeScript LLM applications needing structured output, the common alternatives are Zod with Vercel AI SDK's structured output mode, or instructor-js for OpenAI function calling. If your application runs in Python even partially, you can run Guardrails in a Python service and expose the validated output over an internal API.

ShareXLinkedIn