janaraj/drift
GitHub: janaraj/drift
Drift 探究小型专精模型能否通过多轮对话操纵击败大规模前沿 LLM,并提供基于程序化评判器的可复现 AI 安全红队评估方法论。
Stars: 1 | Forks: 0
# Drift
**关于语言模型中对话操纵的研究。**
Drift 探究了*操纵是否是一种可学习的专精能力* —— 也就
是说,是否可以通过训练一个小型、专注的模型,使其通过持续的、多轮的
对话,引导比它大得多的前沿
模型产生非预期行为,且成功率
高于通用大模型在相同任务上的表现。
核心问题:**在对抗性
对话中,专精能力是否能战胜规模?** 如果一个约 0.6B 参数的攻击者,在针对开放权重目标训练后,能够
稳定地引导前沿模型产生目标行为 —— 并且能*迁移*到它从未训练过的闭源
模型上 —— 这将挑战“安全性随模型规模提升”的潜在假设,
并暴露出当前模型在处理长期
对抗性压力时的一类漏洞。
## 为什么这很重要
单轮“越狱”已在很大程度上成为了一个已被解决的研究领域。开放的前沿是
**多轮操纵** —— 在对话中,攻击者会不断适应、构建上下文、
利用谄媚心理和角色一致性,并在多个
轮次中逐步施加压力。先前的工作(LM-vs-LM 红队测试、PAIR、TAP、Crescendo)描绘了
这个问题的轮廓,但使用的是*现成的*大型攻击者。目前还没有
人训练过一个小型的、专门的专家模型,并探讨是否是专精能力而非
规模,造就了有效的多轮攻击者。
Drift 旨在做出的贡献是**方法论上的**:提供一个干净、可复现的
多轮操纵基准和训练方案,并使用针对目标行为的**程序化
评判器**(而非 LLM-as-judge)—— 这避免了
损害许多红队研究质量的评判器可靠性陷阱。
## 此处“操纵”的含义
V1 特意将目标定为**能力展示和企业关注点**,
而非可武器化的危害:
- **E — System prompt 提取。** 让目标暴露其隐藏的 system
指令。明确、可验证的指标(逐字匹配/近似重复匹配);
这对已部署的助手来说是真实的机密性问题。
- **B — 行为/人格违规。** 让目标打破其指定的
角色 —— 例如声称自己是人类、违反指定的角色名称,或者
与其先前的声明相矛盾。这是能力展示,可进行确定性评判。
通用的有害内容越狱被**明确排除在范围之外** —— 这
领域已经拥挤、可武器化,且不是此处的
研究问题。多智能体目标劫持是未来潜在的工作。
## 负责任的使用
这是**防御性安全研究**。目标是测量和理解一类
漏洞,以便对其进行防御,并为安全团队提供一种
可复现的方法来评估多轮鲁棒性。
- 目标行为的选定是为了**展示,而非造成危害**(不
生成有害内容)。
- 评判是**程序化**的,因此结果是可复现和可审计的。
- 任何训练好的 checkpoint 的发布都取决于明确的**危害载体
审计**(一个有计划、有记录的步骤),该审计需基于实际得出的
结果做出 —— 而非假设。
如果您在此基础上进行构建,请使用它来使模型更加健壮,并遵循
负责任的披露规范来处理您在生产系统中发现的任何问题。
## 工作原理
```
┌───────────┐ attacker turn (user) ┌──────────┐
│ Attacker │ ────────────────────────▶ │ Target │
│ (~0.6B) │ ◀──────────────────────── │ (LLM) │
└───────────┘ target turn (assistant) └──────────┘
│ │
│ full dialogue │
▼ ▼
┌──────────────────────────────────────────────────┐
│ Judge (programmatic) → success / metadata │
└──────────────────────────────────────────────────┘
```
- **攻击者**模型生成旨在引导目标行为的消息。
- **目标**模型(本地开放权重模型,或通过 API 的前沿模型)进行响应。
- 多轮**对话环境**运行交互并记录每个轮次。
- **评判器**以程序化方式对完成的对话进行评分。
- 攻击者通过监督微调进行初始化,然后通过
GRPO(强化学习)针对评判器的奖励进行改进。
训练论点通过**迁移**得到验证:针对开放
权重目标训练攻击者,然后评估其攻击是否对闭源
前沿模型成功 —— 以及它是否击败了规模匹配且*更大*的微调
攻击者基准。
### 插件架构
代码库的构建使得新的行为、目标和基准可以插入,
而无需触及环境、训练循环或评估工具。添加
新行为只需要:一个新的评判器、一个场景集和一个行为
注册。此契约由测试强制执行。
## 状态
Pre-alpha 阶段。正在构建评估环境(阶段 1)。
| 领域 | 状态 |
|---|---|
| 核心协议与插件注册表 | ✅ 完成 |
| 本地目标适配器 (MLX / Apple Silicon) | ✅ 完成 |
| API 目标适配器 (Anthropic, OpenAI, Google) | ✅ 完成 (Google 已通过线上验证) |
| 多轮对话循环 | 🚧 进行中 |
| Rollout 记录 | ⬜ 计划中 |
| 评判器 (E,然后是 B) | ⬜ 计划中 |
| 场景套件 | ⬜ 计划中 |
| 基准、SFT、GRPO、迁移评估 | ⬜ 计划中 |
| 训练好的攻击者权重 | ⬜ 暂无 |
目前的关键决策:攻击者基础模型为 **Qwen3-0.6B**;通过 **TRL** 进行 RL(使用 `GRPOTrainer`
`rollout_func` 处理多轮循环);通过 **MLX** 进行本地服务,云端通过
**vLLM**。请参阅 [docs/decisions.md](docs/decisions.md)。
## 项目布局
```
src/drift/
core/ protocols (Target, Attacker, Judge), registry, Behavior
env/ dialogue loop, rollout logging, target adapters (local + API)
judges/ programmatic judges (system-prompt extraction, persona)
scenarios/ scenario schema + loader
attacker/ SFT + GRPO training, reward composition
baselines/ naive, Crescendo, PAIR-style, fine-tuned-LLM baselines
eval/ ASR matrices, transfer experiments, attack-pattern catalog
behaviors/ behavior registrations (E, B)
docs/ decisions, spike findings, (later) writeup + harm audit
spikes/ throwaway toolchain validation scripts
```
## 开发
需要 Python 3.11+。使用 [uv](https://docs.astral.sh/uv/)。
```
uv venv
uv pip install -e ".[dev]" # core + test/lint tooling
uv run pytest # tests
uv run ruff check . # lint
```
可选的额外依赖(按需安装):
```
uv pip install -e ".[local]" # MLX local target serving (Apple Silicon)
uv pip install -e ".[google]" # Gemini API target (also: anthropic, openai, api)
```
API 目标从环境变量
(`ANTHROPIC_API_KEY`、`OPENAI_API_KEY`、`GEMINI_API_KEY`)中读取凭据;
支持被 gitignore 忽略的 `.env` 文件。仓库中不存储任何密钥。
## 设计文档
- [研究概念](internal_docs/Drift%20%E2%80%94%20A%20Study%20of%20Conversational%20Manipu.md)
- [项目计划](internal_docs/Plan.md)
- [阶段 0 决策](docs/decisions.md)
- [工具链试探性发现](docs/spike_findings.md)
## License
待定(参见 [LICENSE](LICENSE)) —— 将与发布
决策和危害载体审计一起最终确定。在此之前,视为保留所有权利。
标签:AI安全, Chat Copilot, DLL 劫持, 多轮对话, 大语言模型, 安全规则引擎, 对抗性机器学习, 系统提示提取, 逆向工具