One Token Is Enough

July 21, 2026 · View on GitHub

单个输出 token 的回答分布,给大模型做行为指纹,并核验中转 API 是否在偷换模型。

论文:One Token Is Enough: Fingerprinting and Verifying Large Language Models from Single-Token Output Distributions(arXiv:2607.10252)

本仓库包含三部分:

目录内容
worker/一叶知秋 在线核验站:Cloudflare Worker + 前端,对照指纹库判断中转是否像声称的模型
papercode/论文实验代码:采集、统计、聚类与验证协议(PAMELA)
paper/论文 PDF
dataset/指纹与分析结果数据目录(大文件默认不入库,见下文)

方法一句话

向模型反复问「随便说一个 1–100 的数」这类极短问题(多语言 × 多任务),每次只需约 1 个输出 token。不同模型的回答分布稳定且可区分;用 Jensen–Shannon 散度对照已知指纹,即可做归属与身份核验。论文在 OpenRouter 上测量约 165 个模型,全量探针下 EER 约 7.3%。

在线产品:一叶知秋

担心中转站悄悄换成更便宜的模型?填上对方地址与密钥,选它「声称」的模型,站点会代发极少量探针并与指纹库比对。

  • API Key 不落盘:密钥只在检测时发给你指定的接口,本站不记录、不保存
  • 对照真模型指纹做 JSD 比对与近邻搜索

本地运行见 worker/README.md

cd worker
npm install
# 需先准备 dataset 并构建 KV:python scripts/build-kv.py
npm run kv:upload:local
npm run dev
# 浏览器打开 http://127.0.0.1:8787

部署:

npm run kv:upload
npm run deploy

复现论文实验

papercode/README.md。需要 Node ≥ 20、R ≥ 4.0,以及 OpenRouter API Key。

cd papercode
cp .env.example .env   # 填入 OPENROUTER_API_KEY
npm run fetch-models
npm run assess-models
npm run pilot:dry      # 先估费用
npm run pilot          # 采集(可断点续跑)
npm run stats:all
子目录用途
config/探针题库、运行配置、模型列表
run/目录拉取、成本评估、可恢复实验跑数
data/原始 JSONL 与归一化数据
stats/Node + R 分析流水线
results/统计结果与图表

数据说明

dataset/ 用于 Worker 构建指纹 KV(如 distributions.jsonverification.json 等)。仓库默认忽略具体数据文件,只保留目录占位;可从作者在 Zenodo 上发布的配套资源下载,或自行用 papercode 跑出结果后放入对应路径,再执行 worker/scripts/build-kv.py

作者发布的 Zenodo 资源:

仓库结构

OneTokenIsEnough/
├── paper/          # 论文 PDF
├── papercode/      # 实验与分析代码
├── dataset/        # 指纹数据(构建 Worker KV 用)
└── worker/         # 一叶知秋(Workers + 静态前端)

引用

若本工作对你有帮助,请引用:

@article{bruckner2026onetoken,
  title   = {One Token Is Enough: Fingerprinting and Verifying Large Language Models from Single-Token Output Distributions},
  author  = {Bruckner, Tom{\'a}{\v{s}}},
  journal = {arXiv preprint arXiv:2607.10252},
  year    = {2026}
}

相关链接

License

papercode 标注为 MIT。若你二次分发本仓库其余部分,请保留论文署名与链接,并遵守你所使用上游数据与服务的条款。