lm-detector README

The project's README from github.com/Ikaleio/lm-detector. As one markdown file: README.md.

LM Fingerpoint Detector

让模型随手写几百个整数,识别 API 背后的大语言模型

简体中文 · English

npm Web Docs Bun License

在线检测 · 文档 · 快速开始 · 命令行 · 原理


简介

中转站或第三方 API 声称提供某个模型,实际接入的可能是另一个模型。LM Fingerpoint Detector 用一个与语义无关的任务核对这一点:让模型凭第一反应写出约 300 个 1–355 之间的整数。语言模型写出的“随机数”并不均匀,每个模型偏好的数值、区间和末位数字相对稳定。检测器把这组分布与参考库比对,给出最接近的候选模型。

[!IMPORTANT] 检测结果是参考库内的封闭集合排序。不在库中的模型也会得到一个“最像”的候选,排名分数和置信度都不是身份证明。判断渠道是否可信时,请固定请求参数、重复多轮,并结合其他证据。

快速开始

网页:打开 lm.ikale.io,选择手动或 API 模式。每条回答至少需要 80 个有效整数;三条回答都有效时,页面给出排名和每个候选的置信度。API 模式打开分词器探测后,页面还会单独显示探测结果。

命令行:无需安装,任选一种运行时:

# Node.js ≥ 22
npx lmfpd@latest -b https://api.example.com/v1 -k sk-xxx -m gpt-6-astra

# Bun ≥ 1.4.2
bunx --bun lmfpd@latest -b https://api.example.com/v1 -k sk-xxx -m gpt-6-astra

本地开发:

bun install
bun run dev          # 同步数据并启动 Web 开发服务器(已接入 /api/proxy)
bun run dev:docs     # 启动文档开发服务器
bun run typecheck    # 网页、命令行与文档的 TypeScript 类型检查
bun run build        # 构建网站和文档到 web/dist
bun run build:cli    # 打包 npm CLI 到 dist/fpd
bun run fpd --help   # 在仓库内直接运行 CLI

文档

完整文档位于 lm.ikale.io/docs,源文件在 docs/content/docs/:

章节 内容
网页检测 取样方式、API 配置、结果解读、分词器探测、连接方式
命令行 检测、可选的分词器探测、采样与续采、入库与重训
原理 挑战与特征、排名与核验、置信度校准、分词器探测
部署 Cloudflare Pages、GitHub Pages、Vercel、自建 Worker 代理
参考 数据文件与变更记录、代理 API
开发 项目结构、设计规范、打包与发布

致谢

感谢 xqy2006/ModelTrace 提供了算法思路参考和部分原始数据。

许可证

MIT

lm-detector (Ikaleio/lm-detector)

Searching Database…

Что это?LM Fingerpoint Detector определяет, какая большая языковая модель на самом деле отвечает за API: он просит её написать около 300 случайных целых чисел от 1 до 355, затем сравнивает статистический рисунок этих чисел с эталонной базой известных моделей (GPT, Claude, Gemini, Grok, Qwen, DeepSeek и др.), чтобы найти ближайшее совпадение.
Это сайт или инструмент командной строки?И то и другое: есть веб-приложение, куда можно вставить вывод модели или подключиться к API напрямую, и CLI на Bun под названием fpd с живым терминальным интерфейсом, определением в несколько раундов и выводом JSON.
Как запустить определение?В вебе откройте lm.ikale.io и либо вручную вставьте ответ модели, либо настройте прямой доступ к API; каждый ответ должен содержать минимум 80 корректных целых чисел, прежде чем появится рейтинг. fpd CLI выполняет те же проверки из терминала без какой-либо отдельной установки.
Какие форматы API нужны для общения с моделью?Он понимает три протокола: Responses API от OpenAI, Chat Completions API от OpenAI и Messages API от Anthropic, по умолчанию используя потоковые ответы SSE.
Совпадение действительно доказывает, какая модель работает?Нет — результат лишь рейтинг внутри закрытого эталонного набора. Модель, которой нет в библиотеке, всё равно получит «ближайшего» кандидата, и ни балл рейтинга, ни значение уверенности не являются доказательством настоящей идентичности.
Что проверяет опциональное зондирование токенизатора?При включении (переключатель в вебе или флаг --tokenizer) отправляется около 12 коротких запросов и читается поле token usage из ответа API, чтобы определить, каким токенизатором пользуется вышестоящая модель, после чего это сверяется с заявленной моделью. Это лишь вторичный сигнал: множество разных моделей делят один и тот же токенизатор.
Как эталонная библиотека пополняется новыми моделями?У fpd CLI есть команды sample, enroll и retrain, которые последовательно выполняют сэмплирование, вставку в базу и офлайн-переобучение; неудачные попытки и старые сэмплы сохраняются для отслеживаемости.
Можно ли не пускать запросы через официальный сайт?Да — режим подключения можно задать как прямой, через прокси сайта или через собственный самостоятельно развёрнутый Cloudflare Worker; проект также можно развернуть на Cloudflare Pages, GitHub Pages или Vercel.
Можно ли просто просмотреть эталонные данные без запуска определения?Да, в веб-приложении есть страница эталонной библиотеки, где можно просматривать и экспортировать сохранённые отпечатки моделей в режиме только для чтения.
Creator
Ikaleio
Size
370.8 MB
Stars
488
Updated
CommitOct 17
Age
1mo
Commits · 90 Days