LLM Guard (von Protect AI) ist ein quelloffenes Sicherheits-Toolkit für LLM-Anwendungen. Es bietet eine Bibliothek von Input-Scannern (angewendet auf den Benutzer-Prompt, bevor er das Modell erreicht) und Output-Scannern (angewendet auf die Modellantwort, bevor sie den Benutzer erreicht), die Prompt-Injection, Jailbreaks, Toxizität, PII-Lecks, Secrets, verbotene Themen und mehr erkennen und mindern. Scanner können Inhalte bereinigen, Risiko bewerten und unsichere Anfragen blockieren, was es zu einer praktischen Guardrail-Ebene für Produktions-LLM-Apps macht.
Installation
| Methode | Befehl |
|---|
| pip | pip install llm-guard |
| Mit ONNX (schneller) | pip install "llm-guard[onnxruntime]" |
| API-Server (Docker) | offizielle llm-guard-api-Image ausführen |
| Erste Ausführung | lädt Scanner-Modelle (Transformers) herunter |
| Verifizieren | python -c "import llm_guard; print('ok')" |
Zwei Scan-Stufen
| Stufe | Angewendet auf | Zweck |
|---|
| Input-Scanner | Der Benutzer-Prompt | Stoppe bösartige/unsichere Eingaben, die das Modell erreichen |
| Output-Scanner | Die Modellantwort | Stoppe unsichere/lecks Ausgabe, die den Benutzer erreicht |
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")
| Rückgabe | Bedeutung |
|---|
sanitized | Der (möglicherweise geänderte) Prompt |
results | Pro-Scanner bestehen/fehlschlagen |
risk | Pro-Scanner-Risiko-Scores (0–1) |
| Scanner | Erkennt |
|---|
PromptInjection | Injection/Jailbreak-Versuche |
Toxicity | Giftige/beleidigende Sprache |
Secrets | API-Schlüssel, Tokens im Prompt |
Anonymize | PII (redigiert, später de-anonymisiert) |
BanTopics | Nicht erlaubte Themen |
BanSubstrings / BanCompetitors | Blocklisten |
Code | Vorhandensein von Code / spezifische Sprachen |
TokenLimit | Zu große Prompts |
Language | Unerwartete Sprachen |
Output-Scanning
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
| Scanner | Prüft |
|---|
Sensitive | PII/Secrets, die in der Antwort lecken |
NoRefusal | Erkennt Ablehnungen (Qualitäts-/Guardrail-Signal) |
Relevance | Antwort beantwortet tatsächlich den Prompt |
Toxicity | Giftige Ausgabe |
Bias | Voreingenommener Inhalt |
MaliciousURLs | Gefährliche Links in der Ausgabe |
Deanonymize | Redigierte PII für vertrauenswürdige Anzeige wiederherstellen |
FactualConsistency | Antwort konsistent mit Kontext |
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)
# ... rufe das Modell mit safe_prompt auf ...
final, _, _ = scan_output([Deanonymize(vault)], safe_prompt, model_response)
Der Vault speichert die Zuordnung, sodass redigierte Entitäten in der endgültigen Antwort wiederhergestellt werden können.
Bereitstellung
| Option | Notiz |
|---|
| In-Process-Bibliothek | Importiere und rufe scan_prompt/scan_output auf |
| API-Server | llm-guard-api für ein sprachunabhängiges Gateway |
| ONNX-Laufzeit | Schnellere CPU-Inferenz für Scanner-Modelle |
| Config | Fail-Fast, Schwellwerte und Abgleichstrategien pro Scanner |
Häufige Workflows
# Guardrail-Wrapper um jeden LLM-Aufruf
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."
| Aspekt | LLM Guard | NeMo Guardrails | Garak |
|---|
| Rolle | Input/Output-Scanner (Laufzeit) | Programmierbare Dialog-Schienen | LLM-Sicherheits-Scanner (Testen) |
| Fokus | Injection, PII, Toxizität, Secrets | Gesprächs-Flowsteuerung | Red-Teaming/Probing |
| Wann | Im Request-Pfad | Im Request-Pfad | Pre-Deployment-Testen |
| Best für | Drop-In-Guardrails | Komplexe Rule-basierte Flows | Schwächen finden |
Ressourcen