Garde-fous open source pour LLM : NeMo Guardrails et Guardrails AI en production
Un agent IA qui répond à un utilisateur, c’est une surface d’attaque. Le modèle peut halluciner, divulguer des données, accepter une injection de prompt, tenir des propos déplacés, sortir de son périmètre fonctionnel. Tester ces dérives en amont est utile, mais ne suffit pas : il faut aussi filtrer en temps réel, à l’entrée comme à la sortie. Deux projets open source dominent ce terrain : NeMo Guardrails de NVIDIA, et Guardrails AI. Tous deux installables sans dépendre du cloud.
Pourquoi des garde-fous, en plus du prompt système
Un prompt système bien rédigé pose le cadre, mais il reste contournable : injection de prompt, jailbreak, formulation détournée, contexte multi-tour. Un garde-fou est une couche déterministe, exécutée hors du LLM, qui inspecte chaque échange et décide de laisser passer, de bloquer, ou de réécrire. On parle de défense en profondeur : le modèle propose, la politique dispose. Cette séparation est aussi un atout d’audit, car les règles s’expriment en clair et se versionnent comme du code.
NeMo Guardrails : un langage dédié pour les conversations
NeMo Guardrails, publié sous licence Apache 2.0 par NVIDIA, introduit un format déclaratif appelé Colang pour décrire les flux de conversation autorisés, les sujets à éviter, les actions à appeler, et les vérifications à effectuer avant d’envoyer la réponse. Une politique typique combine plusieurs niveaux : un garde-fou d’entrée qui détecte une injection de prompt ou un sujet interdit, un garde-fou de dialogue qui canalise la conversation vers les intentions définies, un garde-fou d’exécution qui valide les appels d’outils, et un garde-fou de sortie qui inspecte la réponse pour bloquer données personnelles, propos toxiques ou contenu hors champ.
L’outil s’intègre nativement avec LangChain, OpenAI, Hugging Face et les LLM auto-hébergés type vLLM ou Ollama. La validation s’appuie sur des classificateurs locaux (intentions, toxicité), sur des règles déclaratives Colang, ou sur un second appel LLM de contrôle. C’est l’approche la plus complète si l’on construit un agent conversationnel structuré.
Guardrails AI : valider chaque sortie comme on valide une API
Guardrails AI, publié sous licence Apache 2.0 par Guardrails AI Inc., adopte un angle différent. L’outil traite la sortie d’un LLM comme un objet à valider contre un schéma : structure, types, longueur, ton, présence ou absence de PII, citations vérifiables, absence d’hallucination par rapport à un contexte fourni. Le projet maintient un Guardrails Hub, catalogue de validateurs réutilisables : détection de secrets, vérification d’URL, contrainte de format JSON, similarité sémantique, conformité à une liste blanche.
Quand un validateur échoue, plusieurs stratégies sont possibles : rejeter, redemander au modèle avec un prompt correctif, ou réparer automatiquement la sortie. Cette logique de schéma + retry rend Guardrails AI très adapté aux pipelines où la sortie LLM alimente une étape déterministe en aval, par exemple une API métier ou une base de données.
Comment les choisir, ou les combiner
Les deux outils ne se recouvrent que partiellement. NeMo Guardrails excelle sur le contrôle de flux conversationnel multi-tour et sur l’orchestration de garde-fous à plusieurs étages. Guardrails AI excelle sur la validation fine et structurée de chaque sortie. En pratique, les architectures sérieuses combinent les deux : NeMo Guardrails pour cadrer la conversation et bloquer les dérives en entrée, Guardrails AI pour valider strictement la sortie avant utilisation. Sur un agent simple en production, commencer par Guardrails AI suffit souvent, car la majorité des incidents proviennent de sorties mal formées ou hors politique.
Ce qui doit toujours être en place
Quel que soit l’outil, certaines règles sont non-négociables. Bloquer en entrée toute tentative d’injection de prompt connue (patterns de jailbreak publics, tentatives de redéfinition de rôle, encodages détournés). Détecter et masquer les données personnelles à la fois en entrée et en sortie. Limiter la conversation au périmètre fonctionnel défini, et journaliser les blocages pour analyse. Ajouter un mécanisme de remontée humaine quand la politique bloque une demande légitime, sous peine de frustrer les utilisateurs honnêtes.
Pour aller plus loin
Une fois la couche garde-fous en place, deux compléments naturels. D’abord Garak, que l’on présentera dans un prochain article, pour tester en amont la robustesse du dispositif face aux attaques connues. Ensuite Langfuse ou un équivalent d’observabilité, pour suivre le taux de blocage, les faux positifs, et les évolutions de comportement du modèle au fil des versions. Un garde-fou non mesuré dérive aussi vite que le modèle qu’il protège.
Mettre des garde-fous open source autour d’un LLM, c’est reconnaître que la sécurité d’un agent ne tient pas à la qualité du modèle seul, mais à la couche de contrôle qui l’entoure. Tout existe en open source : déclaratif, auditable, versionnable. Il reste à l’écrire, le tester et le faire vivre.
