TypeSafe AI lanzó Jev en septiembre de 2026: una primitiva de decisión no-autorregresiva que devuelve respuestas tipadas con scores de confianza en vez de texto generado. El problema es que es una API cerrada sin pesos públicos. Convai Innovations, liderada por Nandakishor Mukkunnoth, respondió con Laya — la misma idea de System 1, totalmente open-source bajo Apache 2.0.
Me leí la model card, el repo y el reporte de benchmarks para que no tengas que hacerlo: specs exactas, benchmarks vendor-claim vs Jev, un quickstart funcional y los límites honestos que los propios autores admiten.
1. Ficha Técnica: Tres Checkpoints, Un Solo Hub
Laya no es un modelo sino una familia de tres checkpoints basados en encoders, agrupados en un solo hub de Hugging Face (convaiinnovations/laya) para que descargues solo el subfolder que necesites. Nada se genera: pasás un estado (texto, email, ticket, JSON) más preguntas tipadas (choice, score, noul), y cada pregunta se responde en un solo forward pass.
laya (English)
ModernBERT-large · 421M params · contexto 512
El checkpoint base. Clasificación de texto en inglés, guardrails, triage de emails. 395M de los params son el backbone ModernBERT-large, más un decision head entrenado desde cero (2 capas transformer, scorer de opciones, head act/escalate).
laya-multilingual
mmBERT-base · 322M params · contexto 1024 (hasta 8k)
Más de 100 lenguas con vocabulario de 256k tokens. Cerca de 2x más rápido que el checkpoint inglés y el único que sobrevive scripts no-latinos. Más flojo en inglés: elegí a conciencia — o dejá que el Router decida.
laya-typed-decisions
ModernBERT-large · 421M params · contexto 1024
Especialista fine-tuneado en cuatro workflows de agentes (observabilidad, soporte, facturas, alertas de seguridad). Este es el checkpoint detrás del famoso 0.766 — y detrás de casi todos los matices de la sección 4.
Datos que verifiqué (Sep 2026)
- • Licencia: Apache 2.0 — pesos, código y linaje de datos públicos.
- • Instalación: pip install laya (PyPI v0.3.5, requiere Python ≥ 3.10).
- • Repo: github.com/NandhaKishorM/laya — ~14.9k stars y ~1.2k forks al momento de escribir, creciendo fuerte (tenía ~2.5k el 20 de sep).
- • Demo en vivo: huggingface.co/spaces/convaiinnovations/laya-demo.
- • Señal de entrenamiento: RLCD — reinforcement learning contra scoring rules estrictamente propias, así que reportar probabilidades honestas es la única forma de maximizar reward.
2. Laya vs Jev: Benchmarks (Claims del Vendor)
La tabla compara el sistema Laya con routing contra Jev 1.13.0. Leé primero la advertencia: cada número de Laya fue medido por Convai en su propio harness, mientras cada número de Jev es publicado por terceros (estudios independientes y cifras de TypeSafe) — nunca medidos lado a lado por el vendor. Tomalo como un vendor claim con metodología inusualmente transparente, no como una auditoría independiente.
⚠️ Cómo leer esta tabla
Cifras Laya: medidas por Convai en T4, reproducibles vía notebooks/laya_benchmark_colab.ipynb. Cifras Jev: publicadas por terceros (AbdelStark, nibzard) y TypeSafe AI — tamaños de muestra y prompts difieren. El 0.766 corresponde al checkpoint fine-tuneado en el split de entrenamiento de ese benchmark, no al Laya zero-shot.
| Benchmark | Jev 1.13.0 (publicado) | Laya con routing (medido) |
|---|---|---|
| typed-decisions (2.000 decisiones) | 0.727 | 0.766 (+0.039) |
| AG News (4 etiquetas) | 0.910 | 0.950 (+0.040) |
| DAIR Emotion (6 etiquetas) | 0.480 | 0.595 (+0.115) |
| Calibración ECE (menor es mejor) | 0.246 | 0.081 (tras ajuste de temperatura) |
| Latencia p50, 1 pregunta (GPU T4) | 236–276 ms | 32.8 ms (~7–8x más rápido) |
| Banking77 (77 opciones) | 0.870 | 0.425 — gana Jev |
| Costo / pesos | $0.042 por 1M de tokens, API cerrada | $0 self-hosted, Apache 2.0 |
Dos detalles con mérito: en DAIR Emotion, Jev asignó probabilidad cero a la etiqueta real en el 16% de los ejemplos — un fallo duro para cualquier cosa que dependa de la confianza. Y el 0.766 de Laya supera el techo de auto-acuerdo del teacher (0.735) con 2.4x mejor Brier score, ganando los cuatro workflows (facturas 0.804, seguridad 0.766, soporte 0.764, observabilidad 0.730).
3. Quickstart: Router Mode en 5 Minutos
El Router es el punto de entrada recomendado: detecta script e idioma en menos de un milisegundo y despacha al checkpoint correcto en un forward pass. El código sale del README oficial — instalar, preload, definir preguntas tipadas, predecir y decidir según confianza.
Instalación
pip install laya>=0.3.3
Route mode (recomendado)
import laya
from laya import Router
# Preload de checkpoints: evita recargas de 7-10 s al cambiar de idioma
router = Router(preload=True)
state = {
"from": "user@acme.com",
"subject": "Cargo duplicado en factura #4411",
"body": "Nos cobraron dos veces en marzo. Reembolsen el duplicado o cancelamos.",
}
questions = {
"department": {
"type": "choice",
"instructions": "¿Qué departamento debe atender este pedido?",
"criteria": {
"billing": "facturas, pagos, reembolsos",
"technical": "bugs, caídas, errores del sistema",
"sales": "precios, contratos nuevos",
"other": "todo lo demás",
},
},
"urgency": {
"type": "score",
"instructions": "¿Qué tan urgente es este pedido?",
"criteria": ["no urgente", "pronto", "deadline crítico o bloqueante"],
},
"churn_risk": {
"type": "noul",
"instructions": "¿El usuario amenaza con cancelar o irse?",
},
}
res = router.predict(state, questions)
print(res["answers"]["department"]["choice"]) # billing (confidence: 0.94)
print(res["routing"]["model"]) # englishDecidir según confianza calibrada
dept = res["answers"]["department"]["choice"]
conf = res["answers"]["department"]["confidence"]
if conf >= 0.85:
route_automatically(dept) # sin humano en el loop
else:
escalate_to_human(dept) # fallar cerradoModo single-checkpoint (pipelines dedicados)
import laya
agent = laya.load("convaiinnovations/laya") # English root (~808 MB)
agent_ml = laya.load("convaiinnovations/laya", subfolder="multilingual")
agent_td = laya.load("convaiinnovations/laya", subfolder="typed-decisions")
result = agent.predict(state, questions) # un forward pass, ~33-40 ms en GPUTip de producción: siempre preload
Con el Router() por defecto (lazy, max_loaded=1), el tráfico que alterna idiomas reconstruye un checkpoint por request — medido en 7.4 s de recarga mediana en CPU. En un servidor, usá Router(preload=True) o router.preload([“english”, “multilingual”]) para que los cambios de idioma cuesten menos de 1 ms de detección.
4. Límites Honestos (Directo de la Model Card)
Esta es la sección que me hizo confiar en el proyecto: los autores documentan exactamente dónde se rompe Laya. El 0.766 es real, pero pertenece a un fine-tune — la base que descargás se comporta muy distinto out of the box.
⚠️ La base zero-shot roza el azar
Los checkpoints base sacan 0.362 y 0.342 en typed-decisions contra un baseline aleatorio de 0.318 y uno de clase mayoritaria de 0.461. La card lo dice sin vueltas: “Laya is a fast base to specialise, not a zero-shot decision engine.” Presupuestá etiquetar unos miles de ejemplos y fine-tunear (hay notebook gratis en Kaggle 2xT4, ~4–5 horas).
⚠️ Banking77: 77 opciones lo aplastan (0.425 vs 0.870 de Jev)
Las opciones comparten un budget fijo de head (192 tokens EN, 256 multilingüe), así que 77 etiquetas reciben ~3–4 tokens cada una y se vuelven indistinguibles. Soluciones: subir agent.cfg[“head_max_len”], shortlist con embeddings primero (laya.predict_shortlist), o dividir en pregunta gruesa → fina. Jev maneja 50+ opciones out of the box.
⚠️ Calibrar temperatura es obligatorio, no opcional
Los checkpoints salen sobreconfiados (ECE medio 0.466). Reajustar una temperatura por tipo de pregunta en datos held-out lleva el ECE a 0.081 — y el checkpoint multilingüe sale sin temperaturas ajustadas. Ajustalas antes de rutear tráfico de producción según confianza.
⚠️ El checkpoint inglés colapsa fuera del inglés
Promedio macro 0.227 en 51 lenguas; Khmer da 0.000 de accuracy con 95.2% de confianza. El gating por confianza no te salva porque el modelo sigue confiado mientras se equivoca — el routing debe ocurrir antes del forward pass. Por eso existe el Router.
⚠️ Los scores ordinales son la primitiva más floja
Accuracy ordinal 0.372 en SST-5, y en typed-decisions Jev gana en soft accuracy (0.580 vs 0.471): el argmax de Laya es mejor pero sus distribuciones completas matchean peor al teacher. Usá choice/noul donde puedas.
Regla de oro
Si no podés etiquetar unos miles de ejemplos de tu propia decisión, la cifra zero-shot (~0.35) es la que predice tus resultados — no el 0.766. Laya reemplaza brillantemente a un router LLM de 70B después del fine-tune; no lo reemplaza el día cero.
5. Veredicto: Quién Debería Adoptar Laya Esta Semana
Laya es el raro release open-source que es genuinamente útil y además inusualmente honesto sobre sus límites. Para clasificación de alto volumen, guardrails, routing y triage — donde un LLM autorregresivo de 70B es un overkill carísimo — un modelo bidireccional sub-35 ms con pesos auditables es exactamente la herramienta correcta, siempre que lo fine-tunees.
Mi take: prototipá el Router contra tus propios tickets esta semana, medí zero-shot vs un fine-tune de 500 ejemplos, y recién ahí decidí. Los pesos son gratis, el harness es reproducible y los modos de fallo están documentados — eso es más de lo que te da cualquier API cerrada de decisiones.
Adoptalo para
Alto volumen + datos etiquetados
Triage de soporte, routing de emails, guardrails de moderación, procesamiento de facturas, observabilidad de agentes — donde tengas miles de ejemplos, necesites latencia de un dígito en batch y debas correr air-gapped u on-premise bajo Apache 2.0.
Evitálo para
Zero-shot o espacios gigantes de etiquetas
Decisiones zero-shot drop-in sin budget de fine-tuning, prompts únicos con 50+ opciones (ahí gana Jev), o scoring ordinal como primitiva central. Y nada de Router() lazy en producción — preload o pagás 7–10 s por cambio de idioma.
Veredicto
Una base rápida, abierta y bien documentada para especializar — no un motor de decisiones zero-shot. Si fine-tuneás y calibrás, Laya es la mejor respuesta abierta a Jev disponible en septiembre de 2026. Si no lo vas a hacer, la API de Jev (o un LLM chico) te va a servir mejor.
Conclusión
La capa de decisiones System 1 se está partiendo en dos caminos: APIs cerradas y medidas como Jev, y pesos abiertos y self-hosted como Laya. Después de leer el reporte completo de benchmarks — incluyendo las partes donde Laya pierde — considero a Laya la opción abierta más creíble del espacio hoy.
Cloná el repo, corré el Router sobre tus propios datos y dejá que tus números de fine-tune decidan. Y si calibrás temperaturas antes de confiar en los confidence scores, ya vas a estar por delante de la mayoría de los equipos que hoy shipean routers LLM.



