Itinai.com two developers coding side by side in a minimalist 9e46852c 56ad 43df b8ce 5a8451c13b63 3

Создайте надёжный workflow LLM с NVIDIA garak за час

Itinai.com two developers coding side by side in a minimalist 9e46852c 56ad 43df b8ce 5a8451c13b63 3

Что делает скрипт и зачем он нужен

Представленный фрагмент — это набор небольших, но полезных инструментов для автоматического анализа отчётов garak. Garak — открытый фреймворк, который проверяет модели ИИ на уязвимости (например, попытки обойти безопасность). Скрипт ищет свежий report.jsonl, извлекает из него оценки и выводит таблицу с процентом успешных атак (ASR %). При желании рисует горизонтальную диаграмму.

Как подготовить окружение

  • Установите необходимые библиотеки: pip install numpy pandas matplotlib. Garak уже должен быть установлен в системе для импорта garak.report.
  • Убедитесь, что у вас есть хотя бы один выполненный запуск Garak, иначе скрипт не найдёт файлы *report.jsonl.
  • Если планируете запускать скрипт в среде без графического интерфейса (например, на сервере), добавьте matplotlib.use('Agg') перед импортом pyplot – график будет сохраняться в файл, а не открываться в окне.

Пошаговый разбор кода

  • Поиск последнего отчёта – функция find_latest_report() сканирует три каталога (~/.local/share/garak/garak_runs, ~/.cache/garak и текущий каталог) и выбирает самый свежий файл с ненулевым размером.
  • Загрузка отчёта – сначала пытаемся использовать готовый класс garak.report.Report. Если он недоступен (например, разные версии Garak), переходим к «ручному» парсингу JSON‑строк.
  • Подсчёт метрик:
    • score – процент безопасных ответов: 100 * passed / total_evaluated.
    • asr_% – процент атак, которые прошли: 100 - score.
  • Формирование таблицы – выводим столбцы probe, detector, passed, total_evaluated, safe_% и asr_%, сортируя по убыванию asr_% (чем выше — тем уязвимее).
  • Визуализация – горизонтальная столбчатая диаграмма с названиями probe + detector и осью Attack Success Rate (%). При ошибке (например, отсутствие GUI) график просто не рисуется, а в консоль выводится сообщение.

Типичные проблемы и как их решить

  • ImportError: No module named garak.report – убедитесь, что версия Garak ≥ 0.9, где модуль garak.report уже существует. Если нужен более старый Garak, оставьте только ручной парсинг.
  • FileNotFoundError при поиске отчёта – проверьте, что вы действительно запускали Garak и указали правильный путь к домашней директории. Можно явно передать путь в переменную report_path.
  • Проблемы с графикой – в безголовом окружении добавьте import matplotlib; matplotlib.use('Agg') перед импортом pyplot и замените plt.show() на plt.savefig('asr.png').
  • Пустой DataFrame – значит, в файле нет записей типа "entry_type": "eval". Проверьте, что запуск Garak включал опцию --output-jsonl и не был прерван ошибкой.

Как улучшить скрипт под свои нужды

  • Добавьте фильтрацию по конкретному probe или detector, если интересует только один тип уязвимости.
  • Экспортируйте таблицу в CSV: view.to_csv('garak_summary.csv', index=False).
  • Интегрируйте в CI/CD‑pipeline: скрипт может автоматически генерировать отчёт после каждого теста модели и отправлять его в Slack/Email.
  • Расширьте визуализацию: используйте seaborn для тепловой карты pivot_table по probe × detector.

Полезные ссылки

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн