Garak ist ein Open-Source-KI-Red-Teaming-Framework, das entwickelt wurde, um die Sicherheit und Robustheit von Large Language Models (LLMs) und KI-Systemen durch adversarielle Tests zu prüfen und zu bewerten.
Installation & Setup
| Befehl | Beschreibung |
|---|
pip install garak | Installieren Sie Garak über pip |
git clone https://github.com/leondz/garak.git | Von GitHub klonen |
cd garak && pip install -e . | In Entwicklungsmodus installieren |
garak --help | Hilfe und verfügbare Optionen anzeigen |
garak --list-probes | Alle verfügbaren Probes auflisten |
garak --list-detectors | Alle verfügbaren Detektoren auflisten |
garak --list-generators | Alle verfügbaren Generatoren auflisten |
Grundlegende Nutzung
| Befehl | Beschreibung |
|---|
garak --model-type openai --model-name gpt-3.5-turbo | Test OpenAI GPT-3.5-turbo |
garak --model-type huggingface --model-name microsoft/DialoGPT-medium | HuggingFace Modell testen |
garak --model-type replicate --model-name replicate/llama-2-70b-chat | Test Replicate-Modell |
garak --probes encoding | Encoding-Schwachstellen-Sonden ausführen |
garak --probes malwaregen | Malware-Generierungssonden ausführen |
garak --probes promptinject | Prompt-Injection-Proben ausführen |
Probe-Kategorien
Sicherheits-Probes
| Befehl | Beschreibung |
|---|
garak --probes encoding.InjectBase64 | Test base64 Encoding Injection |
garak --probes encoding.InjectHex | Test hexadezimale Encoding-Injektion |
garak --probes encoding.InjectMorse | Test Morse-Code-Verschlüsselungs-Injektion |
garak --probes encoding.InjectROT13 | Test ROT13 Encoding Injection |
garak --probes malwaregen.Evasion | Test Malware Generation Evasion |
garak --probes promptinject.AttackPrompt | Test Prompt Injection Attacks |
Voreingenommenheits- und Toxizitäts-Probes
| Befehl | Beschreibung |
|---|
garak --probes bias.BiasProbe | Test auf Voreingenommenheit in Modell-Antworten |
garak --probes toxicity.ToxicityProbe | Test auf toxische Inhaltsgenerierung |
garak --probes hate.HateSpeechProbe | Test zur Generierung von Hassrede |
garak --probes discrimination.DiscriminationProbe | Test auf diskriminierende Inhalte |
Datenlecks-Probes
| Befehl | Beschreibung |
|---|
garak --probes leakage.PIILeakage | Test auf PII-Datenlecks |
garak --probes leakage.TrainingDataLeakage | Test auf Exposition von Trainingsdaten |
garak --probes leakage.SystemPromptLeakage | Test auf System-Prompt-Offenlegung |
Erweiterte Konfiguration
| Befehl | Beschreibung |
|---|
garak --config config.yaml | Benutzerdefinierte Konfigurationsdatei verwenden |
garak --output-dir results/ | Ausgabeverzeichnis angeben |
garak --report-prefix test_run_ | Präfix für Berichtsdatei festlegen |
garak --parallel-requests 5 | Anzahl paralleler Anfragen festlegen |
garak --temperature 0.7 | Modell-Temperatur festlegen |
garak --max-tokens 150 | Maximale Token pro Antwort festlegen |
Benutzerdefinierte Probes
| Befehl | Beschreibung |
|---|
garak --probes myprobe.CustomProbe | Benutzerdefinierten Probe ausführen |
garak --probe-options '{"param": "value"}' | Parameter an Probe übergeben |
garak --probe-tags security,injection | Proben nach Tags filtern |
Detektoren und Evaluierung
| Befehl | Beschreibung |
|---|
garak --detectors always.Pass | Verwende Always-Pass-Detektor |
garak --detectors mitigation.MitigationBypass | Verwende mitigation bypass detector |
garak --detectors specialwords.SlursReclaimedSlurs | Erkenne Beleidigungen und reklamierte Beleidigungen |
garak --detectors toxicity.ToxicityClassifier | Toxizitätsklassifikator verwenden |
Ausgabe und Berichterstattung
| Befehl | Beschreibung |
|---|
garak --report-format json | JSON-Bericht generieren |
garak --report-format html | HTML-Bericht generieren |
garak --report-format csv | CSV-Bericht generieren |
garak --verbose | Verbose-Ausgabe aktivieren |
garak --log-level DEBUG | Debug-Protokollierungsebene festlegen |
Modell-Integration
OpenAI-Modelle
| Befehl | Beschreibung |
|---|
garak --model-type openai --model-name gpt-4 | Test GPT-4 |
garak --model-type openai --model-name gpt-3.5-turbo-16k | Test GPT-3.5-turbo mit 16k Kontext |
export OPENAI_API_KEY=your_key | OpenAI API-Schlüssel festlegen |
HuggingFace-Modelle
| Befehl | Beschreibung |
|---|
garak --model-type huggingface --model-name facebook/opt-1.3b | Test OPT-Modell |
garak --model-type huggingface --model-name EleutherAI/gpt-j-6B | Test GPT-J Modell |
export HF_TOKEN=your_token | HuggingFace Token festlegen |
Lokale Modelle
| Befehl | Beschreibung |
|---|
garak --model-type ggml --model-name path/to/model.bin | Test GGML Modell |
garak --model-type llamacpp --model-name path/to/model.gguf | Test llama.cpp Modell |
Batch-Testing
| Befehl | Beschreibung |
|---|
garak --model-list models.txt | Teste mehrere Modelle aus Datei |
garak --probe-list probes.txt | Mehrere Proben aus Datei ausführen |
garak --generations 10 | Anzahl der Generationen pro Probe festlegen |
garak --seed 42 | Setze zufälligen Seed für Reproduzierbarkeit |
Sicherheits-Testworkflows
Umfassender Sicherheits-Scan
| Befehl | Beschreibung |
|---|
garak --model-type openai --model-name gpt-4 --probes encoding,malwaregen,promptinject --generations 20 | Vollständige Security-Probe-Suite |
Voreingenommenheits- und Fairness-Testing
| Befehl | Beschreibung |
|---|
garak --model-type huggingface --model-name microsoft/DialoGPT-medium --probes bias,toxicity,hate --detectors specialwords | Bias Testing Suite |
Datenschutz-Testing
| Befehl | Beschreibung |
|---|
garak --model-type openai --model-name gpt-3.5-turbo --probes leakage --detectors pii | Privacy Testing Suite |
Konfigurationsdateien
Basis-Konfiguration (config.yaml)
model:
type: openai
name: gpt-3.5-turbo
temperature: 0.7
max_tokens: 150
probes:
- encoding
- promptinject
- malwaregen
detectors:
- always.Pass
- mitigation.MitigationBypass
output:
directory: results/
format: json
prefix: garak_test_
Erweiterte Konfiguration
parallel_requests: 5
generations: 10
seed: 42
log_level: INFO
model:
type: huggingface
name: microsoft/DialoGPT-medium
device: cuda
batch_size: 4
probe_options:
encoding.InjectBase64:
payload_count: 50
promptinject.AttackPrompt:
attack_types: ["jailbreak", "roleplay"]
Fehlerbehebung
Would you like me to continue with the remaining sections?
| Befehl | Beschreibung |
|---|
garak --check-models | Modell-Konnektivität überprüfen |
garak --dry-run | Testkonfiguration ohne Ausführung von Proben |
garak --debug | Debug-Modus aktivieren |
garak --list-model-types | Unterstützte Modelltypen anzeigen |
pip install garak[dev] | Mit Entwicklungsabhängigkeiten installieren |
Integration mit CI/CD
| Befehl | Beschreibung |
|---|
garak --model-type openai --model-name gpt-3.5-turbo --probes security --exit-on-fail | Fail CI bei Sicherheitsproblemen |
garak --config ci_config.yaml --report-format json > results.json | Generiere CI-freundliche Ausgabe |
Best Practices
- Teste Modelle immer vor der Produktivbereitstellung
- Verwende mehrere Probenkategorien für umfassende Tests
- Setze geeignete Generierungszählungen für statistische Signifikanz
- Konfiguriere angemessene API-Ratenlimits, um Drosselung zu vermeiden
- Speichere sensible API-Schlüssel als Umgebungsvariablen
- Überprüfe und analysiere generierte Berichte gründlich
- Implementiere kontinuierliche Tests in Entwicklungs-Pipelines
- Dokumentiere und verfolge Sicherheits-Testergebnisse über die Zeit