ModelTrace
ModelTrace 是一个本地运行的主动模型归因工具。它通过三条独立的长整数生成挑战提取输出指纹,在统一候选库中自动判断模型家族和具体版本。
运行
python -m pip install -r requirements.txt
python start.py
页面地址为 http://127.0.0.1:7860/。
GitHub Pages
static/index.html 是不依赖后端的手动测试版本,归因计算和指纹库读取都在浏览器本地完成。仓库附带的 GitHub Actions 会将 static/ 部署到 GitHub Pages。
使用
- 手动测试:复制三条挑战,分别发送给同一个待测模型,再粘贴每次完整输出。
- API 自动测试:填写 Base URL、API Key 和模型名。程序会自动尝试 OpenAI Chat Completions 与 Anthropic Messages 格式,以三份有效回答为目标完成归因。
- 指纹库管理:可以新建指纹库,或通过 API 为现有指纹库添加模型指纹。
_reference.jsonl 中保存实际 user prompt、base prompt、system prompt 和 user prefix;拟合后的 _bank.json 与 unified_bank.json 只保存统计指纹和校准参数。
指纹方法
Codex 任务内监测插件
ModelTrace Guard 按工具调用次数,从原 Codex 任务的冻结快照分别 fork 进行普通检测和异常复测,测后清理临时分支,主任务只接收评分摘要。用户可调整工具间隔、复测次数(默认 3)、有效期和十种语言,不设每轮或任务累计探针上限。网页仪表盘提供完整历史分页和实时提醒;首次不一致要求智能体告知,额外复测全部不一致时停止原任务并拦截后续受支持的工作工具。探针由 Codex 自身生成并消耗对应推理额度,评分使用插件附带的 ModelTrace 指纹库,页面刷新不消耗模型额度。
安装后在 Codex CLI 的 /hooks 中审阅并信任插件 hooks,再在目标任务中开启监测。安装、配置和结果解释详见插件使用说明。
核心算法
所有模型使用同一个全局特征空间、同一套特征与权重:
0.75 × 去除环境方向后的 Hellinger 模型中心相似度
+ 0.25 × 有序块数字序列特征
建库时使用共享环境的平均偏移估计主要干扰方向。归因时先从数字分布和有序特征中投影掉这些方向,再同时与全部模型中心比较。三份回答分别评分后取平均,并使用与查询数量对应的校准温度转换为概率。
具体模型概率由一次全局 softmax 得到,家族概率是该家族下各模型概率之和:
P(具体模型) = softmax(β × 全局模型得分)
P(模型家族) = Σ P(该家族中的具体模型)
结果是当前候选库内、均匀先验下的闭集概率。未收录模型仍会被归到最相似的现有候选。
项目结构
app.py Web 接口
fingerprint.py 指纹提取与归因
bank_builder.py 指纹库构建与概率校准
challenge_suite.py 自动建库挑战
enrollment.py API 调用与指纹采集
rebuild_unified_bank.py 重建统一全局库
data/ 参考数据与指纹库
static/ 页面资源
templates/ 页面模板
指纹库说明
项目中现有指纹库共包含两个模型家族、13 个模型:
gpt-5.4
gpt-5.5
gpt-5.6-luna
gpt-5.6-terra
gpt-5.6-sol
gpt-6-astra
claude-haiku-4-5-20251001
claude-sonnet-4-6
claude-sonnet-5
claude-opus-4-6
claude-opus-4-7
claude-opus-4-8
claude-opus-5
GPT 采集自官方订阅 Codex,Claude 采集自 OAIPro。
致谢
感谢 hanlinwenyuan/hlwy-ai-checker。该项目较早将语言模型的随机数字生成偏差用于第三方 API 渠道一致性检查,为 ModelTrace 提供了重要参考。