GPTFUZZER:红队大型语言模型与自动生成的越狱提示

关于

GPTFUZZER 的官方存储库:红队大型语言模型与自动生成的越狱提示

更新

  • (2023/9/19) 我们的论文发表在 arXiv 上!在这里查看!

安装

pip install -r requirements.txt

数据集

有害问题的数据集和人工编写的模板可在datasets/questions/question_list.csv和中找到datasets/prompts/jailbreak-prompt.xlsx。这些问题是从两个公共数据集采样的:llm-jailbreak-studyhh-rlhf,模板是从llm-jailbreak-study收集的。

对于我们通过查询 Vicuna-7B、ChatGPT 和 Llama-2-7B-chat 获得的响应,我们将它们存储在 中datasets/responses,标记的响应位于datasets/responses_labeled. 您还可以用于generate_responses.py生成不同模型或不同问题的响应(请参阅scripts文件夹下的脚本以获取示例)。

楷模

我们的判断模型是一个微调的 RoBERTa-large 模型,训练代码位于 中finetune_roberta.py,训练/评估数据存储于 中datasets/responses_labeled。我们使用的模型托管在Hugging Face上。运行模糊测试时,模型将首次自动下载并缓存。如果您想手动下载模型,可以运行以下代码:

from transformers import RobertaForSequenceClassification, RobertaTokenizer
model_path = 'hubert233/GPTFuzz'
model = RobertaForSequenceClassification.from_pretrained(model_path)
tokenizer = RobertaTokenizer.from_pretrained(model_path)

实验

单模型模糊测试

要运行单模型单问题模糊实验,您可以运行fuzz_single_question_single_model.py. 默认情况下,它将使用ChatGPT作为变异模型并尝试攻击Llama-2-7B-chat。您可以阅读脚本中的参数以获取更多详细信息。我们有一个脚本可以对 Llama-2-7B-chat 中人工编写的模板失败的所有问题运行模糊测试,即scripts/run_single_question_single_model.sh. 您可以为自己的实验编辑该脚本。

要运行单模型多问题模糊实验,您可以运行fuzz_multi_question_single_model.py. 默认情况下,它将使用ChatGPT作为变异模型并尝试攻击Llama-2-7B-chat。它将针对目标模型运行 10000 个查询。

多模型模糊测试

要运行多模型模糊实验,您可以运行fuzz_multi_question_multi_model.py. 默认情况下,它将在 Vicuna-7B、ChatGPT 和 Llama-2-7B-chat 上使用运行模糊测试。它将针对目标模型运行 30000 次查询。

在模糊测试过程中,成功的模板将保存在下面datasets/prompts_generated,您可以使用 和 来评估evaluate_multi_question_multi_model.py它们evaluate_multi_question_multi_model.py

有关实验的更多详细信息,请参阅我们的论文。

项目地址

GPTFUZZER:【Github

© 版权声明
THE END
喜欢就支持一下吧
点赞762赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容