Garak es un framework de red teaming de IA de código abierto diseñado para probar y evaluar la seguridad y robustez de modelos de lenguaje grandes (LLMs) y sistemas de IA mediante pruebas adversariales.
Instalación y Configuración
| Comando | Descripción |
|---|
pip install garak | Instalar Garak mediante pip |
git clone https://github.com/leondz/garak.git | Clonar desde GitHub |
cd garak && pip install -e . | Instalar en modo de desarrollo |
garak --help | Mostrar ayuda y opciones disponibles |
garak --list-probes | Enumerar todas las sondas disponibles |
garak --list-detectors | Enumerar todos los detectores disponibles |
garak --list-generators | Enumerar todos los generadores disponibles |
Uso Básico
| Comando | Descripción |
|---|
garak --model-type openai --model-name gpt-3.5-turbo | Probar OpenAI GPT-3.5-turbo |
garak --model-type huggingface --model-name microsoft/DialoGPT-medium | Probar modelo HuggingFace |
garak --model-type replicate --model-name replicate/llama-2-70b-chat | Modelo de Replicación de Prueba |
garak --probes encoding | Ejecutar sondas de vulnerabilidad de codificación |
garak --probes malwaregen | Ejecutar sondas de generación de malware |
garak --probes promptinject | Ejecutar sondas de inyección de prompt |
Categorías de Sondas
Sondas de Seguridad
| Comando | Descripción |
|---|
garak --probes encoding.InjectBase64 | Prueba de inyección de codificación base64 |
garak --probes encoding.InjectHex | Prueba de inyección de codificación hexadecimal |
garak --probes encoding.InjectMorse | Prueba de inyección de codificación de Morse code |
garak --probes encoding.InjectROT13 | Prueba de inyección de codificación ROT13 |
garak --probes malwaregen.Evasion | Generación de prueba de evasión de malware |
garak --probes promptinject.AttackPrompt | Probar ataques de inyección de prompt |
Sondas de Sesgo y Toxicidad
| Comando | Descripción |
|---|
garak --probes bias.BiasProbe | Prueba de sesgo en respuestas de modelo |
garak --probes toxicity.ToxicityProbe | Prueba para generación de contenido tóxico |
garak --probes hate.HateSpeechProbe | Prueba para generación de hate speech |
garak --probes discrimination.DiscriminationProbe | Prueba de contenido discriminatorio |
Sondas de Fuga de Datos
| Comando | Descripción |
|---|
garak --probes leakage.PIILeakage | Prueba de fuga de datos PII |
garak --probes leakage.TrainingDataLeakage | Prueba para exposición de datos de entrenamiento |
garak --probes leakage.SystemPromptLeakage | Prueba de exposición del sistema prompt |
Configuración Avanzada
| Comando | Descripción |
|---|
garak --config config.yaml | Usar archivo de configuración personalizado |
garak --output-dir results/ | Especificar directorio de salida |
garak --report-prefix test_run_ | Establecer prefijo de archivo de informe |
garak --parallel-requests 5 | Establecer número de solicitudes paralelas |
garak --temperature 0.7 | Establecer temperatura del modelo |
garak --max-tokens 150 | Establecer tokens máximos por respuesta |
Sondas Personalizadas
| Comando | Descripción |
|---|
garak --probes myprobe.CustomProbe | Ejecutar sonda personalizada |
garak --probe-options '{"param": "value"}' | Pasar parámetros al probe |
garak --probe-tags security,injection | Filtrar sondas por etiquetas |
Detectores y Evaluación
| Comando | Descripción |
|---|
garak --detectors always.Pass | Usar detector de paso siempre |
garak --detectors mitigation.MitigationBypass | Usar detector de bypass de mitigación |
garak --detectors specialwords.SlursReclaimedSlurs | Detectar insultos y términos ofensivos reclamados |
garak --detectors toxicity.ToxicityClassifier | Usar clasificador de toxicidad |
| Comando | Descripción |
|---|
garak --report-format json | Generar informe JSON |
garak --report-format html | Generar informe HTML |
garak --report-format csv | Generar informe CSV |
garak --verbose | Habilitar salida detallada |
garak --log-level DEBUG | Establecer nivel de registro de depuración |
Integración de Modelos
Modelos de OpenAI
| Comando | Descripción |
|---|
garak --model-type openai --model-name gpt-4 | Probar GPT-4 |
garak --model-type openai --model-name gpt-3.5-turbo-16k | Probar GPT-3.5-turbo con contexto de 16k |
export OPENAI_API_KEY=your_key | Establecer clave de API de OpenAI |
Modelos de HuggingFace
| Comando | Descripción |
|---|
garak --model-type huggingface --model-name facebook/opt-1.3b | Probar modelo OPT |
garak --model-type huggingface --model-name EleutherAI/gpt-j-6B | Probar modelo GPT-J |
export HF_TOKEN=your_token | Establecer token de HuggingFace |
Modelos Locales
| Comando | Descripción |
|---|
garak --model-type ggml --model-name path/to/model.bin | Probar modelo GGML |
garak --model-type llamacpp --model-name path/to/model.gguf | Probar modelo llama.cpp |
Pruebas por Lotes
| Comando | Descripción |
|---|
garak --model-list models.txt | Probar múltiples modelos desde archivo |
garak --probe-list probes.txt | Ejecutar múltiples sondas desde archivo |
garak --generations 10 | Establecer número de generaciones por sonda |
garak --seed 42 | Establecer semilla aleatoria para reproducibilidad |
Flujos de Trabajo de Pruebas de Seguridad
Escaneo de Seguridad Integral
| Comando | Descripción |
|---|
garak --model-type openai --model-name gpt-4 --probes encoding,malwaregen,promptinject --generations 20 | Suite completa de sondeo de seguridad |
Pruebas de Sesgo y Equidad
| Comando | Descripción |
|---|
garak --model-type huggingface --model-name microsoft/DialoGPT-medium --probes bias,toxicity,hate --detectors specialwords | Suite de pruebas de sesgo |
Pruebas de Privacidad de Datos
| Comando | Descripción |
|---|
garak --model-type openai --model-name gpt-3.5-turbo --probes leakage --detectors pii | Suite de pruebas de privacidad |
Archivos de Configuración
Configuración Básica (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_
Configuración Avanzada
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"]
Resolución de Problemas
Would you like me to continue with the remaining sections or placeholders?
| Comando | Descripción |
|---|
garak --check-models | Verificar conectividad del modelo |
garak --dry-run | Configuración de prueba sin ejecutar sondas |
garak --debug | Habilitar modo debug |
garak --list-model-types | Mostrar tipos de modelo compatibles |
pip install garak[dev] | Instalar con dependencias de desarrollo |
Integración con CI/CD
| Comando | Descripción |
|---|
garak --model-type openai --model-name gpt-3.5-turbo --probes security --exit-on-fail | Fail CI en problemas de seguridad |
garak --config ci_config.yaml --report-format json > results.json | Generar salida compatible con CI |
Mejores Prácticas
- Siempre pruebe los modelos antes del despliegue en producción
- Use múltiples categorías de pruebas para un testeo integral
- Establezca recuentos de generación apropiados para significancia estadística
- Configure límites de tasa de API adecuados para evitar throttling
- Almacene claves de API sensibles como variables de entorno
- Revise y analice los informes generados a fondo
- Implemente pruebas continuas en pipelines de desarrollo
- Documente y rastree los resultados de pruebas de seguridad a lo largo del tiempo