数据截至 (上游 commit d9f7b80be1ee)
多轮越狱攻击:记忆、逐步升级与回溯
30 秒导读: 单轮攻击是"把一句话包装得更狠"(见 02 章);多轮攻击是"跟目标模型来回聊很多轮,一点点把它带偏"。本章讲清楚:多轮攻击在 DeepTeam 里长什么样(一个能产出整段对话的
_get_turns)、样板 Crescendo 怎么用会话记忆做"渐进升级 + 遇拒回溯",以及另外四个多轮家族各自的策略差异。
本章聚焦多轮侧。攻击是怎么被 simulator 调度、整体节流采样怎么做,见 02 章;裁判(judge)怎么判有害、怎么出报告,见 04 章。本章只在必要处点到它们。
1. 这是什么(零基础也能懂)
一句话定义: 多轮越狱攻击 = 让红队模型和被测模型进行多回合对话,每一回合都根据上一回合的回答调整策略、逐步加码,直到把被测模型"聊"到吐出有害内容。
为什么多轮比单轮强? 单轮攻击只有一次机会:一句提示词发过去,拒绝了就结束。多轮攻击有一整场对话的空间——
- 可以先建立无害的上下文(比如"我在写一篇关于炸药史的论文"),再一步步把话题引向危险处;
- 可以看着模型的反应改口:模型这轮松了口,下轮就顺势加码;这轮拒绝了,就退回去换个角度;
- 利用了大模型"顺着对话惯性走、更关注最近文本"的倾向(这正是 Crescendo 系统提示里写的攻击原理,
crescendo_jailbreaking/template.py:17)。
一句话直觉/类比: 单轮攻击像"一句话骗过门卫";多轮攻击像"温水煮青蛙"——每一轮都只比上一轮危险一点点,让模型在不知不觉中越过红线。业界把这套渐进手法叫 Crescendo(渐强,音乐术语:声音一点点变大)。
用起来什么样: 使用者只需在红队配置里放一个多轮攻击对象,其余全自动。
# 示意,非源码:多轮攻击的最小用法
from deepteam.attacks.multi_turn import CrescendoJailbreaking
attack = CrescendoJailbreaking(
max_rounds=10, # 最多聊 10 轮
max_backtracks=10, # 最多回退 10 次
)
# 之后交给 RedTeamer,它会自动跑完整场对话(见 04 章)
跑完之后,你拿到的不是一句"增强后的提示",而是一整段对话记录(List[RTTurn])——user/assistant 交替,记录了红队如何一步步升级、目标模型如何一步步失守。