Aller au contenu

LLM Guard - Cheatsheet Kit de Sécurité LLM

LLM Guard - Cheatsheet Kit de Sécurité LLM

LLM Guard (par Protect AI) est un kit de sécurité open-source pour les applications LLM. Il fournit une bibliothèque de scanners d”entrée (appliqués à la requête de l”utilisateur avant qu”elle n”atteigne le modèle) et de scanners de sortie (appliqués à la réponse du modèle avant qu”elle n”atteigne l”utilisateur) qui détectent et atténuent l”injection de prompt, les jailbreaks, la toxicité, la fuite de données personnelles, les secrets, les sujets interdits et plus encore. Les scanners peuvent nettoyer le contenu, évaluer le risque et bloquer les requêtes non sécurisées, ce qui en fait une couche de protection pratique pour les applications LLM en production.

Installation

MéthodeCommande
pippip install llm-guard
Avec ONNX (plus rapide)pip install "llm-guard[onnxruntime]"
Serveur API (Docker)lancer l”image officielle llm-guard-api
Première exécutiontélécharge les modèles de scanner (transformers)
Vérificationpython -c "import llm_guard; print(''ok'')"

Deux Étapes de Scannage

ÉtapeAppliquée àObjectif
Scanners d”entréeLa requête de l”utilisateurArrêter l”entrée malveillante/non sécurisée d”atteindre le modèle
Scanners de sortieLa réponse du modèleArrêter la sortie non sécurisée/avec fuite d”atteindre l”utilisateur

Scannage d”Entrée

from llm_guard import scan_prompt
from llm_guard.input_scanners import PromptInjection, Toxicity, Secrets

scanners = [PromptInjection(), Toxicity(), Secrets()]
sanitized, results, risk = scan_prompt(scanners, user_prompt)

if any(not ok for ok in results.values()):
    raise ValueError("Unsafe prompt blocked")
RetourSignification
sanitizedLa requête (possiblement modifiée)
resultsPass/fail par scanner
riskScores de risque par scanner (0–1)

Scanners d”Entrée

ScannerDétecte
PromptInjectionTentatives d”injection/jailbreak
ToxicityLangage toxique/abusif
SecretsClés API, tokens dans la requête
AnonymizeDonnées personnelles (redacte, avec dé-anonymisation ultérieure)
BanTopicsSujets non autorisés
BanSubstrings / BanCompetitorsListes de blocage
CodePrésence de code / langages spécifiques
TokenLimitRequêtes surdimensionnées
LanguageLangues inattendues

Scannage de Sortie

from llm_guard import scan_output
from llm_guard.output_scanners import NoRefusal, Sensitive, Relevance

scanners = [NoRefusal(), Sensitive(), Relevance()]
sanitized_resp, results, risk = scan_output(scanners, prompt, model_response)

Scanners de Sortie

ScannerVérifie
SensitiveFuite de données personnelles/secrets dans la réponse
NoRefusalDétecte les refus (signal de qualité/guardrail)
RelevanceLa réponse répond réellement à la requête
ToxicitySortie toxique
BiasContenu biaisé
MaliciousURLsLiens dangereux dans la sortie
DeanonymizeRestaurer les données personnelles redactées pour l”affichage fiable
FactualConsistencyLa réponse est cohérente avec le contexte

Flux Anonymize / Deanonymize PII

from llm_guard.input_scanners import Anonymize
from llm_guard.output_scanners import Deanonymize
from llm_guard.vault import Vault

vault = Vault()
safe_prompt, _, _ = scan_prompt([Anonymize(vault)], user_prompt)
# ... appeler le modèle avec safe_prompt ...
final, _, _ = scan_output([Deanonymize(vault)], safe_prompt, model_response)

Le Vault stocke le mapping pour que les entités redactées puissent être restaurées dans la réponse finale.

Déploiement

OptionNote
Bibliothèque in-processImporter et appeler scan_prompt/scan_output
Serveur APIllm-guard-api pour une passerelle agnostique au langage
Runtime ONNXInférence CPU plus rapide pour les modèles de scanner
ConfigÉchouer rapidement, seuils et stratégies de correspondance par scanner

Flux de Travail Courants

# Wrapper guardrail autour de n''importe quel appel LLM
def guarded_chat(user_input):
    prompt, r_in, _ = scan_prompt(input_scanners, user_input)
    if not all(r_in.values()):
        return "Request blocked by safety policy."
    resp = call_llm(prompt)
    out, r_out, _ = scan_output(output_scanners, prompt, resp)
    return out if all(r_out.values()) else "Response withheld by safety policy."

LLM Guard vs Outils Connexes

AspectLLM GuardNeMo GuardrailsGarak
RôleScanners entrée/sortie (runtime)Rails de dialogue programmablesAnalyseur vulnérabilité LLM (test)
FocusInjection, données personnelles, toxicité, secretsContrôle du flux de conversationRed-teaming/probing
QuandDans le chemin de la requêteDans le chemin de la requêteTest pré-déploiement
Meilleur pourGuardrails drop-inFlux basés sur règles complexesTrouver les faiblesses

Ressources