Назад к обновлениям
New releaseSep 10, 2026

garak v0.17.0

Модульный сканер уязвимостей LLM, который проверяет на галлюцинации, утечку данных, промпт-инъекции, джейлбрейки и токсичность с помощью статических, динамических и адаптивных зондов для нескольких провайдеров моделей.

Поделиться

garak, сканер уязвимостей LLM

Набор для ред-тиминга и оценки генеративного ИИ

garak проверяет, можно ли заставить приложение на основе LLM отказать нежелательным для нас образом. garak исследует галлюцинации, утечки данных, внедрение промптов, дезинформацию, генерацию токсичного контента, джейлбрейки и множество других слабых мест. Если вы знакомы с nmap или msf / Metasploit Framework, garak делает нечто похожее, но для LLM.

garak сосредоточен на способах заставить LLM или диалоговую систему отказать. Он сочетает статические, динамические и адаптивные пробы для их исследования.

garak — бесплатный инструмент. Мы любим его разрабатывать и всегда заинтересованы в добавлении функциональности для поддержки приложений.

License Tests/Linux Tests/Windows Tests/OSX Documentation Status arXiv discord-img Code style: black PyPI - Python Version PyPI Downloads Downloads

Начало работы

> Смотрите наше руководство пользователя! docs.garak.ai

> Присоединяйтесь к нашему Discord!

> Ссылки на проект и главная страница: garak.ai

> Twitter: @garak_llm

> Слайды с DEF CON slides!


Поддержка LLM

в настоящее время поддерживаются:

  • генеративные модели hugging face hub
  • текстовые модели replicate
  • чат- и continuation-модели openai api
  • фундаментальные модели aws bedrock
  • litellm
  • практически всё, что доступно через REST
  • модели gguf, такие как llama.cpp версии >= 1046
  • .. и многие другие LLM!

Установка:

garak — это инструмент командной строки. Он разрабатывается в Linux и OSX.

Стандартная установка с помощью pip

Просто возьмите его из PyPI, и всё должно быть готово к работе:

python -m pip install -U garak

Установка версии для разработки с помощью pip

Стандартная версия garak в pip обновляется периодически. Чтобы получить более свежую версию с GitHub, попробуйте:

python -m pip install -U git+https://github.com/NVIDIA/garak.git@main

Клонирование из исходного кода

У garak есть собственные зависимости. Вы можете установить garak в отдельном окружении Conda:

conda create --name garak "python>=3.11,<=3.14"
conda activate garak
gh repo clone NVIDIA/garak
cd garak
python -m pip install -e .

Хорошо, если всё прошло успешно, скорее всего, вы готовы к работе!

Примечание: если вы клонировали репозиторий до переезда в организацию NVIDIA на GitHub, но читаете это по адресу github.com/NVIDIA, обновите ваши remote-репозитории следующим образом:

git remote set-url origin https://github.com/NVIDIA/garak.git

Начало работы

Общий синтаксис:

garak <options>

garak должен знать, какую модель сканировать, и по умолчанию он попытается применить все известные ему пробы к этой модели, используя детекторы уязвимостей, рекомендованные каждой пробой. Список проб можно посмотреть с помощью:

garak --list_probes

Чтобы указать генератор, используйте опции --target_type и, при необходимости, --target_name. Тип модели задаёт семейство/интерфейс модели; имя модели задаёт конкретную используемую модель. Раздел «Intro to generators» ниже описывает некоторые поддерживаемые генераторы. Простое семейство генераторов — модели Hugging Face; чтобы загрузить одну из них, задайте --target_type как huggingface, а --target_name — как имя модели на Hub (например, "RWKV/rwkv-4-169m-pile"). Некоторым генераторам может потребоваться API-ключ, заданный как переменная окружения, и они сообщат вам, если он нужен.

garak по умолчанию запускает все пробы, но вы можете указать конкретные. Например, --spec probes.promptinject будет использовать только методы фреймворка PromptInject. Вы также можете указать конкретный плагин вместо семейства плагинов, добавив имя плагина после .; например, --spec probes.lmrc.SlurUsage будет использовать реализацию проверки моделей на генерацию оскорблений на основе фреймворка Language Model Risk Cards.

За помощью и вдохновением обращайтесь к нам в Twitter или discord!

Примеры

Проверка коммерческой модели на prompt injection на основе кодирования (OSX/*nix) (замените пример значения на реальный API-ключ OpenAI)

export OPENAI_API_KEY="sk-123XXXXXXXXXXXX"
python3 -m garak --target_type openai --target_name gpt-5-nano --spec probes.encoding

Посмотрите, уязвима ли версия GPT2 от Hugging Face к DAN 11.0

python3 -m garak --target_type huggingface --target_name gpt2 --spec probes.dan.Dan_11_0

Чтение результатов

Для каждой загруженной пробы garak будет выводить индикатор выполнения по мере генерации. После завершения генерации выводится строка с оценкой результатов этой пробы по каждому детектору. Если какая-либо из попыток промпта привела к нежелательному поведению, ответ будет помечен как FAIL, и указана частота отказов.

Вот результаты с модулем encoding на варианте GPT-3: alt text

И те же результаты для ChatGPT: alt text

Мы видим, что более новая модель гораздо более восприимчива к инъекционным атакам на основе кодирования, тогда как text-babbage-001 оказался уязвим только к инъекциям с кодированием quoted-printable и MIME. Числа в конце каждой строки, например 840/840, указывают общее количество сгенерированных текстов и затем, сколько из них показали приемлемое поведение. Число может быть довольно большим, поскольку на каждый промпт делается более одной генерации — по умолчанию 10.

Ошибки записываются в garak.log; ход выполнения подробно логируется в файле .jsonl, указанном в начале и конце анализа. Есть базовый скрипт анализа в analyse/analyse_log.py, который выводит пробы и промпты, приведшие к наибольшему числу срабатываний.

Присылайте PR и открывайте issues. Удачной охоты!

Введение в генераторы

Hugging Face

Категории