Hay un tipo particular de reunión que ocurre en todos los equipos que construyen sobre LLMs de frontera. Alguien comparte la última tabla de clasificación de benchmarks. Otra persona señala que las posiciones han cambiado desde el mes pasado. Una tercera nota que el modelo que su equipo está utilizando actualmente ha caído dos puestos en alguna métrica de la que ninguno había oído hablar hace tres semanas. Al final de la reunión, nadie está seguro de si migrar, y la conversación se vuelve a agendar para el próximo trimestre.
El problema de esa reunión no son las personas que están en ella. Es que los benchmarks miden tareas sintéticas, y tu producto no es una tarea sintética. La tabla te dice cómo rinde un modelo en MMLU, en SWE-bench Verified, en GPQA Diamond — pruebas diseñadas por investigadores para ser medibles entre modelos. Ninguna de esas pruebas se parece a los prompts que tu aplicación envía realmente en producción. Ninguna captura cómo maneja un modelo el tipo específico de entrada desordenada y conformada por el dominio que generan tus usuarios.
Este artículo recorre el ejercicio exacto que los benchmarks no pueden hacer. Tres prompts concretos, diseñados para enviarse a GPT-5.5, Claude Sonnet 4.6 y Gemini 3.1 Pro a través del mismo endpoint compatible con OpenAI, con los mismos parámetros de temperatura y sin prompting adicional. Los prompts abarcan tres categorías que tocan la mayoría de cargas de trabajo en producción: extracción estructurada desde un documento desordenado, una tarea de planificación con fuerte componente de razonamiento y generación de código bajo restricciones. Las observaciones a continuación son los patrones de comportamiento que los equipos que realizan este tipo de comparación reportan de forma consistente — los patrones que verías tú mismo si ejecutaras estos prompts en tu propia configuración.
En las tablas de clasificación, estos tres modelos puntúan dentro de 0,8 puntos porcentuales entre sí en SWE-bench Verified. En la práctica, se comportan de manera muy diferente. La elección entre ellos no trata de cuál puntúa más alto en benchmarks — trata de qué patrón de comportamiento encaja con tu carga de trabajo.
Lo que miden los benchmarks y lo que omiten
Los benchmarks existen porque tienen que hacerlo. Los proveedores de modelos necesitan pruebas estandarizadas para hacer afirmaciones de capacidad, los investigadores las necesitan para publicar comparaciones, y el resto de nosotros las necesitamos para tener cualquier punto de partida objetivo para evaluar modelos. Son útiles. También están incompletos de formas que importan para el uso en producción.
Tres limitaciones específicas vale la pena explicitar, porque cada una aparece en los ejemplos de prompts a continuación.
- Miden capacidades aisladas, no patrones de comportamiento. SWE-bench Verified te dice si un modelo puede resolver un tipo particular de issue de GitHub. No te dice si el modelo tiende a sobre–ingenierizar problemas simples, si hace preguntas de clarificación cuando el prompt es ambiguo o si produce una salida que coincide con la estructura que pediste a la primera. Estas son las cosas que observarás a diario en producción.
- Se optimiza para los benchmarks. Cuando una versión de un modelo destaca su puntuación en un benchmark particular, eso es una señal de que el modelo fue al menos parcialmente optimizado para ese benchmark. El rendimiento en el mundo real y el rendimiento en el benchmark pueden divergir — a veces sustancialmente — una vez que el modelo sale de las condiciones para las que el benchmark fue diseñado.
- Los benchmarks agregan. Una diferencia de 0,8 puntos porcentuales en la puntuación de SWE-bench Verified puede ocultar que el Modelo A es mucho mejor en una categoría específica de tarea y peor en otra, mientras que el Modelo B es consistente en general. La agregación colapsa información que necesitas para tomar una decisión.
El ejercicio a continuación está diseñado para hacer aflorar exactamente el tipo de información que los benchmarks agregan y ocultan. El punto no es declarar un ganador — es mostrarte las preguntas que deberías hacerte cuando ejecutes el mismo ejercicio con tus propios prompts.
La configuración
Tres prompts, escogidos porque se mapean a categorías que la mayoría de las cargas de trabajo en producción alcanzan. La configuración: cada prompt se envía a los tres modelos con parámetros idénticos (temperatura 0,3, sin override del system prompt, formato de respuesta por defecto), accedidos a través de un único endpoint compatible con OpenAI para que la comparación sea homogénea — sin peculiaridades específicas del SDK de un proveedor, sin mapeos de parámetros diferentes, sin riesgo de que un modelo reciba trato especial por cómo se construye la solicitud.
Los prompts están a continuación, como bloques de código que puedes copiar y ejecutar. Las descripciones de comportamiento que siguen a cada uno son los patrones que los equipos reportan consistentemente al ejecutar este tipo de comparación — patrones documentados en múltiples estudios de terceros en 2026, y el tipo de cosas que deberías esperar ver tú mismo cuando ejecutes estos prompts en tu propia configuración. Ejecutarlo tú mismo es el objetivo; el artículo existe para darte el marco y los prompts iniciales para hacerlo.
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["COMET_API_KEY"], # or replace with your API key
base_url="https://api.cometapi.com/v1", # one endpoint, multiple models
)
MODELS = [
"gpt-5.5",
"claude-sonnet-4-6",
"gemini-3.1-pro",
]
def run_comparison(prompt: str, temperature: float = 0.3) -> dict[str, str]:
"""
Send the same prompt to all three models and return their responses.
"""
responses = {}
for model in MODELS:
result = client.chat.completions.create(
model=model,
messages=[
{
"role": "user",
"content": prompt,
}
],
temperature=temperature,
)
responses[model] = result.choices[0].message.content
return responses
# Example usage
if __name__ == "__main__":
prompt = "Summarise the key risks in this contract."
outputs = run_comparison(prompt)
for model, response in outputs.items():
print(f"\n--- {model} ---")
print(response)
Prompt 1: Extracción estructurada de un documento desordenado
Esta es la tarea básica de la mitad de las funciones con LLM enviadas en 2026. Tomar una entrada no estructurada — un correo, un ticket de soporte, una transcripción de reunión, un formulario escaneado — y extraer campos específicos en un objeto estructurado. El prompt a continuación pide a cada modelo que extraiga siete campos de un correo de soporte al cliente deliberadamente desordenado que contiene información parcial, señales contradictorias y un campo que no está presente en el texto fuente.
El prompt
You are processing customer support emails. Extract the followingseven fields from the email below into a JSON object with exactlythese keys: - customer_name (string)- order_id (string)- issue_type (one of: "shipping", "product_quality", "billing", "returns", "other")- urgency (one of: "low", "medium", "high")- requested_action (string)- affected_product (string)- escalation_history (any prior contact about this issue, if mentioned)
Email:---Hi there, I'm writing about order #FT-2289334 from last Tuesday. The Cascadehiking boots I received are NOT the size 11 I ordered — they'reclearly size 10 (I can see the label inside). I have a guided trekbooked in 5 days and I genuinely don't know what to do. I've beena customer for years and this is the first time something likethis has happened. Can you sort this out urgently? I'd prefer a same-day exchange ifat all possible. I'm in Manchester. Margaret W.--- Return only the JSON object. No commentary, no markdown code fences.
Qué observar
Tres cosas. Primero, si el modelo se ciñe al esquema JSON solicitado sin inventar. Segundo, cómo maneja el campo que no existe en la fuente (escalation_history — la clienta no menciona contacto previo sobre este problema): ¿admite la ausencia o fabrica algo verosímil? Tercero, si el modelo produce comentarios adicionales fuera del JSON, obligando a un parser downstream a eliminar el envoltorio. El campo de urgencia también merece atención: “5 días” no es inmediato pero la clienta está claramente ansiosa, lo que deja margen de interpretación.
Lo que los equipos que ejecutan esto consistentemente reportan
GPT-5.5. Suele producir JSON limpio al primer intento. La adhesión al esquema es sólida; todos los campos solicitados están presentes y el formato es parseable sin preprocesamiento. Para campos faltantes, GPT-5.5 tiende a devolver un null explícito. Por lo general no envuelve el JSON en fences de código markdown ni incluye explicaciones en prosa, lo que hace trivial el parseo downstream. En decisiones interpretativas ambiguas como la calificación de urgencia aquí, GPT-5.5 tiende a ser más conservador que los otros dos — donde Claude y Gemini podrían calificar el ticket como “high” por el tono emocional de la clienta, GPT-5.5 suele anclarse en la ventana concreta de 5 días y quedarse en “medium”.
Claude Sonnet 4.6. También produce JSON limpio y suele ser el más preciso de los tres al seguir el esquema solicitado. Donde GPT-5.5 deja un campo faltante como null, Claude suele añadir campos no solicitados para señalar problemas de calidad de datos — una clave “notes” o “data_quality_notes” que no se pidió pero que contiene información realmente útil. Ese campo extra es útil para revisores humanos, pero provoca fallos si tu parser downstream es estricto con el esquema. Este es un patrón recurrente con Claude: alta calidad, pero a veces más exhaustivo de lo que pidió el prompt, requiriendo instrucciones explícitas para constreñir.
Gemini 3.1 Pro. Suele producir la salida más económica de los tres. Cada campo solicitado, sin campos extra, sin prosa alrededor. La adhesión al esquema es exactamente la solicitada. La peculiaridad a tener en cuenta: para campos faltantes, Gemini tiende a devolver una cadena vacía en lugar de null. Parsers JSON estrictos que distinguen entre ambos detectarán la diferencia; los menos estrictos no. El comportamiento es lo bastante consistente entre ejecuciones como para parecer una preferencia del modelo más que un artefacto.
Lo que esto te indica
Los tres modelos pueden hacer extracción estructurada. Las diferencias están en el margen conductual alrededor del esquema solicitado. Si tu sistema downstream es estricto con el esquema y trata los campos extra como errores, Gemini 3.1 Pro y GPT-5.5 son opciones más seguras. Si quieres que el modelo haga aflorar problemas de calidad de datos sin que se lo pidas, Claude Sonnet 4.6 es más útil. Nada de esto aparece en un benchmark.
Prompt 2: Una tarea de planificación intensiva en razonamiento
Este prompt pide a los modelos que planifiquen una investigación de múltiples pasos: una pregunta de investigación con tres restricciones implícitas que un modelo cuidadoso debería identificar antes de secuenciar el trabajo. El tipo de tarea que una aplicación agentica delegaría a un LLM como paso de planificación antes de invocar herramientas.
El prompt
I'm trying to answer this research question for my team: "Is our customer churn rate higher among users who haven't usedfeature X in the last 30 days?" Produce a plan for how to investigate this. The plan should:- Identify the steps required- Sequence them with dependencies- Be actionable for a data analyst on my team Return the plan in clear, structured form.
Las restricciones implícitas a observar: la pregunta nunca define qué significa “churn” (¿cierre de cuenta? ¿sin inicios de sesión? ¿sin compras?), no especifica cómo controlar variables de confusión (los usuarios de baja interacción abandonan por muchas razones no relacionadas con la feature X), y no establece un grupo de comparación de referencia. Un planificador cuidadoso debería hacer aflorar las tres antes de producir los pasos.
Qué observar
Si el modelo realmente razona sobre el problema o produce una secuencia de pasos de aspecto verosímil que no se sostiene al examinarla. Si identifica las restricciones implícitas sin que se le indique. Y si las dependencias entre pasos son correctas — un plan que parece bien pero tiene el paso tres dependiendo de un resultado que produciría el paso cinco es inútil en la práctica.
Lo que los equipos que ejecutan esto consistentemente reportan
GPT-5.5. Suele producir el plan más utilizable operativamente. El razonamiento tiende a ser visible — GPT-5.5 enumera sus supuestos sobre las restricciones implícitas (definición de churn, grupo de control, variables de confusión) antes de exponer los pasos, lo que facilita detectar dónde su interpretación difiere de lo pretendido. Las dependencias de pasos se identifican y etiquetan de forma fiable. La salida incluye a menudo una sección que señala qué pasos pueden paralelizarse, algo no solicitado pero que añade valor real. Este es el tipo de tarea donde se nota el entrenamiento de GPT-5.5 en uso de herramientas y agentes — su comportamiento de planificación está modelado por la suposición de que seguirá la ejecución downstream.
Claude Sonnet 4.6. Suele producir el plan más reflexivo, en sentido literal — el plan de Claude a menudo incluye consideraciones que los otros dos modelos no plantean. En una pregunta como esta, es probable que Claude señale el problema metodológico de correlación vs causalidad, que note que “no haber usado la feature X” podría ser un síntoma del churn más que una causa, e identifique explícitamente restricciones que no se hicieron explícitas pero que un analista cuidadoso debería ver. El inconveniente: el plan puede ser más largo de lo necesario, y algunos pasos están a veces sobre–ingenierizados para la pregunta real. El patrón es consistente con el comportamiento de Claude en otros ámbitos — cuidado de nivel experto, a veces más del que requiere la tarea.
Gemini 3.1 Pro. Suele producir el plan más claramente estructurado, con el diagrama de dependencias más nítido. La calidad del razonamiento es alta — identifica de forma fiable las restricciones implícitas, descompone el problema en una secuencia defendible y produce instrucciones paso a paso que realmente se podrían ejecutar. La desventaja: el plan puede leerse algo mecánico. Hace el trabajo pero tiende a no sacar a la luz las sutilezas metodológicas que plantea Claude, ni los insights de paralelización que incluye GPT-5.5. Esto encaja con su patrón general — fuerte en calidad de razonamiento, más “oficio” en las decisiones alrededor.
Lo que esto te indica
La calidad del razonamiento en esta tarea es alta en los tres modelos. Las diferencias están en el comportamiento circundante — lo que el modelo añade más allá de la petición literal. GPT-5.5 añade pragmatismo operativo (paralelización, pistas de ejecución). Claude añade cuidado experto (metodología, edge cases, matiz estadístico). Gemini añade claridad y economía. Ninguna es una opción incorrecta. Cuál encaja con tu aplicación depende de lo que quieres que el modelo haga cuando haya terminado la tarea que le pediste.
Prompt 3: Generación de código con restricciones específicas
Este prompt pide a los modelos que implementen una función pequeña pero no trivial: una función de Python que toma una lista de eventos con marca temporal y devuelve la mayor brecha entre eventos consecutivos, manejando cuatro edge cases. Las restricciones son explícitas; la intención es probar la generación de código bajo restricciones más que el techo de capacidad — todos los modelos pueden escribir esta función. Lo que varía es cómo manejan las restricciones.
El prompt
Write a Python function that takes a list of timestamped events andreturns the longest gap (in seconds) between consecutive events. Requirements:- Function signature: longest_gap(events: list[datetime]) -> float- Handle these edge cases: 1. Empty list (return 0.0 or raise — your choice, but be consistent) 2. Single event 3. Duplicate timestamps 4. Unsorted input- Use only the standard library- Include type hints- Return just the function. No tests or usage examples.
Qué observar
Si el modelo aborda los cuatro edge cases o omite silenciosamente alguno. Si las type hints son precisas o de compromiso. Si la implementación elige un algoritmo defendible (ordenar y recorrer) o algo exótico. Y si el modelo respeta la restricción de “sin tests, sin ejemplos de uso” al final del prompt — este es el tipo de instrucción tardía que los modelos con fuerte seguimiento de instrucciones cumplirán y los más débiles violarán discretamente.
Lo que los equipos que ejecutan esto consistentemente reportan
GPT-5.5. Suele producir el código más exhaustivamente ingenierizado. Maneja los cuatro edge cases con ramas explícitas, type hints precisas (a menudo incluyendo Optional o Union para valores de retorno en edge cases) y un docstring con llamadas de ejemplo. La implementación suele elegir el algoritmo obvio — ordenar, recorrer, rastrear la brecha máxima — y es correcta. A tener en cuenta: GPT-5.5 a menudo incluye tests unitarios o ejemplos de uso incluso cuando el prompt pide explícitamente solo la función. Este es el trade-off con modelos operativamente pragmáticos — añaden lo que creen que necesitarás, incluso cuando les pides que no lo hagan.
Claude Sonnet 4.6. Suele producir el código más legible. La función es concisa, los edge cases se manejan con un patrón de guard clauses limpio al inicio, type hints precisas y mínimas. Claude suele incluir un comentario reflexivo explicando una decisión que el prompt dejó abierta — por ejemplo, en timestamps duplicados, tratarlos como brechas de longitud cero y explicar por qué, lo cual es una decisión defendible que el prompt no especificó. Claude tiende a respetar la restricción de “sin tests” de forma más fiable que GPT-5.5. La función en sí es la más mantenible de las tres. Consistente con la reputación de Claude en calidad de código: limpio, idiomático, con sello experto.
Gemini 3.1 Pro. Suele producir el código más económico de los tres. La función es correcta, edge cases manejados, implementación más corta. Docstring por lo general de una sola línea. Type hints presentes y precisas. La solución de Gemini rara vez incluye tests o comentarios extensos, y no sobre–ingenieriza — exactamente lo que pidió el prompt. Para un desarrollador que quiere una función operativa y piensa añadir los tests aparte, este es el camino más directo. Para quien quiere que el modelo haga también el trabajo circundante, los otros dos añaden más (aunque no se lo pidas).
Lo que esto te indica
Los tres modelos pueden escribir la función. La diferencia conductual está en cuánto trabajo circundante hace cada modelo más allá de la petición literal — y en qué medida cada uno respeta instrucciones explícitas de “no añadirse X”. GPT-5.5 se inclina hacia la exhaustividad, incluso cuando la exhaustividad se descartó en el prompt. Claude se inclina hacia el oficio (código legible, comentarios reflexivos sobre decisiones). Gemini se inclina hacia la economía (hacer exactamente lo pedido, ni más ni menos). Para flujos agenticos en los que la salida del modelo va directamente a una base de código de producción, el comportamiento que quieres depende de lo que espera tu proceso de revisión downstream — y de cuán estrictamente necesitas que se sigan instrucciones negativas.
Los patrones que surgen
A lo largo de los tres prompts anteriores, emergen tres patrones de comportamiento consistentes a partir de estudios comparativos y reportes de desarrolladores publicados durante 2026. No son afirmaciones de capacidad — cada modelo maneja cada tarea a alto nivel. Son tendencias, el tipo de cosas que solo ves cuando los equipos observan al mismo modelo manejar docenas de prompts. Ejecuta los prompts anteriores en tu propia configuración y verás los mismos patrones; el artículo existe para darte el marco para reconocer lo que estás viendo cuando lo hagas.
| Model | Tendencia de comportamiento | Encaja mejor cuando… |
|---|---|---|
| GPT-5.5 | Pragmático operacionalmente. Añade indicaciones de ejecución, código defensivo y salidas amigables para el downstream. Fuerte en tareas moldeadas por agentes y uso de herramientas. | Tu aplicación encadena la salida del modelo hacia ejecución posterior — agentes, flujos de trabajo o pipelines donde el siguiente paso está automatizado. |
| Claude Sonnet 4.6 | Cuidado de nivel experto. Hace aflorar consideraciones más allá de la petición literal, plantea cuestiones de ética y metodología, produce código altamente legible. | Tu aplicación tiene una persona revisando la salida del modelo — generación de contenido, revisión de código, análisis donde el oficio importa. |
| Gemini 3.1 Pro | Económico y directo. Hace exactamente lo solicitado, nada más. La adherencia al esquema más limpia y la menor salida de tokens para trabajo equivalente. | Tu aplicación tiene requisitos de salida estrictos, la previsibilidad del coste es prioridad, o quieres que el modelo sea una herramienta precisa más que un colaborador reflexivo. |
Una advertencia importante. Estos patrones son tendencias, no reglas. Cada modelo puede dirigirse hacia cualquiera de estos comportamientos con prompting adecuado — un system prompt lo suficientemente detallado hará que Gemini añada tests, que Claude se limite a la salida mínima, o que GPT-5.5 omita los unit tests. El punto es lo que cada modelo hace por defecto, antes de que empieces a dirigirlo. El comportamiento por defecto es lo que vivirás en producción a menos que lo contrapeses activamente con prompting.
Cómo probar en tu propia carga de trabajo
El ejercicio anterior es replicable en cualquier carga de trabajo, y debería serlo. Las puntuaciones de benchmarks son útiles como primer filtro, pero los patrones de comportamiento del modelo que importan para tu aplicación específica solo son visibles cuando observas a los modelos manejar tus prompts específicos.
Una guía práctica para ejecutar el ejercicio con tu propio tráfico:
- Elige tres categorías representativas de prompts. No tres prompts aleatorios — tres categorías que abarquen tu carga. La mayoría de sistemas en producción pueden descomponerse en un puñado de tipos de prompt (extracción, clasificación, generación, razonamiento, código, resumen). Elige las categorías que cubren la mayor parte de tu tráfico.
- Curar 20–30 ejemplos por categoría. Idealmente de tráfico real. Anonimiza donde sea necesario. El punto es que los prompts se parezcan a lo que tu aplicación ve realmente, no a preguntas de benchmark. Veinte ejemplos por categoría bastan para ver patrones; treinta bastan para tener confianza.
- Ejecutarlos a través de un único endpoint, en todos los modelos. Un endpoint agregador compatible con OpenAI hace esto dramáticamente más rápido que ejecutar cada modelo con su propio SDK. El código al inicio de este artículo es toda la configuración. La misma temperatura, los mismos parámetros, el mismo prompt — las diferencias en la salida son las diferencias de los modelos.
- Evalúa cualitativamente antes que cuantitativamente. Echa un vistazo a las salidas primero. Los patrones de comportamiento suelen ser obvios en la primera docena de prompts. Una vez que tengas una hipótesis sobre cómo se comporta cada modelo en tu carga, entonces puedes construir una rúbrica para calificar — pero la hipótesis surge de la observación, no de una plantilla de evaluación preconstruida.
- Presta atención a lo que el modelo añade. La pregunta de benchmark es si el modelo acierta. La pregunta de comportamiento es qué más hace el modelo. ¿Añade tests? ¿Explica su razonamiento? ¿Plantea preocupaciones? ¿Produce campos extra que no pediste? Aquí es donde viven las diferencias del modelo.
- Elige el modelo que encaje con tu patrón downstream. Si tu proceso downstream es automatizado, quieres un modelo cuyo comportamiento por defecto produzca salidas limpias y parseables. Si tu proceso downstream es revisión humana, quieres un modelo cuyo comportamiento por defecto añada el tipo de juicio circundante que un revisor humano querría ver. La respuesta correcta depende de lo que viene después del modelo.
Conclusión
La elección entre GPT-5.5, Claude Sonnet 4.6 y Gemini 3.1 Pro no trata de cuál es “mejor”. Trata de cuál encaja con la forma de tu carga de trabajo — y esa forma es algo que los benchmarks no pueden ver. El ejercicio anterior se puede replicar en una tarde si ya tienes los prompts curados; el valor de hacerlo es que dejas de adivinar y empiezas a observar.
Para los equipos que ejecutan el ejercicio por su cuenta: la configuración más sencilla es un único endpoint compatible con OpenAI que exponga los tres modelos detrás de una sola credencial. CometAPI es una vía; apuntas tu SDK de OpenAI existente a una URL base distinta y el parámetro del modelo se convierte en la variable.
Los benchmarks te dicen lo que un modelo puede hacer. Los patrones de comportamiento te dicen lo que un modelo hará, por defecto, con tus prompts. La primera respuesta está publicada. La segunda tienes que observarla tú. Veinte prompts por categoría, una tarde, y tendrás una respuesta que ninguna tabla de clasificación producirá jamás.
¿Listo para integrar con fiabilidad? Visita CometAPI y la documentación de la API para acceso fluido a Claude Fable 5 junto a otros modelos de frontera, facturación unificada y confiabilidad de nivel empresarial. Regístrate hoy y empieza con créditos generosos para nuevos usuarios: tu próximo proyecto de vanguardia te espera.
