AI DevelopmentOpen Source

Laya: La Respuesta Open-Source al Jev de TypeSafe

22 de septiembre de 2026
9 min de lectura
Modelo de decisiones open-source Laya corriendo en una laptop
Compartir:

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.

BenchmarkJev 1.13.0 (publicado)Laya con routing (medido)
typed-decisions (2.000 decisiones)0.7270.766 (+0.039)
AG News (4 etiquetas)0.9100.950 (+0.040)
DAIR Emotion (6 etiquetas)0.4800.595 (+0.115)
Calibración ECE (menor es mejor)0.2460.081 (tras ajuste de temperatura)
Latencia p50, 1 pregunta (GPU T4)236–276 ms32.8 ms (~7–8x más rápido)
Banking77 (77 opciones)0.8700.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"])  # english

Decidir 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 cerrado

Modo 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 GPU

Tip 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.

Diego Rodriguez

Diego Rodriguez

Ingeniero Senior Full-Stack & AI

Diego tiene mas de 9 anos de experiencia construyendo aplicaciones potenciadas por IA de produccion, desde orquestacion de LLMs y pipelines RAG hasta deteccion de riesgos con ML y sistemas de trading algoritmico.

Conoce mas sobre Diego