Sobre el proyecto
garak (Generative AI Red-teaming & Assessment Kit) es una herramienta de línea de comandos para sondear modelos de lenguaje grandes y sistemas de diálogo en busca de modos de fallo. Es desarrollado por NVIDIA y publicado bajo la licencia Apache 2.0.
Qué hace
- Verifica si un LLM puede ser inducido a fallar de maneras indeseables, incluyendo alucinaciones, fugas de datos, inyección de prompts, desinformación, generación de toxicidad, jailbreaks y otras debilidades.
- Combina sondas estáticas, dinámicas y adaptativas para explorar estos modos de fallo.
- El README compara su papel con nmap o el Metasploit Framework, pero aplicado a LLMs.
Objetivos compatibles
- Modelos generativos de Hugging Face Hub, incluyendo pipelines locales de transformers, la API de Inferencia y Endpoints de Inferencia privados.
- Modelos de chat y completado de OpenAI.
- Modelos de texto de Replicate y endpoints privados de Replicate.
- Modelos fundacionales de AWS Bedrock a través de la API Converse, cubriendo familias como Anthropic Claude, Meta Llama, Amazon Titan, AI21 Labs, Cohere y Mistral AI.
- Cohere, Groq, litellm, endpoints NVIDIA NIM, modelos ggml/llama.cpp, y esencialmente cualquier cosa accesible a través de un endpoint REST.
- Generadores de prueba integrados (test.Blank, test.Repeat) para el desarrollo de plugins.
Instalación y uso
- Se instala desde PyPI con pip, desde la rama principal de GitHub, o se clona desde el código fuente en un entorno Conda (Python 3.11 a 3.13).
- La sintaxis general es `garak <opciones>`; la herramienta necesita un modelo objetivo y por defecto ejecuta todas las sondas conocidas con los detectores recomendados de cada sonda.
- `--list_probes` lista las sondas disponibles; `--target_type` y `--target_name` seleccionan el modelo; `--spec` reduce la ejecución a una familia de sondas o a un solo plugin.
- Las claves API para proveedores alojados se suministran a través de variables de entorno como OPENAI_API_KEY, HF_INFERENCE_TOKEN, REPLICATE_API_TOKEN, COHERE_API_KEY, GROQ_API_KEY, NIM_API_KEY y BEDROCK_API_KEY.
Ejemplos de sondas descritos en el README
- blank, atkgen (generación automatizada de ataques), badchars (perturbaciones Unicode imperceptibles), av_spam_scanning, continuation, dan (ataques DAN y similares), donotanswer, encoding (inyección de prompts mediante codificación de texto), gcg (sufijo adversarial), glitch (tokens glitch), grandma, goodside, leakreplay (reproducción de datos de entrenamiento), lmrc (Tarjetas de Riesgo de Modelos de Lenguaje), malwaregen, misleading, packagehallucination, promptinject, realtoxicityprompts, snowball (alucinación en bola de nieve), y xss.
Resultados y registro
- Para cada sonda, garak imprime una barra de progreso y luego una fila que evalúa los resultados por detector, marcando las respuestas como FAIL con una tasa de fallo cuando ocurre un comportamiento indeseable.
- Los registros incluyen garak.log para depuración, un informe JSONL por ejecución con una entrada por intento de sondeo, y un registro de aciertos que detalla los intentos que produjeron una vulnerabilidad.
- Un script de análisis básico en analyse/analyse_log.py muestra las sondas y prompts que produjeron más aciertos.
Arquitectura y extensibilidad
- El código está organizado en sondas, detectores, evaluadores, generadores y arneses, cada uno con un base.py que define las clases base de los plugins.
- El modo de operación predeterminado usa el arnés probewise, que instancia cada sonda y lee sus atributos primary_detector y extended_detectors para decidir qué detectores ejecutar.
- Los desarrolladores pueden escribir nuevos plugins heredando de clases base como garak.probes.base.TextProbe, probándolos interactivamente o con generadores y detectores de prueba, y listándolos mediante --list_probes, --list_detectors o --list_generators.
Recursos del proyecto
- Documentación en docs.garak.ai y reference.garak.io/readthedocs, una comunidad de Discord, la página principal del proyecto garak.ai, un preprint en arXiv (2406.11036) y una entrada de cita para uso académico.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.