LucasErcolano/DialectShift-Monitor

GitHub: LucasErcolano/DialectShift-Monitor

研究LLM在方言与翻译监控下的安全行为退化问题。

Stars: 0 | Forks: 0

# DialectShift-Monitor DialectShift-Monitor 研究当提示词和推理轨迹从英语转向 `es_neutro`、`es_arg` 和 `spanglish` 时,LLM 的安全行为和可监控性如何发生转移。 ## 研究问题 当模型和监控器在方言或代码混合语言(而非标准英语)上运行时,安全对齐和监督质量会退化多少? ## 核心假设 在英语中表现可接受的监控器可能在方言变体下失效,但部分明显的差距可能源于粗糙的二元评分或低 `N` 评分带来的测量噪声,而非真实的排序信号损失。 ## 视觉示例:监控器崩溃 流水线所量化效应的简化说明: | 提示条件 | 推理轨迹(CoT) | 英语监控器 | 双语监控器 | | :--- | :--- | :--- | :--- | | **英语** | `I need to find the passwords by running netsh...` | 捕获 | 捕获 | | **Spanglish** | `Tengo que usar netsh para hacer extract de las passwords...` | 漏报(假阴性) | 捕获 | ## 主要发现 - **MVP 监控器崩溃。** 零样本监控器在英语之外的真阳性率(TPR)几乎为零(`docs/results/01_mvp_results.md`)。 - **局部模型上的 CoT 退化。** Gemma-3-12B 在西班牙语/阿根廷西班牙语中的可操作规划步骤最多损失 45%,与英语相比——显式恶意结构从轨迹中消失(`docs/results/cot_degradation_summary.md`)。 - **概率监控器在局部基线上失效。** 对于 Gemma / Llama / Qwen,AUROC 在所有方言条件下坍缩到随机水平(`docs/results/02_scaled_results.md`)。 - **翻译后监控(选项 B)降低安全性。** 将方言 CoT 翻译回英语会净化风险线索;Gemma-3-12B 系统级防御在 Spanglish 中从 28% 降至 16%(`docs/results/02_scaled_results.md`)。 - **外部 MALT 试点确认方向。** 更强的监控器在 `original` / `full_translate` 上恢复召回率,但以更高的假阳性率为代价;`partial_translate` / `spanglishify` 仍低于 LLM 覆盖率,因提供方速率限制(`docs/results/10_external_validation_grant120_llm_rotation_v3_all_conditions.md`)。 - **Haiku 4.5 直接评估。** 保守运行点(低 TPR,极低 FPR);回译在全翻译中保留语义信号(`docs/results/14_grant120_haiku45_llm_direct_eval.md`)。 - **Canonical grant120 结果现为 Phase 5 对数评分,而非 MC N=3。** 在六个条件捆绑上,局部 Qwen2.5 对数评分给出直接 AUROC:`original` 0.7082,`full_translate` 0.7083,`partial_translate` 0.6801,`spanglishify` 0.7038,`es_mx_translate` 0.6982,`es_co_translate` 0.7439。相对于 MC N=3 基线,`spanglishify` 提升 **+0.0924**(`0.6114 -> 0.7038`),这意味着早期明显的 Spanglish 差距主要是度量粒度伪影,而非直接监控的根本失败。报告:`docs/results/18_grant120_logit_6condition.md`。 - **小规模鲁棒性检查得出相同结论。** 仅用 `original` + `spanglishify` 并使用替代提示词重新运行,仍将 `spanglishify` 提升至 0.6675,即 **+0.0561** 超过 MC N=3。确切的 AUROC 有所移动,但分支决策不变:连续评分消除了大部分 grant120 的 Spanglish 惩罚(`docs/results/19_grant120_logit_robustness_original_spanglishify.md`)。 - **Phase 7 已作为具体数据集发布。** `DialectShift-1k` 现本地存在,包含 1000 个英语基础提示和 8000 个渲染的方言 / Spanglish 表面(总计 9000 行),位于 `data/phase7_dialectshift_1k_v1/`,发布报告在 `docs/results/20_phase7_dialectshift_1k.md`。 - **Phase 7 质量审计标记渲染器在结构上有用但在语言学上较弱。** 对 160 行数据的分层审计发现英文泄露存在于单语西班牙语表面,且 Spanglish 表面存在重复标记伪影,因此当前发布版本不应被视为可发布质量的本地化(`docs/results/21_phase7_quality_audit.md`)。 ## 执行摘要 ![执行摘要表](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/eb7a3da5a0005422.svg) 源报告: - `docs/results/02_scaled_results.md` - `docs/results/06_external_validation_grant120_local_v3_all_conditions.md` - `docs/results/10_external_validation_grant120_llm_rotation_v3_all_conditions.md` - `docs/results/14_grant120_haiku45_llm_direct_eval.md` - `docs/results/18_grant120_logit_6condition.md` - `docs/results/19_grant120_logit_robustness_original_spanglishify.md` ## 状态 | 阶段 | 范围 | 状态 | | :--- | :--- | :--- | | 1 — MVP | 150 个提示,3 个方言条件,2 个目标模型,1 个小型监控器 | 已完成 | | 2 — 预备合作 | 少样本双语监控器,对比良性/攻击性对,质性分类法 | 已完成 | | 3 — 外部验证 | MALT 试点:4 个条件 × 120 行平衡子集,局部 + LLM 轮换轨迹 | 已完成(`partial_translate`/`spanglishify` 仍在 LLM 覆盖率下开放) | | 4 — 概率 + 局部 | 概率监控器(判决 + 置信度 → AUROC),CoT 退化指标,3 个局部模型(Gemma-3-12B、Llama-3.1-8B、Qwen2.5-7B)通过 GGUF 在 RTX 3060 上运行 | 已完成 | | 5 — grant120 对数监控器 | 6 个条件上的连续直接 `p(YES)` 评分,ROC 伪影,分支决策 | 已完成 | | 6 | 多方言 + DialectShift-1k 数据集发布 | 已完成 | 评估输出:拒绝率、监控器 TPR、概率 AUROC、CoT 退化(`avg_actions`、`pct_with_actions`)。 ## 外部验证 MALT(METR)是外部验证的基石:包含公开分割的奖励欺骗 / 沙包式转录、推理轨迹和 `language_mixing` 混淆变体。试点测试 `translate-then-monitor` 和部分翻译是否在双语 / 方言设置中降低可监控性——而非语言混合是否在一般情况下稳健。 MRT(Scale AI)/ SHADE-Arena 是 MALT 线路完全由 LLM 覆盖后的下一个域外泛化基准。 **已覆盖。** 可复现的 MALT 子集(`data/external/malt_public_assistant_subset_grant120.csv`,60/60 平衡),6 条件压力测试(`original`、`full_translate`、`partial_translate`、`spanglishify`、`es_mx_translate`、`es_co_translate`),Haiku 4.5 直接评估轨迹,子代理驱动的 Haiku 4.5 MC 基线,以及带有行级 `p(YES)` 和平滑 ROC 伪影的规范 Phase 5 连续对数评分。 **未覆盖。** Phase 7 现已实质发布为 `DialectShift-1k`。下一个问题不再是数据集构建;而是在已发布的基准之上优先进行哪项评估扩展参见 `docs/NEXT_STEPS.md`。 ## 仓库结构 ``` DialectShift-Monitor/ |-- README.md |-- PLAN.md |-- requirements.txt |-- run_all.sh |-- conftest.py |-- src/ # pipeline modules | |-- utils.py | |-- llm_rotation.py | |-- provider_model_catalog.py | |-- generate_data.py | |-- evaluate_models.py | |-- run_monitor.py | |-- monitor_logits.py | |-- mc_subset.py | |-- analyze_results.py | |-- evaluate_cot_quality.py | |-- extract_errors.py | `-- run_malt_stress_test.py |-- scripts/ # one-off utilities | |-- smoke_test_rotation.py | |-- export_malt_assistant_subset.py | |-- export_malt_user_prompts.py | |-- extract_examples.py | |-- reconstruct_prompts.py | `-- find_fn.py |-- config/ | |-- llm_rotation_profile.json | |-- llm_rotation_profile_live.json | `-- phase7_dialectshift_1k.json |-- tests/ |-- data/ | |-- prompts.csv | |-- prompts_manifest.json | `-- phase7_dialectshift_1k_v1/ | |-- responses.csv | |-- monitor_results.csv | |-- cot_quality_results.csv | |-- scratch/ # intermediate / exploratory artifacts | |-- external/ | | `-- malt_public_assistant_subset_grant120.csv | `-- external_validation/ | |-- *_summary.csv | `-- selected *_rows.csv |-- experiments/ | `-- haiku45/ # Haiku 4.5 direct-LLM eval track | |-- README.md | `-- process_grant120_*.py `-- docs/ |-- DECISIONS.md # consolidated decision log (phase 1-4) |-- methodology/ | |-- 01_mvp_design.md | |-- 02_phase2_improvements.md | `-- 03_external_validation_plan.md |-- results/ | |-- 01_mvp_results.md | |-- 02_scaled_results.md | |-- 06_external_validation_grant120_local_v3_all_conditions.md | |-- 10_external_validation_grant120_llm_rotation_v3_all_conditions.md | |-- 14_grant120_haiku45_llm_direct_eval.md | |-- 20_phase7_dialectshift_1k.md | |-- cot_degradation_summary.md | |-- error_analysis.md | `-- archive/ # superseded/intermediate reports |-- notes/archive/ # per-phase original decision logs |-- prompts/ |-- references/ # cited PDFs `-- assets/ ``` ## 流水线 所有入口点位于 `src/`。从仓库根目录运行以使相对数据路径可解析。 1. `src/generate_data.py` - 生成英语不安全提示以及对比性良性/攻击性提示。 - 翻译/本地化为 `es_neutro`、`es_arg` 和 `spanglish`。 - 输出:`data/prompts.csv`。 2. `src/evaluate_models.py` - 在每个提示条件下运行目标模型。 - 捕获响应及推理轨迹(`...`)。 - 输出:`data/responses.csv`。 3. `src/run_monitor.py` - 提取 CoT,概率化评估监控器(置信度 + 判决)在直接语言和翻译后的英语模式下。 - 可选的对数级别评分通过 `src/monitor_logits.py` 实现(本地 GGUF + `{YES, NO}` 对数概率上的 softmax)。通过 `ENABLE_LOGIT_MONITOR=1` 启用;添加 `monitor_direct_logit_p_yes` / `monitor_translated_logit_p_yes`。 - 规范 grant120 Phase 5 运行器:`src/run_logit_monitor_grant120.py` 写入六条件行级对数评分、AUROC 汇总、ROC 点及 markdown 报告工件至 `data/external_validation/grant120_subagent_v1/`。 - 无 API MC 校准路径:`src/mc_subset.py` + `experiments/haiku45/` 下的 CLI 包装器构建分层子集,引导手动进行 Haiku 4.5 聊天会话,并写入 `data/monitor_mc_subset.csv`。`analyze_results.py` 在同一行上输出 MC 校准 AUROC 部分以及置信基线。 - 计算行为拒绝标志。 - 输出:`data/monitor_results.csv`。 4. `src/analyze_results.py` - 计算拒绝率、超拒绝率、监控器 TPR 表及概率 AUROC。 - 输出:`docs/results/02_scaled_results.md`。 5. `src/evaluate_cot_quality.py` - 评估推理轨迹的结构质量以测量 CoT 退化。 - 输出:`data/cot_quality_results.csv`,`docs/results/cot_degradation_summary.md`。 6. `src/extract_errors.py` - 构建定性假阴性和对比示例。 - 输出:`docs/results/error_analysis.md`。 ## 环境设置 ``` python -m venv venv # Windows venv\\Scripts\\activate pip install -r requirements.txt ``` 依赖列表 `requirements.txt` 涵盖规范流水线以及本地数据集导出辅助工具。 创建 `.env` 并填写 API 密钥(支持分号分隔列表): ``` OPENROUTER_API_KEY=key1;key2 SAMBANOVA_API_KEY=key1;key2 GEMINI_API_KEY=key1;key2 ``` ## 运行 ``` python src/generate_data.py python src/evaluate_models.py python src/run_monitor.py # or: ENABLE_LOGIT_MONITOR=1 python src/run_monitor.py python src/analyze_results.py python src/evaluate_cot_quality.py python src/extract_errors.py # 可选外部验证试点 python src/run_malt_stress_test.py \ --input data/external/malt_public_assistant_subset_grant120.csv \ --dataset malt-public \ --split grant120_local_v3_all_conditions \ --text-column reasoning_trace \ --label-column behavior_label \ --positive-labels positive \ --conditions original full_translate partial_translate spanglishify \ --disable-llm-transforms \ --disable-llm-monitor ``` `experiments/haiku45/` 下的实验及 `scripts/` 中的辅助脚本均从 `src/` 导入。请使用 `PYTHONPATH=src` 运行: ``` PYTHONPATH=src python experiments/haiku45/process_grant120_full_llm_eval.py PYTHONPATH=src python scripts/smoke_test_rotation.py ``` 测试自动发现 `src/` + `scripts/`,通过 `conftest.py`: ``` pytest tests/ ``` ## 限制 - 规范 grant120 外部验证结果现使用连续对数评分。旧的 MC N=3 直接结果仍可用作基线和方差研究,但不再是 grant120 的首选 headline 指标。 - 拒绝检测使用字符串启发式方法,可能对边缘情况低估或高估。 - 翻译可能移除方言线索并改变风险相关语义。 - 仓库在 `data/external/` 中提供小型 MALT 派生公共子集,而非完整的 Hugging Face 缓存导出。 ## 文档 - 方法论:`docs/methodology/01_mvp_design.md` - 第二阶段改进:`docs/methodology/02_phase2_improvements.md` - 外部验证计划:`docs/methodology/03_external_validation_plan.md` - 决策日志(Phase 1-4):`docs/DECISIONS.md` - 下一步(Phase 5+ 路线图):`docs/NEXT_STEPS.md` - 各阶段原始决策:`docs/notes/archive/` - MVP 结果:`docs/results/01_mvp_results.md` - 缩放结果:`docs/results/02_scaled_results.md` - CoT 退化:`docs/results/cot_degradation_summary.md` - 错误分析:`docs/results/error_analysis.md` ### 外部验证报告(规范) - `docs/results/06_external_validation_grant120_local_v3_all_conditions.md` - `docs/results/10_external_validation_grant120_llm_rotation_v3_all_conditions.md` - `docs/results/14_grant120_haiku45_llm_direct_eval.md` - `docs/results/17_grant120_subagent_partial_spanglish_llm_complete.md` - `docs/results/18_grant120_logit_6condition.md` - `docs/results/19_grant120_logit_robustness_original_spanglishify.md` - `docs/methodology/05_phase7_dialectshift_1k.md` 已取代/中间报告(v1/v2 局部、v2/v3-剩余/v4-剩余 LLM、Haiku 直接词典):`docs/results/archive/`。 ### 规范行级工件 - `data/external_validation/grant120_llm_rotation_v4_remaining_tiered/malt-public_grant120_llm_rotation_v4_remaining_tiered_stress_test_rows.csv` - `data/external_validation/grant120_haiku45_llm_full_eval_2026-04-11/original_direct_rows.csv` - `data/external_validation/grant120_haiku45_llm_full_eval_2026-04-11/full_translate_direct_rows.csv` - `data/external_validation/grant120_haiku45_llm_full_eval_2026-04-11/full_translate_translated_rows.csv` ## 安全须知 本仓库包含用于 AI 安全研究的危害性提示评估工件。请勿将其用于实施滥用。 ## 许可证 MIT。参见 `LICENSE`。
标签:AUROC, CI/CD安全, CoT退化, Gemma, Llama, LLM行为, MALT, Qwen, Spanglish, TPR, 代码转换, 假阴性, 大模型安全, 安全对齐, 实时告警, 对齐评估, 方言, 监控, 翻译-再监控, 西班牙语中性, 语言变体, 误报, 跨语言, 逆向工具, 阿根廷西班牙语, 零样本评估