这个项目能做什么

garak(Generative AI Red-teaming & Assessment Kit)是一款命令行工具,用于探测大型语言模型和对话系统的失效模式。它由 NVIDIA 开发,基于 Apache 2.0 许可证发布。 功能 - 检查 LLM 是否会被诱导以不良方式失效,包括幻觉、数据泄露、提示注入、错误信息、毒性生成、越狱及其他弱点。 - 结合静态、动态和自适应探针来探索这些失效模式。 - README 将其作用类比为 nmap 或 Metasploit Framework,但应用于 LLM。 支持的目标 - Hugging Face Hub 生成式模型,包括本地 transformers 管道、Inference API 和私有 Inference Endpoints。 - OpenAI 聊天和补全模型。 - Replicate 文本模型和私有 Replicate 端点。 - 通过 Converse API 访问的 AWS Bedrock 基础模型,涵盖 Anthropic Claude、Meta Llama、Amazon Titan、AI21 Labs、Cohere 和 Mistral AI 等系列。 - Cohere、Groq、litellm、NVIDIA NIM 端点、ggml/llama.cpp 模型,以及基本上任何可通过 REST 端点访问的对象。 - 内置测试生成器(test.Blank、test.Repeat),用于插件开发。 安装与使用 - 可通过 pip 从 PyPI 安装,从 GitHub 主分支安装,或将源码克隆到 Conda 环境(Python 3.11 至 3.13)。 - 通用语法为 `garak <options>`;该工具需要一个目标模型,默认情况下会运行所有已知探针,并使用每个探针推荐的检测器。 - `--list_probes` 列出可用探针;`--target_type` 和 `--target_name` 选择模型;`--spec` 将运行范围缩小到某个探针家族或单个插件。 - 托管提供商的 API 密钥通过环境变量提供,例如 OPENAI_API_KEY、HF_INFERENCE_TOKEN、REPLICATE_API_TOKEN、COHERE_API_KEY、GROQ_API_KEY、NIM_API_KEY 和 BEDROCK_API_KEY。 README 中描述的探针示例 - blank、atkgen(自动攻击生成)、badchars(不可察觉的 Unicode 扰动)、av_spam_scanning、continuation、dan(DAN 及类 DAN 攻击)、donotanswer、encoding(通过文本编码进行提示注入)、gcg(对抗性后缀)、glitch(故障 token)、grandma、goodside、leakreplay(训练数据重放)、lmrc(Language Model Risk Cards)、malwaregen、misleading、packagehallucination、promptinject、realtoxicityprompts、snowball(滚雪球式幻觉)和 xss。 结果与日志 - 对于每个探针,garak 会打印进度条,然后打印一行按检测器评估结果的内容,当出现不良行为时,将响应标记为 FAIL 并给出失败率。 - 日志包括用于调试的 garak.log、每次运行中每次探测尝试对应一条记录的 JSONL 报告,以及详细记录产生漏洞的尝试的命中日志。 - analyse/analyse_log.py 中的基础分析脚本会输出产生最多命中的探针和提示。 架构与可扩展性 - 代码组织为 probes、detectors、evaluators、generators 和 harnesses,每个部分都有一个 base.py 定义插件基类。 - 默认运行模式使用 probewise harness,它会实例化每个探针并读取其 primary_detector 和 extended_detectors 属性,以决定运行哪些检测器。 - 开发者可以通过继承 garak.probes.base.TextProbe 等基类来编写新插件,以交互方式或使用测试生成器和检测器进行测试,并通过 --list_probes、--list_detectors 或 --list_generators 列出它们。 项目资源 - 文档位于 docs.garak.ai 和 reference.garak.io/readthedocs,另有 Discord 社区、garak.ai 项目主页、arXiv 预印本(2406.11036)以及供学术使用的引用条目。