Le détecteur de faux Claude est désormais une bibliothèque open source
ai-model-verifier est le moteur de notre testeur de modèles, publié sur npm sous licence AGPL-3.0. Donnez-lui une URL de base, une clé et un modèle, et il vous dit si le point de terminaison sert ce qu'il vend, désormais avec vérification de la signature de réflexion et de la facturation des tokens.
En avril, nous avons publié les chiffres sur les faux revendeurs de Claude : 183 canaux chez 8 fournisseurs qui répondaient en tant que Kiro, Codeium ou un autre modèle portant l'étiquette Claude. Les sondes qui les ont attrapés vivaient dans notre pipeline de synchronisation. Elles vivent désormais dans un paquet que n'importe qui peut installer.
ai-model-verifier est disponible sur npm et GitHub sous AGPL-3.0. Il prend une URL de base, une clé API et un nom de modèle, et renvoie l'un de trois verdicts, genuine, suspicious ou unverified, accompagné de la règle déclenchée et des réponses brutes des sondes.
Pourquoi une bibliothèque
Les mêmes vérifications tournent désormais à trois endroits : dans votre navigateur sur le testeur de modèles, sur nos serveurs pour les classements publics, et dans le pipeline de synchronisation qui décide quelles voies amont UnoRouter expose. Trois copies d'une liste de motifs finissent par diverger. Un seul paquet, non.
Il est isomorphe à dessein. Uniquement des API standard du web, aucun import node:, zéro dépendance à l'exécution. L'appel HTTP est injecté, de sorte qu'un navigateur peut contourner CORS et qu'un serveur peut passer par un fetch protégé contre le SSRF. Fournisseurs et détecteurs sont des points d'entrée séparés : vérifier Anthropic n'embarque jamais la configuration Gemini.
Ce qui a changé depuis avril
Les quatre sondes comportementales du premier article restent le cœur : l'histoire du chaton, le haïku, la question d'identité et la question du nom du modèle, désormais pour les points de terminaison au format Anthropic, OpenAI et Gemini. Autour d'elles s'ajoutent des vérifications qui ne dépendent pas de demander au modèle qui il est.
- Signature de réflexion. Claude attache une signature générée côté serveur à chaque bloc de réflexion. Un relais servant un autre modèle ne peut pas en produire. Les sondes d'identité peuvent être coachées par un prompt système ; une signature, non.
- Comptabilité des tokens. Un relais peut transmettre du vrai Claude et gonfler quand même
input_tokensà chaque appel. Deux prompts qui diffèrent d'une séquence de texte fixe doivent différer en tokens facturés dans une fourchette connue,count_tokensdoit concorder avec ce qui a été facturé, et la sortie doit rester sousmax_tokens. Opus 4.7 et 4.8 utilisent un autre tokenizer, la fourchette sert donc aussi de vérification de palier. - Écart de palier et substitution. Opus facturé, Sonnet servi passe entre les mailles des sondes comportementales, parce que Sonnet écrit une histoire de chaton tout à fait correcte. La sonde du nom de modèle attrape une réponse qui nomme le palier moins cher, et la vérification de l'enveloppe attrape un point de terminaison qui renvoie un identifiant de modèle différent de celui demandé.
- Mélange de réponses et fuites de langue. Chaque prompt porte un nonce. Une réponse qui renvoie le nonce de quelqu'un d'autre signifie que le proxy mélange les réponses entre utilisateurs. Des caractères CJK dans la réponse à un prompt anglais désignent un modèle chinois substitué.
- Métadonnées de l'enveloppe. Un identifiant
chatcmpl-dans une réponse au format Anthropic, ou des clés d'usage OpenAI dans une réponse Messages, signifie qu'une couche de traduction se trouve entre vous et le modèle. Rapporté comme observation, pas comme verdict : notre propre passerelle est exactement une telle couche. - Débit. Les grands modèles sont plus lents par token, donc une voie facturée en Opus qui tourne à la vitesse de Sonnet mérite un coup d'œil. Échantillonné, jamais seuillé : la comparaison utile se fait entre voies servant le même modèle, et seul l'appelant peut l'assembler.
Ce que cela ne prouve pas
Une signature valide prouve qu'un vrai chemin Anthropic a répondu. Elle ne prouve pas quel palier : Sonnet renvoie une signature parfaitement valide quand il est vendu comme Opus, donc une réussite ici a toujours besoin des vérifications de palier. Rejouer le bloc de réflexion pour qu'Anthropic revalide la signature ressemble au test définitif. Nous l'avons construit, et il ne fonctionne pas à travers un relais. Deux amonts en production ont renvoyé 200 pour un bloc authentique et pour le même bloc avec 308 octets de base64 aléatoire à la place de la signature. Un relais réémet le tour vers son propre backend, donc rien ne valide jamais. L'option est désactivée par défaut et documentée comme telle.
Les vérifications de signature et de tokens sont portées de veridrop, également sous AGPL, dont les tolérances ont été calibrées contre l'API officielle. Nous avons gardé ces bornes d'apparence laxiste parce que de vraies réponses Anthropic s'en approchaient.
L'utiliser
Le testeur de modèles exécute l'ensemble complet dans votre navigateur, vérifications de signature et de tokens comprises, et rien ne quitte votre machine hormis les appels vers votre fournisseur. La page des classements publie les résultats que les gens ont choisi de partager. Pour votre propre pipeline :
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" ]Activez ce dont vous avez besoin. checkSignature et checkTokenTruth coûtent chacun des requêtes supplémentaires, ils restent donc désactivés sauf demande. Les métadonnées d'enveloppe et le débit sont lus dans les réponses déjà obtenues et ne coûtent rien.
Testez un fournisseur, lisez l'article d'avril pour les chiffres à l'origine de tout cela, ou ouvrez un ticket sur GitHub si un vrai point de terminaison reçoit un mauvais verdict.
Une passerelle LLM est un endpoint et une clé qui acheminent les requêtes vers beaucoup de fournisseurs de modèles. Voici ce qu'elle fait, pourquoi elle aide et qui en a vraiment besoin.
Nous avons branché 18 fournisseurs gratuits dans UnoRouter : 190+ lignes de modèles gratuits, un endpoint OpenAI-compatible, $0 per token. Ils portent des limites en amont que nous ne pouvons pas relever, plus un léger plafond d'une requête par minute que nous ajoutons pour que les pools partagés restent équitables. Voici la version honnête.
UnoRouter est référencé dans les annuaires d outils IA et de startups. Voici ou nous trouver, vérifier les inscriptions et lire des avis independants.