cd ../back to blog
$Trust//June 4, 2026//7 min read

Ton Claude est-il vraiment Claude ? 4 tests pour repérer un modèle ré-emballé ou dégradé

Quatre tests rapides — contexte, tool calling, vision, cache — pour vérifier que le modèle derrière le nom est bien le vrai modèle first-party, et non un ré-emballage discrètement dégradé.

Dans un article complémentaire, nous avons vérifié si une passerelle te facture des comptes de tokens honnêtes. Celui-ci met à l’épreuve l’autre promesse : savoir si le modèle caché derrière le nom est réellement ce modèle. Un revendeur peut renvoyer quelque chose qui se fait appeler claude-sonnet-4-6 mais qui est en fait un modèle plus petit, un fine-tune, un prompt enveloppé dans un gabarit figé, ou bien le vrai modèle dont la fenêtre de contexte et les fonctionnalités natives ont été discrètement rognées. La même chaîne dans model, mais une chose très différente sur le fil.

Tu n’as à croire personne sur parole. Quatre tests courts séparent le vrai modèle first-party d’un ré-emballage. Aucun d’eux ne consiste à demander au modèle « qu’es-tu » — les modèles sont des narrateurs peu fiables de leur propre identité. Sonde plutôt les capacités.

Les quatre façons de truquer un modèle

  • La substitution. Un modèle moins cher ou plus petit est servi derrière le nom du modèle phare. Le moins coûteux à faire tourner, le plus difficile à repérer sur des prompts faciles.
  • Le proxy à gabarit. Ton prompt est fourré dans un échafaudage figé avant d’atteindre le modèle — ce qui modifie le comportement et gonfle ta facture de tokens avec du texte que tu n’as jamais écrit.
  • La fenêtre rognée. Il revendique 200K de contexte mais tronque à une fraction de cela, en abandonnant silencieusement le milieu des entrées longues.
  • Les fonctionnalités amputées. L’usage d’outils, la vision ou le prompt caching sont supprimés ou simulés, si bien que tout ce qui dépasse le simple chat se dégrade.

Test 1 — la fenêtre de contexte

Cache un fait au plus profond d’un long document et demande à le récupérer. Un vrai modèle à 200K de contexte le retrouve ; un modèle dégradé et tronqué renvoie une erreur sur l’entrée ou en perd le milieu :

test_context_window.py
# test_context_window.py
# Un modèle dégradé caché derrière le nom ne peut pas réellement retenir le
# contexte qu'il revendique. Cache un fait au plus profond d'un long document
# et demande à le récupérer.
from openai import OpenAI
client = OpenAI(api_key="sk-brievio-...", base_url="https://api.brievio.com/v1")

needle = "The launch code is HORIZON-7741."
filler = ("This sentence is filler. " * 9000)          # ~50K tokens de bruit
haystack = filler + "\n\n" + needle + "\n\n" + filler

resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[
        {"role": "system", "content": "Answer only from the document."},
        {"role": "user", "content": haystack + "\n\nWhat is the launch code?"},
    ],
    max_tokens=20,
)
print(resp.choices[0].message.content)   # authentique : "HORIZON-7741"
# Un proxy tronqué/dégradé renvoie une erreur sur l'entrée longue, ou abandonne
# silencieusement le milieu et répond « je ne sais pas » — pousse le remplissage
# au-delà de la fenêtre annoncée (ex. 150K+ tokens pour un modèle 200K) et
# observe ce qui casse.

Test 2 — le tool calling natif

Demande un appel d’outil et inspecte tool_calls. Le vrai modèle renvoie un appel structuré ; un ré-emballage qui ne fait que prétendre prendre en charge les outils renvoie null et déverse un bloc JSON dans le texte :

test_tools.py
# test_tools.py — un vrai tool calling natif, ou un faux ?
resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "What's the weather in Tokyo? Use the tool."}],
    tools=[{
        "type": "function",
        "function": {
            "name": "get_weather",
            "parameters": {"type": "object", "properties": {"city": {"type": "string"}}},
        },
    }],
    tool_choice="auto",
)
msg = resp.choices[0].message
print("tool_calls:", msg.tool_calls)   # authentique : un get_weather(city="Tokyo") structuré
# Un proxy ré-emballé qui ne prend pas vraiment en charge les outils renvoie
# tool_calls=None et fourre à la place un bloc JSON dans message.content sous forme
# de texte brut. C'est ça, le signe révélateur.

Test 3 — la vision

Envoie une image dont tu connais déjà le contenu et demande au modèle de la lire. Un modèle dégradé en texte seul en est incapable — il hallucine ou échoue :

test_vision.py
# test_vision.py — peut-il réellement voir ?
resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Reply with only the exact text shown in this image."},
            {"type": "image_url", "image_url": {"url": "https://your-host/known-text.png"}},
        ],
    }],
    max_tokens=30,
)
print(resp.choices[0].message.content)   # authentique : le texte présent dans l'image
# Un modèle dégradé en texte seul ne sait pas le lire — il hallucine, échoue sur la
# partie image, ou l'ignore. Utilise une image dont tu connais déjà le contenu.

Test 4 — le cache et la facture

La quatrième vérification est celle de l’ article sur l’inflation des tokens: envoie un long préfixe deux fois et confirme que cached_tokens est non nul lors de la répétition, et que tes prompt_tokens correspondent bien au texte que tu as réellement envoyé. Un proxy à gabarit échoue aux deux — il ne peut pas mettre en cache un préfixe qu’il réécrit, et il te facture l’enveloppe. L’authenticité du modèle et l’honnêteté du compteur voyagent ensemble ; vérifie-les ensemble.

Mettre le tout bout à bout

Un vrai modèle réussit les quatre : il retient l’intégralité de son contexte, renvoie de vrais appels d’outils, lit les images, met en cache les préfixes, et facture les tokens que tu as envoyés. Un ré-emballage ou une version dégradée casse sur au moins un — généralement d’abord sur ceux qui sont coûteux à truquer (long contexte, vision). Lance la batterie une fois au moment d’intégrer une passerelle, puis de nouveau chaque fois que les réponses d’un modèle empirent en douce ; ces régressions sont précisément la façon dont les dégradations silencieuses se révèlent.

La référence honnête

Brievio achemine les vrais modèles first-party via des canaux cloud de premier rang — Claude via AWS Bedrock, Gemini via Google Vertex — avec la fenêtre de contexte complète, l’usage natif des outils, la vision et le prompt caching transmis intacts, et le modèle que tu demandes est le modèle que tu obtiens. Lance chacun des tests ci-dessus contre Brievio et il devrait les réussir sans accroc. Le catalogue de modèles liste les capacités et le contexte réels de chaque modèle, et la documentation montre la forme exacte des requêtes utilisées ici.

« Est-ce le vrai modèle » et « le compteur dit-il la vérité » sont les deux questions qui valent la peine d’être posées à n’importe quelle passerelle IA — y compris celle-ci. Chacune prend environ une minute à répondre. Pose-les.