Zurück zum Katalog
Season 53 10 Episoden 40 min 2026

NVIDIA NeMo Guardrails

v0.21 — 2026 Edition. Ein technischer Audiokurs zur Absicherung von agentic AI-Anwendungen mit NVIDIA NeMo Guardrails. Lerne die Implementierung von Content Safety, Topic Control, PII Masking und Jailbreak Prevention. (v0.21 - 2026)

AI-Sicherheit LLM-Orchestrierung AI/ML-Frameworks
NVIDIA NeMo Guardrails
Aktuelle Wiedergabe
Click play to start
0:00
0:00
1
Der AI Guardrails-Imperativ: Core Abstractions
Erfahre, warum rohe LLM APIs in der Produktion gefährlich sind und wie man Sicherheit orchestriert. Diese Episode stellt die fünfstufige Pipeline von NeMo Guardrails vor.
3m 58s
2
Konfiguration und die Colang 2.0 State Machine
Lerne, wie man Sicherheitslogik von Geschäftslogik mithilfe von Konfigurationsdateien trennt. Wir erkunden Colang 2.0 und wie es ereignisgesteuerte Dialogabläufe aufbaut.
3m 48s
3
Spezialisierte Content Safety mit Nemotron NIM
Erfahre, wie man die Moderation auf spezialisierte Hochgeschwindigkeitsmodelle auslagert. Wir behandeln die Nutzung des Nemotron Safety Guard 8B-Modells zum Abfangen unsicherer Prompts.
4m 01s
4
Durchsetzung von Domänengrenzen mit Topic Control
Verhindere PR-Desaster, indem du deine Bots strikt beim Thema hältst. Lerne, wie man Topic Control Input Rails implementiert, um unerlaubte Konversationen zu blockieren.
3m 57s
5
Dynamische PII Detection und Masking
Schütze sensible Nutzerdaten über Inputs, Outputs und Retrievals hinweg. Diese Episode detailliert das dynamische PII Masking mithilfe von GLiNER- und Presidio-Integrationen.
4m 09s
6
Jailbreak Detection durch Perplexity Heuristics
Verteidige dich gegen feindliche Prompt Injections mithilfe mathematischer Heuristiken. Lerne, wie Perplexity Scoring Jailbreaks abfängt, bevor sie das LLM erreichen.
4m 35s
7
Absicherung von Agentic Workflows mit Execution Rails
Schütze die Tools, die deine autonomen Agenten nutzen, vor Ausbeutung. Wir analysieren YARA-Regeln und Execution Rails zum Blockieren von Code- und SQL-Injections.
4m 18s
8
Grounding RAG: Halluzinationen und Fact-Checking
Stelle sicher, dass deine RAG-Anwendungen keine Fakten erfinden. Lerne, wie man Output Rails konfiguriert, um Antworten anhand abgerufener Wissensbausteine zu verifizieren.
3m 56s
9
Multimodale Content Safety
Textfilter versagen, wenn Nutzer Screenshots von bösartigen Prompts hochladen. Entdecke, wie man Vision-Modelle als Judges einsetzt, um multimodale Anwendungen abzusichern.
3m 38s
10
Enterprise Integration Patterns
Skaliere deine Guardrails im gesamten Unternehmen. Wir betrachten die Integration über das Python SDK, LangChain Runnables und den Standalone API Server.
3m 59s

Episoden

1

Der AI Guardrails-Imperativ: Core Abstractions

3m 58s

Erfahre, warum rohe LLM APIs in der Produktion gefährlich sind und wie man Sicherheit orchestriert. Diese Episode stellt die fünfstufige Pipeline von NeMo Guardrails vor.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 1 von 10. Du würdest niemals eine ungesicherte Datenbank direkt mit dem öffentlichen Internet verbinden, und trotzdem stellen viele Anwendungen uneingeschränkte Language Models direkt für Enduser bereit. Sich allein auf einen System Prompt zu verlassen, um die Sicherheit zu gewährleisten, ist eine fragile Architektur. Heute geht es um den AI Guardrails Imperative: Core Abstractions. NeMo Guardrails fungiert als programmierbare Zwischenschicht, die zwischen deiner User-Anwendung und dem Language Model sitzt. Es ersetzt dein Model nicht. Stattdessen baut es eine separate Pipeline aus diskreten Sicherheitsprüfungen auf, die Rails genannt werden. Anstatt das Model durch komplexes Prompt Engineering anzuflehen, sich richtig zu verhalten, orchestrierst du die Sicherheit über diese deterministische Schicht. Stell dir einen Kundenservice-Bot vor. Ein User sendet eine Message, das System ruft relevante Support-Artikel ab, das Model entwirft eine Antwort, und es triggert vielleicht eine Backend-Action, wie die Bearbeitung einer Rückerstattung. Du brauchst in jeder Phase unterschiedliche Arten von Schutz. Um das zu handhaben, definiert Guardrails fünf verschiedene Rail-Typen. Zuerst trifft die User Message auf die Input Rail. Diese Rail inspiziert den Text, bevor das Core Language Model ihn überhaupt zu Gesicht bekommt. Wenn ein User eine Prompt Injection Attacke versucht oder extrem toxischen Text übermittelt, fängt die Input Rail die Message sofort ab. Sie stoppt die Pipeline und gibt eine vordefinierte Ablehnung zurück. Das Main Model verarbeitet den bösartigen Text gar nicht erst, was Compute spart und einen Exploit verhindert. Wenn der Input sicher ist, evaluiert das System die Dialog Rails. Diese steuern den erwarteten Flow der Konversation. Wenn ein User den Support-Bot nach seiner Meinung zu einem Konkurrenten fragt, identifiziert eine Dialog Rail das Thema. Sie zwingt den Bot, einem vorgegebenen Pfad zu folgen, und antwortet vielleicht, dass er nur über die eigenen Produkte spricht. Dialog Rails verhindern, dass das Model vom Thema abweicht oder Fragen beantwortet, die es absolut nichts angehen. Als Nächstes, wenn dein Bot deine Knowledge Base durchsucht, um seine Antwort zu grounden, übernehmen die Retrieval Rails. Diese inspizieren die Text-Chunks, die aus der Datenbank gezogen wurden, bevor sie an den Model Prompt angehängt werden. Wenn eine schlecht konfigurierte Suche versehentlich ein internes HR-Dokument anstelle eines öffentlichen Handbuchs zieht, erkennt die Retrieval Rail die sensiblen Informationen und entfernt sie aus dem Context Window. Wenn die Konversation erfordert, dass der Bot einen Task ausführt, greifen die Execution Rails ein. Sie kontrollieren, welche Custom Actions das Model triggern darf. Wenn das Model anfragt, Code auszuführen oder ein externes Tool aufzurufen, verifiziert die Execution Rail, ob diese spezifische Action im aktuellen State der Konversation erlaubt ist. Sie blockiert die Ausführung von nicht autorisierten Commands. Zu guter Letzt haben wir die Output Rails. Das ist die letzte Verteidigungslinie. Nachdem das Model eine Response generiert hat, evaluiert die Output Rail den Text, bevor er den User erreicht. Sie prüft auf halluzinierte Fakten, unangemessenen Tonfall oder Leaks von sensiblen Daten. Wenn der Text den Check nicht besteht, fängt die Output Rail ihn ab und ändert oder blockiert die finale Message. Diese Architektur verändert grundlegend, wie du generative Anwendungen baust. Du verlässt dich nicht mehr auf eine probabilistische Engine, die ihr eigenes Verhalten überwacht, sondern baust stattdessen ein deterministisches Sicherheitsnetz, das Inputs, Logik und Outputs unabhängig voneinander kontrolliert. Übrigens, wenn du diese Episoden hilfreich findest und die Show unterstützen möchtest, kannst du auf Patreon nach DevStoriesEU suchen. Das war's für diese Folge. Danke fürs Zuhören und keep building!
2

Konfiguration und die Colang 2.0 State Machine

3m 48s

Lerne, wie man Sicherheitslogik von Geschäftslogik mithilfe von Konfigurationsdateien trennt. Wir erkunden Colang 2.0 und wie es ereignisgesteuerte Dialogabläufe aufbaut.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 2 von 10. Komplexe, verzweigte Dialogue State Machines in raw Python zu verwalten, ist ein absoluter Albtraum. Sobald dein User von einem starren Skript abweicht, bricht deine hardcoded Logik zusammen. Die Konfigurationsarchitektur von NeMo Guardrails behebt dieses Problem, indem sie Konversationen als event-driven Flows anstatt als statischen Code behandelt. NeMo Guardrails trennt die Mechanik deiner Applikation von der Logik deiner Konversation. Das passiert über zwei verschiedene Konfigurationselemente. Zuerst hast du deine YAML-Konfigurationsdatei. Diese übernimmt das komplette Model Wiring. Hier deklarierst du dein Main Language Model, definierst deine Embedding Models und registrierst Custom Application Actions. Die YAML-Datei verbindet die zugrunde liegende Infrastruktur. Sie stellt die Engine bereit, weiß aber absolut nichts darüber, was der User tatsächlich sagen wird. Die eigentliche Konversationslogik wird von Colang 2.0 gesteuert. Colang ist eine event-driven Interaction Modeling Language. Anstatt standardmäßigen imperativen Code mit endlosen Conditional Statements zu schreiben, um zu tracken, wo sich der User in einer Konversation befindet, definierst du Flows. Ein Flow modelliert eine Sequenz von Interaktionen. Wenn ein User eine Message sendet, generiert das ein Event. Die State Machine fängt dieses Event ab, sucht nach einem aktiven Flow, der zur Interaktion passt, und diktiert den nächsten Schritt des Assistenten. Das ist der entscheidende Punkt. Colang nutzt Natural Language Descriptions, um die Lücke zwischen striktem Code und menschlicher Mehrdeutigkeit zu schließen. Anstatt komplexe Regular Expressions zu schreiben, um eine User Message zu parsen, instruierst du das System mit menschlicher Sprache direkt in deiner Flow-Logik. Du kombinierst diese Descriptions mit dem Generation Operator, der einfach als drei Punkte geschrieben wird. Wenn die State Machine auf diese drei Punkte trifft, pausiert sie kurzzeitig die Execution. Sie übergibt den aktuellen Context und deine Natural Language Description an das zugrunde liegende Language Model und bittet es, genau den Wert zu generieren oder zu extrahieren, den du brauchst. Schauen wir uns ein konkretes Szenario an, wie die Buchung eines Flugtickets. Du musst wissen, wann der User reisen möchte. In deiner Colang-Datei definierst du einen Flight Booking Flow. Innerhalb dieses Flows sagst du dem System, dass es warten soll, bis der User spricht. Sobald er das tut, musst du das Datum extrahieren. Du deklarierst eine Context Variable, vielleicht namens flight date. Du weist ihr den Wert einer Natural Language Description zu und schreibst buchstäblich den Satz, das Datum, an dem der User fliegen möchte, aus, direkt gefolgt vom Generation Operator, diesen drei Punkten. Wenn der User sagt, ich brauche ein Ticket für nächsten Dienstag, erfasst die Colang State Machine das Event. Sie trifft auf dein Variable Assignment. Sie übergibt die User Message und deine Natural Language Instruction an das Language Model. Das Model liest den Context, identifiziert nächsten Dienstag als Zielwert und gibt ihn zurück. Der Generation Operator wird aufgelöst, und deine Context Variable hält nun sicher das extrahierte Datum. Dein Flow geht dann zum nächsten Schritt über, was vielleicht den Aufruf einer externen Booking API beinhaltet, die drüben in deiner YAML-Konfiguration definiert ist. Die wahre Stärke dieser Architektur ist, dass du aufhörst, Dialogue States mit starrem Code zu bekämpfen. Du lässt eine YAML-Datei die statische Infrastruktur festzurren, und du lässt Colang die Reasoning-Fähigkeit des Language Models nutzen, um durch die unvorhersehbare Realität menschlicher Konversation zu navigieren. Ich möchte mir kurz einen Moment nehmen, um dir fürs Zuhören zu danken – das hilft uns sehr. Mach's gut!
3

Spezialisierte Content Safety mit Nemotron NIM

4m 01s

Erfahre, wie man die Moderation auf spezialisierte Hochgeschwindigkeitsmodelle auslagert. Wir behandeln die Nutzung des Nemotron Safety Guard 8B-Modells zum Abfangen unsicherer Prompts.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 3 von 10. Sich für grundlegende Content Moderation auf ein riesiges Modell mit siebzig Milliarden Parametern zu verlassen, ist eine massive Verschwendung von Compute. Es ist langsam, teuer und nimmt Processing Power weg, die du für das Generieren echter Antworten brauchst. Die Lösung ist spezialisierte Content Safety mit Nemotron NIM. Anstatt dein primäres Application Model sowohl Code schreiben als auch auf Toxicity prüfen zu lassen, teilst du die Workload auf. Das Main Model übernimmt das komplexe Reasoning und die Generierung. Ein zweites, deutlich kleineres Modell kümmert sich um die Security. Konkret schauen wir uns den Llama 3 Punkt 1 Nemotron Safety Guard 8B V3 an. Das ist ein Modell mit acht Milliarden Parametern, das komplett für einen einzigen Job ge-finetuned wurde: die Evaluierung von Content Safety. Es läuft als eigenständiger Microservice, oder NIM, den NeMo Guardrails über eine API aufruft. Um das aufzusetzen, definierst du den Nemotron NIM in deiner Guardrails-Configuration als separates Modell. Du setzt seinen Typ auf Content Safety, während dein primäres Modell der Main-Typ bleibt. Diese Unterscheidung ist extrem wichtig, weil Guardrails den Traffic basierend auf diesen Labels unterschiedlich routet. Sobald das konfiguriert ist, aktivierst du den Safety Guard als Input Rail und Output Rail. Wenn ein User einen Prompt sendet, fängt Guardrails ihn ab, bevor er jemals dein Main Model erreicht. Es sendet den Prompt an den Nemotron Safety NIM. Der NIM evaluiert den Text gegen dreiundzwanzig spezifische Kategorien für unsicheren Content. Diese Kategorien decken alles ab, von Hate Speech und Gewalt bis hin zu sexuellem Content und krimineller Planung. Stell dir eine mehrsprachige Application vor, bei der ein User einen Prompt auf Französisch abschickt und nach einer Schritt-für-Schritt-Anleitung fragt, wie man ein Auto kurzschließt. Die Input Rail fängt das ab. Guardrails schickt den französischen Text an den Nemotron NIM. Weil das Safety Model mit mehrsprachigen Safety-Daten trainiert wurde, versteht es den Intent unabhängig von der Sprache. Es flaggt den Request, da er in die Kategorie für kriminelle Beratung fällt, und gibt ein Unsafe-Signal an Guardrails zurück. Guardrails stoppt den Prozess dann sofort und gibt eine Standard-Refusal-Message an den User zurück. Dein Main Model sieht den Prompt gar nicht erst, was dir die Inference Cost für die Verarbeitung eines toxic Requests spart. Genau dieselbe Logik gilt umgekehrt für Output Rails. Falls ein scheinbar harmloser Prompt das Main Model irgendwie dazu bringt, eine unsichere Response zu generieren, fängt Guardrails diesen generierten Text ab, bevor er den User erreicht. Es sendet den Output an den Safety NIM, checkt ihn gegen dieselben dreiundzwanzig Kategorien und blockiert ihn, wenn er die Regeln verletzt. Um das aufzusetzen, musst du deine Configuration Files updaten. Du deklarierst das Nemotron-Modell in deiner Models-Liste und lässt es auf deinen NIM Endpoint zeigen. Dann aktivierst du die Default Self-Check Input und Self-Check Output Flows und sagst Guardrails explizit, dass es dein Content Safety Model für diese Checks nutzen soll. Du musst keine Custom Prompts schreiben, die dem Modell vorgeben, wie es Toxicity evaluieren soll. Das Nemotron-Modell erwartet ein ganz spezifisches Prompt-Format, um Text zu evaluieren, und NeMo Guardrails formatiert diesen API Call automatisch im Hintergrund. Du lässt die Rails einfach auf den NIM zeigen und überlässt ihm die Classification. Indem du deine Moderation Logic in ein dediziertes, kleineres Modell entkoppelst, stellst du sicher, dass dein primäres Application Model seine Cycles dafür nutzt, Value zu generieren, während ein spezialisierter Guard effizient die Perimeter Security übernimmt. Das war's für diese Folge. Danke fürs Zuhören und keep building!
4

Durchsetzung von Domänengrenzen mit Topic Control

3m 57s

Verhindere PR-Desaster, indem du deine Bots strikt beim Thema hältst. Lerne, wie man Topic Control Input Rails implementiert, um unerlaubte Konversationen zu blockieren.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 4 von 10. Der einfachste Weg, ein PR-Desaster mit deinem Chatbot zu verhindern, ist sicherzustellen, dass er sich einfach weigert, über das Desaster zu sprechen. Du kannst dich nicht darauf verlassen, dass ein allgemeines Language Model jedes irrelevante oder riskante Thema von sich aus zuverlässig ablehnt. Deshalb setzen wir Domain Boundaries mit Topic Control durch. Allgemeine Language Models sind darauf bedacht, es allen recht zu machen. Wenn ein User eine clevere Frage stellt, versucht das Model, sie zu beantworten. Wenn du einen Customer Service Bot baust, willst du, dass er ausschließlich über Customer Service spricht. Du brauchst eine strikte Boundary. Um diese Boundary zu schaffen, nutzt du das Llama 3.1 NemoGuard 8B TopicControl NIM. Das ist ein spezialisiertes Model, das für eine ganz bestimmte Aufgabe entwickelt wurde. Es generiert keine Conversational Responses. Es evaluiert. Stell dir einen Telecom Support Bot vor. Seine Aufgabe ist es, Usern bei Telefonrechnungen, Netzwerkausfällen und Datentarifen zu helfen. Ein User verbindet sich mit dem Chat und fragt den Bot nach seiner Meinung zu einer aktuellen politischen Wahl. Ohne Guardrails empfängt dein Main Model den Prompt, verarbeitet ihn und generiert vielleicht eine unpassende Response. Mit NeMo Guardrails konfigurierst du eine Input Rail. Eine Input Rail fängt den User Request ab, bevor irgendetwas anderes passiert. Das Main Language Model sieht den Request gar nicht erst. Wenn der User nach der Wahl fragt, routet die Guardrail den Input direkt an das TopicControl Model. Du steuerst das Verhalten dieses Models, indem du in seinem System Prompt strenge Guidelines definierst. Für deinen Telecom Bot legt dein System Prompt fest, dass zulässige Themen Abrechnung, Netzwerkstatus und Account Management sind. Das TopicControl Model nimmt den User Prompt und gleicht ihn genau mit diesen Guidelines ab. Anschließend gibt es eine strikte Klassifizierung aus. Es gibt entweder eine On-Topic- oder eine Off-Topic-Bewertung zurück. Wenn der User fragt, warum seine Roaming-Gebühren hoch sind, liest das TopicControl Model den Prompt, prüft die Guidelines und gibt on-topic zurück. Die Guardrail öffnet das Tor, und der User Prompt geht an dein Main Conversational Model durch, um eine hilfreiche Antwort zu generieren. Wenn der User nach der politischen Wahl fragt, evaluiert das TopicControl Model den Prompt anhand der Telecom Guidelines. Es erkennt den Mismatch und gibt off-topic zurück. Die Guardrail stoppt die Pipeline sofort. Sie verhindert, dass der Request dein Main Model erreicht. Stattdessen triggert die Guardrail eine vordefinierte, statische Refusal Response. Der Bot teilt dem User mit, dass er nur für Telecom Services zuständig ist. Ein dediziertes Model für Topic Control zu nutzen, trennt die Evaluation Logic von der Conversational Logic. Du verschwendest keine teuren Compute Cycles, indem du ein riesiges General-Purpose Model fragst, ob es eine Frage beantworten darf. Du nutzt ein kleineres, hochoptimiertes Acht-Milliarden-Parameter-Model, das als Türsteher an der Tür fungiert. So bleiben deine Domain Boundaries strikt durchgesetzt, ohne dass komplexes, fehleranfälliges Prompt Engineering bei deinem Primary Model nötig ist. Der sicherste Weg, mit einem Out-of-Bounds Request umzugehen, ist sicherzustellen, dass deine Primary Reasoning Engine überhaupt nicht mitbekommt, dass der Request jemals gestellt wurde. Das war’s für diese Folge. Danke fürs Zuhören und keep building!
5

Dynamische PII Detection und Masking

4m 09s

Schütze sensible Nutzerdaten über Inputs, Outputs und Retrievals hinweg. Diese Episode detailliert das dynamische PII Masking mithilfe von GLiNER- und Presidio-Integrationen.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 5 von 10. Wenn dein Retrieval-Augmented Generation System eine ungeschwärzte Mitarbeiterdatenbank verarbeitet, hast du bereits einen Compliance-Verstoß begangen, noch bevor das Language Model auch nur ein einziges Wort generiert. Sobald sensible Daten in den Prompt Context gelangen, verlierst du die Kontrolle darüber, wo sie landen. Dynamische PII Detection und Masking ist die Methode, mit der du diese Daten in transit abfängst. Schauen wir uns einen internen HR-Bot an. Ein Manager stellt dem Bot eine allgemeine Frage zur Performance-Review-Policy des Unternehmens. Der Bot durchsucht die interne Knowledge Base. Die Suche liefert das relevante Policy-Dokument, aber die retrieved Text Chunks enthalten versehentlich einen spezifischen Mitarbeiterdatensatz, der an die Datei angehängt ist – komplett mit Name, Privatadresse und E-Mail. Wenn das System diese retrieved Chunks direkt an das Language Model weitergibt, werden diese sensiblen Daten Teil des Context Windows. NeMo Guardrails löst dieses Problem, indem es zwischen den Komponenten deiner Application sitzt und den Text Stream filtert. Es bietet zwei verschiedene Ansätze. Detection bedeutet, Personally Identifiable Information zu identifizieren und eine harte Maßnahme zu ergreifen, wie zum Beispiel den Prompt komplett zu blockieren oder einen Error zu werfen. Masking ist flexibler. Es findet die sensiblen Informationen und ersetzt sie on the fly durch einen generischen Placeholder. Der Text john@example.com wird zu einem String in Klammern, in dem EMAIL steht. Die zugrundeliegende Datenbank bleibt komplett unberührt. Um das auszuführen, verlässt sich das Guardrails-System auf spezialisierte externe Tools. Du konfigurierst das Framework so, dass es eine Engine wie Microsoft Presidio oder GLiNER aufruft. Presidio verwendet typischerweise Pattern Matching, Regular Expressions und regelbasierte Logik, um Standardformate wie Telefonnummern oder Kreditkarten zu erkennen. GLiNER, was für Generalist and Lightweight Indicator for Named Entity Recognition steht, verwendet ein kleines Machine-Learning-Modell, um Entities basierend auf dem umgebenden Kontext zu identifizieren. Du definierst ein Array von Entity Types, die dich interessieren, und die ausgewählte Engine übernimmt die Extraction. Dieser Schutz greift an drei spezifischen Punkten im Application Flow. Der erste ist die Input Rail. Wenn ein User seine eigene Sozialversicherungsnummer in das Chatfenster eintippt, scannt die Input Rail den eingehenden String und maskiert die Nummer, bevor das Language Model den Prompt überhaupt erhält. Das Modell verarbeitet den Request mit dem Placeholder, völlig blind für die tatsächliche Nummer. Der zweite Punkt ist die Retrieval Rail. Das ist der Teil, auf den es ankommt. Wenn dein System eine Vector Database abfragt und Raw Text Chunks zurückholt, fängt die Guardrail diese Chunks ab, bevor sie in das finale Prompt Template injected werden. Sie scannt den retrieved Text, entfernt die echten Namen und Adressen und ersetzt sie durch die maskierten Tags. Dein Retrieval-Mechanismus kann aus unaufgeräumten, ungeschwärzten Datenquellen ziehen, aber das Language Model wird vor den sensiblen Details abgeschirmt. Der dritte Punkt ist die Output Rail. Wenn das Language Model sensible Daten generiert, entweder weil es sie halluziniert oder weil ein Datensatz irgendwie an den vorherigen Rails vorbeigerutscht ist, fungiert die Output Rail als finaler Checkpoint. Sie scannt die generierte Response und maskiert den sensiblen Text, bevor er den User-Screen erreicht. Weil all das dynamisch im Memory während der Ausführung eines einzelnen Requests passiert, muss sich deine Datenarchitektur nicht ändern. Du vermeidest den massiven Engineering Overhead, doppelte, vorab geschwärzte Datenbanken zu pflegen, nur um eine Chat Application zu betreiben. Der sicherste Weg, sensible Daten in einer Language Model Application zu handhaben, ist sicherzustellen, dass das Modell gar nicht erst mit den tatsächlichen Daten rechnet. Das war's für diese Folge. Danke fürs Zuhören und keep building!
6

Jailbreak Detection durch Perplexity Heuristics

4m 35s

Verteidige dich gegen feindliche Prompt Injections mithilfe mathematischer Heuristiken. Lerne, wie Perplexity Scoring Jailbreaks abfängt, bevor sie das LLM erreichen.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 6 von 10. Einige der verheerendsten Prompt Injection Attacks sehen überhaupt nicht wie cleveres Social Engineering aus. Für einen Menschen wirken sie wie reines Kauderwelsch. Der User versucht nicht, den Bot mit einem Rätsel auszutricksen, sondern ihn mathematisch zu überfordern. Um das abzufangen, brauchst du Jailbreak Detection über Perplexity Heuristics. Stell dir ein konkretes Angriffsszenario vor. Ein böswilliger User will, dass deine Applikation etwas Schädliches ausgibt, aber er weiß, dass du Safety Instructions in deinem System Prompt hast. Um diese zu umgehen, nimmt er seine schädliche Anfrage und füllt sie mit einem riesigen String aus zufälligen Zeichen, obskuren Symbolen oder sinnlosen Wörtern auf. Wenn das Sprachmodell diesen Input verarbeitet, werden die Attention-Mechanismen durch die schiere Menge unvorhersehbarer Tokens überlastet. Das Modell verliert sein zugrundeliegendes Safety Alignment aus den Augen und beantwortet einfach die schädliche Anfrage. Du kannst diesen Angriff nicht mit Standard-Keyword-Filtern abfangen, weil das Padding zufällig ist. Du könntest ein anderes Sprachmodell nutzen, um den eingehenden Prompt auf Adversarial Patterns zu evaluieren, aber das fügt jedem einzelnen User Request eine massive Latency Penalty hinzu. Du brauchst einen Filter, der schnell und mathematisch ist und lokal läuft. Hier kommt Perplexity ins Spiel. Perplexity ist eine Standard-Metrik, die misst, wie vorhersagbar ein Textabschnitt für ein Sprachmodell ist. Normale menschliche Sätze folgen vorhersagbaren Mustern, was zu einer niedrigen Perplexity führt. Ein String aus zufälligen Zeichen oder eine bizarre Sequenz aus zusammenhanglosen Wörtern ist extrem unvorhersehbar. Das erzeugt eine hohe Perplexity. Indem du die Perplexity eines eingehenden Prompts berechnest, erhältst du ein statistisches Maß für seine Zufälligkeit. NeMo Guardrails nutzt dieses Konzept, um Kauderwelsch-Angriffe durch zwei Haupt-Heuristiken zu blockieren. Die erste ist Length per Perplexity. Adversarial Attacks erfordern normalerweise einen langen String aus sinnlosem Text, um das Main Model erfolgreich aus der Bahn zu werfen. Ein kurzer String aus Unsinn wird vom Attention-Mechanismus typischerweise ignoriert. Diese Heuristik berechnet ein Verhältnis aus der Gesamtlänge des Prompts und seinem gesamten Perplexity Score. Wenn ein Prompt sowohl ungewöhnlich lang als auch extrem unvorhersehbar ist, überschreitet er einen vordefinierten mathematischen Threshold. Die Guardrail fängt den Input ab, flaggt ihn als potenziellen Jailbreak und blockiert den Request, bevor dein Main Model ihn überhaupt zu Gesicht bekommt. Die zweite Heuristik kümmert sich um eine gezieltere Variante desselben Angriffs. Manchmal versteckt ein Angreifer das Kauderwelsch. Er schreibt einen völlig normalen Satz mit niedriger Perplexity in die Mitte seines Prompts, aber hängt ganz am Ende einen dichten Block aus zufälligen Tokens an. Wenn du die Perplexity über den gesamten Prompt berechnest, könnte der normale Text den durchschnittlichen Score so weit verdünnen, dass er durch den ersten Filter rutscht. Um das zu kontern, nutzt NeMo Guardrails Prefix und Suffix Perplexity. Anstatt sich den ganzen Prompt anzusehen, isoliert diese Heuristik eine feste Anzahl von Tokens ganz am Anfang und ganz am Ende des User Inputs. Sie berechnet die Perplexity dieser Grenzen unabhängig voneinander. Wenn der User eine Adversarial Payload aus zufälligen Zeichen an das Ende einer normalen Frage anhängt, schießt der Suffix Perplexity Score in die Höhe. Die Guardrail erkennt die Anomalie an der Grenze und droppt den Request. Dieser gesamte Prozess passiert, ohne einen externen API Call an ein riesiges Sprachmodell zu machen. Er verlässt sich auf ein kleineres, lokales Modell, um die Perplexity Scores zu berechnen, was den Latency Overhead auf einem absoluten Minimum hält. Indem du die semantische Bedeutung des Textes entfernst, hörst du auf zu analysieren, was der User sagen will, und fängst an, die mathematische Form seiner Wörter zu analysieren. Perplexity Heuristics erlauben es dir, komplexe Adversarial Attacks mithilfe von reinen Statistiken zu blockieren und deine Applikation mit der Geschwindigkeit von Mathematik abzusichern. Danke fürs Zuhören, Happy Coding zusammen!
7

Absicherung von Agentic Workflows mit Execution Rails

4m 18s

Schütze die Tools, die deine autonomen Agenten nutzen, vor Ausbeutung. Wir analysieren YARA-Regeln und Execution Rails zum Blockieren von Code- und SQL-Injections.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 7 von 10. Einem Sprachmodell Zugriff auf Database Queries zu geben, ist, als würdest du einem Fremden die Schlüssel zu deiner Datenbank geben. Du weist das Modell an, User-Daten abzurufen, aber ein cleverer Prompt trickst es aus und hängt einen Command an, um eine Table zu droppen. Wenn du Agentic Workflows mit Execution Rails absicherst, verhinderst du, dass autonome Agents dein Backend kompromittieren. Die meisten Guardrails konzentrieren sich auf die Chat Response. Sie verhindern, dass das Modell unangebrachte Sprache verwendet oder off-topic geht. Execution Rails machen etwas völlig anderes. Sie schützen die Tools, die der Agent nutzt. Wenn ein Agent entscheidet, ein Tool zu nutzen, um ein generiertes Python-Skript oder eine SQL Query auszuführen, fängt die Execution Rail die Payload genau am Handoff-Punkt ab, kurz bevor das Tool wirklich läuft. NeMo Guardrails übernimmt diese Validation mit YARA Rules. YARA ist eine Pattern-Matching-Engine, die traditionell von Cybersecurity-Analysten genutzt wird, um Malware anhand spezifischer Text- oder Binär-Signaturen zu identifizieren. In diesem Framework stellt NVIDIA einen vordefinierten Katalog von YARA Patterns bereit, der speziell dafür gebaut wurde, Schwachstellen in Sprachmodellen abzufangen. Die Guardrails Engine leitet den Tool Input durch diese YARA Rules, um nach bekannten Attack-Signaturen zu suchen. Dieser Katalog zielt auf vier spezifische Threats ab. Erstens SQL Injection, bei der das Modell Database Commands mit bösartigen Modifikationen generiert. Zweitens Code Injection, bei der der Agent versucht, unautorisierte System Commands innerhalb eines dynamisch generierten Python-Skripts auszuführen. Drittens Template Injection, bei der ein Angreifer Server-Side Rendering Engines manipuliert. Und schließlich erkennt er Cross-Site Scripting und blockiert Payloads, die darauf ausgelegt sind, bösartige Skripte in einem Webbrowser auszuführen. Stell dir einen Agenten vor, der die Aufgabe hat, einen User Request entgegenzunehmen, ein Python-Skript zur Verarbeitung lokaler Daten zu schreiben und es auszuführen. Wenn ein User einen System Command in seinem Prompt versteckt, um Environment Variables auszulesen, könnte das Sprachmodell diesen Command blind in das finale Python-Skript einfügen. Die Execution Rail fängt das ab. Sie scannt den generierten Python-Code, matcht die YARA Rule für Code Injection und flaggt die Payload, bevor die Execution Engine sie überhaupt zu Gesicht bekommt. Wenn das System ein bösartiges Pattern erkennt, reagiert es basierend auf deiner Configuration. Du hast zwei Möglichkeiten. Die erste Action ist Reject. Das blockiert die Tool Execution komplett. Der Workflow stoppt, der bösartige Code wird nie ausgeführt, und das System gibt eine sichere Response zurück. Die zweite Action ist Omit. Das sagt der Guardrail, dass sie den spezifischen bösartigen String aus der Payload entfernen soll, aber dem Tool erlaubt, den Rest auszuführen. Die Wahl zwischen Reject und Omit hängt komplett vom Tool ab. Wenn dein Agent eine SQL Query gegen eine Datenbank ausführt, ist Reject die einzig sichere Wahl. Einen String aus einer komplexen SQL Query zu entfernen, führt wahrscheinlich zu fehlerhafter Syntax oder unvorhersehbarem Datenzugriff. Omit ist generell für einfache Text Processing Tasks reserviert, bei denen das Entfernen eines schlechten Strings immer noch eine brauchbare, sichere Payload hinterlässt. Du konfigurierst diese Schutzmechanismen direkt in deinen YAML-Files, indem du die Agentic Security Rails aktivierst und sie spezifischen Tools zuordnest. Die zugrundeliegende YARA Engine übernimmt die schwere Arbeit und matcht die vordefinierten Patterns, ohne dass du Custom Regular Expressions schreiben musst. Execution Rails behandeln das Sprachmodell wie einen nicht vertrauenswürdigen User und zwingen dich dazu, jeden einzelnen Command, den es generiert, zu validieren, bevor er deine Infrastruktur berührt. Danke fürs Zuhören, Happy Coding zusammen!
8

Grounding RAG: Halluzinationen und Fact-Checking

3m 56s

Stelle sicher, dass deine RAG-Anwendungen keine Fakten erfinden. Lerne, wie man Output Rails konfiguriert, um Antworten anhand abgerufener Wissensbausteine zu verifizieren.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 8 von 10. Ein Bot, der sagt, dass er die Antwort nicht kennt, ist ein bisschen nervig. Ein Finanz-Bot, der selbstsicher verkündet, dass dein Unternehmen sein Umsatzziel für das dritte Quartal um fünfzig Millionen Dollar verfehlt hat, obwohl es das Ziel eigentlich übertroffen hat, ist eine Katastrophe. Damit dein Retrieval-Augmented Generation System keine Zahlen erfindet und deine Glaubwürdigkeit zerstört, brauchst du Grounding RAG: Hallucinations und Fact-Checking. Lass uns gleich mal ein häufiges Missverständnis aus dem Weg räumen. Fact-Checking und Hallucination Detection sind zwei verschiedene Dinge. Bei der Hallucination Detection stellst du dem Language Model typischerweise mehrmals dieselbe Frage. Wenn sich die generierten Samples widersprechen, halluziniert das Model wahrscheinlich. Fact-Checking hingegen evaluiert eine einzelne generierte Antwort anhand einer bestimmten Menge an vertrauenswürdigen Dokumenten. NeMo Guardrails nutzt Fact-Checking, um deine RAG Pipelines grounded zu halten. Language Models sagen Text voraus. Sie wissen nicht von sich aus, was wahr ist. In einem Standard RAG Setup holst du Text Chunks aus deiner Database, fütterst sie in das Model und bittest es, nur auf Basis dieses Textes zu antworten. Manchmal halluziniert das Model trotzdem, vermischt sein pre-trained Wissen mit deinen Daten oder erfindet einfach eine plausibel klingende Metrik. NeMo Guardrails verhindert das mit einer Output Rail namens self check facts. Wenn sie aktiv ist, fängt diese Rail die generierte Response des Models ab, bevor sie an den User geht. Das System behandelt diese unbestätigte Response als Hypothese. Dann zieht es sich genau die Text Snippets, die aus deiner Database retrieved wurden. Diese Snippets werden automatisch in einer Context Variable namens relevant chunks gespeichert. Diese Variable ist der harte Beweis. Die Guardrail führt dann eine Evaluation durch. Sie übergibt die Hypothese und den Beweis an ein Evaluator Model. Der Evaluator prüft, ob der Beweis die Hypothese strikt belegt. Um auf unseren Finanz-Bot zurückzukommen: Wenn der generierte Text eine bestimmte Umsatzzahl behauptet, diese Zahl aber nirgendwo in der relevant chunks Variable existiert, flaggt der Evaluator sie als ungrounded. Die Guardrail blockt die halluzinierte Response sofort. Stattdessen liefert sie eine sichere Fallback Message aus und gibt zu, dass sie nicht genug Informationen hat. Ein General Purpose Language Model für das Fact-Checking zu nutzen, ist einfach aufzusetzen, aber es hat seinen Preis. Es erhöht die Latency, verbrennt Tokens, und das Evaluator Model kann bei dichtem Context manchmal durcheinanderkommen. Du bist aber nicht gezwungen, das Default Setup zu nutzen. Du kannst das standardmäßige Prompt-basierte Checking durch spezialisierte externe Tools ersetzen. Ansätze mit Models wie AlignScore oder Patronus Lynx sind hier extrem effektiv. Das sind Purpose-built Models, die exklusiv darauf trainiert wurden, Inkonsistenzen zwischen einem Source Text und einer generierten Behauptung zu erkennen. Wenn du die relevant chunks und die Hypothese durch eines dieser spezialisierten Models routest, umgehst du den Standard Language Model Evaluator komplett. Das liefert ein schnelleres, günstigeres und oft rigoroseres Urteil darüber, ob dein Bot die Wahrheit sagt. Das ist der Teil, auf den es ankommt. Beim Grounding einer RAG Pipeline geht es nicht darum, dein generatives Model von Grund auf wahrheitsgetreuer zu machen. Es geht darum, jedes einzelne generierte Wort als verdächtige Behauptung zu behandeln, die ein strenges Kreuzverhör mit deinen exakten Source Data überstehen muss, bevor sie jemals das Licht der Welt erblickt. Wenn du uns dabei helfen willst, weiterhin diese Episoden zu machen, kannst du die Show unterstützen, indem du auf Patreon nach DevStoriesEU suchst. Das war's für diese Folge. Danke fürs Zuhören und keep building!
9

Multimodale Content Safety

3m 38s

Textfilter versagen, wenn Nutzer Screenshots von bösartigen Prompts hochladen. Entdecke, wie man Vision-Modelle als Judges einsetzt, um multimodale Anwendungen abzusichern.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 9 von 10. Du verbringst Wochen damit, deine Input-Filter zu tunen, um schädliche Text Prompts zu blockieren. Dann umgeht ein User all deine harte Arbeit, indem er einfach einen Screenshot von seinem böswilligen Prompt macht und ihn als Bild hochlädt. Textfilter sind dafür völlig blind. Um das abzufangen, brauchst du Multimodal Content Safety. Stell dir einen User vor, der ein Bild von einem modifizierten Sturmgewehr hochlädt und die Frage eintippt, wie kann ich das modifizieren, damit es schneller schießt. Eine Standard-Text-Guardrail sieht nur eine Anfrage zur Modifizierung eines generischen Objekts. Sie hat keine Ahnung, dass das Objekt eine Waffe ist. Die böswillige Absicht existiert erst, wenn du das Bild und den Text kombinierst. Wir lösen das, indem wir ein Vision Language Model nutzen, das als LLM-as-a-Judge fungiert. In NeMo Guardrails konfigurierst du das in der Input Rail Stage. Bevor der User Request jemals dein Main Conversational Model erreicht, fängt die Guardrail den multimodalen Payload ab. Die Bilddaten kommen üblicherweise in einem von zwei Formaten an. Es ist entweder ein Base64-kodierter String, der direkt in den API Call eingebettet ist, oder eine direkte URL. Base64 Strings machen den unmittelbaren Request Payload viel größer, garantieren aber, dass das Bild verfügbar ist. URLs halten den initialen Payload klein, erfordern aber, dass das evaluierende Modell ausgehenden Netzwerkzugriff hat, um die Datei abzurufen. So oder so konfigurierst du die Input Rail mit einem spezifischen Prompt Template, das für multimodale Evaluierung designt ist. Dieses Template enthält eine strenge Rubrik, die Kategorien für Unsafe Content definiert, wie Gewalt, illegale Handlungen, Selbstverletzung oder Waffen. Die Guardrail baut einen Evaluation Request zusammen. Sie verpackt deine Safety-Rubrik, den User-Text und das User-Bild. Sie sendet dieses kombinierte Paket an das Vision Model und zwingt das Modell, mit einem Structured Output zu antworten, typischerweise einem simplen Safe oder Unsafe Label. Das Modell agiert strikt als Judge. Es analysiert die Waffe auf dem Foto, liest den Request zur Modifizierung und gleicht die kombinierte Bedeutung mit deinen eingeschränkten Kategorien ab. Wenn das Vision Model einen Verstoß erkennt, liefert es ein Unsafe Verdict zurück. Die Input Rail flaggt den Request, blockiert die Weiterverarbeitung und triggert eine vordefinierte Refusal Message. Dein primäres Application Model sieht den böswilligen Request gar nicht erst. Achte auf diesen Punkt bezüglich Context Limits. Vision Models verarbeiten Bilder, indem sie diese in Tokens umwandeln. Je nach Modellarchitektur und Bildauflösung kann ein einzelnes Bild Tausende von Tokens verbrauchen. Dein Base64 String oder die Image-URL muss, kombiniert mit dem User-Text und deiner Multi-Category Safety Rubrik, vollständig in das Context Window des Vision Models passen. Wenn du riesige, hochauflösende Bilder zusammen mit langem Prompt-Text übergibst, wirst du das Token Limit überschreiten. Die Guardrail Evaluation wird fehlschlagen, oder das Modell schneidet den Input ab und übersieht den Verstoß komplett. Du musst ein Preprocessing implementieren, um Bilder zu verkleinern oder zu komprimieren, bevor sie die Guardrail erreichen, damit der Token Footprint vorhersehbar bleibt. Text und Bilder isoliert zu evaluieren, reicht nicht mehr aus, denn moderner Missbrauch versteckt sich genau in dem Raum, wo sich diese beiden Modalitäten überschneiden. Danke, dass du ein paar Minuten mit mir verbracht hast. Bis zum nächsten Mal, mach's gut.
10

Enterprise Integration Patterns

3m 59s

Skaliere deine Guardrails im gesamten Unternehmen. Wir betrachten die Integration über das Python SDK, LangChain Runnables und den Standalone API Server.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. NVIDIA NeMo Guardrails, Folge 10 von 10. Sicherheitsregeln direkt in einem Python-Skript zu erstellen, ist super fürs Testing, aber furchtbar für die Skalierung in einem polyglotten Enterprise-Umfeld. Wenn dein Frontend Node JS nutzt und dein Backend ein Mix aus Python und Go ist, kannst du deine Sicherheitslogik nicht in jeder Sprache duplizieren. Die Lösung ist die Nutzung der drei Enterprise Integration Patterns für NeMo Guardrails. Nehmen wir ein typisches Migrationsszenario. Du hast einen Kundenservice-Bot-Prototyp mit LangChain gebaut. Du hast Guardrails hinzugefügt, um zu verhindern, dass er über Konkurrenten spricht. Auf deinem Laptop funktioniert er perfekt. Jetzt musst du diesen Prototyp in eine skalierbare Production-Microservice-Architektur migrieren, wo mehrere Applications ihn abfragen. Du hast drei Hauptwege, die Guardrails zu integrieren, um das umzusetzen. Die erste Methode ist das native Python SDK, genauer gesagt ein Objekt namens LLMRails. Das ist die Core-Engine. Wenn du ein eigenes Python-Backend von Grund auf neu baust, ohne dich auf Orchestrierungs-Frameworks zu verlassen, nutzt du das. Du instanziierst LLMRails, verweist es auf dein Configuration Directory mit deinen Colang- und YAML-Files und nutzt es, um Inputs zu verarbeiten. Du übergibst eine Liste von Message-Dictionaries, die die Conversation History repräsentieren, und es gibt die evaluierte Response zurück. Das ist sehr direkt und gibt dir Raw-Access auf die zugrunde liegenden Guardrails-Mechaniken. Da du bereits einen LangChain-Prototyp hast, ist es verschwendeter Aufwand, alles neu zu schreiben, um das Raw SDK zu nutzen. Hier kommt die zweite Methode ins Spiel, nämlich die LangChain-Integration mit RunnableRails. NeMo Guardrails integriert sich nativ in die LangChain Expression Language. Du erstellst eine RunnableRails-Instanz, lädst sie mit deiner Configuration und hängst sie direkt an deine bestehende Chain an. Wenn deine Chain einen Prompt entgegennimmt, Documents abruft und ein Language Model aufruft, wrappst du diesen gesamten Flow mit dem Guardrail-Runnable. Die Guardrail fängt den Input ab, bevor er deine Chain erreicht, und evaluiert den Output, nachdem deine Chain eine Response generiert hat. Dein Core-Application-Code ändert sich kaum, aber deine LangChain-Logik ist jetzt geschützt. Das ist der Teil, auf den es bei der Skalierung ankommt. Denk mal an das gesamte Enterprise-Umfeld. Ein anderes Team möchte exakt dieselben Safety Policies nutzen, baut aber ein Web-Gateway in Node JS oder einen High-Performance-Router in Go. Sie können kein Python-LangChain-Objekt importieren. Dafür nutzt du die dritte Methode: den Standalone API Server. NeMo Guardrails bringt einen Built-in-Server mit, den du über die Command Line ausführen oder als Container deployen kannst. Du startest den Server und verweist ihn auf deinen Configuration-Folder. Er stellt sofort REST-Endpoints bereit, die die Standard-OpenAI-API nachahmen. Für deine Go- oder Node JS-Applications sieht der Guardrails-Server exakt wie ein Standard-Language-Model aus. Sie senden Standard-JSON-Requests an den Chat Completions Endpoint. Der Server übernimmt die Input-Guardrails, kommuniziert mit dem eigentlichen zugrunde liegenden Model, verarbeitet die Output-Guardrails und gibt den sauberen Text zurück. Deine Regeln über einen Standalone-Server von deiner Application-Logic zu entkoppeln, ist der einzige zuverlässige Weg, um konsistente Safety Policies in einer gesamten Organisation durchzusetzen. Schau dir die offizielle Documentation an, um diese Integration Patterns hands-on auszuprobieren, oder besuche DEV STORIES DOT EU, um Themen für zukünftige Serien vorzuschlagen. Danke, dass du ein paar Minuten mit mir verbracht hast. Bis zum nächsten Mal, mach's gut.