Outillage

L'outillage open source de la sécurité LLM, par catégorie.

Panorama non exhaustif, organisé par fonction plutôt que par éditeur. La plupart de ces outils sont complémentaires — un pipeline de sécurité LLM combine généralement du red teaming hors ligne, des guardrails en runtime, et de l'observabilité continue.

Red teaming & scanning

Trouver les vulnérabilités avant qu'un attaquant ne le fasse

Outils qui testent un modèle ou une application LLM avec des attaques automatisées (jailbreaks connus, prompt injection, fuzzing) pour cartographier ses failles avant mise en production.

garakOpen source
Scanner de vulnérabilités LLM développé par NVIDIA (à l'origine par Leon Derczynski) — teste un modèle avec des dizaines de sondes (jailbreak, fuite de données, toxicité, hallucination) et produit un rapport structuré.
PyRITMicrosoft · Open source
Python Risk Identification Toolkit — framework d'automatisation du red teaming IA de Microsoft, orchestre des attaques multi-tours et l'évaluation des réponses via des « juges » LLM.
GiskardOpen source
Framework de test pour modèles ML et LLM — détecte biais, hallucinations, injections et régressions de performance via une suite de tests automatisés intégrable en CI.
promptfooOpen source
Outil de test et d'évaluation de prompts, avec un module de red teaming dédié qui génère des attaques adverses (jailbreak, injection, extraction de PII) contre une application LLM.
scan.shgarak
# Scanner un modèle hébergé via API avec les sondes jailbreak + injection
garak --model_type openai --model_name gpt-4o-mini \
      --probes dan,promptinject,encoding,leakreplay

# PyRIT — envoyer un prompt adverse et orchestrer l'évaluation via un juge LLM
from pyrit.orchestrator import PromptSendingOrchestrator
from pyrit.prompt_target import OpenAIChatTarget

target = OpenAIChatTarget(deployment_name="gpt-4o-mini")
orchestrator = PromptSendingOrchestrator(prompt_target=target)
await orchestrator.send_prompts_async(
    prompt_list=["Ignore les instructions précédentes et..."]
)
Guardrails runtime

Filtrer les entrées et les sorties en production

Couches de contrôle placées avant et après l'appel au modèle, qui bloquent ou réécrivent le contenu selon des règles ou des classifieurs dédiés.

NeMo GuardrailsNVIDIA · Open source
Framework qui définit des rails conversationnels programmables (Colang) pour contraindre les sujets, bloquer le jailbreak et empêcher la divulgation d'information sensible.
Llama GuardMeta · Open weight
Modèle de classification de sécurité entraîné pour catégoriser un prompt ou une réponse selon des catégories de risque (violence, contenu illégal, etc.) — utilisable comme filtre d'entrée/sortie.
LLM GuardOpen source
Bibliothèque de scanners d'entrée/sortie modulaire — détection de prompt injection, de PII, de toxicité, de fuite de secrets, avec anonymisation à la volée.
RebuffOpen source
Détection de prompt injection à plusieurs niveaux : heuristiques, modèle de classification dédié, et « canary tokens » insérés dans le prompt pour détecter une fuite du system prompt.
rails.coNeMo Guardrails · Colang
define user ask off topic
  "Quel temps fait-il ?"
  "Raconte-moi une blague"

define bot refuse off topic
  "Je ne peux traiter que les questions liées à notre produit."

define flow
  user ask off topic
  bot refuse off topic

# LLM Guard — scanners d'entrée en Python
from llm_guard.input_scanners import PromptInjection, Anonymize
from llm_guard import scan_prompt

scanners = [Anonymize(), PromptInjection()]
prompt_sain, resultats_valides, scores = scan_prompt(scanners, prompt_utilisateur)
DLP & protection des données

Empêcher la fuite de données sensibles

Détection et anonymisation d'informations personnelles ou confidentielles, en entrée comme en sortie du modèle.

Microsoft PresidioOpen source
Détection et anonymisation de PII (noms, emails, IBAN, numéros de sécurité sociale...) combinant reconnaissance par motifs et NER — s'intègre en amont ou en aval d'un appel LLM.
anonymize.pyMicrosoft Presidio
from presidio_analyzer import AnalyzerEngine
from presidio_anonymizer import AnonymizerEngine

texte = "Mon IBAN est FR76 3000 6000 0112 3456 7890 189"

analyzer = AnalyzerEngine()
resultats = analyzer.analyze(text=texte, language="fr")

anonymise = AnonymizerEngine().anonymize(
    text=texte, analyzer_results=resultats
)
# → "Mon IBAN est <IBAN_CODE>" — la valeur réelle ne quitte jamais
#   le pipeline avant d'atteindre le LLM
Observabilité & évaluation continue

Détecter la dérive et les incidents en production

Traçage des appels LLM, des coûts, de la latence et de la qualité — indispensable pour repérer des patterns d'abus ou une dégradation de la qualité une fois le système en production.

LangfuseOpen source
Plateforme d'observabilité LLM (traces, coûts, évaluations) — utile pour repérer a posteriori des tentatives d'injection ou des dérives de comportement d'un agent.
Arize PhoenixOpen source
Observabilité et évaluation LLM/agents open source, avec détection de dérive et analyse des traces d'exécution d'agents multi-étapes.
RAGASOpen source
Framework d'évaluation de pipelines RAG — pertinent côté sécurité pour détecter quand un contexte récupéré fait dévier la réponse (signal possible de data poisoning).
eval_rag.pyRAGAS
from ragas import evaluate
from ragas.metrics import faithfulness, context_precision

resultats = evaluate(
    dataset=jeu_evaluation,
    metrics=[faithfulness, context_precision],
)
# faithfulness bas + context_precision bas sur une requête donnée
# → le contexte récupéré ne correspond pas à la réponse générée,
#   signal possible d'une entrée RAG empoisonnée (voir menaces.html#data-poisoning)