Skip to content
SuperMarioYLPublic

About

Audit behavioral drift before shipping an abliterated/uncensored model: paired base-vs-modified runs through a local LLM-as-judge measure silent shifts in optimism, tone and risk aversion, with per-prompt deltas, bootstrap 95% CIs and a configurable exit-code drift gate for CI.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

English | 简体中文

比较基线与修改版的乐观度、语气和风险规避评分,生成可检查的漂移报告。

比较基线与修改版的乐观度、语气和风险规避评分,生成可检查的漂移报告。

v0.3.0 · Python 3.12+ · MIT

Website · Demo record

为什么使用

模型修改后,回答风格可能发生变化。abldrift 把同一组问题的两份评分逐条对齐,用三个维度的均值差和重采样区间展示变化,便于发布前审阅。评分来自评审模型,结果仍取决于问题集和评分质量。

架构

探针 YAML 定义问题与维度;runner 通过 Ollama 获取两组回答并交给同一 judge。delta 模块计算 modified − base,report 输出表格、Markdown 和 JSON。门禁依据均值差是否超过 tolerance,置信区间是单独展示的统计信息。

探针 YAML 定义问题与维度;runner 通过 Ollama 获取两组回答并交给同一 judge。delta 模块计算 modified − base,report 输出表格、Markdown 和 JSON。门禁依据均值差是否超过 tolerance,置信区间是单独展示的统计信息。

源码入口:abldrift/cli.py · abldrift/delta.py · abldrift/runner.py · abldrift/judge.py · abldrift/report.py · abldrift/data/probes.yaml

安装

源码安装需要 Python 3.12+ 与 uv。下面的 selftest 无需 Ollama;在线审计需另行准备实际可用的模型标签与服务。

git clone https://github.com/SuperMarioYL/abldrift.git
cd abldrift
uv venv --python 3.12
uv pip install --python .venv/bin/python -e .

快速开始

两个命令使用内置合成分数,验证 delta、bootstrap 和容差判定。没有调用实际模型;selftest 的退出码均为 0,不是 run 的 CI 退出码演示。

.venv/bin/abldrift selftest --seed 42 --tolerance 0.5
.venv/bin/abldrift selftest --seed 42 --tolerance 1.1

完整输入与执行步骤见上方命令及 Demo 记录。

使用

.venv/bin/abldrift probes --probes abldrift/data/probes.yaml
.venv/bin/abldrift selftest --n-boot 2000 --seed 42

在线命令形状为 abldrift run --base BASE --modified MODIFIED --judge JUDGE --out reports,其中三个大写值必须替换为本机模型标签。--json 把 JSON 文档输出到 stdout(进度与错误信息走 stderr),默认把 delta.md + delta.json 写入 --out 目录,--no-write 表示不写报告文件。run 的约定是通过 0、超过容差 1、捕获到运行错误 2。在线配对运行链路已在 v0.2.1 修复,并由离线桩客户端的端到端测试覆盖;评分结果仍取决于问题集与评审模型质量。

实际 Demo

两个命令使用内置合成分数,验证 delta、bootstrap 和容差判定。没有调用实际模型;selftest 的退出码均为 0,不是 run 的 CI 退出码演示。

默认容差

均值差在三个维度上都超过 0.5。

$ .venv/bin/abldrift selftest --seed 42 --tolerance 0.5
  abldrift — synthetic-base → synthetic-modified  (judge:
                          (none))
┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ dimension     ┃  delta ┃           95% CI ┃ excludes 0? ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ optimism      │ +1.000 │ [+1.000, +1.000] │     yes     │
│ tone          │ +0.800 │ [+0.800, +0.800] │     yes     │
│ risk_aversion │ +0.600 │ [+0.600, +0.600] │     yes     │
└───────────────┴────────┴──────────────────┴─────────────┘
verdict: DRIFT DETECTED  (tolerance ±0.5, n=30)
optimism: delta=+1.000 CI=[+1.000,+1.000] excludes0=True
tone: delta=+0.800 CI=[+0.800,+0.800] excludes0=True
risk_aversion: delta=+0.600 CI=[+0.600,+0.600] excludes0=True

增大容差

容差变为 1.1 后判定通过,分数与区间没有变化。

$ .venv/bin/abldrift selftest --seed 42 --tolerance 1.1
  abldrift — synthetic-base → synthetic-modified  (judge:
                          (none))
┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ dimension     ┃  delta ┃           95% CI ┃ excludes 0? ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ optimism      │ +1.000 │ [+1.000, +1.000] │     yes     │
│ tone          │ +0.800 │ [+0.800, +0.800] │     yes     │
│ risk_aversion │ +0.600 │ [+0.600, +0.600] │     yes     │
└───────────────┴────────┴──────────────────┴─────────────┘
verdict: within tolerance  (tolerance ±1.1, n=30)
optimism: delta=+1.000 CI=[+1.000,+1.000] excludes0=True
tone: delta=+0.800 CI=[+0.800,+0.800] excludes0=True
risk_aversion: delta=+0.600 CI=[+0.600,+0.600] excludes0=True

能力与接入

离线 selftest 只执行评分计算。完整 run 路径面向 Ollama;报告用于审阅或流水线消费。它不修改模型,也不评估所有安全性或任务能力。

离线 selftest 只执行评分计算。完整 run 路径面向 Ollama;报告用于审阅或流水线消费。它不修改模型,也不评估所有安全性或任务能力。

配置

--tolerance=0.5 控制绝对均值差阈值,--n-boot=2000 与 --seed=42 控制重采样。--probes 指向 YAML,--host 指定 Ollama 地址。每条评分范围为 1–5;无法解析的 judge 输出会退回中性分数,报告会标注回退次数,应结合原始输出审阅。

路线图与范围

已提供探针集、离线计算、报告模块与在线配对运行链路(在线链路已在 v0.2.1 修复并由离线端到端测试覆盖);其他服务后端、持续监控与托管报告属于后续方向。

  • 配对 judge 不保证消除评分偏差,bootstrap 区间也不证明模型修改导致了真实世界效果。
  • ScoredResponse 与 ResponseScore 的接口不匹配已在 v0.2.1 修复;此示例(demo 记录)仍仅覆盖可运行的离线核心。

Terminal recording · Recording script

许可证

MIT

About

Audit behavioral drift before shipping an abliterated/uncensored model: paired base-vs-modified runs through a local LLM-as-judge measure silent shifts in optimism, tone and risk aversion, with per-prompt deltas, bootstrap 95% CIs and a configurable exit-code drift gate for CI.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages