Puntata 254
Puntata 254 — Guardrails: Llama Guard, NeMo Guardrails, custom filters
Livello: 🧙 Maestro Yoda · Capitolo 23 · Sicurezza e adversarial
Il modello principale ragiona. Il guardrail no — fa una sola cosa: dice “questo passa” o “questo no”. È il poliziotto all’ingresso, il filtro all’uscita, il moderatore in mezzo. Senza, sei nudo. Con, sei vestito ma non blindato. Capire cosa fa, cosa non fa, dove va messo è la differenza tra teatro di sicurezza e architettura difensiva vera.
Cos’è un guardrail (e cosa non è)
Un guardrail in un sistema LLM è un componente filtro che:
- Sta tra l’utente (o l’ambiente) e il modello principale.
- Decide se input/output passano, vengono modificati, o vengono bloccati.
- È specializzato per la decisione di safety/policy, NON per generare risposte.
NON è:
- Il safety training del modello stesso (RLHF, Constitutional AI).
- Un firewall di rete.
- Un’autorizzazione (auth/authz).
I guardrails sono uno strato addizionale, complementare alle safety capability native del modello. Difesa in profondità.
Le 4 posizioni di un guardrail
[User input]
↓
[INPUT guardrail] ← blocca/modifica input prima che arrivi al modello
↓
[Main LLM]
↓
[OUTPUT guardrail] ← controlla l'output prima di restituirlo
↓
[User]
In parallelo durante agent loop:
[TOOL CALL guardrail] ← controlla chiamate tool prima dell'esecuzione
[TOOL RESULT guardrail] ← sanitize risultati di tool prima di reinjettarli
Tutti e 4 hanno il loro ruolo. Sistemi serissimi li usano tutti.
Le 3 categorie di implementation
1. Rule-based / deterministic
Regex, dizionari, pattern matching, NER classico.
- Pro: fast, deterministic, debuggabile.
- Contro: rigido, aggirabile, false positive.
- Quando: PII detection, secret scanning, dominio-specific.
2. Model-based classifier (small)
Modello small/medium addestrato a classificare “safe vs unsafe” su categorie note.
- Esempi: Llama Guard, NeMo classifier, OpenAI Moderation API, Azure Content Safety.
- Pro: cattura pattern semantici, scalabile.
- Contro: false positive, bias di training set, latency 50-200ms.
- Quando: principale linea per content moderation.
3. LLM-based judge (large)
LLM forte (Claude, GPT-5) come judge dell’altro modello.
- Pro: massima flessibilità, comprensione contestuale.
- Contro: costoso (5-50× del modello primario), latency 500-3000ms, bias del judge.
- Quando: edge case complessi, high-stakes decisions, eval.
Pattern moderno: layer 1 (rule) → layer 2 (classifier) → layer 3 (LLM judge) solo per casi sospetti.
Tool principali 2026
Llama Guard (Meta)
- Versioni: Llama Guard 1 (2023), 2, 3 (2024), 4 (2025).
- Cosa fa: classifica input/output in categorie unsafe (violence, sexual, hate, self-harm, illegal, ecc.). Output sicuro o etichette.
- Modello: Llama-based fine-tuned (8B fino a Guard 3, multimodal in Guard 4).
- License: Llama Community.
- Quando: linea base open per content moderation. Decente, free.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "meta-llama/Llama-Guard-3-8B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
def moderate(chat):
input_ids = tokenizer.apply_chat_template(chat, return_tensors="pt").to("cuda")
output = model.generate(input_ids=input_ids, max_new_tokens=100)
return tokenizer.decode(output[0][input_ids.shape[-1]:], skip_special_tokens=True)
# Output: "safe" o "unsafe\nS1, S2" (categorie violate)
NeMo Guardrails (NVIDIA)
- Cosa fa: framework per definire policy strutturate (rail flow, topical rail, dialogue rail) tramite Colang (DSL).
- Approccio: meno “filtro yes/no”, più “policy comportamentale”.
- Esempio policy:
rails: input: flows: - check user message output: flows: - self check output - check facts - Pro: framework completo, supporta retrieval e LLM-judge.
- Contro: learning curve della DSL, overhead.
OpenAI Moderation API
- Cosa fa: classifier proprietario di OpenAI per content unsafe (free per gli utenti API OpenAI).
- Categorie: hate, harassment, self-harm, sexual, violence, ecc.
- Latency: ~50-100 ms.
- Quando: stai già usando OpenAI, vuoi quick start.
Azure AI Content Safety
- Cosa fa: managed service Microsoft, simile a Moderation API ma più features.
- Categorie: 4 categorie principali (hate, sexual, violence, self-harm) con severity 0-7. Più: prompt shields (injection detection), groundedness detection (RAG hallucination).
- Pricing: $1/1000 chiamate (variabile).
Lakera Guard
- Cosa fa: managed SaaS focus su prompt injection e jailbreak detection.
- Forza: focus specifico su injection, dataset enorme di attack pattern.
- Quando: serietà su injection vector.
PromptShield (Azure), Prompt Security
- Vari managed competitor focus su injection detection.
Guardrails AI (open)
- Cosa fa: framework Python per validazione output strutturato (schema validation + reasking + custom validators).
- Approccio: orientato a “output deve matchare schema X”, non solo safety.
Llama Prompt Guard (Meta)
- Cosa fa: classifier dedicato a detect prompt injection (sibling di Llama Guard ma focus diverso).
- Open, small, veloce.
Custom guardrail
- Fine-tune Llama-3.2-1B o Qwen-2.5-1.5B sul tuo dominio specifico.
- Più preciso per il tuo use case.
- Effort: 1-2 settimane + dataset.
Cosa cercare in un guardrail di qualità
5 dimensioni:
1. Coverage delle categorie
Match con i rischi del tuo dominio. Generic guardrail OK per generic use. Per finance/medical/legal serve dominio-specifico.
2. False positive rate
Block legittimo query = utenti frustrati. Test su dataset rappresentativo del tuo use case prima del rollout.
3. False negative rate
Lascia passare unsafe = headlines. Test con red team adversarial.
4. Latency
Aggiunge X ms al ogni request. Per chat: <200ms accettabile. Per batch: less sensitive.
5. Multilinguità
Spesso guardrail “safe in English, bad in Italian” — molti benchmark sono solo EN.
Pattern di deployment
Pattern A — Single classifier layer
[input] → [Llama Guard 3 input] → [LLM] → [Llama Guard 3 output] → [user]
Semplice, baseline. Buon punto di partenza.
Pattern B — Tiered (fast + slow)
[input] → [regex/rule] → [classifier small] → [LLM] → [classifier output] → [if suspect: LLM judge] → [user]
Most cases fast path, edge case approfonditi.
Pattern C — Multi-classifier voting
[input] → [Llama Guard 3] + [Azure Content Safety] + [custom classifier] → vote → [LLM] → ...
Per use case high-stakes: combinare classificatori riduce false negatives.
Pattern D — Topical rail (NeMo style)
[input] → [classify topic] → [if off-topic: canned response, no LLM] → ...
Per chatbot specializzati: blocca a priori conversazione fuori dominio.
Pattern E — Self-check via LLM
[input] → [LLM] → [Self-check prompt: "Did you violate any policy?"] → [if yes: re-generate or refuse] → [user]
Pattern Constitutional-AI-style runtime.
Custom guardrail: quando e come
Quando un guardrail off-the-shelf:
- Non copre il tuo dominio (es. finance compliance specifico).
- Ha false positive troppo alti sui tuoi use case legitimate.
- Devi catturare violazioni di policy custom (es. “non parlare mai di competitor”).
Build:
- Costruisci dataset di ~1000-10000 esempi labeled (safe/unsafe per la tua policy).
- Fine-tune small model (Llama-3.2-1B/3B, Qwen-1.5B-Instruct, BERT base).
- Eval su held-out test set.
- Deploy con monitoring continuo.
- Loop di improvement: log fal+/fal- in production, riaddestra periodicamente.
Cost: ~$500-5000 per setup iniziale + ~$50-500/mese maintenance.
Limiti onesti dei guardrails
Cosa NON risolvono
- Bias di training: il guardrail eredita bias del suo training set.
- Novelty attacks: pattern non visti durante training passano.
- Adversarial robustness: studi mostrano che jailbreak adversariali bypassano la maggior parte dei classifier (Yi et al., 2024).
- Over-refusal: guardrail aggressivi bloccano query legittime, danneggiando UX.
- Multilinguità low-resource: vulnerabili a switch lingua.
Trade-off perpetuo
- Più restrittivo → safety up, UX down.
- Più permissivo → UX up, safety down.
Non c’è punto ottimo universale. Calibri per il tuo use case.
Eval di un guardrail
Setup minimo:
- Adversarial test set: pattern noti di jailbreak + injection (HarmBench, AdvBench, AgentDojo).
- Legitimate-but-tricky set: query borderline legittime (medical questions, security research, creative writing). Misura over-refusal.
- Domain-specific set: query tipiche tuo dominio + violazioni policy custom.
Metriche:
- Recall su unsafe (true positive rate): catch malicious.
- False positive rate: block legitimate (UX cost).
- F1.
- Bypass rate per attack class.
Target per production:
- Recall >95% su unsafe noti.
- FPR <5% su legitimate.
- Latency <200ms p95.
Re-eval mensilmente: nuovi attack vector emergono.
Pattern per agenti (oltre chat)
Per sistemi agentici (tool use, autonomy):
Tool-call guardrail
Prima di eseguire un tool call, verifica:
- Tool è in allowlist?
- Arguments matchano schema?
- Side effect richiede HITL?
- Combinazione tool sospetta (es. read_email + send_email a indirizzi esterni)?
Trajectory guardrail
Monitor la traiettoria dell’agente:
- Too many tool calls? loop?
- Stesso tool ripetuto N volte?
- Pattern anomalo rispetto a baseline?
Outcome guardrail
Verifica risultato finale:
- Match con goal originale?
- Output contiene PII non richieste?
- Action eseguite hanno effetti collaterali inaspettati?
Glossario lampo
- Guardrail — componente filtro tra utente/ambiente e modello principale che decide pass/block/modify.
- Llama Guard — classifier Meta per content moderation, open Llama-based. Versione 4 (2025) multimodal.
- NeMo Guardrails — framework NVIDIA con DSL Colang per definire policy strutturate (topical / dialogue / input / output rails).
- Prompt Shield — classifier specifico per detection di prompt injection (Lakera, Azure, Prompt Security).
- LLM-as-judge guardrail — usare un LLM forte come arbitro su output di altro modello. Costoso ma flessibile.
- Over-refusal — guardrail che blocca query legittime causando UX scadente.
Take-away
I guardrail sono il “secondo livello” della sicurezza AI: aggiungono difesa in profondità sopra le safety capability native del modello. Nessun guardrail singolo è sufficiente; pattern moderno è multi-layer (regex + classifier + LLM judge). Si misurano su tre dimensioni: recall su unsafe, false positive rate, latency. Vanno calibrati sul tuo dominio e re-evaluated regolarmente — gli attaccanti non si fermano, i tuoi guardrail devono evolvere.
➡️ Prossima puntata: standard di sicurezza AI — NIST AI RMF, ISO 42001, OWASP LLM Top 10.