Salta ai contenuti

LLM Guard - Cheatsheet LLM Security Toolkit

LLM Guard - Cheatsheet LLM Security Toolkit

LLM Guard (by Protect AI) è un security toolkit open-source per applicazioni LLM. Fornisce una libreria di input scanner (applicati al prompt dell”utente prima che raggiunga il modello) e output scanner (applicati alla risposta del modello prima che raggiunga l”utente) che rilevano e mitigano prompt injection, jailbreak, tossicità, leakage di PII, secrets, topic vietati, e altro. Gli scanner possono sanitizzare il contenuto, segnare il rischio, e bloccare richieste non sicure, rendendolo uno strato guardrail pratico per app LLM di produzione.

Installazione

MetodoComando
pippip install llm-guard
Con ONNX (più veloce)pip install "llm-guard[onnxruntime]"
API server (Docker)esegui l”immagine ufficiale llm-guard-api
First runscarica i modelli degli scanner (transformers)
Verificapython -c "import llm_guard; print(''ok'')"

Due Stadi di Scanning

StageApplicato aScopo
Input scannerIl prompt dell”utenteFerma input malevolo/non sicuro che raggiunge il modello
Output scannerLa risposta del modelloFerma output non sicuro/leaky che raggiunge l”utente

Scanning dell”Input

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")
RitornoSignificato
sanitizedIl prompt (possibilmente modificato)
resultsPass/fail per-scanner
riskRisk score per-scanner (0–1)

Input Scanner

ScannerRileva
PromptInjectionInjection/jailbreak attempts
ToxicityToxic/abusive language
SecretsAPI keys, tokens nel prompt
AnonymizePII (redacts, con later de-anonymize)
BanTopicsSoggetti disallowati
BanSubstrings / BanCompetitorsBlocklists
CodePresence of code / specific languages
TokenLimitOversized prompts
LanguageUnexpected languages

Scanning dell”Output

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)

Output Scanner

ScannerControlla
SensitivePII/secrets leaking nella risposta
NoRefusalRileva refusals (quality/guardrail signal)
RelevanceLa risposta effettivamente risponde al prompt
ToxicityToxic output
BiasBiased content
MaliciousURLsDangerous links nell”output
DeanonymizeRipristina redacted PII per trusted display
FactualConsistencyLa risposta è consistente col contesto

PII Anonymize / Deanonymize Flow

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)
# ... chiama il modello con safe_prompt ...
final, _, _ = scan_output([Deanonymize(vault)], safe_prompt, model_response)

Il Vault memorizza il mapping così le entità redacted possono essere ripristinate nella risposta finale.

Deployment

OpzioneNota
In-process libraryImporta e chiama scan_prompt/scan_output
API serverllm-guard-api per un language-agnostic gateway
ONNX runtimeFaster CPU inference per i modelli scanner
ConfigFail-fast, thresholds, e match strategies per scanner

Workflow Comuni

# Guardrail wrapper intorno a qualsiasi LLM call
def guarded_chat(user_input):
    prompt, r_in, _ = scan_prompt(input_scanners, user_input)
    if not all(r_in.values()):
        return "Richiesta bloccata dalla politica di sicurezza."
    resp = call_llm(prompt)
    out, r_out, _ = scan_output(output_scanners, prompt, resp)
    return out if all(r_out.values()) else "Risposta trattenuta dalla politica di sicurezza."

LLM Guard vs Tool Correlati

AspettoLLM GuardNeMo GuardrailsGarak
RoleInput/output scanner (runtime)Programmable dialog railsLLM vulnerability scanner (testing)
FocusInjection, PII, toxicity, secretsConversation flow controlRed-teaming/probing
WhenNel request pathNel request pathPre-deployment testing
Best forDrop-in guardrailsComplex rule-based flowsFinding weaknesses

Risorse