Las pruebas

Notas en lenguaje sencillo sobre cada prueba en el Banco de Pruebas Principal. El mismo texto se abre al hacer clic en la letra i que aparece junto a cada encabezado de columna. Las propias pruebas se encuentran en el proyecto de código abierto CrucibleForge; esta página describe, en términos generales, qué es lo que miden dichas pruebas. Cuando una prueba cuenta con ejemplos públicos de preguntas, puede acceder a ellos desde su tarjeta correspondiente.

Qué mide cada prueba

Total

El total es la suma de la puntuación de Código y la puntuación de Chat. Cada una de ellas vale 10 en un resultado perfecto en las pruebas estándar; por lo tanto, 20 es la puntuación máxima teórica. Los paquetes de bonificación (véase Conjuntos de bonificación) añaden puntos adicionales, de modo que un modelo puede superar los 20 puntos; en esta suite, Código puede alcanzar 13 y Chat 15 con cada paquete. Las barras de cada fila llegan hasta esa cifra máxima posible, marcándose con una marca donde finaliza el conjunto estándar. Las pruebas sin censura tienen su propia pestaña y nunca se incluyen en el cálculo. La cifra ± que aparece junto al total representa la mitad de un intervalo del 90% obtenido mediante bootstrap sobre los casos de prueba; por lo tanto, dos modelos cuya diferencia sea menor que sus márgenes se consideran estadísticamente empatados.

Chat

Chat evalúa el juego de rol y las conversaciones con compañeros, no tareas generales de asistencia. Ejecuta 8 sesiones de varios turnos: un juego de rol rico en historia, conversaciones entre compañeros, un personaje con varias voces y una historia creada en colaboración. Cada sesión verifica que el modelo recuerde datos introducidos previamente, acepte correcciones, mantenga la voz y el punto de vista del personaje, y cumpla con las reglas de escritura establecidas. Un modelo juez independiente, Gemma 4 31B (uncensored “heretic” build, Q8) on our own GPU rig, califica las respuestas según una lista de verificación para cada caso; además, unas reglas en texto plano cubren el resto de aspectos. Responder preguntas o seguir instrucciones puntuales no se puntúan aquí. Chat otorga 10 puntos por completar correctamente todas las preguntas estándar; los paquetes de bonificación añaden más puntos, hasta un máximo de 15 en este conjunto.

Descripción completa en GitHub

Chat: ejemplos de preguntas

Algunos casos reales del conjunto de pruebas de código abierto, resumidos.

  1. Mantiene una conversación de compañía coherente durante semanas

    User (Fri 6 Nov) Evening, Hettie. Day off. I did nothing at all until two o'clock and I regret nothing. Biscuit and I sat at the window watching the park like two old men on a bench. The flat's mostly sorted now. One odd thing though. Biscuit goes out fine in the morning, but when we get back in he just flops down by the front door, and in the evening he won't go out for his walk at all. He's gone a bit off his food as well.

    Cómo se califica: Un modelo juez responde a 12 preguntas de tipo sí/no sobre las respuestas; además, se verifican 13 reglas en formato de texto plano.

    Vea este caso en GitHub

  2. Interpreta tres personajes, cada uno con su propia voz

    User The door of the Lamp and Ladle bangs open on wind and rain. Daro Kessen, thirty, a river-guild assessor with a satchel of papers under his oilskin, shakes the water off his hat and looks at the three people at the table by the stove. "Evening. Daro Kessen, river guild. I'm here about your toll-ledger. I gather it went missing three nights ago? …

    Cómo se califica: Un modelo juez responde a 10 preguntas de tipo sí/no sobre las respuestas; además, se verifican 11 reglas en formato de texto plano.

    Vea este caso en GitHub

  3. Coescribe una historia bajo múltiples restricciones

    User Hi! Let's write a short story together, one section per message. Ground rules for the whole piece: first person, past tense; the narrator is Wren Adair, 34, a piano tuner. …

    Several turns later

    User One more author's change, from here to the end: the Hales live on a houseboat moored on the canal, not in a flat. Don't use the word "flat" again, in any sense, and call it the boat. Earlier sections stay as they are. …

    Cómo se califica: Un modelo juez responde a 5 preguntas de tipo sí/no sobre las respuestas; además, se verifican 25 reglas de texto plano junto a él.

    Vea este caso en GitHub

Descripción completa en GitHub

Código

El código incluye la escritura de funciones Python que funcionen, la predicción de lo que imprime un programa, la búsqueda y corrección de errores, tareas relacionadas con repositorios y el uso de herramientas. Las respuestas se someten a pruebas ocultas; por eso la puntuación refleja código que realmente funciona, no solo código que parece correcto. Se otorgan 10 puntos por responder correctamente todas las preguntas estándar; los paquetes de bonificación añaden puntos adicionales, hasta un máximo de 13 en esta suite.

Descripción completa en GitHub

Código: ejemplos de preguntas

Algunos casos reales del conjunto de pruebas de código abierto, resumidos.

  1. Cuenta los días laborables con un fin de semana personalizado

    def workday_intl(start, days, weekend=1, holidays=()):
        """
        Implement `def workday_intl(start, days, weekend=1,
        holidays=()):` in the spirit
        of a spreadsheet WORKDAY.INTL function, with exactly these
        rules:
    
        - Dates are strings of the exact shape `YYYY-MM-DD` (ASCII
        digits, a real
          calendar date). `start` and every holiday must be valid, else
        ValueError.
          The result is a date string of the same shape.
        - `days` is an `int` (not `bool`), else ValueError. …
        """

    Cómo se califica: Pruebas unitarias ocultas (35 comprobaciones en 16 grupos)

    Vea este caso en GitHub

  2. Predice exactamente qué imprimen los fragmentos de código de Python.

    # Q1: shared basket (Python 3.13) - what does it print?
    class Basket:
        items = []
        count = 0
    
        def add(self, thing):
            self.items.append(thing)
            self.count += 1
    
    a, b = Basket(), Basket()
    a.add("milk")
    b.add("eggs")
    b.add("tea")
    Basket.count = 10
    print(a.items, a.count, b.count, Basket.count, Basket().count)

    Cómo se califica: Coincidencia exacta en 8 resultados predichos

    Vea este caso en GitHub

  3. Encuentra dos errores detrás de un solo informe de error

    Bug report: "I have 750 g of flour, the bread recipe needs 1.25 kg, and the shopping list tells me to buy the whole 1.25 kg. Also, after I bought another 500 g and added it, the pantry shows 500 g of flour instead of 1250 g." tests/test_shopping.py::test_partial_stock fails too.

    Find the causes and fix them so the package does what README.md says.

    Cómo se califica: Pruebas de unidad ocultas (4 grupos: convertir, sumar, compras, existentes)

    Vea este caso en GitHub

Descripción completa en GitHub

Conjuntos de bonificación

Each category is 10 for a perfect run of the standard questions. A model that scores at least 90% on a part earns access to a harder bonus set for that part, and a model that clears that set can unlock the next one. Each pack is worth 1 point, added on top, so a category can pass 10; the most a category can reach is 10 plus one point per pack in the suite, and a new pack raises it. A row's details list each pack: its points, or locked. Bonus sets are the only way past 10, which keeps the top of the board from bunching up at a perfect score.

Cómo crece la escala

Programas

Los programas le asignan al modelo 6 tareas, cada una de las cuales requiere una función de Python basada en una descripción precisa y llena de trampas (fechas, redondeos, formato de texto, programación). La respuesta se ejecuta en un entorno aislado frente a pruebas unitarias ocultas; la puntuación corresponde al porcentaje de grupos de pruebas que se superan. Por eso, una respuesta casi correcta también obtiene crédito parcial.

Descripción completa en GitHub

Programas: ejemplos de preguntas

Algunos casos reales del conjunto de pruebas de código abierto, resumidos.

  1. Dispone el texto en líneas de ancho fijo.

    def wrap(text, width):
        """
        Implement `def wrap(text, width):` that lays `text` out into
        lines of at most
        `width` characters and returns them as a list of strings.
    
        Rules:
    
        1. `width` must be an `int` >= 2, otherwise raise ValueError.
        2. Whitespace means exactly these four characters: space, tab,
        `\r`, `\n`.
           Every other character (including non-breaking space U+00A0)
        is part of a
           word. Words are maximal runs of non-whitespace characters.
        3. …
        """

    Cómo se califica: Pruebas unitarias ocultas (28 comprobaciones en 15 grupos)

    Vea este caso en GitHub

  2. Redondea de la misma manera que lo hace una hoja de cálculo.

    def sheet_round(func, number, *args):
        """
        Implement `def sheet_round(func, number, *args):` — six
        spreadsheet rounding
        functions with exact decimal arithmetic.
    
        Numbers (`number`, a multiple, a significance) are given as an
        `int` or as a
        `str` decimal: optional `-`, one or more digits, optionally `.`
        and one or more
        digits (`"-0.125"`, `"12"`, `"007.50"`). Floats, bools and other
        shapes raise
        ValueError. `digits` and `mode` are `int`s (not `bool`). …
        """

    Cómo se califica: Pruebas unitarias ocultas (44 comprobaciones en 15 grupos)

    Vea este caso en GitHub

  3. Planifica tareas entre máquinas para obtener el mejor resultado general

    def best_plan(tasks, k, gap=0, machine_cost=0):
        """
        Implement `def best_plan(tasks, k, gap=0, machine_cost=0):` that
        returns an `int`.
    
        - `tasks` is a list of `(start, end, value)` tuples of ints with
        `start < end` and
          `value >= 1`. There are `k` identical machines (`k >= 1`).
        - A machine runs one task at a time. On the same machine, a task
        `y` may run after
          a task `x` only if `y.start >= x.end + gap` (`gap` is an int
        >= 0). …
        """

    Cómo se califica: Pruebas de unidad ocultas (72 comprobaciones en 14 grupos)

    Vea este caso en GitHub

Descripción completa en GitHub

Banco de códigos

El banco de código muestra al modelo fragmentos cortos de código Python y JavaScript cotidianos; el tipo de código auxiliar que tendría una aplicación doméstica, y pregunta exactamente qué imprime cada uno. Hay 2 conjuntos, uno por lenguaje, y cada salida predicha se verifica mediante coincidencia exacta. Se premia el conocimiento de cómo se comporta realmente el lenguaje (valores predeterminados compartidos, orden de clasificación, redondeo, valores verdaderos/falsos), no la capacidad de escribir nuevo código. La puntuación es el porcentaje de salidas predichas que son exactamente correctas.

Descripción completa en GitHub

Banco de códigos: ejemplos de preguntas

Algunos casos reales del conjunto de pruebas de código abierto, resumidos.

  1. Predice qué imprimirán los fragmentos de código de Python

    # Q1: shared basket (Python 3.13) - what does it print?
    class Basket:
        items = []
        count = 0
    
        def add(self, thing):
            self.items.append(thing)
            self.count += 1
    
    a, b = Basket(), Basket()
    a.add("milk")
    b.add("eggs")
    b.add("tea")
    Basket.count = 10
    print(a.items, a.count, b.count, Basket.count, Basket().count)

    Cómo se califica: Coincidencia exacta en 8 resultados predichos

    Vea este caso en GitHub

  2. Predice qué imprimen los fragmentos de código JavaScript

    // Q1: sorting quantities (Node 24 (ES module)) - what does it print?
    const qty = ["10", "9", "1", "25"];
    console.log([...qty].sort().join(","), qty.map(parseInt).join(","), qty.map(Number).sort().join(","));
    console.log([3, 20, 100].sort().join(","), [3, 20, 100].sort((a, b) => b - a).join(","));

    Cómo se califica: Coincidencia exacta en los 8 resultados predichos

    Vea este caso en GitHub

Descripción completa en GitHub

Agente

El agente le proporciona al modelo un informe de errores relativo a un pequeño proyecto compuesto por varios archivos, así como las herramientas que utiliza el asistente de programación: listar, leer y buscar archivos, editarlos y ejecutar las pruebas. Se trata de una sola tarea (1 en el conjunto), por lo que una sola ejecución puede hacer que esta columna avance mucho. El proyecto corregido se califica mediante la ejecución de sus pruebas.

Descripción completa en GitHub

Agente: ejemplos de preguntas

Algunos casos reales del conjunto de pruebas de código abierto, resumidos.

  1. Encuentra dos errores detrás de un solo informe de error

    Bug report: "I have 750 g of flour, the bread recipe needs 1.25 kg, and the shopping list tells me to buy the whole 1.25 kg. Also, after I bought another 500 g and added it, the pantry shows 500 g of flour instead of 1250 g." tests/test_shopping.py::test_partial_stock fails too.

    Find the causes and fix them so the package does what README.md says.

    Cómo se califica: Pruebas de unidad ocultas (4 grupos: convertir, sumar, compras, existentes)

    Vea este caso en GitHub

Descripción completa en GitHub

Herramientas

Las pruebas de herramientas verifican si un modelo invoca las herramientas correctamente. Cada caso consiste en una conversación programada con un ciclo completo de uso de la herramienta: el modelo debe elegir la herramienta adecuada, proporcionar argumentos válidos, utilizar el resultado y evitar las trampas incluidas en la configuración. Una llamada mal formada se considera un fallo.

Descripción completa en GitHub

Herramientas: ejemplos de preguntas

Algunos casos reales del conjunto de pruebas de código abierto, resumidos.

  1. Comprueba una hora de recogida teniendo en cuenta el cambio de horario

    User Book a pickup for my mother, Maria Sousa, at Lisbon airport on Sunday 25 October. …

    User Her mobile is +351 912 345 678.

    User Her husband Joao Sousa is on TP1351 with her but his phone is broken - book him a pickup too, same place and time …

    Several steps later

    User Finally: Maria might switch to the earlier TP1349 instead, so book her a second pickup for that flight too, just in …

    Cómo se califica: Intercambio scripteado de 6 pasos: se verifica cada llamada a la herramienta, sus argumentos y las respuestas.

    Vea este caso en GitHub

  2. Calcula la fecha límite de reserva a partir de la respuesta de la herramienta.

    User Book a room at Harbour Inn Bergen (hotel BGO-2) for two nights from Friday 13 November for me, Ola …

    User Jonas really does sleep in the cot, so switch us to R-412 - it's cheaper, and the hotel's own note on …

    User OK, we stay in R-509. Until when can we still cancel this Bergen booking for free?

    Several steps later

    User Then just move that Oslo booking to the weekend of 4 December instead.

    Cómo se califica: Intercambio scripteado de 11 pasos: se verifica cada llamada a la herramienta, sus argumentos y las respuestas; una respuesta que contenga contenido prohibido genera un error.

    Vea este caso en GitHub

  3. Elige el día y el grupo de edad adecuados antes de hacer la reserva.

    User Please sign my son Leo Brandt (born 7 November 2021) up for this term's Saturday class at Northpool - the earliest …

    User Lovely. What time does his class start, and is anyone else still able to get a spot in it?

    User Hm, he's still only four, so the Minnows would suit him better - move him to the 09:45 Minnows. …

    Several steps later

    User His sister Mia Brandt, born 3 March 2019, wants a Saturday class at Northpool too - the earliest one she can join …

    Cómo se califica: Intercambio scripteado de 8 pasos: se verifica cada llamada a la herramienta, sus argumentos y las respuestas.

    Vea este caso en GitHub

Descripción completa en GitHub

tok/s

Tok/s es la velocidad media a la que el modelo generó texto durante la ejecución. Los modelos locales se ejecutaron en nuestro propio hardware; por eso estas velocidades son comparables entre sí. Los modelos alojados dependen del proveedor y del nivel de carga que este tuviera, así que consideren su velocidad como una guía aproximada.

Costo de ejecución

El costo por ejecución suma el precio de cada solicitud para una ejecución completa, según la tarifa publicada por el proveedor: los tokens enviados y los tokens devueltos, incluyendo el procesamiento de pensamiento. Este cálculo abarca las pruebas estándar de Código y Chat. No incluye conjuntos adicionales, reintentos, el sistema de evaluación (que se ejecuta en nuestro propio hardware) ni ningún descuento por uso fuera de horas pico o por almacenamiento en caché; por lo tanto, este valor se aproxima a lo que se pagaría según la tarifa normal. Un símbolo ~ indica que el proveedor no cobra por cada token (utiliza un plan fijo), por lo que hemos calculado el costo basándonos en la cantidad de tokens a precio de lista. Un * significa que algunas solicitudes devolvieron datos de uso nulos; por eso, la cifra podría ser menor de lo real. El filtro de contenido del proveedor puede bloquear una respuesta; en ese caso, la fila indica cuántas respuestas fueron bloqueadas, y cada una de ellas obtiene una puntuación de cero.

Clase

La clasificación es una forma rápida de agrupar los modelos por Total: S, A, B y C, siendo S el más fuerte. El umbral para cada banda se indica en las notas debajo del tablero. Un modelo sin una puntuación de Chat completa no tiene Total ni clasificación.

Lea

Lean compara las puntuaciones de Chat y Código del modelo con la mediana del panel para cada una. Si el modelo es claramente mejor en una que en la otra, se marca como orientado a chat o orientado a código; de lo contrario, se considera equilibrado. El margen necesario se indica en las notas debajo del panel.

Suite

El conjunto de pruebas es la versión del conjunto de datos con la que se generó una puntuación. Cuando las pruebas cambian, los modelos se vuelven a ejecutar y el conjunto anterior se conserva en “Versiones anteriores del conjunto de pruebas”. Compare las puntuaciones únicamente dentro de un mismo conjunto de pruebas.

Fecha de la prueba

La fecha de prueba es el día en que se obtuvieron los resultados del modelo en este tablero. Una nueva ejecución del modelo muestra una fecha más reciente.

Basado en

Una versión optimizada mantiene aquí el nombre de su base y nunca se oculta mediante “Solo versiones más recientes”. Esa casilla está activada por defecto y oculta las versiones anteriores de un proveedor cuando existe una versión más nueva de la misma línea en la lista y cuenta con un rango. Al introducir un nombre de base en el filtro, como “gemma 4”, se muestra todo lo que se ha desarrollado a partir de él.

Cantidad

Quant es el formato de compresión de los pesos de un modelo local. Q8_0 se asemeja al modelo de precisión completa y es el formato estándar en esta placa; un formato de cuantización menor permite un funcionamiento más rápido y es adecuado para GPUs de menor capacidad, pero puede dar resultados peores. Utilizamos Q6 o Q5 únicamente cuando Q8_0 no cabe en nuestro equipo, y nunca bajamos de Q5. Las filas antiguas con puntuaciones inferiores a Q5 permanecen en la lista con una nota que indica “por debajo de Q5”; solo se vuelven a probar con el formato estándar si logran un buen rendimiento. Si los mismos pesos se prueban con dos formatos de cuantización distintos, una fila queda clasificada y la otra aparece debajo como variante alternativa. API se refiere a un modelo alojado, que el proveedor ofrece en el formato que considere conveniente.

Abrir el banco principal Cada puntuación aquí es una columna en el tablero.