关于
GPTFUZZER 的官方存储库:红队大型语言模型与自动生成的越狱提示
更新
- (2023/9/19) 我们的论文发表在 arXiv 上!在这里查看!
安装
pip install -r requirements.txt
数据集
有害问题的数据集和人工编写的模板可在datasets/questions/question_list.csv
和中找到datasets/prompts/jailbreak-prompt.xlsx
。这些问题是从两个公共数据集采样的:llm-jailbreak-study和hh-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】
暂无评论内容