Ir al contenido

Garak

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

ComandoDescripción
pip install garakInstalar Garak mediante pip
git clone https://github.com/leondz/garak.gitClonar desde GitHub
cd garak && pip install -e .Instalar en modo de desarrollo
garak --helpMostrar ayuda y opciones disponibles
garak --list-probesEnumerar todas las sondas disponibles
garak --list-detectorsEnumerar todos los detectores disponibles
garak --list-generatorsEnumerar todos los generadores disponibles

Uso Básico

ComandoDescripción
garak --model-type openai --model-name gpt-3.5-turboProbar OpenAI GPT-3.5-turbo
garak --model-type huggingface --model-name microsoft/DialoGPT-mediumProbar modelo HuggingFace
garak --model-type replicate --model-name replicate/llama-2-70b-chatModelo de Replicación de Prueba
garak --probes encodingEjecutar sondas de vulnerabilidad de codificación
garak --probes malwaregenEjecutar sondas de generación de malware
garak --probes promptinjectEjecutar sondas de inyección de prompt

Categorías de Sondas

Sondas de Seguridad

ComandoDescripción
garak --probes encoding.InjectBase64Prueba de inyección de codificación base64
garak --probes encoding.InjectHexPrueba de inyección de codificación hexadecimal
garak --probes encoding.InjectMorsePrueba de inyección de codificación de Morse code
garak --probes encoding.InjectROT13Prueba de inyección de codificación ROT13
garak --probes malwaregen.EvasionGeneración de prueba de evasión de malware
garak --probes promptinject.AttackPromptProbar ataques de inyección de prompt

Sondas de Sesgo y Toxicidad

ComandoDescripción
garak --probes bias.BiasProbePrueba de sesgo en respuestas de modelo
garak --probes toxicity.ToxicityProbePrueba para generación de contenido tóxico
garak --probes hate.HateSpeechProbePrueba para generación de hate speech
garak --probes discrimination.DiscriminationProbePrueba de contenido discriminatorio

Sondas de Fuga de Datos

ComandoDescripción
garak --probes leakage.PIILeakagePrueba de fuga de datos PII
garak --probes leakage.TrainingDataLeakagePrueba para exposición de datos de entrenamiento
garak --probes leakage.SystemPromptLeakagePrueba de exposición del sistema prompt

Configuración Avanzada

ComandoDescripción
garak --config config.yamlUsar 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 5Establecer número de solicitudes paralelas
garak --temperature 0.7Establecer temperatura del modelo
garak --max-tokens 150Establecer tokens máximos por respuesta

Sondas Personalizadas

ComandoDescripción
garak --probes myprobe.CustomProbeEjecutar sonda personalizada
garak --probe-options '{"param": "value"}'Pasar parámetros al probe
garak --probe-tags security,injectionFiltrar sondas por etiquetas

Detectores y Evaluación

ComandoDescripción
garak --detectors always.PassUsar detector de paso siempre
garak --detectors mitigation.MitigationBypassUsar detector de bypass de mitigación
garak --detectors specialwords.SlursReclaimedSlursDetectar insultos y términos ofensivos reclamados
garak --detectors toxicity.ToxicityClassifierUsar clasificador de toxicidad

Salida e Informes

ComandoDescripción
garak --report-format jsonGenerar informe JSON
garak --report-format htmlGenerar informe HTML
garak --report-format csvGenerar informe CSV
garak --verboseHabilitar salida detallada
garak --log-level DEBUGEstablecer nivel de registro de depuración

Integración de Modelos

Modelos de OpenAI

ComandoDescripción
garak --model-type openai --model-name gpt-4Probar GPT-4
garak --model-type openai --model-name gpt-3.5-turbo-16kProbar GPT-3.5-turbo con contexto de 16k
export OPENAI_API_KEY=your_keyEstablecer clave de API de OpenAI

Modelos de HuggingFace

ComandoDescripción
garak --model-type huggingface --model-name facebook/opt-1.3bProbar modelo OPT
garak --model-type huggingface --model-name EleutherAI/gpt-j-6BProbar modelo GPT-J
export HF_TOKEN=your_tokenEstablecer token de HuggingFace

Modelos Locales

ComandoDescripción
garak --model-type ggml --model-name path/to/model.binProbar modelo GGML
garak --model-type llamacpp --model-name path/to/model.ggufProbar modelo llama.cpp

Pruebas por Lotes

ComandoDescripción
garak --model-list models.txtProbar múltiples modelos desde archivo
garak --probe-list probes.txtEjecutar múltiples sondas desde archivo
garak --generations 10Establecer número de generaciones por sonda
garak --seed 42Establecer semilla aleatoria para reproducibilidad

Flujos de Trabajo de Pruebas de Seguridad

Escaneo de Seguridad Integral

ComandoDescripción
garak --model-type openai --model-name gpt-4 --probes encoding,malwaregen,promptinject --generations 20Suite completa de sondeo de seguridad

Pruebas de Sesgo y Equidad

ComandoDescripción
garak --model-type huggingface --model-name microsoft/DialoGPT-medium --probes bias,toxicity,hate --detectors specialwordsSuite de pruebas de sesgo

Pruebas de Privacidad de Datos

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

ComandoDescripción
garak --check-modelsVerificar conectividad del modelo
garak --dry-runConfiguración de prueba sin ejecutar sondas
garak --debugHabilitar modo debug
garak --list-model-typesMostrar tipos de modelo compatibles
pip install garak[dev]Instalar con dependencias de desarrollo

Integración con CI/CD

ComandoDescripción
garak --model-type openai --model-name gpt-3.5-turbo --probes security --exit-on-failFail CI en problemas de seguridad
garak --config ci_config.yaml --report-format json > results.jsonGenerar 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