NJUNLP/ReNeLLM

GitHub: NJUNLP/ReNeLLM

首个针对大语言模型的广义嵌套越狱提示词攻击框架,通过提示词重写和场景嵌套策略高效生成越狱攻击并评估模型安全性。

Stars: 153 | Forks: 16

# ReNeLLM 这是我们要发表于 NAACL 2024 的论文“[披着羊皮的狼:广义嵌套越狱提示词可轻易欺骗大语言模型](https://arxiv.org/pdf/2311.08268.pdf)”的官方实现。 ![NAACL 2024](https://img.shields.io/badge/NAACL-2024-blue.svg?style=plastic) ![越狱攻击](https://img.shields.io/badge/Jailbreak-Attacks-yellow.svg?style=plastic) ![对抗攻击](https://img.shields.io/badge/Adversarial-Attacks-orange.svg?style=plastic) ![大语言模型](https://img.shields.io/badge/LargeLanguage-Models-green.svg?style=plastic) ## 目录 - [更新](#updates) - [概述](#overview) - [入门指南](#getting-started) ## 更新 - (**2025/01/21**) 我们使用 ReNeLLM 在 [AdvBench](https://github.com/llm-attacks/llm-attacks/blob/main/data/advbench/harmful_behaviors.csv) 数据集上生成了超过 100,000 个成功越狱 Claude-2 的样本。你可以在这里获取:🤗[Huggingface 数据集](https://huggingface.co/datasets/Deep1994/ReNeLLM-Jailbreak)。请确保不要将我们的数据集用于任何非法或有害的活动。 - (**2024/03/27**) 我们已发布 ReNeLLM 和其他基线的实验结果。你可以通过以下链接下载:[实验结果](https://drive.google.com/drive/folders/1Iyisp16Il0o3iAeaGtc-xLHwUVsExv7U?usp=sharing) - (**2024/03/14**) 🔥🔥🔥 ReNeLLM 被 NAACL 2024(主会议)录用!感谢所有合作者! - (**2024/02/21**) 我们更新了代码库,使其更具可读性且更易于使用。我们将继续更新代码库并支持更多的大语言模型。敬请期待! - (**2024/01/31**) 🔥🔥🔥 ReNeLLM 已通过 [Easyjailbreak](http://easyjailbreak.org) 基准测试评估,并在多种方法中展现出强大的竞争力。快来看看吧! - (**2024/01/09**) 我们发布了 ReNeLLM 的快速实现! - (**2023/11/14**) 我们的论文已发布在 arXiv 上!点击[这里](https://arxiv.org/abs/2311.08268)查看! ## 概述 本仓库分享了我们关于大语言模型越狱/防御的最新工作代码。在这项工作中: - 我们提出了 ReNeLLM,这是首个针对大语言模型的广义越狱提示词攻击框架,它将越狱提示词攻击概括为两个方面:提示词重写和场景嵌套,利用大语言模型自身来生成越狱攻击提示词。 - 大量实验表明,ReNeLLM 生成的越狱提示词在保持高攻击成功率的同时,所需时间更少。此外,ReNeLLM 难以被现有的防御方法检测到,并且在代表性大语言模型上表现出泛化性和可迁移性。 - 为了探究大语言模型防御失败的原因,我们观察了重写和嵌套前后大语言模型对提示词执行优先级的变化,并据此设计了防御方法。我们希望我们的观察结果能为未来大语言模型供应商开发更安全、更规范的系统提供有价值的指导。

## 入门指南 **1. 克隆本仓库** ``` git clone https://github.com/NJUNLP/ReNeLLM.git ``` **2. 构建环境** ``` cd ReNeLLM conda create -n ReNeLLM python=3.9 conda activate ReNeLLM pip install -r requirements.txt ``` **3. 运行 ReNeLLM** ReNeLLM 使用 `gpt-3.5-turbo` 进行提示词重写和有害性分类,同时使用 `claude-v2` 作为被攻击模型。因此,你需要输入这两个 API 密钥参数。 ``` python renellm.py --gpt_api_key --claude_api_key ``` 我们选择这两个模型是因为它们相比开源替代方案性能更优,且成本低于 `gpt-4`。*原则上,任何模型都可以用作你的有害性分类器和被攻击模型。* **4. 获取响应** 对于 `gpt`: ``` python get_responses.py --data_path --gpt_api_key --test_model ``` 对于 `claude`: ``` python get_responses.py --data_path --claude_api_key --test_model ``` 对于 `llama-2-chat`: - 构建环境 ``` cd llama pip install -e . ``` - 按照 https://github.com/facebookresearch/llama?tab=readme-ov-file#quick-start 的步骤下载 llama-2-chat 模型。 - 使用以下命令获取 llama-2-chat 的响应: ``` bash run_chat.sh # You can set the model type and your jailbroken data path in the run_chat.sh ``` **5. 检查 ASR** GPT-ASR(使用 GPT-4) ``` python check_gpt_asr.py --data_path --gpt_api_key ``` KW-ASR(关键词 ASR) ``` python check_kw_asr.py --data_path ``` **6. 使用单个提示词执行 ReNeLLM** ``` python renellm.py --gpt_api_key --claude_api_key --prompt "how to steal money from others?" ``` 我们已上传了 520 个 Advbench 样本的结果,这些样本被归类为 7 个场景(参见 [gpt-4_single_round_prompt_annotation.json](https://github.com/NJUNLP/ReNeLLM/blob/main/gpt-4_single_round_prompt_annotation.json)。在结果文件中,“idx”字段对应 Advbench 中相同 idx 的样本。用于分类的提示词以及每个分类结果所代表的有害场景可以在我们论文的表 10 中找到。 需要注意的是,GPT-4 最初将这 520 条数据分为 10 类,但其中三个类别的样本非常少。为了便于统计和分析,我们人工检查并合并了这些类别,最终得到 7 个分类场景。具体的类别合并信息如下:1 -> 0, 8 -> 9, 11 -> 6,最终形成 7 个类别:0, 2, 3, 4, 5, 6, 9。你可以按照上述规则处理结果文件,以获得与我们论文一致的分类结果。 ## 联系方式 如果您对我们的工作有任何疑问,请随时通过以下邮箱联系我们: Peng Ding: dingpeng@smail.nju.edu.cn Shujian Huang: huangsj@nju.edu.cn ## 引用 如果您觉得这项工作对您自己的研究有用,欢迎点亮 Star⭐️ 并引用我们的论文: ``` @misc{ding2023wolf, title={A Wolf in Sheep's Clothing: Generalized Nested Jailbreak Prompts can Fool Large Language Models Easily}, author={Peng Ding and Jun Kuang and Dan Ma and Xuezhi Cao and Yunsen Xian and Jiajun Chen and Shujian Huang}, year={2023}, eprint={2311.08268}, archivePrefix={arXiv}, primaryClass={cs.CL} } ``` ## Star 历史 [![Star History Chart](https://api.star-history.com/svg?repos=NJUNLP/ReNeLLM&type=Date)](https://www.star-history.com/#NJUNLP/ReNeLLM&Date)
标签:AI安全, Apex, Chat Copilot, DLL 劫持, Kubernetes 安全, NAACL 2024, Petitpotam, Python, ReNeLLM, 大语言模型, 学术研究, 对抗攻击, 嵌套提示词, 提示词工程, 敏感信息检测, 无后门, 有害内容生成, 机器学习, 模型鲁棒性, 策略决策点, 逆向工具