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 劫持, 多轮对话, 大语言模型, 安全规则引擎, 对抗性机器学习, 系统提示提取, 逆向工具