202509
ai-systems

Developing Custom Detectors in Garak for LLM Risk Probing

通过 garak 框架开发自定义探测器,针对提示注入和 PII 泄露等 LLM 风险,提供模块化插件设计、评估指标及 CI/CD 管道集成策略。

在大型语言模型(LLM)广泛应用于实际场景的今天,确保其安全性已成为关键挑战。garak 作为一个开源的 LLM 漏洞扫描器,提供了一种高效的方式来探测模型潜在风险,如提示注入(prompt injection)和个人可识别信息(PII)泄露。本文将聚焦于如何在 garak 中开发自定义漏洞探测器,通过模块化插件实现针对特定风险的精确探测,并探讨评估指标的设计以及与 CI/CD 管道的集成,从而帮助工程团队构建更安全的 AI 系统。

garak 的核心机制依赖于探测器(probes)和检测器(detectors)的组合。探测器负责生成模拟攻击的交互输入,例如构造包含隐藏指令的提示来测试提示注入漏洞;检测器则分析模型输出,判断是否触发了 undesired 行为。对于自定义开发,我们首先需要理解 garak 的插件架构。garak 支持通过继承基类如 garak.probes.base.TextProbe 来创建新探测器插件。这些插件是模块化的,可以独立加载和测试,避免影响核心框架。

以提示注入为例,标准 garak 内置了 promptinject 模块,但针对特定变体如编码绕过(encoding-based injection),我们可以开发自定义插件。开发步骤包括:定义探测器的 _generate 方法来产生变异提示,例如使用 Base64 或 URL 编码包装恶意指令;然后,在插件的 recommended_detectors 属性中指定合适的检测器,如检查输出是否执行了注入指令。证据显示,这种模块化设计允许快速迭代:在 garak 的 GitHub 仓库中,类似扩展已被社区贡献者实现,证明了其灵活性。

对于 PII 泄露风险,leakreplay 模块是起点,但自定义检测器可以针对特定数据类型如身份证号或邮箱进行优化。继承 garak.detectors.base.Detector,覆盖 scan 方法,使用正则表达式或 NLP 工具(如 spaCy)匹配敏感信息。评估指标的设计至关重要:除了二元 PASS/FAIL,我们可以引入置信分数(confidence score),基于匹配强度计算,例如对于 PII,阈值设为 0.8 以上视为高风险。同时,定义召回率(recall)和精确率(precision)作为整体评估:目标是召回率 > 90%,精确率 > 85%,通过在基准数据集上验证。

集成到 CI/CD 管道是工程化落地的关键。garak 的命令行接口(CLI)支持自动化扫描,例如使用 python -m garak --model_type huggingface --model_name your-model --probes custom_promptinject --detectors custom_pii_leak 运行测试。将此命令嵌入 GitHub Actions 或 Jenkins 管道中,作为部署前检查步骤。参数配置包括 --max_runs 10 以控制生成次数,避免资源耗尽;--logging_level DEBUG 以捕获详细日志。监控要点:设置超时阈值 30 秒/生成,失败率超过 5% 触发回滚。清单形式:1. 安装 garak 并加载自定义插件;2. 配置环境变量如 HUGGINGFACE_HUB_TOKEN;3. 运行扫描并解析 JSONL 输出报告;4. 若命中率 > 阈值,通知团队并暂停部署。

在实际参数设置中,对于提示注入探测,建议生成提示长度上限 512 token,以模拟真实场景;对于 PII 检测,使用模糊匹配降低假阳性,例如邮箱模式 \w+@\w+.\w+ 但排除已知白名单。风险管理包括处理多语言输出:通过 garak 的翻译支持,预处理输入以覆盖中英双语。案例证据:在 garak 文档中,类似自定义扩展用于 toxicity generation,证明了在 CI/CD 中的可行性,扫描时间控制在 5 分钟内。

进一步优化自定义探测器时,考虑自适应机制:使用 garak 的 buffs 模块增强生成,例如添加噪声以测试鲁棒性。评估框架中,引入 F1 分数作为综合指标:F1 = 2 * (precision * recall) / (precision + recall),目标 > 0.87。集成 CI/CD 的最佳实践:使用 Docker 容器化 garak 环境,确保一致性;脚本化报告生成,输出 Markdown 总结发送至 Slack。回滚策略:若自定义检测器发现新漏洞,自动回退到上个稳定版本,并记录变更日志。

通过这些可落地参数和清单,团队可以高效开发和部署 garak 自定义探测器,确保 LLM 在生产环境中的安全性。最终,这种工程化方法不仅提升了风险探测的精度,还促进了 AI 系统的持续安全迭代。" posts/2025/09/13/developing-custom-detectors-in-garak-for-llm-risk-probing.md