← Todas las recetasReceta · 16 de septiembre de 2025

Tu mini-benchmark casero: evalúa modelos con TUS tareas

Los benchmarks de internet no miden lo que tú haces. Crea tu propio examen de 10 prompts y decide con datos qué modelo te va mejor.

Dificultadmedia
Tiempo45 min
IngredientesPython · Ollama · tu lista de tareas

Complemento directo de nuestro post ¿Qué es un benchmark?. Los exámenes públicos no miden tus casos de uso. Este es el método que usamos en El Laboratorio para decidir qué modelo se queda en producción.

La filosofía: 10 prompts, no 10.000

No necesitas un laboratorio. Necesitas tus 10 tareas más habituales, ejecutadas siempre igual, comparadas con criterios claros. 30 minutos por modelo, decisión con datos.

Paso 1: Crea tu suite de tareas (el archivo de la verdad)

Crea mis-tareas.json — un prompt por cosa que hagas de verdad:

[
  {
    "id": "resumen",
    "prompt": "Resume este texto en 3 frases para alguien con prisa: <pega un texto real tuyo>",
    "criterio": "¿Son exactamente 3 frases? ¿Está la idea principal? ¿Sin inventos?"
  },
  {
    "id": "email",
    "prompt": "Redacta un email educado rechazando esta propuesta: <situación real>",
    "criterio": "¿Suena humano? ¿Es breve? ¿Queda claro el NO?"
  },
  {
    "id": "json",
    "prompt": "Extrae en JSON (nombre, fecha, importe) de este texto: <factura real>",
    "criterio": "¿JSON válido? ¿Datos correctos? ¿Sin campos extra?"
  },
  {
    "id": "codigo",
    "prompt": "Escribe un script Python que renombre los PDFs de una carpeta con su fecha",
    "criterio": "¿Funciona a la primera? ¿Maneja errores? ¿Es legible?"
  }
]

Regla de oro: los prompts deben ser tareas REALES que ya hayas hecho. Nada de “explora la mecánica cuántica”: mide lo que usas.

Paso 2: El script corredor

import json, ollama, time

tareas = json.load(open("mis-tareas.json", encoding="utf-8"))
modelo = "qwen2.5:7b"   # cambia esto por cada modelo a probar

for t in tareas:
    inicio = time.time()
    r = ollama.chat(model=modelo, messages=[{"role": "user", "content": t["prompt"]}])
    seg = time.time() - inicio
    print(f"### {t['id']} ({seg:.1f}s)")
    print(r["message"]["content"])
    print(f"Criterio: {t['criterio']}\n")

Guarda la salida de cada modelo en un archivo (resultados-qwen.md, resultados-gemma.md…).

Paso 3: La evaluación (aquí está el secreto)

Dos métodos, usa ambos:

  1. Autoevaluación con IA: pásale los resultados a un modelo fuerte y pregúntale: “Evalúa estas respuestas del 1-10 según su criterio. Devuelve una tabla.” (Cuidado con el sesgo de auto-preferencia: evalúa con un modelo DISTINTO al evaluado.)

  2. Tu criterio humano: lee las salidas en paralelo y marca. Tu percepción de “esto me sirve” vale más que cualquier métrica.

Paso 4: La tabla de decisión

Criterio Peso Qwen 7B Gemma 9B Llama 8B
Calidad media (tu nota) x3 7 8 6
Velocidad (t/s) x2 45 30 40
JSON fiable x2 8 7 6
Sigue instrucciones x1 7 9 6
Total ponderado 59 63 46

El número total no importa: importa que la decisión deje de ser “me sonaba que era mejor”.

El extra pro

Automatízalo: cron semanal que corre tu suite contra los modelos nuevos que descargues, y te manda el comparativo por Telegram. Benchmark como servicio doméstico. 😎