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

¿Tu Claude es realmente Claude? Cuatro pruebas para detectar un proxy re-empaquetado o degradado

Un revendedor puede servir un modelo más pequeño detrás del nombre. Cuatro pruebas rápidas de capacidades para distinguir el modelo genuino de un fake.

En un post complementario comprobamos si un gateway te factura conteos de tokens honestos. Este pone a prueba la otra promesa: si el modelo detrás del nombre es de verdad ese modelo. Un revendedor puede devolverte algo que se llama a sí mismo claude-sonnet-4-6 pero es un modelo más pequeño, un fine-tune, un prompt envuelto en una plantilla fija, o el modelo real con su ventana de contexto y sus funciones nativas recortadas en silencio. La misma cadena en model, una cosa muy distinta en el cable.

No tienes que creerle a nadie su palabra. Cuatro pruebas cortas separan el modelo genuino de origen de un re-empaquetado. Ninguna depende de preguntarle al modelo "qué eres" — los modelos son narradores poco fiables de su propia identidad. Mejor sondea sus capacidades.

Las cuatro formas de falsificar un modelo

  • El cambiazo. Se sirve un modelo más barato o más pequeño detrás del nombre del buque insignia. Lo más barato de ejecutar y lo más difícil de notar con prompts fáciles.
  • El proxy con plantilla. Tu prompt se mete dentro de un andamiaje fijo antes de llegar al modelo — lo que cambia su comportamiento y infla tu factura de tokens con texto que nunca escribiste.
  • La ventana recortada. Dice tener 200K de contexto pero trunca a una fracción, descartando en silencio la parte central de las entradas largas.
  • Las funciones mutiladas. El uso de herramientas, la visión o el prompt caching se eliminan o se falsean, así que todo lo que va más allá del chat simple se degrada.

Prueba 1 — la ventana de contexto

Esconde un dato en lo profundo de un documento largo y pídelo de vuelta. Un modelo genuino de 200K de contexto lo recupera; una degradación truncada falla con la entrada o pierde la parte central:

test_context_window.py
# test_context_window.py
# Un modelo degradado detrás del nombre no puede sostener de verdad el contexto
# que dice tener. Esconde un dato en lo profundo de un documento largo y pídelo.
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 ruido
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)   # genuino: "HORIZON-7741"
# Un proxy truncado/degradado falla con la entrada larga, o descarta en silencio
# la parte central y responde "no lo sé" — empuja el relleno más allá de la
# ventana que dice tener (p. ej. 150K+ tokens en un modelo de 200K) y observa qué se rompe.

Prueba 2 — llamadas a herramientas nativas

Pide una llamada a herramienta e inspecciona tool_calls. El modelo genuino devuelve una llamada estructurada; un re-empaquetado que solo finge soportar herramientas devuelve null y vuelca un bloque JSON dentro del texto:

test_tools.py
# test_tools.py — ¿llamadas a herramientas nativas, o un fake?
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)   # genuino: una llamada estructurada get_weather(city="Tokyo")
# Un proxy re-empaquetado que en realidad no soporta herramientas devolverá tool_calls=None
# y en su lugar mete un bloque JSON en message.content como texto plano. Esa es la señal.

Prueba 3 — visión

Envía una imagen cuyo contenido ya conozcas y pídele al modelo que la lea. Una degradación solo-texto no puede — alucina o falla:

test_vision.py
# test_vision.py — ¿de verdad puede ver?
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)   # genuino: el texto de la imagen
# Una degradación solo-texto no puede leerla — alucina, falla en la parte de la
# imagen, o la ignora. Usa una imagen cuyo contenido ya conozcas de antemano.

Prueba 4 — el caching y la factura

La cuarta verificación es la del post sobre inflación de tokens: envía un prefijo largo dos veces y confirma que cached_tokens no sea cero en la repetición, y que tus prompt_tokens coincidan con el texto que de verdad enviaste. Un proxy con plantilla falla en ambas — no puede cachear un prefijo que reescribe, y te factura por el envoltorio. La autenticidad del modelo y la honestidad del medidor van de la mano; verifícalas juntas.

Juntándolo todo

Un modelo genuino pasa las cuatro: sostiene su contexto completo, devuelve llamadas a herramientas reales, lee imágenes, cachea prefijos y factura los tokens que enviaste. Un re-empaquetado o una degradación falla al menos en una — normalmente primero en las caras de falsificar (contexto largo, visión). Corre la batería una vez cuando incorpores un gateway, y de nuevo cada vez que las respuestas de un modelo empeoren en silencio; estas regresiones son la forma en que se delatan las degradaciones silenciosas.

La referencia honesta

Brievio enruta los modelos genuinos de origen sobre canales de nube de primer nivel — Claude vía AWS Bedrock, Gemini vía Google Vertex — con la ventana de contexto completa, el uso nativo de herramientas, la visión y el prompt caching pasados sin tocar, y el modelo que pides es el modelo que recibes. Corre todas las pruebas de arriba contra Brievio y deberían pasar limpias. El catálogo de modelos lista las capacidades y el contexto reales de cada modelo, y la documentación muestra las formas exactas de las peticiones usadas aquí.

"¿Es el modelo real?" y "¿el medidor dice la verdad?" son las dos preguntas que vale la pena hacerle a cualquier gateway de IA — incluido este. Ambas toman cerca de un minuto en responderse. Hazlas.