课程目录

第 6 课 · 动手学大模型(上海交大)

Jailbreak Attacks

越狱攻击:用 EasyJailbreak 量出安全边界

教程的原话是:想要得到更好的安全,要先从学会攻击开始。这一章在受控环境里复现主流越狱方法,目的是测出模型的安全边界在哪,而不是把边界推倒。

学习目标

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

核心概念

EasyJailbreak 集成了十一种主流越狱攻击方法,并把攻击过程抽象成可循环迭代的步骤:初始化随机种子、添加约束、突变、攻击、评估。每种方法由四个模块组成——Selector 选提示、Mutator 变提示、Constraint 过滤提示、Evaluator 判定结果。

整体结构分三段。第一段准备 Queries、Config、Models 和 Seed。第二段是攻击循环,内含 Mutation 和 Inference 两个过程:Mutation 先由 Selector 选出合适的越狱提示,再由 Mutator 变换,最后由 Constraint 过滤;Inference 拿变换后的提示去攻击目标模型,把回复送进 Evaluator 得到攻击结果。第三段按预设停止机制结束循环,输出最终的越狱提示、模型回复与攻击结果报告。

把方法拆成这四个模块的意义在于可替换:想研究新的变换策略,只需要写一个 Mutator,其余照旧。

实践步骤

  1. 安装 EasyJailbreak。只做复现直接装包即可;要二次开发(比如加新的 Mutator、Evaluator)则按源码方式安装。
  2. HuggingfaceModel 加载目标模型,它在 Hugging Face 加载之外补了一些便于攻击的功能函数。
  3. JailbreakDataset 组装数据集,可以直接加载线上数据集,也可以读本地文件;每个实例包含查询输入和越狱提示。
  4. 初始化随机种子。
  5. 以 PAIR 方法为例设置攻击方法并实施攻击。
  6. 读报告:关注攻击成功率、迭代轮数,以及 Evaluator 判定与人工判断的偏差。

常见误区

  • 只报成功率不看判定质量。 Evaluator 的误判会同时抬高或压低成功率,抽样人工复核是必需的。
  • 换模型不换约束。 Constraint 里的长度、语言、格式限制往往是为某个目标模型调的,换模型要重调。
  • 把攻击结果直接外发。 这一章的产物是安全评估报告,不是可分发的提示词。实验请在授权范围内进行,结论用于加固防御。

动手练习

选两个开源模型作为目标,用同一套 Queries 和同一个方法(比如 PAIR)各跑一轮,记录攻击成功率与平均迭代次数。然后从判定为「攻击成功」的样本里随机抽 20 条人工复核,算出 Evaluator 的准确率,并据此修正你报告里的成功率。最后写一段结论:这两个模型的失败模式有什么系统性差异。

要点回顾

越狱实验的价值在于可复现的度量,而不在于个别惊人的样例。模块化框架让方法之间可比,但可比的前提是评估器可信。做完攻击务必回到防御侧:哪些提示模式该进过滤器,哪些失败模式该进对齐数据。

参考来源

  • 上海交通大学《动手学大模型》系列编程实践教程,第六章「越狱攻击」:documents/chapter6,核验日期:2026-09-06。