📖动手学大模型
🏠 课程首页 / 第6章 · 越狱攻击

MODULE 06越狱攻击

学会攻击,才能更好防御

MODULE 06 / 11进阶 · 安全

动手学大模型:大模型越狱攻击

导读: 大模型越狱攻击与工具

想要得到更好的安全,要先从学会攻击开始。让我们了解越狱攻击如何撬开大模型的嘴!

1. 本教程目标:

  • 熟悉使用EasyJailbreak工具包;
  • 掌握大模型的常用越狱方法的实现与结果;

2. 工作准备:

2.1 了解EasyJailbreak

https://github.com/EasyJailbreak/EasyJailbreak

EasyJailbreak 是一个易于使用的越狱攻击框架,专为专注于 LLM 安全性的研究人员和开发人员而设计。

EasyJailbreak 集成了现有主流的11种越狱攻击方法,其将越狱过程分解为几个可循环迭代的步骤:初始化随机种子,添加约束、突变,攻击和评估。每种攻击方法包含四个不同的模块 Selector、Mutator、Constraint 和 Evaluator。

EasyJailbreak

1.jpg

2.2 主要框架

2.jpg

EasyJailbreak可以被分为三个部分:

  • 第一部分是准备攻击和评估所需的 Queries, Config, Models 和 Seed。
  • 第二部分是攻击循环,包含两个主要的过程,Mutation(突变)和 Inference(推理)
  • Mutation:首先基于 Selector(选择模块)选取合适的越狱提示,然后基于 Mutator(突变模块)变换越狱提示,最后基于 Constraint(限制模块)过滤所需的越狱提示。
  • Inference:这一部分基于先前获得的越狱提示攻击目标大模型,并获取模型的回复。然后将回复被送入 Evaluator(评估模块)获取攻击结果。
  • 第三部分是得到最终的攻击和评估报告,基于预设的停止机制,结束攻击循环,获取最终的越狱提示、模型回复、攻击结果等。

https://easyjailbreak.github.io/EasyJailbreakDoc.github.io/

3. 安装环境

直接使用 EasyJailbreak 中的越狱攻击和评估:


依托 EasyJailbreak 进一步开发,例如添加新的Mutator,Evaluator等:


4. EasyJailbreak用例

以PAIR方法为例:

1. 加载模型

类HuggingfaceModel基于 huggingface 加载模型,并添加了一些适用于攻击的的功能函数。



使用目标模型基于输入得到回复


2. 加载数据集

类JailbreakDataset用于组装越狱数据集,每个实例都包含查询输入、越狱提示等。


可以直接加载一些在线的(HuggingFace)数据集


也可以加载本地的数据集文件


3. 初始化随机种子


4. 设置攻击方法


5. 实施攻击


自定义越狱攻击(可选)

根据2.2节,在越狱之前需要设置好攻击使用各个模块,包括 Selector、Mutator、Constraint和Evaluator等。

使用 EasyJailbreak 实现的或自定义上述模块

导入方式:``from easyjailbreak.module_name.method_name import method_namemethod_name``

  • Selector: ``from easyjailbreak.selector.method_name import method_name``
  • Mutator: ``from easyjailbreak.mutation.rule.method_name import method_name``
  • Constraint: ``from easyjailbreak.constraint.method_name import method_name``
  • Evaluator: ``from easyjailbreak.metrics.Evaluator.method_name import method_name``

基本攻击流程实现:


1. 设置恶意查询

2. 加载目标模型

3. 设置越狱提示

4. 设置选择器

5. 基于选择器选取合适的越狱提示

6. 基于突变器变换查询/提示

7. 获取目标模型的回复

本章学完了吗?完成学习后打卡,进度保存在本机浏览器。