Детектор поддельного Claude теперь открытая библиотека
ai-model-verifier, движок нашего тестера моделей, опубликован в npm под лицензией AGPL-3.0. Дайте ему базовый URL, ключ и модель, и он скажет, отдаёт ли эндпоинт то, что продаёт, теперь с проверкой подписи рассуждений и учёта токенов.
В апреле мы опубликовали цифры о поддельных реселлерах Claude: 183 канала у 8 провайдеров, которые отвечали как Kiro, Codeium или другая модель с биркой Claude. Зонды, которые их поймали, жили внутри нашего конвейера синхронизации. Теперь они живут в пакете, который может установить кто угодно.
ai-model-verifier доступен в npm и на GitHub под лицензией AGPL-3.0. Он принимает базовый URL, API-ключ и имя модели и возвращает один из трёх вердиктов, genuine, suspicious или unverified, вместе со сработавшим правилом и сырыми ответами зондов.
Зачем библиотека
Одни и те же проверки теперь выполняются в трёх местах: в вашем браузере в тестере моделей, на наших серверах для публичного рейтинга и внутри конвейера синхронизации, который решает, какие upstream-каналы UnoRouter вообще выставляет. Три копии списка шаблонов расходятся. Один пакет нет.
Он намеренно изоморфен. Только стандартные веб-API, никаких импортов node:, ноль зависимостей во время выполнения. HTTP-вызов внедряется извне, поэтому браузер может обойти CORS, а сервер может идти через fetch, защищённый от SSRF. Провайдеры и детекторы это отдельные точки входа, так что проверка Anthropic никогда не тянет за собой конфигурацию Gemini.
Что нового с апреля
Четыре поведенческих зонда из первой статьи остаются ядром: история про котёнка, хайку, вопрос об идентичности и вопрос об имени модели, теперь для эндпоинтов в формате Anthropic, OpenAI и Gemini. Вокруг них появились проверки, которые не зависят от того, чтобы спрашивать модель, кто она.
- Подпись рассуждений. Claude прикрепляет к каждому блоку рассуждений подпись, сгенерированную на сервере. Релей, отдающий другую модель, создать её не может. Зонды идентичности можно натренировать системным промптом; подпись нельзя.
- Учёт токенов. Релей может передавать настоящий Claude и при этом завышать
input_tokensпри каждом вызове. Два промпта, отличающиеся фиксированным куском текста, должны отличаться по списанным токенам в известном диапазоне,count_tokensдолжен совпадать со списанным, а вывод должен оставаться нижеmax_tokens. Opus 4.7 и 4.8 используют другой токенизатор, так что диапазон заодно служит проверкой уровня. - Несовпадение уровня и подмена. Списано за Opus, отдан Sonnet проскальзывает мимо поведенческих зондов, потому что Sonnet пишет вполне хорошую историю про котёнка. Зонд имени модели ловит ответ, называющий более дешёвый уровень, а проверка конверта ловит эндпоинт, который возвращает идентификатор модели, отличный от запрошенного.
- Смешивание ответов и утечки языка. Каждый промпт несёт nonce. Ответ, возвращающий чужой nonce, означает, что прокси смешивает ответы между пользователями. Символы CJK в ответе на английский промпт указывают на подменённую китайскую модель.
- Метаданные конверта. Идентификатор
chatcmpl-внутри ответа в формате Anthropic или ключи usage от OpenAI в ответе Messages означают, что между вами и моделью стоит слой трансляции. Сообщается как наблюдение, а не вердикт: наш собственный шлюз это ровно такой слой. - Пропускная способность. Более крупные модели медленнее на токен, поэтому канал, за который списывают как за Opus, но который работает со скоростью Sonnet, заслуживает внимания. Замеряется, но без порогов: полезное сравнение идёт между каналами, отдающими одну и ту же модель, а собрать его может только вызывающая сторона.
Чего это не доказывает
Валидная подпись доказывает, что ответил настоящий путь Anthropic. Она не доказывает, какой уровень: Sonnet возвращает совершенно нормальную подпись, когда его продают как Opus, так что успех здесь всё равно требует проверок уровня. Повторно отправить блок рассуждений, чтобы Anthropic заново проверил подпись, звучит как окончательный тест. Мы его построили, и через релей он не работает. Два живых upstream вернули 200 и для настоящего блока, и для того же блока с 308 байтами случайного base64 вместо подписи. Релей заново отправляет ход своему бэкенду, так что ничто ничего не проверяет. Опция выключена по умолчанию и задокументирована именно так.
Проверки подписи и токенов портированы из veridrop, тоже под AGPL, чьи допуски откалиброваны по официальному API. Мы оставили эти на вид свободные границы, потому что настоящие ответы Anthropic лежали рядом с ними.
Как использовать
Тестер моделей прогоняет полный набор в вашем браузере, включая проверки подписи и токенов, и ничего не покидает вашу машину, кроме вызовов к вашему провайдеру. Страница рейтинга публикует результаты, которыми люди решили поделиться. Для собственного конвейера:
import { runVerification } from "ai-model-verifier";
const result = await runVerification({
provider: "anthropic",
baseUrl: "https://YOUR-PROVIDER",
apiKey: process.env.YOUR_KEY,
model: "claude-opus-4-8",
mode: "server",
checkSignature: true,
checkTokenTruth: true,
});
console.log(result.verdict, result.reasons);
// "suspicious" [ "tier-mismatch: requested claude-opus-4-8, served sonnet" ]Включайте то, что нужно. checkSignature и checkTokenTruth стоят дополнительных запросов, поэтому остаются выключенными, пока их не запросят. Метаданные конверта и пропускная способность читаются из ответов, которые прогон уже сделал, и ничего не стоят.
Проверьте провайдера, прочитайте апрельскую статью с цифрами, с которых всё началось, или откройте issue на GitHub, если настоящий эндпоинт получает неверный вердикт.
LLM-шлюз это один эндпоинт и ключ, который маршрутизирует запросы к многим поставщикам моделей. Вот что он делает, чем помогает и кому он действительно нужен.
Мы подключили к UnoRouter 18 бесплатных провайдеров: 190+ строк бесплатных моделей, одна точка доступа OpenAI-compatible, $0 per token. Они несут вышестоящие лимиты, которые мы не можем поднять, плюс небольшой предел в 1 запрос в минуту, который мы добавляем сами, чтобы общие пулы оставались справедливыми. Вот честная версия.
UnoRouter представлен в каталогах ИИ-инструментов и стартапов. Здесь вы найдёте нас, проверите записи и прочтёте независимые отзывы.