该项目是ACM CCS 2024会议论文《"Do Anything Now": Characterizing and Evaluating In-The-Wild Jailbreak Prompts on Large Language Models》的官方代码库。该研究深入探讨了大型语言模型(LLM)在真实场景中如何被越狱提示攻击,并提供了相应的评估工具和数据集。该项目旨在通过分析真实世界中的越狱提示,来提高LLM的安全性,并为未来的研究提供参考。
大型语言模型(LLM)在自然语言处理领域取得了显著进展,但同时也面临着安全风险。其中,越狱提示是一种常见的攻击方式,通过精心设计的输入,诱导LLM生成原本被限制的有害或敏感内容。该项目旨在系统地研究和评估这种风险,为开发更安全的LLM提供理论和实践基础。
该项目的核心目标是:
该项目的目录结构清晰,主要分为以下几个部分:
└── verazuo-jailbreak_llms/
├── README.md
├── LICENSE
├── code/
│ ├── ChatGLMEval/
│ │ ├── ChatGLMEval.py
│ │ ├── few_shot_examples.py
│ │ └── run_evaluator.py
│ └── semantics_visualization/
│ └── visualize.ipynb
└── data/
├── README.md
├── forbidden_question/
│ ├── forbidden_question_set.csv
│ └── forbidden_question_set_with_prompts.csv.zip
└── prompts/
├── jailbreak_prompts_2023_05_07.csv
├── jailbreak_prompts_2023_12_25.csv
├── regular_prompts_2023_05_07.csv
└── regular_prompts_2023_12_25.csv
code/)data/)
README.md 文件提供了项目的全面概述,包括:
LICENSE 文件表明该项目采用MIT许可证,允许用户自由使用、修改和分发代码。
ChatGLMEval.py 文件实现了ChatGLM模型的评估功能,包括:
init_model:初始化ChatGLM模型。
get_ChatGLM_answer:获取ChatGLM模型的响应。
build_individual_prompt:构建单个问题的提示。
check:检查模型响应是否符合要求。
few_shot_examples.py 文件包含了一些少样本学习的具体示例,用于评估模型的响应。示例包括越狱提示和基线提示,每个示例包含问题、响应和标签。
run_evaluator.py 文件用于运行评估器,加载数据并调用ChatGLMEval进行评估。主要功能包括:
main:加载数据并调用评估器进行评估。
visualize.ipynb 文件使用UMAP和WizMap工具对提示进行语义可视化。主要步骤包括:
data/README.md 文件详细介绍了提示数据集和禁止性问题集的结构和内容。
forbidden_question_set.csv 文件包含390个禁止性问题,涵盖13个禁止性场景,如非法活动、仇恨言论、恶意软件生成等。
该项目的数据集主要包括两部分:提示数据集和禁止性问题集。
提示数据集包含从多个平台收集的15,140个提示,其中1,405个被识别为越狱提示。这些提示来自Reddit、Discord、网站和开源数据集,时间范围从2022年12月到2023年12月。
数据集的统计信息如下表所示:
| 平台 | 来源 | # 帖子 | # 用户 | # 恶意用户 | # 提示 | # 越狱提示 | 提示时间范围 |
|---|---|---|---|---|---|---|---|
| r/ChatGPT | 163549 | 147 | 147 | 176 | 176 | 2023.02-2023.11 | |
| r/ChatGPTPromptGenius | 3536 | 305 | 21 | 654 | 24 | 2022.12-2023.11 | |
| r/ChatGPTJailbreak | 1602 | 183 | 183 | 225 | 225 | 2023.02-2023.11 | |
| Discord | ChatGPT | 609 | 259 | 106 | 544 | 214 | 2023.02-2023.12 |
| Discord | ChatGPT Prompt Engineering | 321 | 96 | 37 | 278 | 67 | 2022.12-2023.12 |
| Discord | Spreadsheet Warriors | 71 | 3 | 3 | 61 | 61 | 2022.12-2023.09 |
| Discord | AI Prompt Sharing | 25 | 19 | 13 | 24 | 17 | 2023.03-2023.04 |
| Discord | LLM Promptwriting | 184 | 64 | 41 | 167 | 78 | 2023.03-2023.12 |
| Discord | BreakGPT | 36 | 10 | 10 | 32 | 32 | 2023.04-2023.09 |
| Website | AIPRM | - | 2777 | 23 | 3930 | 25 | 2023.01-2023.06 |
| Website | FlowGPT | - | 3505 | 254 | 8754 | 405 | 2022.12-2023.12 |
| Website | JailbreakChat | - | - | - | 79 | 79 | 2023.02-2023.05 |
| Dataset | AwesomeChatGPTPrompts | - | - | - | 166 | 2 | - |
| Dataset | OCR-Prompts | - | - | - | 50 | 0 | - |
| 总计 | 169,933 | 7,308 | 803 | 15,140 | 1,405 | 2022.12-2023.12 |
禁止性问题集包含390个问题,涵盖13个禁止性场景,这些场景基于OpenAI的使用政策。这些场景包括:
每个场景包含30个问题,旨在测试LLM是否会生成有害或不当内容。
该项目提供了用于评估和可视化LLM响应的代码。
ChatGLMEval 模块用于评估LLM的响应,主要功能包括:
semantics_visualization 模块用于可视化提示的语义,主要功能包括:
sentence-transformers生成嵌入向量。
该项目强调了数据收集的伦理问题,并采取了以下措施:
该项目聚焦于大型语言模型的安全性评估,特别是对“越狱提示”的检测和特性分析。它提供了一套完整的工具,从数据集加载、模型评估到直观的语义可视化。该项目的数据和代码均已公开,并采用MIT开源协议,为研究人员和开发者提供了便捷的研究平台。