综合介绍
NVIDIA Garak 是一款开源工具,专门用于检测大型语言模型(LLM)的漏洞。它通过静态、动态和自适应探测,检查模型是否存在幻觉、数据泄露、提示注入、错误信息生成、有害内容生成等多种弱点。Garak 类似于网络安全中的 nmap,但专注于 LLM 的安全性评估。
相关工具:https://github.com/msoedov/agentic_security
功能列表
- 漏洞扫描:检测LLM的各种潜在漏洞,包括幻觉、数据泄露、提示注入等。
- 生成式AI评估:评估生成式AI模型在不同情境下的表现。
- 对话系统测试:测试对话系统在不同输入下的反应,识别潜在的安全问题。
- 多模型支持:支持 Hugging Face、OpenAI、Replicate 等多种生成模型。
- 命令行工具:通过命令行进行操作,适用于 Linux 和 OSX 系统。
- 日志记录:详细记录扫描过程和结果,便于后续分析和改进。
使用帮助
安装流程
- 标准安装:
- 使用 pip 从 PyPI 安装:
python -m pip install -U garak
- 使用 pip 从 PyPI 安装:
- 开发版本安装:
- 从 GitHub 获取最新版本:
python -m pip install -U git+https://github.com/NVIDIA/garak.git@main
- 从 GitHub 获取最新版本:
- 从源码克隆:
- 创建 Conda 环境并安装依赖:
conda create --name garak "python>=3.10,<3.12" conda activate garak gh repo clone NVIDIA/garak cd garak python -m pip install -e .
- 创建 Conda 环境并安装依赖:
使用方法
- 基本用法:
- Garak 需要知道要扫描的模型,并默认对该模型进行所有已知探测。使用以下命令查看探测列表:
garak --list_probes
- 指定生成器类型和模型名称:
garak --model_type huggingface --model_name RWKV/rwkv-4-169m-pile
- 运行特定探测:
garak --model_type openai --model_name gpt-3.5-turbo --probes encoding
- Garak 需要知道要扫描的模型,并默认对该模型进行所有已知探测。使用以下命令查看探测列表:
- 读取结果:
- 每个探测完成后,Garak 会生成进度条,并在完成后输出评估结果。如果任何提示尝试导致不良行为,响应将标记为 FAIL,并给出失败率。
- 日志和报告:
- 错误记录在 garak.log 文件中,运行详细日志记录在 .jsonl 文件中。可以使用 analyse/analyse_log.py 脚本进行分析。
- 示例:
- 检测 ChatGPT 是否易受编码注入攻击:
export OPENAI_API_KEY="sk-123XXXXXXXXXXXX" python3 -m garak --model_type openai --model_name gpt-3.5-turbo --probes encoding
- 检测 ChatGPT 是否易受编码注入攻击:
- 插件开发:
- 继承基类并重写必要方法,测试新代码:
import garak.probes.mymodule p = garak.probes.mymodule.MyProbe() python3 -m garak -m test.Blank -p mymodule -d always.Pass
- 继承基类并重写必要方法,测试新代码: