字数 950,阅读大约需 5 分钟
大模型安全评估神器---Garak
Garak是干什么的?
Garak,全称 Generative AI Red-teaming & Assessment Kit,是一种由 NVIDIA 开发的开源工具,专注于扫描 LLM 的漏洞。它的设计灵感来源于网络安全领域的工具,如 nmap(用于网络扫描)和 Metasploit Framework(用于漏洞利用),但其目标是 LLM 的安全评估。Garak 通过静态、动态和自适应探测,探索 LLM 或对话系统的潜在失败模式,包括但不限于:
-
• 幻觉(hallucination):生成与事实不符的内容。 -
• 数据泄露:意外暴露敏感信息。 -
• 提示注入(prompt injection):通过恶意输入操控模型。 -
• 错误信息:传播不准确的信息。 -
• 有毒内容生成:输出不适当或有害的文本。 -
• 越狱(jailbreaks):绕过模型的安全限制。
为什么它重要
随着 LLM 被集成到数千个应用中,对其安全性的评估需求日益增长。研究表明,LLM 的输出具有不可预测性,且模型经常更新,潜在的攻击者群体多样化,包括任何具备一定自然语言能力的互联网用户(garak - OECD.AI)。例如,在一个场景中,聊天机器人可能因提示注入而泄露用户数据;在另一个场景中,模型可能生成误导性信息,影响公众信任。garak 的出现填补了这一空白,提供了一种可扩展的评估方法,帮助 AI 演员开发可信赖的 AI 系统,符合公平、透明和安全的原则。此外,garak 的重要性还体现在其对政策制定的贡献。通过系统性地识别漏洞,它为 LLM 的对齐(alignment)和实际部署提供数据支持,特别是在需要遵守数据保护法规或人权标准的场景中。
下载;
https://github.com/NVIDIA/garak
Garak的工作原理
Garak的功能和特性
Garak 提供了丰富的功能,适合各种技术人员使用:
模块化与可扩展性:
用户可以添加新的探测器和生成器,定制化测试流程。例如,社区不断开发新探测器,覆盖范围不断扩大(Welcome to garak! | garak)。
全面的测试能力:
它支持数十个插件和数千个提示,涵盖 LLM 安全评估的多个方面,如提示注入、越狱和文本重放(text replay)(Evaluating Vulnerabilities in OpenAI Language Learning Models with GARAK | Medium)。
详细报告:
运行完成后,garak 生成全面报告,列出成功和需要改进的领域,帮助用户快速定位问题。
易于安装与使用:
可以通过 pip 安装,或从源代码安装(例如 python -m pip install -U git+https://github.com/NVIDIA/garak.git@main),并支持命令行操作(GitHub - NVIDIA/garak)。
使用场景与案例
garak 的应用场景包括但不限于:
-
• AI 开发者:在部署 LLM 之前,使用 garak 测试模型的安全性,确保不会产生有害输出。 -
• 安全研究人员:探索 LLM 的新漏洞,为安全策略提供数据支持。 -
• 企业用户:在集成 LLM 到产品中时,评估风险,符合合规要求,如 GDPR 或其他数据保护法规。
资源与社区支持
Garak 提供了丰富的文档和社区资源,帮助用户快速上手:
-
• 用户指南:docs.garak.ai,包含运行 garak 和解读结果的信息。 -
• 参考文档:reference.garak.ai,适合开发者了解内部机制。 -
• 代码参考:garak.readthedocs.io,提供 API 和代码示例。 -
• FAQ:GitHub FAQ,解答常见问题。 -
• 项目主页:garak.ai,提供概述和最新更新。 -
• 社区互动:加入 Discord 或关注 X 上的动态,参与讨论和贡献。
命令使用场景与示例
以下是一些常见使用场景及其对应的命令示例,帮助技术人员快速上手:
- 安装与初始化
-
安装 Garak:pip install -U git+https://github.com/NVIDIA/garak(注意:安装不是 CLI 命令,但为使用做准备)。 -
设置 OpenAI API 密钥:garak config set openai_api_key <your_api_key>。设置 OpenAI API 密钥:garak config set openai_api_key <您的 API 密钥>。
-
- 探索可用组件
- 运行基本测试
-
运行提示注入测试:garak run --generator openai --model gpt-3.5-turbo --probe prompt_injection。运行提示注入测试:garak 运行 --生成器 openai --模型 gpt-3.5-turbo --探测 提示注入。 -
运行多个测试:garak run --generator openai --model gpt-3.5-turbo --probe prompt_injection --probe data_leakage。运行多个测试:garak 运行 --generator openai --model gpt-3.5-turbo --probe 提示注入 --probe 数据泄露。
-
- 自定义测试参数
-
增加样本数以提高测试覆盖率:garak run --generator openai --model gpt-3.5-turbo --probe prompt_injection --num_samples 10。增加样本数以提高测试覆盖率:运行 garak --generator openai --model gpt-3.5-turbo --probe prompt_injection --num_samples 10。 -
指定输出目录存储结果:garak run --generator openai --model gpt-3.5-turbo --probe prompt_injection --output_dir my_results。指定输出目录存储结果:garak 运行 --生成器 openai --模型 gpt-3.5-turbo --探测 提示注入 --输出目录 my_results。
-
garak_envrobinxie@robinxiedeMacBook-Pro Garak % python llm_security_scanner.py -i
原文始发于微信公众号(网络安全等保与关保):大模型安全评估神器---Garak
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论