Об этом проекте
garak (Generative AI Red-teaming & Assessment Kit) — это инструмент командной строки для проверки больших языковых моделей и диалоговых систем на режимы отказа. Он разработан NVIDIA и выпущен под лицензией Apache 2.0.
Что он делает
- Проверяет, можно ли заставить LLM отказать нежелательным образом, включая галлюцинации, утечку данных, промпт-инъекции, дезинформацию, генерацию токсичного контента, джейлбрейки и другие слабости.
- Объединяет статические, динамические и адаптивные пробы для исследования этих режимов отказа.
- В README его роль сравнивается с nmap или Metasploit Framework, но применёнными к LLM.
Поддерживаемые цели
- Генеративные модели Hugging Face Hub, включая локальные конвейеры transformers, Inference API и приватные Inference Endpoints.
- Чат- и completion-модели OpenAI.
- Текстовые модели Replicate и приватные конечные точки Replicate.
- Фундаментальные модели AWS Bedrock через Converse API, охватывающие семейства, такие как Anthropic Claude, Meta Llama, Amazon Titan, AI21 Labs, Cohere и Mistral AI.
- Cohere, Groq, litellm, конечные точки NVIDIA NIM, модели ggml/llama.cpp и практически всё, что доступно через REST-конечную точку.
- Встроенные генераторы тестов (test.Blank, test.Repeat) для разработки плагинов.
Установка и использование
- Устанавливается из PyPI с помощью pip, из основной ветки GitHub или клонируется из исходников в среду Conda (Python 3.11–3.13).
- Общий синтаксис — `garak <options>`; инструменту нужна целевая модель, и по умолчанию он запускает все известные пробы с рекомендованными детекторами для каждой пробы.
- `--list_probes` выводит список доступных проб; `--target_type` и `--target_name` выбирают модель; `--spec` сужает запуск до семейства проб или одного плагина.
- Ключи API для хостинговых провайдеров передаются через переменные среды, такие как OPENAI_API_KEY, HF_INFERENCE_TOKEN, REPLICATE_API_TOKEN, COHERE_API_KEY, GROQ_API_KEY, NIM_API_KEY и BEDROCK_API_KEY.
Примеры проб, описанные в README
- blank, atkgen (автоматическая генерация атак), badchars (незаметные Unicode-возмущения), av_spam_scanning, continuation, dan (атаки DAN и подобные DAN), donotanswer, encoding (промпт-инъекция через текстовую кодировку), gcg (состязательный суффикс), glitch (глитч-токены), grandma, goodside, leakreplay (воспроизведение обучающих данных), lmrc (Language Model Risk Cards), malwaregen, misleading, packagehallucination, promptinject, realtoxicityprompts, snowball (снежный ком галлюцинаций) и xss.
Результаты и журналирование
- Для каждой пробы garak печатает индикатор выполнения, а затем строку с оценкой результатов по каждому детектору, помечая ответы как FAIL с коэффициентом отказов при возникновении нежелательного поведения.
- Журналы включают garak.log для отладки, JSONL-отчёт для каждого запуска с записью на каждую попытку пробы и журнал попаданий с подробностями попыток, выявивших уязвимость.
- Базовый скрипт анализа analyse/analyse_log.py выводит пробы и промпты, давшие больше всего попаданий.
Архитектура и расширяемость
- Код организован в пробы, детекторы, оценщики, генераторы и обвязки (harnesses), каждая из которых имеет base.py, определяющий базовые классы плагинов.
- Режим работы по умолчанию использует обвязку probewise, которая создаёт экземпляр каждой пробы и читает её атрибуты primary_detector и extended_detectors, чтобы решить, какие детекторы запускать.
- Разработчики могут писать новые плагины, наследуясь от базовых классов, таких как garak.probes.base.TextProbe, тестировать их интерактивно или с помощью тестовых генераторов и детекторов и выводить их списком через --list_probes, --list_detectors или --list_generators.
Ресурсы проекта
- Документация на docs.garak.ai и reference.garak.io/readthedocs, сообщество в Discord, домашняя страница проекта garak.ai, препринт arXiv (2406.11036) и запись для цитирования в академических целях.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.