Salta ai contenuti

Garak

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

ComandoDescrizione
pip install garakInstalla Garak tramite pip
git clone https://github.com/leondz/garak.gitClona da GitHub
cd garak && pip install -e .Installare in modalità di sviluppo
garak --helpMostra help e opzioni disponibili
garak --list-probesElenca tutte le probe disponibili
garak --list-detectorsElenca tutti i rilevatori disponibili
garak --list-generatorsElenca tutti i generatori disponibili

Utilizzo Base

ComandoDescrizione
garak --model-type openai --model-name gpt-3.5-turboTest OpenAI GPT-3.5-turbo
garak --model-type huggingface --model-name microsoft/DialoGPT-mediumTestare modello HuggingFace
garak --model-type replicate --model-name replicate/llama-2-70b-chatModello Replicate di test
garak --probes encodingEsegui probe di vulnerabilità di encoding
garak --probes malwaregenEsegui sonde di generazione di malware
garak --probes promptinjectEsegui probe di prompt injection

Categorie di Probe

Probe di Sicurezza

ComandoDescrizione
garak --probes encoding.InjectBase64Test dell’iniezione di codifica base64
garak --probes encoding.InjectHexTest di iniezione di codifica esadecimale
garak --probes encoding.InjectMorseTest dell’iniezione di codifica Morse code
garak --probes encoding.InjectROT13Test dell’iniezione di codifica ROT13
garak --probes malwaregen.EvasionTest generazione evasione malware
garak --probes promptinject.AttackPromptTestare attacchi di prompt injection

Probe di Bias e Tossicità

ComandoDescrizione
garak --probes bias.BiasProbeTest per bias nelle risposte del modello
garak --probes toxicity.ToxicityProbeTest per la generazione di contenuti tossici
garak --probes hate.HateSpeechProbeTest per la generazione di discorsi d’odio
garak --probes discrimination.DiscriminationProbeTest per contenuti discriminatori

Probe di Perdita di Dati

ComandoDescrizione
garak --probes leakage.PIILeakageTest per la perdita di dati PII
garak --probes leakage.TrainingDataLeakageTest per l’esposizione dei dati di training
garak --probes leakage.SystemPromptLeakageTest per l’esposizione del sistema prompt

Configurazione Avanzata

ComandoDescrizione
garak --config config.yamlUtilizzare 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 5Imposta numero di richieste parallele
garak --temperature 0.7Imposta temperatura del modello
garak --max-tokens 150Imposta il numero massimo di token per risposta

Probe Personalizzate

ComandoDescrizione
garak --probes myprobe.CustomProbeEsegui probe personalizzata
garak --probe-options '{"param": "value"}'Passa parametri a probe
garak --probe-tags security,injectionFiltra probe per tag

Rilevatori e Valutazione

ComandoDescrizione
garak --detectors always.PassUtilizzare il rilevatore sempre-passa
garak --detectors mitigation.MitigationBypassUtilizzare il rilevatore di bypass di mitigazione
garak --detectors specialwords.SlursReclaimedSlursRileva insulti e ingiurie riscattate
garak --detectors toxicity.ToxicityClassifierUsa classificatore di tossicità

Output e Reporting

ComandoDescrizione
garak --report-format jsonGenera report JSON
garak --report-format htmlGenera report HTML
garak --report-format csvGenera report CSV
garak --verboseAttiva output dettagliato
garak --log-level DEBUGImposta livello di registrazione debug

Integrazione dei Modelli

Modelli OpenAI

ComandoDescrizione
garak --model-type openai --model-name gpt-4Test GPT-4
garak --model-type openai --model-name gpt-3.5-turbo-16kTesta GPT-3.5-turbo con contesto da 16k
export OPENAI_API_KEY=your_keyImposta chiave API OpenAI

Modelli HuggingFace

ComandoDescrizione
garak --model-type huggingface --model-name facebook/opt-1.3bTest modello OPT
garak --model-type huggingface --model-name EleutherAI/gpt-j-6BTest del modello GPT-J
export HF_TOKEN=your_tokenImposta token HuggingFace

Modelli Locali

ComandoDescrizione
garak --model-type ggml --model-name path/to/model.binTest modello GGML
garak --model-type llamacpp --model-name path/to/model.ggufTest del modello llama.cpp

Test in Batch

ComandoDescrizione
garak --model-list models.txtTesta più modelli da file
garak --probe-list probes.txtEsegui più probe da file
garak --generations 10Imposta numero di generazioni per probe
garak --seed 42Imposta il seed casuale per la riproducibilità

Workflow di Test di Sicurezza

Scansione Completa di Sicurezza

ComandoDescrizione
garak --model-type openai --model-name gpt-4 --probes encoding,malwaregen,promptinject --generations 20Suite completa di indagine di sicurezza

Test di Bias e Fairness

ComandoDescrizione
garak --model-type huggingface --model-name microsoft/DialoGPT-medium --probes bias,toxicity,hate --detectors specialwordsSuite di test per bias

Test di Privacy dei Dati

ComandoDescrizione
garak --model-type openai --model-name gpt-3.5-turbo --probes leakage --detectors piiSuite 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?

ComandoDescrizione
garak --check-modelsVerificare la connettività del modello
garak --dry-runConfigurazione di test senza eseguire probe
garak --debugAbilita modalità debug
garak --list-model-typesMostra i tipi di modelli supportati
pip install garak[dev]Installa con dipendenze di sviluppo

Integrazione con CI/CD

ComandoDescrizione
garak --model-type openai --model-name gpt-3.5-turbo --probes security --exit-on-failFail CI su problemi di sicurezza
garak --config ci_config.yaml --report-format json > results.jsonGenera 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