大型语言模型越狱提示分析总结
深入剖析针对大型语言模型的越狱提示研究项目
主要发现
- 全面的越狱提示数据集: 该项目收集了大量真实世界中的越狱提示,为研究大型语言模型(LLM)的安全性提供了宝贵的资源。
- 多维度的评估框架: 项目不仅提供了数据集,还开发了评估工具,用于分析和检测LLM对越狱提示的响应,并进行语义可视化。
- 伦理考量与负责任的披露: 该研究强调了数据收集的伦理问题,并主动向相关LLM供应商披露了研究结果,以促进更负责任的模型开发。
项目概述
该项目是ACM CCS 2024会议论文《"Do Anything Now": Characterizing and Evaluating In-The-Wild Jailbreak Prompts on Large Language Models》的官方代码库。该研究深入探讨了大型语言模型(LLM)在真实场景中如何被越狱提示攻击,并提供了相应的评估工具和数据集。该项目旨在通过分析真实世界中的越狱提示,来提高LLM的安全性,并为未来的研究提供参考。
研究背景
大型语言模型(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
根目录文件
- README.md:项目的主要说明文件,包含项目背景、数据集介绍、代码使用方法、伦理声明和引用信息。
- LICENSE:项目的开源许可证,采用MIT许可证,允许用户自由使用、修改和分发代码。
代码目录 (code/)
-
ChatGLMEval/:用于评估大语言模型(LLM)响应的代码。
- ChatGLMEval.py:实现了ChatGLM模型的评估功能,包括模型初始化、提示构建和响应检查。
- few_shot_examples.py:包含了一些少样本学习的具体示例,用于评估模型的响应。
- run_evaluator.py:提供了使用评估框架对数据集进行分析的脚本,自动加载问题与回答并生成评估标签。
-
semantics_visualization/:用于可视化提示语义的代码。
- visualize.ipynb:使用UMAP和WizMap工具对提示进行语义可视化,生成可交互的可视化界面。
数据目录 (data/)
- README.md:详细说明了数据集的结构和字段含义,包括提示数据集与禁用问题集。
-
forbidden_question/:包括与13种被禁止场景相关的问题集,包含390个问题。
- forbidden_question_set.csv:包含390个禁止性问题,涵盖13个禁止性场景,如非法活动、仇恨言论、恶意软件生成等。
- forbidden_question_set_with_prompts.csv.zip:包含扩展的禁止性问题集,每条记录附加多个提示案例和生成答案。
-
prompts/:包括经过时间更新的普通提示(regular prompts)和越狱提示(jailbreak prompts)的CSV数据文件。
- jailbreak_prompts_2023_05_07.csv:2023年5月7日收集的越狱提示。
- jailbreak_prompts_2023_12_25.csv:2023年12月25日收集的越狱提示。
- regular_prompts_2023_05_07.csv:2023年5月7日收集的常规提示。
- regular_prompts_2023_12_25.csv:2023年12月25日收集的常规提示。
文件内容分析
README.md 文件
README.md 文件提供了项目的全面概述,包括:
- 项目背景:该项目是ACM CCS 2024论文的官方代码库,研究了大型语言模型(LLM)在真实场景中的越狱提示。
- 数据集:收集了2022年12月至2023年12月期间的15,140个提示,其中1,405个被识别为越狱提示。
- 代码使用:提供了如何使用Hugging Face库加载数据集的示例。
- 伦理声明:强调了数据收集的伦理问题,并指出研究仅涉及公开数据。
- 引用信息:提供了论文的引用格式。
LICENSE 文件
LICENSE 文件表明该项目采用MIT许可证,允许用户自由使用、修改和分发代码。
code/ChatGLMEval/ChatGLMEval.py 文件
ChatGLMEval.py 文件实现了ChatGLM模型的评估功能,包括:
-
init_model:初始化ChatGLM模型。 -
get_ChatGLM_answer:获取ChatGLM模型的响应。 -
build_individual_prompt:构建单个问题的提示。 -
check:检查模型响应是否符合要求。
code/ChatGLMEval/few_shot_examples.py 文件
few_shot_examples.py 文件包含了一些少样本学习的具体示例,用于评估模型的响应。示例包括越狱提示和基线提示,每个示例包含问题、响应和标签。
code/ChatGLMEval/run_evaluator.py 文件
run_evaluator.py 文件用于运行评估器,加载数据并调用ChatGLMEval进行评估。主要功能包括:
-
main:加载数据并调用评估器进行评估。
code/semantics_visualization/visualize.ipynb 文件
visualize.ipynb 文件使用UMAP和WizMap工具对提示进行语义可视化。主要步骤包括:
- 提取2维嵌入。
- 生成WizMap所需的JSON文件。
- 使用WizMap进行可视化。
data/README.md 文件
data/README.md 文件详细介绍了提示数据集和禁止性问题集的结构和内容。
- 提示数据集:包含从不同平台收集的提示,分为越狱提示和常规提示。
- 禁止性问题集:包含390个问题,涵盖13个禁止性场景。
data/forbidden_question/forbidden_question_set.csv 文件
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
ChatGLMEval 模块用于评估LLM的响应,主要功能包括:
- 模型初始化:加载THUDM的ChatGLM-6B模型。
- 提示构建:使用示例数据构造自定义提示。
- 响应检查:基于多策略的逻辑判断模型回答,如关键词检测和响应长度。
语义可视化
semantics_visualization 模块用于可视化提示的语义,主要功能包括:
-
嵌入生成:结合
sentence-transformers生成嵌入向量。 - 降维:使用UMAP对高维嵌入降维。
- 可视化:通过WizMap生成提示语义的交互式可视化。
伦理声明
该项目强调了数据收集的伦理问题,并采取了以下措施:
- 数据来源:数据采集自公开渠道,仅供研究使用。
- 隐私保护:不尝试去匿名化任何用户,并报告汇总结果。
- 负责任的披露:已向相关大语言模型厂商披露了研究结果。
- 禁止滥用:强调项目仅用于研究目的,不得滥用于生成有害或敏感内容。
总结
该项目聚焦于大型语言模型的安全性评估,特别是对“越狱提示”的检测和特性分析。它提供了一套完整的工具,从数据集加载、模型评估到直观的语义可视化。该项目的数据和代码均已公开,并采用MIT开源协议,为研究人员和开发者提供了便捷的研究平台。
主要亮点
-
系统性研究:首次系统研究了野外越狱提示词。
-
大型数据集:建立了最大的野外越狱提示词数据集。
-
实用工具:提供了从数据集加载、评估模型到直观语义可视化的全套工具。
-
开源:数据和代码公开,且使用MIT开源协议,为研究人员及开发者提供了便捷的研究平台。
参考资料
Last updated January 19, 2025