Chrome 157 mete un modelo de decisiones en el navegador: cuándo le gana a tu motor de reglas y cuándo no
La Decisions API de Chrome (window.DecisionModel) responde preguntas cerradas —sí/no, opción, puntuación— en el dispositivo del usuario, en una sola pasada del modelo y sin enviar nada a un servidor. El código aterrizó en Chromium del 6 al 8 de octubre de 2026 y llega en la beta de Chrome 157: aquí van las tres piezas de la misma semana, por qué el esquema de preguntas decide el resultado (de 38% a 85% en pruebas independientes) y las seis reglas que aplicamos antes de dejar que un modelo toque una interfaz.
Chrome 157 mete un modelo de decisiones en el navegador: cuándo le gana a tu motor de reglas y cuándo no
La Decisions API de Chrome (window.DecisionModel) permite que un sitio le haga preguntas cerradas al navegador —sí/no, elegir entre opciones, puntuar— y reciba la respuesta con su probabilidad, calculadas en el equipo del usuario, en una sola pasada del modelo y sin que el texto salga del dispositivo. El código aterrizó en Chromium entre el 6 y el 8 de octubre de 2026, la bandera chrome://flags#decisions-api viaja en la beta de Chrome 157 —que sale hoy, 14 de octubre— con estable previsto para el 3 de noviembre. Nuestra postura, después de leer los code reviews y las pruebas independientes: todavía no la enviaríamos a una interfaz en producción. La precisión va del 38% al 85% según el esquema de preguntas, así que el esquema es el producto, y una puerta de confianza mal diseñada es peor que un if de verdad.
Qué es, en una sola frase
Un if cuya condición la entiende el modelo en lugar de la persona que escribió el código. Describes las preguntas en un esquema —cada una de tipo boolean, choice o score—, le pasas el texto del usuario y recibes, por cada pregunta, la etiqueta ganadora, un confidence entre 0 y 1 y la distribución completa de probabilidades:
const model = await DecisionModel.create({
questions: [{
id: "intention",
prompt: "¿El visitante busca comprar o solo informarse?",
type: "choice",
options: [
{ label: "comprar", description: "quiere precio, stock o demo" },
{ label: "informarse", description: "quiere explicación o comparativa" }
]
}]
});
const result = await model.decide(textoDelVisitante);
// result.intention.label / .confidence / .probabilities
Antes de crear nada, DecisionModel.availability() devuelve available, downloadable, downloading o unavailable. downloadable no es "sí": es "todavía no".
Por qué no es solo otro Prompt API
La diferencia no es de nombre, es de arquitectura. El Prompt API decodifica token a token —cientos de milisegundos por respuesta, salida libre que hay que parsear—. La Decisions API hace scoring logarítmico en una sola pasada: el texto de entrada y cada respuesta candidata se comparan por similitud de coseno y las semejanzas se convierten en probabilidades con un softmax a temperatura 0,05. El resultado es un motor de decisión de tipo "Sistema 1", no un generador de frases.
Las cifras de los primeros tests independientes dan la escala: ~0,2 s por decisión con EmbeddingGemma, ~1,5 s con Laya y ~2,4 s con Gemma 4 (RESONEO, pruebas sobre 414 consultas). Ninguno compite con un if local: la comparación correcta es contra un viaje de red a un LLM de servidor.
Tres límites del código conviene conocer antes de entusiasmarse:
| Límite | Qué dice el código | Consecuencia práctica |
|---|---|---|
| Solo escritorio | Android queda excluido "para evitar un aumento del tamaño del binario" | La mitad del tráfico móvil no tiene la API; el fallback determinista es obligatorio, no opcional |
| Bandera con caducidad | chrome://flags#decisions-api, expira en el hito 160 | No construyas rutas dependientes de ella; solo progressive enhancement |
| Descarga con gesto | Desde el 8 de octubre, create() no inicia la descarga del modelo sin interacción previa del usuario | Cualquier página podría disparar una descarga de varios GB; en la práctica, el modelo no está listo en el primer render |
La API comparte además la Permissions Policy language-model con el Prompt API: quien ya controla quién puede usar IA integrada en su origen controla esta con la misma llave.
Las tres piezas que llegaron en la misma semana
Esto no es una función aislada. Entre el 6 y el 8 de octubre de 2026 se movieron tres piezas que solo tienen sentido juntas:
| Pieza | Fecha | Qué aporta |
|---|---|---|
Código de DecisionModel en Chromium | 6–8 oct 2026 | La API, detrás de bandera, reutilizando el switch de la abandonada Classifier API (AIClassifierAPI → AIDecisionModelAPI) |
| MediaPipe Decision Maker | 6 oct 2026 | La misma mecánica de preguntas, hoy, en Android, iOS, Python y Web — sin esperar a Chrome |
| EmbeddingGemma 2 | 6 oct 2026 | El motor por defecto previsto: 740 M de parámetros, multimodal, licencia Apache 2.0, ~191 MB de RAM solo con texto |
MediaPipe Decision Maker ya funciona hoy en cualquier sitio (documentación oficial): mismas tres primitivas (BooleanQuestion, ChoiceQuestion, ScoreQuestion), mismos motores, salida con probabilidades calibradas. La diferencia está en quién paga el modelo: en MediaPipe cada sitio descarga el suyo —RESONEO midió unos 165 MB con EmbeddingGemma 2 y 678 MB con Laya—, mientras que Chrome compartiría un único modelo entre todos los sitios del mismo usuario. Cambia también la telemetría: MediaPipe reporta a Google el sitio, el navegador, el recuento de decisiones y los tiempos, pero no el texto.
El esquema es el producto: del 38% al 85%
Es el hallazgo que debería frenar cualquier entusiasmo. En la prueba independiente más completa publicada hasta ahora —414 consultas en francés e inglés sobre 11 esquemas simulados de coches, hoteles y electrodomésticos—, el motor por defecto con el esquema por defecto acertó el 38% de las veces y cayó en la opción "cualquiera" el 70%. Cuatro ajustes de redacción del esquema —describir cada opción, no solo etiquetarla— subieron eso al 58%. Con el mejor motor de los probados, hasta el 85%. La misma API, la misma consulta, cuatro reescrituras de esquema: 47 puntos de diferencia.
Un segundo dato viene de la lectura de los code reviews (DEJAN, 8 de octubre de 2026): como cada respuesta candidata repite el texto de la pregunta, sus embeddings comparten un componente grande, el margen entre ellas se estrecha y la confianza colapsa hacia el uniforme. Un revisor de Google lo señaló en la propia revisión. Traducción práctica: confidence > 0.5 como umbral de seguridad es casi una declaración de intenciones, no una puerta.
Por eso nuestra política se apoya en el margen entre la primera y la segunda opción, no en la confianza bruta: la diferencia tiene que ser lo bastante grande como para que la alternativa determinista no tenga nada que decir.
Cuatro caminos para la misma decisión
El error típico es presentar esta API como el sustituto del motor de reglas. No lo es: es una cuarta vía para un tipo de decisión muy concreto —texto libre del usuario convertido en una opción cerrada—.
| Camino | Dónde corre | Cuándo es el correcto | Coste real | Riesgo principal |
|---|---|---|---|---|
| Reglas deterministas en JS | Siempre, en el cliente | La lógica es explícita y el input ya está estructurado | Microsegundos, cero descargas | Explota con texto libre: de "coche eléctrico barato" a cinco filtros no hay regla que escale |
| LLM en servidor | Nube | Pregunta abierta, contexto de negocio, decisión de dinero | 500 ms–2 s, coste por token, el texto sale del dispositivo | Latencia, factura, privacidad y una respuesta que puede alucinar en el peor momento |
| Decisions API (Chrome) | Dispositivo, tras bandera | Texto libre → opción cerrada, con fallback determinista | 0,2–2,4 s y ~cientos de MB compartidos por el navegador | Solo Chrome escritorio, precisión ligada al esquema |
| MediaPipe Decision Maker | Dispositivo, hoy | Lo mismo, en cualquier navegador y sistema | Descarga propia por sitio (~165–678 MB) | Telemetría hacia Google y peso por origen |
Y dentro de la vía on-device, tres motores con perfiles distintos:
| Motor | Arquitectura | Latencia por decisión | Cuándo elegirlo |
|---|---|---|---|
| EmbeddingGemma 1 / 2 | Bi-encoder, 270 M / 300 M | ~0,2 s | Por defecto: alto volumen, textos cortos, presupuesto de latencia ajustado |
| Laya / GLiNER2.5-Decide | Cross-encoder, 149 M / 166 M | ~1,5 s | Fronteras más finas y mucha menos caída al "da igual" |
| Gemma 4 E2B / E4B | Autoregresivo, 2 B / 4 B | ~2,4 s | Lógica composicional y los mejores porcentajes de acierto |
Nuestra política de envío: seis reglas
Antes de que un modelo de decisión toque una interfaz real:
- Nunca en caminos sin supervisión. Dinero, permisos, publicación, borrado: fuera. Un motor de decisiones con 38% de acierto en el peor caso no firma nada irreversible.
- Puerta por margen, no por confianza bruta. Exige que la opción ganadora supere a la segunda por un margen definido (nosotros fijamos 0,15 sobre la distribución). La confianza colapsa hacia el uniforme; el margen no miente tanto.
availability()antes que promesa.downloadableydownloadingse tratan como "todavía no". Si el modelo no está listo, la ruta determinista gana, no espera.- Descarga solo tras gesto del usuario. Chrome ya lo exige desde el 8 de octubre: lanza la descarga en la primera interacción real, no en el render.
- Dos semanas de sombra. Registra las decisiones del modelo al lado de las de tus reglas, sin aplicarlas: dos semanas de tu tráfico real dicen si el esquema acierta sobre tu texto, no sobre 414 consultas ajenas.
- El fallback determinista nunca se borra. Misma doctrina que con
navigator.cpuPerformance: lo desconocido se trata como el valor seguro. Sin API —Firefox, Safari, Android, Chrome anterior a 157—, el sitio se comporta exactamente como antes.
Qué hacemos hoy
Nada de esto es nuevo como doctrina; lo que cambia es el objeto. Cuando argumentamos que el ciclo de dos semanas de Chrome obliga a un patrón de adopción —habilitar cuando existe, seguir funcionando cuando no— hablábamos de APIs de CSS. La Decisions API es el mismo patrón con una pregunta de producto detrás: ¿qué parte de tu interfaz decide cosas que hoy resuelves con reglas escritas a mano?
Las reglas ganan cuando el criterio es explícito, auditable y el input ya llega estructurado —la automatización con reglas sigue ganando a los agentes en procesos acotados, y esta API no cambia eso. El modelo gana cuando el input es texto escrito por una persona y la salida es una de tres opciones posibles: filtros de búsqueda, intención de una consulta, clasificación de un mensaje entrante. Ahí, y solo ahí, un "if semántico" en el dispositivo ahorra un viaje de red, una factura de tokens y una fuga de datos.
La línea de fondo
Chrome 157 convierte una pregunta de arquitectura en algo que puedes probar este trimestre: no "¿debería usar IA en el front-end?" sino "¿qué decisiones de mi interfaz siguen dependiendo de que alguien haya escrito la regla correcta". La respuesta correcta hoy es conservadora —bandera, sombra, margen, fallback— y lo seguirá siendo: la API es solo de escritorio, caduca en el hito 160 y su acierto depende casi por completo de cómo escribas el esquema. Escríbelo bien y es un salto de 47 puntos. Escríbelo como lo escribiría cualquiera y tienes un 38% firmando decisiones que antes eran gratuitas y correctas.
Preguntas Frecuentes
¿Qué es la Decisions API de Chrome?
Es una API del navegador (window.DecisionModel) que evalúa preguntas estructuradas de tipo booleano, de opción o de puntuación sobre un texto que le pasa el sitio, en el propio dispositivo del usuario. Devuelve la etiqueta ganadora, un valor de confianza y la distribución completa de probabilidades de cada respuesta, sin decodificar tokens y sin que el texto salga del equipo.
¿Se puede usar la Decisions API en producción hoy?
No en Chrome: el código entró en Chromium entre el 6 y el 8 de octubre de 2026 detrás de la bandera chrome://flags#decisions-api, viaja en la beta de Chrome 157 y la versión estable está prevista para el 3 de noviembre de 2026, solo en escritorio. La alternativa operativa hoy es MediaPipe Decision Maker, publicado por Google el 6 de octubre de 2026, que ejecuta el mismo tipo de preguntas en cualquier navegador aunque obliga a que cada sitio descargue su propio modelo.
¿Qué diferencia hay entre la Decisions API y el Prompt API?
El Prompt API genera texto token a token: es lento, admite preguntas abiertas y su salida hay que parsearla. La Decisions API hace una sola pasada del modelo sobre un esquema cerrado de preguntas y devuelve probabilidades calibradas: décimas de segundo en lugar de segundos, salida estructurada por diseño y cero coste marginal por consulta. Comparten la Permissions Policy language-model, así que quien ya controla el Prompt API controla la nueva API con la misma llave.



