Garak est un framework open-source de red teaming d’IA conçu pour tester et évaluer la sécurité et la robustesse des grands modèles de langage (LLMs) et des systèmes d’IA par des tests adversariaux.
Installation et Configuration
| Commande | Description |
|---|
pip install garak | Installer Garak via pip |
git clone https://github.com/leondz/garak.git | Cloner depuis GitHub |
cd garak && pip install -e . | Installer en mode développement |
garak --help | Afficher l’aide et les options disponibles |
garak --list-probes | Lister toutes les sondes disponibles |
garak --list-detectors | Lister tous les détecteurs disponibles |
garak --list-generators | Lister tous les générateurs disponibles |
Utilisation de Base
| Commande | Description |
|---|
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 | Tester le modèle HuggingFace |
garak --model-type replicate --model-name replicate/llama-2-70b-chat | Tester le modèle Replicate |
garak --probes encoding | Exécuter des sondes de vulnérabilité d’encodage |
garak --probes malwaregen | Exécuter des sondes de génération de malwares |
garak --probes promptinject | Exécuter des sondes d’injection de prompt |
Catégories de Sondes
Sondes de Sécurité
| Commande | Description |
|---|
garak --probes encoding.InjectBase64 | Test d’injection d’encodage base64 |
garak --probes encoding.InjectHex | Test d’injection d’encodage hexadécimal |
garak --probes encoding.InjectMorse | Test d’injection de codage Morse |
garak --probes encoding.InjectROT13 | Test d’injection de codage ROT13 |
garak --probes malwaregen.Evasion | Test de génération d’évasion de malware |
garak --probes promptinject.AttackPrompt | Tester des attaques par injection de prompt |
Sondes de Biais et Toxicité
| Commande | Description |
|---|
garak --probes bias.BiasProbe | Test de biais dans les réponses du modèle |
garak --probes toxicity.ToxicityProbe | Test de génération de contenu toxique |
garak --probes hate.HateSpeechProbe | Test de génération de discours de haine |
garak --probes discrimination.DiscriminationProbe | Test pour contenu discriminatoire |
Sondes de Fuite de Données
| Commande | Description |
|---|
garak --probes leakage.PIILeakage | Test de fuite de données PII |
garak --probes leakage.TrainingDataLeakage | Test pour l’exposition des données d’entraînement |
garak --probes leakage.SystemPromptLeakage | Test pour exposition du système de prompt |
Configuration Avancée
| Commande | Description |
|---|
garak --config config.yaml | Utiliser un fichier de configuration personnalisé |
garak --output-dir results/ | Spécifier le répertoire de sortie |
garak --report-prefix test_run_ | Définir le préfixe du fichier de rapport |
garak --parallel-requests 5 | Définir le nombre de requêtes parallèles |
garak --temperature 0.7 | Définir la température du modèle |
garak --max-tokens 150 | Définir le nombre maximum de tokens par réponse |
Sondes Personnalisées
| Commande | Description |
|---|
garak --probes myprobe.CustomProbe | Exécuter une sonde personnalisée |
garak --probe-options '{"param": "value"}' | Passer des paramètres à la sonde |
garak --probe-tags security,injection | Filtrer les sondes par tags |
Détecteurs et Évaluation
| Commande | Description |
|---|
garak --detectors always.Pass | Utiliser le détecteur always-pass |
garak --detectors mitigation.MitigationBypass | Utiliser le détecteur de contournement d’atténuation |
garak --detectors specialwords.SlursReclaimedSlurs | Détecter les insultes et les injures réappropriées |
garak --detectors toxicity.ToxicityClassifier | Utiliser le classificateur de toxicité |
Sortie et Rapport
| Commande | Description |
|---|
garak --report-format json | Générer un rapport JSON |
garak --report-format html | Générer un rapport HTML |
garak --report-format csv | Générer un rapport CSV |
garak --verbose | Activer la sortie verbeuse |
garak --log-level DEBUG | Définir le niveau de journalisation de débogage |
Intégration de Modèle
Modèles OpenAI
| Commande | Description |
|---|
garak --model-type openai --model-name gpt-4 | Test GPT-4 |
garak --model-type openai --model-name gpt-3.5-turbo-16k | Tester GPT-3.5-turbo avec un contexte de 16k |
export OPENAI_API_KEY=your_key | Définir la clé API OpenAI |
Modèles HuggingFace
| Commande | Description |
|---|
garak --model-type huggingface --model-name facebook/opt-1.3b | Tester le modèle OPT |
garak --model-type huggingface --model-name EleutherAI/gpt-j-6B | Tester le modèle GPT-J |
export HF_TOKEN=your_token | Définir le token HuggingFace |
Modèles Locaux
| Commande | Description |
|---|
garak --model-type ggml --model-name path/to/model.bin | Test du modèle GGML |
garak --model-type llamacpp --model-name path/to/model.gguf | Tester le modèle llama.cpp |
Tests par Lots
| Commande | Description |
|---|
garak --model-list models.txt | Tester plusieurs modèles à partir du fichier |
garak --probe-list probes.txt | Exécuter plusieurs sondes à partir d’un fichier |
garak --generations 10 | Définir le nombre de générations par sonde |
garak --seed 42 | Définir la graine aléatoire pour la reproductibilité |
Workflows de Tests de Sécurité
Analyse de Sécurité Complète
| Commande | Description |
|---|
garak --model-type openai --model-name gpt-4 --probes encoding,malwaregen,promptinject --generations 20 | Suite complète de sonde de sécurité |
Tests de Biais et d’Équité
| Commande | Description |
|---|
garak --model-type huggingface --model-name microsoft/DialoGPT-medium --probes bias,toxicity,hate --detectors specialwords | Suite de tests de biais |
Tests de Confidentialité des Données
| Commande | Description |
|---|
garak --model-type openai --model-name gpt-3.5-turbo --probes leakage --detectors pii | Suite de tests de confidentialité |
Fichiers de Configuration
Configuration de Base (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_
Configuration Avancée
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"]
Dépannage
Would you like me to continue with the remaining translations?
| Commande | Description |
|---|
garak --check-models | Vérifier la connectivité du modèle |
garak --dry-run | Configuration de test sans exécuter de sondes |
garak --debug | Activer le mode debug |
garak --list-model-types | Afficher les types de modèles pris en charge |
pip install garak[dev] | Installer avec les dépendances de développement |
Intégration avec CI/CD
| Commande | Description |
|---|
garak --model-type openai --model-name gpt-3.5-turbo --probes security --exit-on-fail | Fail CI sur les problèmes de sécurité |
garak --config ci_config.yaml --report-format json > results.json | Générer une sortie compatible avec CI |
Meilleures Pratiques
- Toujours tester les modèles avant le déploiement en production
- Utiliser plusieurs catégories de sondes pour un test exhaustif
- Définir des nombres de générations appropriés pour une signification statistique
- Configurer des limites de taux d’API appropriées pour éviter la limitation
- Stocker les clés API sensibles en tant que variables d’environnement
- Examiner et analyser attentivement les rapports générés
- Implémenter des tests continus dans les pipelines de développement
- Documenter et suivre les résultats des tests de sécurité au fil du temps