Garak è un framework open-source di red teaming per l’intelligenza artificiale, progettato per testare e valutare la sicurezza e la robustezza dei modelli di linguaggio di grandi dimensioni (LLM) e dei sistemi di intelligenza artificiale attraverso test avversariali.
Installazione e Configurazione
| Comando | Descrizione |
|---|
pip install garak | Installa Garak tramite pip |
git clone https://github.com/leondz/garak.git | Clona da GitHub |
cd garak && pip install -e . | Installare in modalità di sviluppo |
garak --help | Mostra help e opzioni disponibili |
garak --list-probes | Elenca tutte le probe disponibili |
garak --list-detectors | Elenca tutti i rilevatori disponibili |
garak --list-generators | Elenca tutti i generatori disponibili |
Utilizzo Base
| Comando | Descrizione |
|---|
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 | Testare modello HuggingFace |
garak --model-type replicate --model-name replicate/llama-2-70b-chat | Modello Replicate di test |
garak --probes encoding | Esegui probe di vulnerabilità di encoding |
garak --probes malwaregen | Esegui sonde di generazione di malware |
garak --probes promptinject | Esegui probe di prompt injection |
Categorie di Probe
Probe di Sicurezza
| Comando | Descrizione |
|---|
garak --probes encoding.InjectBase64 | Test dell’iniezione di codifica base64 |
garak --probes encoding.InjectHex | Test di iniezione di codifica esadecimale |
garak --probes encoding.InjectMorse | Test dell’iniezione di codifica Morse code |
garak --probes encoding.InjectROT13 | Test dell’iniezione di codifica ROT13 |
garak --probes malwaregen.Evasion | Test generazione evasione malware |
garak --probes promptinject.AttackPrompt | Testare attacchi di prompt injection |
Probe di Bias e Tossicità
| Comando | Descrizione |
|---|
garak --probes bias.BiasProbe | Test per bias nelle risposte del modello |
garak --probes toxicity.ToxicityProbe | Test per la generazione di contenuti tossici |
garak --probes hate.HateSpeechProbe | Test per la generazione di discorsi d’odio |
garak --probes discrimination.DiscriminationProbe | Test per contenuti discriminatori |
Probe di Perdita di Dati
| Comando | Descrizione |
|---|
garak --probes leakage.PIILeakage | Test per la perdita di dati PII |
garak --probes leakage.TrainingDataLeakage | Test per l’esposizione dei dati di training |
garak --probes leakage.SystemPromptLeakage | Test per l’esposizione del sistema prompt |
Configurazione Avanzata
| Comando | Descrizione |
|---|
garak --config config.yaml | Utilizzare file di configurazione personalizzato |
garak --output-dir results/ | Specificare la directory di output |
garak --report-prefix test_run_ | Imposta prefisso file report |
garak --parallel-requests 5 | Imposta numero di richieste parallele |
garak --temperature 0.7 | Imposta temperatura del modello |
garak --max-tokens 150 | Imposta il numero massimo di token per risposta |
Probe Personalizzate
| Comando | Descrizione |
|---|
garak --probes myprobe.CustomProbe | Esegui probe personalizzata |
garak --probe-options '{"param": "value"}' | Passa parametri a probe |
garak --probe-tags security,injection | Filtra probe per tag |
Rilevatori e Valutazione
| Comando | Descrizione |
|---|
garak --detectors always.Pass | Utilizzare il rilevatore sempre-passa |
garak --detectors mitigation.MitigationBypass | Utilizzare il rilevatore di bypass di mitigazione |
garak --detectors specialwords.SlursReclaimedSlurs | Rileva insulti e ingiurie riscattate |
garak --detectors toxicity.ToxicityClassifier | Usa classificatore di tossicità |
Output e Reporting
| Comando | Descrizione |
|---|
garak --report-format json | Genera report JSON |
garak --report-format html | Genera report HTML |
garak --report-format csv | Genera report CSV |
garak --verbose | Attiva output dettagliato |
garak --log-level DEBUG | Imposta livello di registrazione debug |
Integrazione dei Modelli
Modelli OpenAI
| Comando | Descrizione |
|---|
garak --model-type openai --model-name gpt-4 | Test GPT-4 |
garak --model-type openai --model-name gpt-3.5-turbo-16k | Testa GPT-3.5-turbo con contesto da 16k |
export OPENAI_API_KEY=your_key | Imposta chiave API OpenAI |
Modelli HuggingFace
| Comando | Descrizione |
|---|
garak --model-type huggingface --model-name facebook/opt-1.3b | Test modello OPT |
garak --model-type huggingface --model-name EleutherAI/gpt-j-6B | Test del modello GPT-J |
export HF_TOKEN=your_token | Imposta token HuggingFace |
Modelli Locali
| Comando | Descrizione |
|---|
garak --model-type ggml --model-name path/to/model.bin | Test modello GGML |
garak --model-type llamacpp --model-name path/to/model.gguf | Test del modello llama.cpp |
Test in Batch
| Comando | Descrizione |
|---|
garak --model-list models.txt | Testa più modelli da file |
garak --probe-list probes.txt | Esegui più probe da file |
garak --generations 10 | Imposta numero di generazioni per probe |
garak --seed 42 | Imposta il seed casuale per la riproducibilità |
Workflow di Test di Sicurezza
Scansione Completa di Sicurezza
| Comando | Descrizione |
|---|
garak --model-type openai --model-name gpt-4 --probes encoding,malwaregen,promptinject --generations 20 | Suite completa di indagine di sicurezza |
Test di Bias e Fairness
| Comando | Descrizione |
|---|
garak --model-type huggingface --model-name microsoft/DialoGPT-medium --probes bias,toxicity,hate --detectors specialwords | Suite di test per bias |
Test di Privacy dei Dati
| Comando | Descrizione |
|---|
garak --model-type openai --model-name gpt-3.5-turbo --probes leakage --detectors pii | Suite di test per la privacy |
File di Configurazione
Configurazione 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_
Configurazione Avanzata
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"]
Risoluzione dei Problemi
Would you like me to continue with the remaining sections?
| Comando | Descrizione |
|---|
garak --check-models | Verificare la connettività del modello |
garak --dry-run | Configurazione di test senza eseguire probe |
garak --debug | Abilita modalità debug |
garak --list-model-types | Mostra i tipi di modelli supportati |
pip install garak[dev] | Installa con dipendenze di sviluppo |
Integrazione con CI/CD
| Comando | Descrizione |
|---|
garak --model-type openai --model-name gpt-3.5-turbo --probes security --exit-on-fail | Fail CI su problemi di sicurezza |
garak --config ci_config.yaml --report-format json > results.json | Genera output compatibile con CI |
Migliori Pratiche
- Testare sempre i modelli prima del deployment in produzione
- Utilizzare più categorie di probe per un test completo
- Impostare conteggi di generazione appropriati per la significatività statistica
- Configurare limiti di rate API adeguati per evitare il throttling
- Archiviare chiavi API sensibili come variabili di ambiente
- Rivedere e analizzare accuratamente i report generati
- Implementare test continui nelle pipeline di sviluppo
- Documentare e tracciare i risultati dei test di sicurezza nel tempo