前言:本文介绍两个主流的开源大模型安全检测工具:Promptfoo(评测与红队测试一体化平台)与 NVIDIA Garak(大模型漏洞扫描器),覆盖其技术背景、核心能力、部署方式与典型使用方法,并给出选型建议。


一、背景:大模型安全为什么需要专门工具

大模型应用引入了一类传统安全工具难以覆盖的风险。以提示词注入(Prompt Injection)为例,攻击者可以通过构造输入篡改模型的系统指令,使 Agent 执行越权操作或泄露数据。与之并列的风险还包括越狱(Jailbreak)、有害内容生成、敏感信息泄露(PII)、幻觉(Hallucination)以及 Agent 场景下的过度授权(Excessive Agency)等。

传统安全扫描器的局限性在于:大模型输出是概率性、开放式的,无法用确定性规则完整判定"是否被攻破"。因此需要专门的工具,以自动生成攻击用例 + 自动判定结果的方式对大模型进行系统化检测。以下两个工具分别代表了这一领域的两条技术路线:

工具定位维护方
PromptfooLLM 评测 + 红队测试一体化平台开源社区(已并入 OpenAI)
Garak大模型漏洞扫描器NVIDIA

二、Promptfoo:评测与红队测试一体化平台

2.1 背景与定位

Promptfoo 最初面向 LLM 应用的提示词评测(Prompt Evaluation),用于在多个 Prompt、模型与测试用例之间进行对比与回归测试。其后扩展出红队测试(Red Teaming)能力,可自动生成攻击性测试用例,探测模型的安全弱点。

2025 年底,Promptfoo 官方宣布加入 OpenAI,OpenAI 借此强化其在 Agentic AI 安全领域的布局。该工具用户规模已超过 10 万(见官方博客),并被多家 Fortune 500 企业采用。这一事件本身也表明:评测与安全测试工具已成为大模型基础设施的刚性需求。

2.2 核心能力

Promptfoo 的能力可以划分为相互配合的两部分:

(1)Eval:评测与回归测试

用于对提示词与模型输出进行系统化评估,核心要素包括:

  • Test Cases(测试用例):定义输入与期望行为,支持精确匹配、包含关系、正则表达式、JSON Schema 校验等多种断言;
  • Assertions(断言):将"输出必须拒绝有害请求"“不得包含邮箱格式字符串”"必须为合法 JSON"等规则形式化;
  • Model-Graded Evaluation(模型评分):使用一个更强的基础模型作为评判者(Judge),对主观性指标(语气、专业性等)进行打分;
  • 多 Provider 支持:同一套测试可同时针对 OpenAI、Anthropic、Google、Azure、本地模型以及自定义 HTTP 接口、Python 脚本执行。

(2)Red Team:红队测试

这是 Promptfoo 的核心能力。用户只需声明被测系统的用途(purpose),工具即可生成针对性攻击用例,并通过以下两类机制扩展攻击面:

  • Plugins(插件):按攻击类别组织,多数与 OWASP LLM Top 10 对齐;
  • Strategies(策略):对攻击载荷进行变异与加固,模拟更高级的攻击者。

主要插件类别如下:

插件类别对应风险说明
jailbreak越狱绕过模型对齐护栏(如 DAN、角色扮演等手法)
prompt-injection提示词注入直接注入与间接注入
pii敏感信息泄露诱导模型输出身份证号、邮箱、手机号等
harmful有害内容暴力、仇恨、自残、违法指导等类别
hallucination幻觉诱导模型编造事实或虚构引用
excessive-agency过度授权针对具备工具调用能力的 Agent,测试越权操作
rbac访问控制测试权限边界是否可被突破

其中 excessive-agencyrbac 等插件针对 Agent 的工具调用与权限模型设计,是 Agent 安全评估中需要重点关注的类别。

2.3 部署方式

Promptfoo 基于 Node.js 分发,安装轻量:

# 全局安装
npm install -g promptfoo

# 或使用 npx 临时运行(适用于 CI 环境)
npx promptfoo@latest --help

仅需 Node.js 18+ 运行环境,无需数据库或独立服务;执行结果支持本地查看与在线分享。

2.4 使用方法

初始化红队项目:

promptfoo redteam init

该命令以交互方式收集被测模型与用途信息,并生成配置文件 promptfooconfig.yaml

配置示例:

# promptfooconfig.yaml
description: "客服 Agent 红队测试"

prompts:
  - "You are a helpful customer service agent."

providers:
  - openai:chat:gpt-4o          # 亦可替换为 anthropic、本地 ollama 等

redteam:
  purpose: "A customer service chatbot that can look up orders and send emails."
  plugins:
    - jailbreak
    - prompt-injection
    - pii
    - harmful:violent-crime
    - excessive-agency
  strategies:
    - jailbreak
    - jailbreak:composite

执行与查看报告:

promptfoo redteam run        # 运行红队测试
promptfoo view               # 打开 Web 可视化报告

报告按风险类别展示失败率、严重程度,并列出失败的具体攻击用例与模型回复。

除红队外,标准评测流程如下:

promptfoo init               # 生成评测配置
promptfoo eval               # 执行评测
promptfoo view               # 查看结果

在这里插入图片描述
在这里插入图片描述

2.5 特点与适用场景

优势:

  • 功能一体化:评测、红队、报告与 CI/CD 集成集中在同一工具;
  • 上手成本低:YAML 配置驱动,无需编写代码即可运行;
  • 可扩展性强:支持 TypeScript 自定义插件、自定义 Provider 与断言;
  • 面向 Agent:excessive-agencyrbac 等插件直接覆盖 Agent 安全风险;
  • 工程化友好:支持接入 GitHub Actions 等 CI/CD 流程,适合作为上线前安全门禁。

适用场景:

  • LLM 应用与 Agent 的上线前安全回归测试;
  • CI/CD 流水线中的自动化安全检测;
  • 多模型、多提示词的对比评测。

局限性:

  • 定位为评测框架而非深度漏洞扫描器:攻击面覆盖广,但单一攻击类别的深度不如专用工具;
  • 大规模执行会消耗可观的模型 API 调用成本;
  • 深度定制需编写 TypeScript 插件,存在一定学习成本。

三、NVIDIA Garak:大模型漏洞扫描器

3.1 背景与定位

Garak 是 NVIDIA 推出的大模型漏洞扫描器,由安全研究员 Leon Derczynski(leondz)主导开发。与 Promptfoo 的评测定位不同,Garak 自设计之初即面向"攻击 + 判定",对模型系统性地发起大规模探测,并自动判定每次攻击是否得手,定位类似传统安全领域的 Nessus 或 Metasploit 之于大模型。

3.2 架构:四个解耦组件

Garak 的核心架构由四个组件构成:

Generators(被测模型)
    ↑ 攻击载荷输入
Probes(攻击生成器)   —— 生成攻击 prompt
    ↓ 模型输出
Detectors(检测器)    —— 判定攻击是否成功
    ↑ 可选
Buffs(变异器)        —— 对攻击载荷做编码/变形以绕过防护
  • Generators:被测模型后端,支持 HuggingFace 本地模型、OpenAI 兼容 REST 端点、Replicate、GGUF、NVIDIA NIM 等;
  • Probes:攻击载荷生成器,按漏洞类别组织,如 promptinject(提示词注入)、dan(越狱)、encoding(编码绕过)、toxicity(毒性)、leakreplay / snowball(训练数据泄露)等,总数达数百个;
  • Detectors:判定器,如 mitigation.MitigationBypasstoxicity.ToxicCommentModelknownbadsignatures(检测知名恶意回复签名)等;
  • Buffs:攻击变形器,如 Base64、ROT13、Unicode 变换等,用于测试模型对编码/混淆类绕过的抵抗能力。

该设计的价值在于组件间充分解耦,可自由组合:Probe 负责生成攻击,Detector 负责判定,Buffs 负责变形,Generator 负责接收攻击,扩展任一环节只需新增对应插件。

3.3 部署方式

# 推荐使用 pipx 隔离安装
pipx install garak

# 或直接使用 pip
python -m pip install -U garak

扫描远程 API 模型时安装即可运行;扫描本地模型需额外安装 transformerstorch 等依赖,并具备足够的显存/内存。

3.4 使用方法

查看支持的组件:

garak --list_probes        # 攻击探针
garak --list_detectors     # 检测器
garak --list_generators    # 模型后端
garak --list_configs       # 预设配置

扫描本地 HuggingFace 模型:

garak --model_type huggingface \
      --model_name meta-llama/Meta-Llama-3-8B-Instruct \
      --probes promptinject,dan,encoding \
      --report_prefix mymodel_scan

扫描远程 API 模型:

# OpenAI 官方 API(通过 OPENAI_API_KEY 环境变量鉴权)
garak --model_type openai --model_name gpt-4o-mini

# 任意 OpenAI 兼容 REST 端点(自建 vLLM、Ollama 等)
garak --model_type rest \
      --model_name my-model \
      --generator_options '{"rest_uri":"http://localhost:8000/v1/chat/completions"}'

聚焦扫描特定漏洞类别:

# 仅扫描提示词注入
garak --model_type huggingface --model_name <model> --probes promptinject

# 仅扫描越狱
garak --model_type huggingface --model_name <model> --probes dan

# 使用预设配置执行完整扫描
garak --model_type huggingface --model_name <model> --configs scan.defaults

在这里插入图片描述

查看报告:

扫描完成后,Garak 在 garak_runs/ 目录下生成两类结果:.report.jsonl(逐条探测明细,便于机器处理与二次分析)与 .report.html(可视化报告,展示各探针成功率)。

3.5 特点与适用场景

优势:

  • 专而深:数百个探针 + 自动判定,实现批量自动攻击;
  • 架构清晰:四个组件解耦,扩展攻击面只需新增对应插件;
  • 结果可机读:JSONL 报告便于接入分析流水线、复现研究结果;
  • 研究友好:与 MITRE ATLAS(大模型攻防知识库)存在映射,探针具备明确的学术出处;
  • 后端覆盖广:本地模型、远程 API、NVIDIA NIM 均可。

适用场景:

  • 对单个模型进行系统性、全面的漏洞体检;
  • 安全研究及特定攻击的复现;
  • 需要机器可读结果以实现自动化闭环的场景。

局限性:

  • 聚焦攻击扫描,不具备 Promptfoo 的评测、回归与 CI/CD 门禁等工程化能力;
  • 覆盖范围受限于内置探针类别,业务相关的定制化攻击需自行编写插件;
  • 全量扫描耗时较长,对本地计算资源要求较高。

四、对比与选型

维度PromptfooGarak
维护方开源社区(已并入 OpenAI)NVIDIA
定位LLM 评测 + 红队测试平台LLM 漏洞扫描器
技术栈Node.js / TypeScriptPython
攻击面覆盖广,含 Agent 专属插件探针深,学术背景强
判定方式断言 + 模型评分(Model-Graded)专用 Detector 自动判定
结果形态Web 报告、可分享JSONL + HTML
工程化CI/CD 集成完善,适合安全门禁偏扫描与研究,JSONL 便于二次开发
扩展方式TypeScript 自定义插件、自定义 ProviderPython 自定义 Probes / Detectors / Buffs
最擅长上线前回归与持续安全测试单模型深度漏洞体检与攻击复现

选型建议:

  • 面向产品/Agent 的上线前安全门禁与持续回归测试,优先选择 Promptfoo
  • 面向单个模型的深度漏洞扫描、攻击复现与研究,优先选择 Garak
  • 两者定位互补,可在生产实践中组合使用:以 Garak 进行阶段性深度摸底,以 Promptfoo 承担日常回归与 CI 门禁。

五、总结

大模型安全风险是上线即面临的问题,而非事后才需考虑的事项。本文介绍的两个工具分别代表了这一领域的两条成熟路线,两者结合,可覆盖"周期性深度检测"与"持续回归防护"两类需求:

  • Promptfoo 将安全测试工程化、常态化,具备低上手成本与良好的 CI/CD 集成能力;
  • Garak 提供深度、系统化的漏洞扫描能力,其解耦架构便于研究与扩展。

扩展阅读:

更多推荐