En vivo 18.11 · Cohorte 318 nov, 19:00 MSK — taller práctico gratuito de agentes IA · Cohorte 3 en vivo inicia 23.11Taller 18 nov →Cohorte 3 (23.11)
LanzamientoAnálisis · En radarHabr AI→ original

Un profesor creó un bot para corregir el Examen Estatal Unificado: el modelo etiqueta y el código calcula la nota

Un experto del Examen Estatal Unificado lleva dos años desarrollando un bot de Telegram para corregir respuestas extensas de ciencias sociales. La principal conclusión: el modelo etiqueta correctamente una respuesta según el baremo, pero infla las notas si se le confía el resultado final. Por eso, un código convencional vuelve a calcular las puntuaciones y las revisiones adicionales solo pueden reducirlas. Cada corrección cuesta de media 2,3 centavos y tarda 9 segundos.

Procesado por IA desde Habr AI; editado por Hamidun News
Un profesor creó un bot para corregir el Examen Estatal Unificado: el modelo etiqueta y el código calcula la nota
Fuente: Habr AI. Collage: Hamidun News.
Escuchar artículo
Ficha técnica y cifras clave
ParámetroDatos
Fuente originalHabr AI ↗
Editor jefe
Dato clave #1El modelo rellena un esquema JSON mediante tool_use; el código calcula la puntuación
Dato clave #2Un ejemplo solo se rechaza cuando coinciden dos señales negativas
Dato clave #3Si la IA falla, no se muestra ninguna nota y no se descuenta el intento

¿Qué ocurre si se confía a un modelo de lenguaje la tarea de puntuar la respuesta extensa de un estudiante? Califica con generosidad: el alumno «en general entiende las ciencias sociales», mientras que los criterios del FIPI son estrictos. Un ejemplo sobre el «país Z» en vez de Rusia obtiene cero, y un esquema que carece de tres puntos obligatorios pierde todo el criterio. Un profesor y experto del Examen Estatal Unificado explicó cómo pasó dos años construyendo un bot que tiene en cuenta estas reglas.

El modelo etiqueta, el código calcula

El principio fundamental es que el modelo no escribe: «Le doy 2 puntos porque…». Rellena un esquema JSON mediante tool_use: qué ejemplos son concretos, qué afirmaciones son correctas y qué puntos del esquema son esenciales. Después entra en acción un código convencional: vuelve a calcular las puntuaciones según los criterios, comprueba todo lo que se puede verificar sin el modelo y ejecuta revisiones adicionales que solo pueden reducir la nota.

Cada tarea tiene su propio complemento: un manejador, un evaluador y una especificación. No existe un prompt universal. El patrón se aprecia en el volumen de código: la tarea 17 ocupa 942 líneas, mientras que las tareas 24 y 25 tienen entre 6.800 y 7.200 líneas cada una. Cuanto más complejos son los criterios, más código hace falta alrededor del modelo, no un prompt más largo.

Cómo evitar castigar una respuesta inocente

En la tarea 19, el modelo consideraba que reformular la función de un organismo público era un ejemplo de su actuación. El autor añadió una segunda llamada con un esquema independiente, pero la primera versión se activaba en todas partes y restaba puntos en ejemplos sobre familias y ciudadanos, aunque el enunciado no mencionara ningún organismo. Ahora la revisión adicional solo se activa cuando el texto de la tarea contiene marcadores explícitos. Además, un ejemplo solo se rechaza si coinciden al menos dos de cuatro indicadores negativos. La lección: la protección contra las notas infladas puede generar a su vez calificaciones demasiado bajas, y el ámbito en el que se activa es tan importante como la propia comprobación.

En la tarea 24, las puntuaciones de los criterios primero y segundo se calculan íntegramente mediante código: se obtienen lemas con pymorphy2 y se comparan con 185 esquemas de referencia. Los encabezados sinónimos, como «atributos» y «características», se normalizan a una única forma. La prueba es sencilla: todos los esquemas de referencia deben recibir la puntuación máxima. Antes de corregir el tratamiento de sinónimos, esto ocurría en 147 de 185 casos; ahora ocurre en todos.

Solo se puede restar un punto por un error factual después de superar cuatro filtros: una lista cerrada de tipos de errores, una cita literal de al menos 8 caracteres, dos ejecuciones independientes y un verificador separado. Este último es necesario porque dos respuestas idénticas del mismo modelo no equivalen a dos opiniones independientes: en los esquemas de referencia, ambas ejecuciones encontraban sistemáticamente el mismo error inexistente.

Un fallo reconocido en vez de un cero inventado

El error más traicionero es el cero silencioso: el modelo no responde, el código introduce un cero y el estudiante ve lo que parece una corrección normal. En la tarea 25 hubo 16 ceros de este tipo en 110 casos, y la mitad coincidieron con la referencia, por lo que aparecieron en las métricas como aciertos exactos. Ahora cualquier fallo activa el indicador ai_unavailable: no se muestra la nota, no se descuenta el intento y el administrador recibe una alerta. El intento gratuito solo se descuenta después de entregar el resultado.

El autor reconoce abiertamente las partes pendientes: en las tareas 21 y 23, un fallo todavía produce una puntuación simplificada, mientras que el modelo de reserva YandexGPT debe activarse manualmente.

Coste y conclusión práctica

Una ejecución de noviembre sobre 393 respuestas generó 497 llamadas y costó 8,87 dólares: una media de 1,26 llamadas, 2,3 centavos y 9 segundos por corrección. Lo más caro no son las evaluaciones largas, sino las revisiones adicionales. La caché del prompt cubre hasta el 66% de la entrada, pero no se activa con los prompts cortos de las tareas 17, 21 y 22.

Para quienes construyen sistemas de evaluación con LLM: obliguen al modelo a responder con una estructura y señales explícitas, mantengan la aritmética en el código, hagan que las revisiones adicionales funcionen en una sola dirección, exijan ejecuciones independientes y distingan un fallo de un cero. En las versiones nuevas de Claude, un tool_choice forzado devuelve un error 400, por lo que hay que enviar auto y pedir al modelo que invoque la herramienta al final del prompt.

Historia

Preguntas frecuentes sobre la noticia

¿Qué se sabe sobre El modelo etiqueta, el código calcula?

El principio fundamental es que el modelo no escribe: «Le doy 2 puntos porque…». Rellena un esquema JSON mediante tool_use: qué ejemplos son concretos, qué afirmaciones son correctas y qué puntos del esquema son esenciales. Después entra en acción un código convencional: vuelve a calcular las puntuaciones según los criterios, comprueba todo lo que se puede verificar sin el modelo y ejecuta revisiones adicionales que solo pueden reducir la nota.

Cómo evitar castigar una respuesta inocente?

En la tarea 19, el modelo consideraba que reformular la función de un organismo público era un ejemplo de su actuación. El autor añadió una segunda llamada con un esquema independiente, pero la primera versión se activaba en todas partes y restaba puntos en ejemplos sobre familias y ciudadanos, aunque el enunciado no mencionara ningún organismo. Ahora la revisión adicional solo se activa cuando el texto de la tarea contiene marcadores explícitos.

¿Qué se sabe sobre Un fallo reconocido en vez de un cero inventado?

El error más traicionero es el cero silencioso: el modelo no responde, el código introduce un cero y el estudiante ve lo que parece una corrección normal. En la tarea 25 hubo 16 ceros de este tipo en 110 casos, y la mitad coincidieron con la referencia, por lo que aparecieron en las métricas como aciertos exactos. Ahora cualquier fallo activa el indicador ai_unavailable: no se muestra la nota, no se descuenta el intento y el administrador recibe una alerta.

ZK
Zhemal Khamidun — CPO de Alpina Digital, product manager de AlpinaGPT. Crea productos de IA desde 2019. Hamidun News es un proyecto personal que creció hasta ser un agregador en producción con más de 6.000 lectores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
¿Qué te parece?
Cargando comentarios…