← Volver al Jardín

SLMarena: cómo elegí el modelo local que ahora mueve Tuxbot

#SLMarena#SLM#Ollama#Local-AI#LLM#Benchmark#Prompt-Injection#Tuxbot

SLMARENA // LOCAL MODELS // EVIDENCE OVER HYPE

Yo no empecé SLMarena porque necesitara otro leaderboard de modelos. Empecé porque mi chatbot estaba escribiendo un español feo.

Mi sitio de portfolio y blog tiene un chatbot conectado a una representación artificial y muy limitada de mi agente. Para no confundir las capas, lo llamo Mini Tuxbot.

Mi Tuxbot real es mi copiloto augmentador: corre con Hermes Agent y opera como una segunda capa capaz de recordar, inspeccionar, ejecutar y devolver estructura. El chatbot del sitio no es ese agente. Mini Tuxbot es una versión pública, acotada y de solo conversación, construida para que los visitantes puedan explorar mi trabajo.

Mini Tuxbot usa mi proxy de LiteLLM para acceder a modelos locales y responder preguntas sobre mí, mis proyectos y mis ideas usando la información pública del sitio.

La intención era sencilla: que un visitante pudiera preguntar algo y descubrir conexiones escondidas entre muchas páginas. Que pudiera profundizar en un proyecto, saltar a un artículo relacionado, entender mejor mi filosofía o decidir contactarme.

La interfaz era conversacional. El problema era que algunas respuestas sonaban como si las hubiera escrito un gringo aprendiendo español. La información podía ser útil, pero la ilusión se rompía al leer el texto.

El problema real no era solamente el tamaño

La primera versión usaba qwen3:0.6b. Después probé qwen3:1.7b, qwen3:4b, y distintas variantes de Qwen3.5: 0.8b, 2b y 4b.

El patrón era bastante evidente: al crecer el modelo, normalmente mejoraba la naturalidad del español. Pero el tamaño no explicaba todo. Entre modelos también cambiaban la gramática, la precisión y el cumplimiento de las instrucciones.

Un modelo podía escribir mejor, pero inventar más. Otro podía ser preciso, pero ignorar parte del system prompt. Otro podía responder rápido, pero producir una prosa que ningún visitante quisiera seguir leyendo.

Entonces la pregunta dejó de ser:

¿Cuál es el modelo más inteligente?

Y pasó a ser:

¿Cuál es el modelo que responde mejor para este chatbot, con estos escenarios, estos estándares y este hardware?

El chatbot como índice conversacional

Mini Tuxbot no debía ser una demo que contestara una pregunta aislada. Debía ser una capa de descubrimiento sobre mi presencia pública:

visitante llega al sitio

hace una pregunta amplia

Tuxbot conecta información dispersa

respuesta natural y confiable

artículo o proyecto relacionado

el visitante sigue explorando

Para alimentar ese flujo construí una función que, cada vez que publico un artículo o proyecto, agrega la información a un archivo knowledge.txt. Ese contenido entra en el system prompt del chatbot.

Las tres preguntas preconfiguradas del sitio representan los recorridos principales:

  • “Háblame de los proyectos del portafolio.”
  • “Háblame de los artículos del blog.”
  • “Háblame del perfil de Sebastián.”

Parecen preguntas simples. No lo son. Obligan al modelo a leer contexto, seleccionar información, sintetizarla, conservar el tono, no inventar una biografía y abrir caminos para continuar navegando.

De revisar respuestas a medir evidencia

Al principio revisaba las respuestas caso por caso. Eso funciona para descubrir un problema, pero se vuelve insoportable cuando empiezas a comparar familias, tamaños, prompts y configuraciones.

Por eso agregué un modelo frontier como evaluador. El SLM genera la respuesta y el evaluador recibe:

  • el system prompt completo;
  • los mensajes reales del usuario;
  • la respuesta generada por el SLM;
  • instrucciones precisas para analizar cada objetivo.

El evaluador devuelve JSON estructurado con puntuaciones individuales para:

  • grammar;
  • compliance;
  • accuracy;
  • overall;
  • razonamiento de la calificación;
  • errores detectados.

La arquitectura quedó así:

system prompt + user messages

       modelo local bajo prueba

             respuesta

       LLM frontier evaluador

   JSON + métricas + errores detectados

No confié ciegamente en el juez. Antes de usarlo para acelerar el proceso, leí respuestas y calificaciones y comparé sus conclusiones con mi propio criterio. Para estas tareas, los modelos frontier entregaron un nivel de análisis suficientemente alto.

Además, el coste era trivial: menos de un centavo por resultado en las pruebas que estaba ejecutando. El cuello de botella dejó de ser el dinero y pasó a ser diseñar buenos escenarios y conservar resultados comparables.

Un evaluador LLM no es una autoridad universal. Puede equivocarse, favorecer respuestas largas o imponer sus propias preferencias. Su razonamiento es evidencia del análisis del juez, no una prueba matemática de que la nota sea verdadera. Pero como instrumento práctico, calibrado contra revisión humana, permitió multiplicar la velocidad del ciclo.

SLMarena: una herramienta para descubrir tu propio ganador

Casi desde el inicio decidí que esto no debía quedarse como una función privada de Tuxbot. Yo suelo construir primero para resolver una fricción propia y luego abrir el resultado para que otras personas decidan si también les sirve.

Eso ya había ocurrido con pi-antigravity-rotator: empezó como una herramienta para mí y, al convertirse en open source, comenzó a ganar usuarios.

SLMarena sigue la misma filosofía. Es una plataforma self-hosted para ejecutar escenarios contra modelos locales de Ollama, capturar telemetría y comparar resultados en una interfaz persistente.

El proyecto incluye:

  • medición de TTFT, latencia y tokens por segundo;
  • escenarios repetibles;
  • evaluación de gramática, precisión y compliance;
  • pruebas de resistencia a prompt injection;
  • persistencia de ejecuciones;
  • workers para procesar evaluaciones;
  • leaderboard y snapshot público;
  • modo simple con SQLite;
  • despliegue escalable con PostgreSQL y Redis.

Repositorio: github.com/tuxevil/SLMarena
Leaderboard público: slmarena.tuxevil.com

La referencia conceptual no es un único benchmark. Ollama aporta la interfaz para ejecutar modelos localmente. EleutherAI LM Evaluation Harness demuestra el valor de las tareas reproducibles y las métricas comparables. OWASP LLM01 recuerda que un modelo también debe evaluarse frente a entradas que intentan alterar su comportamiento.

SLMarena combina esas preocupaciones desde otro ángulo: no busca una verdad universal sobre todos los modelos. Busca evidencia suficiente para tomar una decisión defendible en una aplicación concreta.

El resultado que no esperaba

Yo empecé probando la familia Qwen3 y Qwen3.5 porque eran los modelos que ya conocía. Pero la medición sistemática cambió mis supuestos.

Descubrí que:

  • Gemma 4 E2B obtenía mejores calificaciones que Gemma 4 E4B en mis escenarios;
  • LFM2.5 8B quedaba entre los mejores, con una velocidad de respuesta extremadamente alta;
  • Nemotron 3 Nano 4B se mantenía cerca de ese grupo superior;
  • el número de parámetros no predecía por sí solo el resultado final.

La conclusión no es que Gemma 4 E2B sea el mejor modelo del mundo. La conclusión es más útil:

Gemma 4 E2B fue el mejor modelo para mi chatbot, bajo mis escenarios, mis estándares y mi hardware.

Por eso ahora es el modelo que mueve Mini Tuxbot, el chatbot limitado del sitio. No es el modelo que ejecuta mi copiloto Tuxbot sobre Hermes Agent.

El modelo ganador depende de tu frontera

Cada usuario tiene una frontera distinta. La frontera de Mini Tuxbot incluye español natural, precisión sobre mis proyectos, compliance con el system prompt, resistencia a ataques, latencia razonable y ejecución local mediante LiteLLM y Ollama.

Otra persona puede valorar código, razonamiento matemático, soporte multilingüe, consumo energético o tool calling. No hay motivo para esperar que obtenga el mismo ranking.

La utilidad de un benchmark local está precisamente ahí. Puedes descubrir:

  • qué modelo escribe mejor en tu idioma;
  • cuál respeta mejor tus instrucciones;
  • cuál alucina menos con tus datos;
  • cuál resiste mejor los ataques diseñados para tu aplicación;
  • qué velocidad real puedes esperar en tu máquina;
  • cuál ofrece el mejor equilibrio entre calidad, velocidad y consumo.

Los benchmarks públicos siguen siendo útiles. Pero cuando llega el momento de desplegar un modelo, la pregunta importante no es qué ganó una tabla distante. La pregunta es qué modelo gana en tu frontera.

SLMarena nació de mi pereza por revisar respuestas una por una. Terminó convirtiendo esa pereza en una herramienta de evidencia. Y esa evidencia cambió el modelo que uso en Mini Tuxbot, la representación pública y limitada de mi agente.