LLM Council: monta tu propio panel de debate multi-modelo con la app de 400 líneas de Karpathy
En un mundo donde cada startup de IA hace la misma pregunta — ¿sobre qué modelo construyo? — Andrej Karpathy construyó una respuesta distinta: ¿por qué no todos?
LLM Council es una app web local de 23.8k estrellas que parece ChatGPT pero funciona como una sala de juntas. Tu consulta va a cuatro modelos de frontera a la vez. Responden independientemente, luego revisan y puntúan anónimamente el trabajo de los demás, y finalmente un modelo Presidente designado compila un veredicto sintetizado único.
Es un “hack de sábado divertido” de 400 líneas que Karpathy llama 99% vibe coded — y se ha convertido en uno de los proyectos más discutidos en IA, porque se sitúa en la intersección de dos cambios sísmicos: arquitecturas ensemble y vibe coding.
El problema: la falacia del sí-sí
La investigación de Stanford mostró que modelos como Claude están de acuerdo con la opinión implícita del usuario un 49% más que un humano — y alucinan entre el 3-48% de las veces. Pide consejo a una IA para una decisión estratégica y obtienes tu propia opinión “con una fuente más bonita.”
Depender de un modelo único crea lo que los analistas llaman Síndrome de Monocultivo de Modelos: tratas la salida de un motor probabilístico como evangelio, ciego a sus vacíos de entrenamiento, sesgos y modos de fallo. Gemini es conciso pero reacio al riesgo. Claude es literario pero excesivamente cauto. GPT es confiado pero incorrecto en temas de nicho.
Un consejo de administración con un miembro no es un consejo — es un espejo. El consejo reemplaza el espejo por una sala de juntas.
El pipeline de 3 fases
graph LR
A[Tu consulta] --> B[Fase 1: Fan-Out]
B --> C1[GPT-5.1]
B --> C2[Gemini 3 Pro]
B --> C3[Claude Sonnet 4.5]
B --> C4[Grok 4]
C1 --> D[Respuestas Anonimizadas]
C2 --> D
C3 --> D
C4 --> D
D --> E[Fase 2: Revisión por Pares]
E --> F[Matriz de Puntuación]
F --> G[Fase 3: Síntesis del Presidente]
G --> H[Respuesta Final]Fase 1: Primeras opiniones (divergencia)
La consulta se distribuye en paralelo a cada miembro del consejo vía asyncio.gather(). Cada modelo responde independientemente — sin pensamiento de grupo, sin sesgo de semilla. La UI muestra todas las respuestas en vista de pestañas para comparar perspectivas lado a lado.
La latencia aquí está limitada por el modelo más lento, no por la suma — una decisión crítica de UX.
Fase 2: Revisión (convergencia)
Aquí está la genialidad arquitectónica. Todas las respuestas se anonimizan — identidades de modelo eliminadas, etiquetadas simplemente “Respuesta A,” “Respuesta B,” etc. — y se envían de vuelta a cada modelo, que las puntúa por precisión y perspicacia.
¿Por qué anonimizar? Los LLM exhiben sesgo de autopreferencia documentado (favorecen la salida de su propia familia) y sesgo de longitud (favorecen respuestas verbosas). Forzar evaluación ciega hace que los jueces evalúen solo calidad semántica. Como dice la teoría, los discriminadores son más fáciles que los generadores: es más fácil reconocer una buena imagen que pintarla.
Esta fase cuesta O(N²) en contexto — cada modelo evalúa cada respuesta — que es donde se va el presupuesto de tokens.
Fase 3: Respuesta final (síntesis)
El modelo Presidente designado (por defecto: Gemini 3 Pro, elegido por su ventana de contexto larga) recibe:
- La pregunta original
- Todas las respuestas candidatas de la Fase 1
- La matriz completa de puntuaciones de la Fase 2
Resuelve contradicciones — detectando que “el Modelo A cometió un error de cálculo, que el Modelo C notó” — y sintetiza una respuesta definitiva. Un Map-Reduce para la inteligencia: mapear entre modelos, reducir a un veredicto.
Instalación: de cero a consejo en 5 minutos
# 1. Clonar
git clone https://github.com/karpathy/llm-council.git && cd llm-council
# 2. Dependencias
uv sync
cd frontend && npm install && cd ..
# 3. Clave API
echo "OPENROUTER_API_KEY=sk-or-..." > .env
# 4. Opcional: personalizar el consejo (backend/config.py)
# COUNCIL_MODELS = ["openai/gpt-5.1", "google/gemini-3-pro-preview", "anthropic/claude-sonnet-4.5", "x-ai/grok-4"]
# CHAIRMAN_MODEL = "google/gemini-3-pro-preview"
# 5. Ejecutar
./start.sh # o: uv run python -m backend.main + cd frontend && npm run dev
Abre http://localhost:5173 — una interfaz tipo ChatGPT donde tu pregunta va a todo el consejo.
Stack técnico: FastAPI (Python 3.10+, async httpx) · React + Vite + react-markdown · almacenamiento JSON en data/conversations/ · uv + npm. OpenRouter actúa como fachada unificada — cambia cualquier modelo editando config, sin cambios de código.
Los tradeoffs honestos
| Dimensión | Modelo único | LLM Council |
|---|---|---|
| Latencia | ~segundos | 15-45s (~5.1x más lento) |
| Coste por consulta | 1x | 3-7x (N llamadas + N² revisiones + Presidente) |
| Sesgo/alucinación | Riesgo sí-sí | Filtrado por revisión por pares anónima |
| Mejor para | Alto volumen, rutina | Alto riesgo, ambiguo, irreversible |
| Crecimiento de contexto | Lineal | Cuadrático (n + n²) |
El marco de decisión: si el coste de equivocarse supera el coste de consultar varios modelos, usa un consejo. La mayoría de equipos encuentra que el 5-10% de las consultas merecen un consejo — las preguntas de alto valor donde la mejor respuesta posible justifica el gasto.
Evítalo para: chat en tiempo real, búsquedas simples, generación de código (estilos inconsistentes), escritura creativa (voz diluida), especialistas afinados, presupuestos ajustados.
El ecosistema: la ola multi-modelo de 2026
LLM Council no fue un caso aislado — aterrizó al inicio de un cambio industrial genuino hacia la orquestación de modelos:
- OpenRouter Fusion (marzo 2026): síntesis de respuestas multi-modelo a nivel de gateway — los agentes Deep Research prefirieron la salida fusionada a la propia
- Maestro / RouteLLM: enrutamiento cheap-first que escala solo cuando es necesario
- LiteLLM / Portkey: la plomería unificada debajo
- Forks comunitarios:
llm-council-plus(UI moderna, multi-proveedor, soporte Ollama, hasta 8 modelos), reconstrucciones en n8n conectadas a Claude vía MCP, despliegues dockerizados
Las 400 líneas de Karpathy anticiparon la dirección: el “modelo” con el que interactúas se está convirtiendo en un ensemble dinámico, no en un endpoint único.
La filosofía: por qué ’las librerías se acabaron'
La alerta Vibe Code del README es el artefacto real:
“El código es efímero ahora y las librerías se acabaron. Pide a tu LLM que lo cambie como quieras.”
Karpathy trata main.py no como texto sagrado sino como andamiaje temporal. Los activos son los prompts de sistema y el protocolo de interacción — el diseño del pipeline Fase 1→2→3. El pegamento de Python es desechable, reescribible por un LLM bajo demanda.
Este es el cambio del paradigma Clean Code al vibe coding: trabaja a nivel conceptual, deja que el agente maneje la implementación, itera libremente. Da escalofríos a los ingenieros de QA — y es hacia donde se dirige la industria.
Conclusión
LLM Council es engañosamente simple: 400 líneas, un fin de semana, cero intención de mantenimiento — y sin embargo demuestra un patrón que está reformando el diseño de productos de IA. Cuando necesitas una respuesta donde equivocarse es caro, un modelo es un espejo; un consejo es una sala de juntas.
Ejecútalo tú mismo, mira cuatro modelos de frontera debatir tu pregunta más difícil en revisión por pares anónima, y ve qué produce una síntesis del Presidente. El código es efímero — el patrón no.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!