Modell / Datensatz
guardrails-ai/guardrails avatar
guardrails-ai/guardrails

Guardrails: Validierung und strukturierte Ausgabe für LLM-Aufrufe

Adding guardrails to large language models.

7.418 Sterne699 ForksPythonApache-2.0

Auf einen Blick

Was ist das?
Guardrails ist ein Python-Framework, das LLM-Ein- und -Ausgaben durch installierbare Validatoren prüft und strukturierte Daten über Pydantic-Modelle erzwingt. Der Ansatz ist praktikabel, aber an einen Katalog gebunden, dessen Hosting sich gerade ändert.
Für wen ist es gedacht?
Wer LLM-Antworten gegen ein Pydantic-Schema prüfen und einzelne Risikoklassen wie Telefonnummern oder Konkurrenznamen abfangen will, findet hier einen kleinen, klar umrissenen Baustein. Wer eine breite, redaktionell gepflegte Risikoabdeckung ohne eigenen Validator-Code braucht, sollte zuerst prüfen, ob der Hub für seine Kategorien überhaupt Validatoren führt.
Darf ich es kommerziell nutzen?
Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 3 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Python, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Zwei Aufgaben, die nichts miteinander zu tun haben

Das Projekt verfolgt zwei Ziele, die in der Praxis unterschiedliche Probleme lösen. Erstens laufen Ein- und Ausgabeprüfungen, die laut README bestimmte Risikoklassen erkennen, quantifizieren und abmildern. Zweitens hilft das Framework, strukturierte Daten aus einem Modell zu erzeugen. Wer nur eines davon braucht, trägt die Abhängigkeiten des jeweils anderen mit. Der zweite Punkt ist der technisch schärfere: Ein Pydantic-Modell beschreibt die Zielstruktur, und Guardrails übersetzt diese Beschreibung in den Modellaufruf. Das ist ein Vertrag, kein nachgelagerter Parser. Der Validierungsteil ist dagegen ein Regelwerk, dessen Inhalt nicht im Repository liegt, sondern im Guardrails Hub. Das Repository liefert den Rahmen, die Prüfungen kommen als separate Pakete. Diese Trennung ist die wichtigste Designentscheidung des Projekts und erklärt die meisten seiner Grenzen.

Der Validator-Katalog liegt außerhalb des Repositories

Die Dokumentation beschreibt Validatoren als vorgefertigte Maße für bestimmte Risikotypen, die sich zu Ein- und Ausgabeschutz kombinieren lassen. Der Hub ist die Bezugsquelle für diese Bausteine. Für die Bewertung heißt das: Der Funktionsumfang des Frameworks ist nicht der Funktionsumfang des Produkts. Wer wissen will, ob Guardrails für seine Anwendung taugt, muss im Hub nachsehen, ob es für seine Risikokategorie einen Validator gibt, und die Qualität dieses einzelnen Pakets beurteilen. Das ist eine ungewöhnliche Arbeitsteilung. Bei den meisten Validierungsbibliotheken liest man den Quelltext und weiß, was drin ist. Hier liest man den Quelltext des Rahmens und muss zusätzlich eine externe Liste durchgehen. Das README nennt als Beispiel den Guardrails Index, einen Vergleich von 24 Validatoren in 6 Kategorien, verlinkt über index.guardrailsai.com. Die Zahlen daraus lassen sich hier nicht nachprüfen, und sie decken nur die verglichenen Kategorien ab.

Ein Guard, mehrere Prüfungen, definiertes Fehlverhalten

Der zentrale Baustein ist das Objekt Guard. Validatoren werden mit .use() angehängt, jeder mit einem eigenen on_fail. Im README steht das Beispiel RegexMatch mit dem Muster für US-Telefonnummern und OnFailAction.EXCEPTION. Der Aufruf guard.validate("123-456-7890") läuft durch, der Aufruf mit "1234-789-0000" wirft eine Ausnahme, deren Text das erwartete Muster wiederholt. Bemerkenswert ist, dass die Fehlermeldung das Muster enthält und nicht nur ein allgemeines Scheitern meldet. Das zweite Beispiel kombiniert CompetitorCheck mit einer Liste von Firmennamen und ToxicLanguage mit threshold=0.5 und validation_method="sentence". Die Ausgabe im README zeigt, dass beide Prüfungen ausgewertet werden und ihre Befunde in einer Meldung zusammenlaufen: gefundene Konkurrenten als verschachtelte Liste, toxische Sätze einzeln aufgeführt. Die Reihenfolge der Auswertung und ob bei der ersten Verletzung abgebrochen wird, geht aus dem Material nicht hervor. Wer sich darauf verlässt, dass alle Validatoren immer vollständig laufen, sollte das vorher im Quelltext prüfen.

Strukturierte Ausgabe: Function Calling oder Prompt-Anpassung

Für die Datenerzeugung beschreibt das README zwei Wege. Unterstützt das Modell Function Calling, wird die Struktur über die Funktionsaufruf-Syntax erzeugt. Unterstützt es das nicht, wird das Schema der erwarteten Ausgabe an den Prompt angehängt. Der Unterschied ist praxisrelevant: Der zweite Weg ist eine Bitte an das Modell, kein erzwungenes Format, und die Zuverlässigkeit hängt am Modell. Das Beispiel definiert eine Pydantic-Klasse Pet mit pet_type und name, jeweils mit Field(description=...). Die Beschreibungen sind nicht dekorativ, sie wandern in den Prompt oder in die Funktionsbeschreibung. Ein Guard entsteht über Guard.for_pydantic(output_class=Pet, prompt=prompt). Im Prompt steht der Platzhalter ${gr.complete_json_suffix_v2}, den das Framework ersetzt. Der Aufruf liefert laut README ein Tupel, aus dem raw_output und validated_output entpackt werden. Wer das validierte Ergebnis weiterverarbeitet, sollte beachten, dass die Rohausgabe daneben bestehen bleibt. Ob ein erneuter Versuch bei Schemaverletzung automatisch erfolgt, lässt sich aus dem gezeigten Ausschnitt nicht ableiten.

Installation: pip, CLI, einzelne Validatoren

Die Installation ist ein einzeiliger pip-Aufruf: pip install guardrails-ai. Danach folgt guardrails configure, das laut README die Guardrails-Hub-CLI einrichtet. Einzelne Prüfungen kommen als eigene Pakete dazu, im Beispiel pip install guardrails-ai-regex-match sowie pip install guardrails-ai-competitor-check guardrails-ai-toxic-language. Die Importpfade entsprechen dem Paketnamen mit Unterstrichen, etwa from guardrails_ai.regex_match import RegexMatch. Wer einen Guard zusammenbaut, importiert Guard und OnFailAction aus guardrails, die Validatoren aus ihren eigenen Modulen. Diese Aufteilung bedeutet: Jeder zusätzliche Validator ist eine zusätzliche Abhängigkeit mit eigener Version und eigenem Wartungsstand. In einer Umgebung mit festgeschriebenen Versionen muss jede davon einzeln gepinnt werden. Das ist kein Fehler des Designs, aber ein Aufwand, der bei monolithischen Bibliotheken entfällt.

Die Umstellung beim Hosting ist derzeit das größte Risiko

Die wichtigste Meldung im README ist keine Funktionsbeschreibung, sondern eine Migrationsankündigung. Stand Juli 2026 werden Validatoren zu normalen PyPI-Paketen, die direkt mit pip installiert werden, und das gehostete Remote-Inferencing wird eingestellt. Als geplanter Stichtag ist der 25. August 2026 genannt, mit Verweis auf ein Migrations-Issue. Für Bestandsanlagen heißt das: Wer heute auf Remote-Inferencing setzt, muss vor diesem Datum umstellen. Wer neu einsteigt, sollte Validatoren von Anfang an als lokale Pakete behandeln und nicht als Aufrufe an einen Dienst. Die Formulierung im README legt nahe, dass die Installation per pip der Zielzustand ist. Ob alle Validatoren des Hubs rechtzeitig als PyPI-Pakete vorliegen, geht aus dem Material nicht hervor. Diese Frage gehört vor jede Architekturentscheidung, die auf einem bestimmten Validator aufbaut.

Wann Guardrails das falsche Werkzeug ist

Guardrails prüft Text gegen Regeln. Es prüft nicht, ob eine Antwort inhaltlich wahr ist, ob ein Modell halluziniert oder ob eine Aussage fachlich korrekt ist. Die Prüfungen im README sind Musterabgleich, Namenslisten und ein Toxizitätsschwellwert. Wer semantische Korrektheit absichern will, braucht ein anderes Verfahren, etwa eine zweite Modellinstanz als Prüfer oder eine Datenbank als Faktenquelle. Auch für den strukturierten Ausgabeteil gibt es Alternativen mit anderem Ansatz. Pydantics eigene Modellvalidierung prüft jedes Feld gegen Typen und Constraints und wirft bei Verstoß einen ValidationError. Der Unterschied liegt im Zeitpunkt und in der Richtung: Pydantic validiert einen String, den man bereits hat, und kann das Modell nicht beeinflussen. Guardrails greift vor dem Aufruf ein, indem es das Schema in den Prompt oder in die Funktionsbeschreibung schreibt, und validiert danach. Wer bereits eine Pydantic-Schicht im Code hat und nur nachgelagert prüfen will, bekommt mit Guardrails eine zusätzliche Abhängigkeit für einen Schritt, den Pydantic allein erledigt.

Lizenz, Pflegeaufwand und was vor dem Einsatz zu klären ist

Der Code steht unter Apache-2.0, einer permissiven Lizenz mit Patentklausel. Das erlaubt kommerzielle Nutzung und Änderungen, verlangt aber die Beibehaltung von Lizenzhinweisen und die Kennzeichnung geänderter Dateien. Für die einzelnen Validatoren gilt das nicht automatisch: Jeder ist ein eigenes Paket und kann eine eigene Lizenz tragen. Wer Validatoren in ein Produkt einbettet, muss deren Lizenzen getrennt prüfen. Das ist keine Rechtsberatung, nur der Hinweis auf eine Prüfung, die bei monolithischen Bibliotheken entfällt. Der Pflegeaufwand folgt derselben Struktur. Das Repository selbst wird aktiv gepflegt, mit den Releases v0.10.0, v0.10.2 und v0.11.0 zwischen April und August 2026. Für jeden verwendeten Validator kommt jedoch ein zweiter Pflegezyklus hinzu, abhängig davon, wie regelmäßig dessen Maintainer das Paket aktualisieren. Vor dem ersten produktiven Einsatz sind drei Dinge zu klären: ob der benötigte Validator nach dem 25. August 2026 als PyPI-Paket verfügbar ist, unter welcher Lizenz er steht, und ob die Ausführung mehrerer Validatoren innerhalb eines Guards bei der ersten Verletzung abbricht oder alle Prüfungen auswertet.

Redaktionelles Fazit

Wer LLM-Antworten gegen ein Pydantic-Schema prüfen und einzelne Risikoklassen wie Telefonnummern oder Konkurrenznamen abfangen will, findet hier einen kleinen, klar umrissenen Baustein. Wer eine breite, redaktionell gepflegte Risikoabdeckung ohne eigenen Validator-Code braucht, sollte zuerst prüfen, ob der Hub für seine Kategorien überhaupt Validatoren führt. Vor dem ersten Commit ist zu klären, ob die betroffenen Validatoren nach dem 25. August 2026 als PyPI-Pakete vorliegen, denn davon hängt ab, ob `pip install guardrails-ai-regex-match` weiterhin funktioniert.

Offizielle Quellen

  1. guardrails-ai/guardrails on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Community-Notizen

Community-Notizen