Extensiones ChromeDesarrollo IA

IA integrada en Chrome en 2026: la guía Gemini Nano

3 de septiembre de 2026
9 min de lectura
IA integrada en Chrome con Gemini Nano corriendo en el dispositivo
Compartir:

En Google I/O 2026 Chrome graduó la Prompt API a estable en Chrome 138 para extensiones y Chrome 148 para la web, así que cualquier página ya puede llamar al modelo Gemini Nano del dispositivo directo desde JavaScript.

En esta guía te muestro qué APIs están estables, cuáles siguen en origin trial, y el patrón exacto de detección para lanzar IA en el dispositivo con respaldo en la nube.

1. Contexto: del origin trial a estable

Durante dos años, la IA integrada vivió tras flags y el Early Preview Program: los primeros ejemplos usaban una forma window.ai, y cada API exigía un token de origin trial. Esa era terminó para el núcleo. Desde Chrome 138, las APIs Summarizer, Translator y Language Detector son estables, y la Prompt API se sumó — primero para extensiones de Chrome en 138, luego para cualquier sitio en Chrome 148.

Una nota de nombres que te va a ahorrar horas de debug: la superficie actual de 2026 usa el global LanguageModel — LanguageModel.availability() y luego LanguageModel.create() — no la forma window.ai de los previews iniciales. Si copiás un snippet de 2024 y falla, ese renombre es casi seguro la causa.

Estable y listo para producción

Las APIs Summarizer, Translator y Language Detector son estables desde Chrome 138. La Prompt API es estable en extensiones desde 138 y en la web desde Chrome 148. Sin token de origin trial para estas.

Developer trial — aún no estable

Writer, Rewriter y Proofreader figuran como Developer trial en la tabla oficial de estado. Las ventanas viejas (Writer/Rewriter 137–148, Proofreader 141–145) ya vencieron: no las lances sin fallback, su superficie aún puede cambiar antes de estable.

Por debajo, todo corre sobre Gemini Nano, un modelo compacto que Chrome descarga una vez y comparte entre orígenes. Tu sitio nunca distribuye el runtime — lo hace el navegador — por eso no hay API key ni costo por token.

2. Cuatro implicaciones para desarrolladores

La inferencia estable en el dispositivo cambia la economía de las funciones de IA. Estas son las cuatro consecuencias que considero clave para devs web y de extensiones:

💸

Funciones con costo marginal cero

Sin API key · Sin cobro por token

Resúmenes, reescrituras, traducciones y clasificaciones que antes costaban centavos por llamada ahora son gratis al margen. Funciones que nunca se justificaban — resumir cada pestaña, traducir cada comentario — de golpe cierran los números.

🔒

Privado por arquitectura

La inferencia queda en el dispositivo

El texto nunca sale de la máquina, lo que desbloquea IA en contextos sensibles: herramientas internas, textos de salud y finanzas, y extensiones empresariales donde mandar datos a la nube era imposible.

🧩

Las APIs de tarea le ganan al prompt crudo

Summarizer · Translator · Writer · Rewriter

Las APIs específicas son más fáciles de lanzar que la Prompt API abierta: sin prompt engineering, salidas predecibles y comportamiento afinado. Usalas primero y reservá LanguageModel para lo que no puedan expresar.

🪂

El fallback es obligatorio

Filtro de hardware · ~60% cobertura

La IA en dispositivo pide Windows 10/11, macOS 13+, Linux o Chromebook Plus, más 22 GB libres y GPU capaz. Casi la mitad de tus usuarios no va a calificar — la guía oficial de Chrome dice que el modelo falla en abierto, así que tu código debe degradar a una ruta cloud.

Requisitos de hardware (oficiales)

Solo escritorio: Windows 10/11, macOS 13+, Linux o Chromebook Plus. Al menos 22 GB libres en el volumen del perfil de Chrome, y GPU con más de 4 GB de VRAM. Revisá el estado en chrome://on-device-internals, y habilitá pruebas en localhost vía chrome://flags.

3. El código: detectar, crear, transmitir

Toda API de IA integrada sigue el mismo ritmo: availability() con las mismas opciones que vas a usar en create(), crear una sesión, y luego prompt. Los snippets salen directo de la documentación oficial de Chrome (Prompt API, actualizada el 26 de ago. de 2026) — sin flags ni métodos inventados. Desde Chrome 149 la Prompt API además soporta sesiones multilingües (en, es, ja, de, fr) y entrada multimodal (texto/imagen/audio, salida solo texto) más salida estructurada JSON con responseConstraint.

Prompt API — disponibilidad y primera sesión

// Pasá las mismas opciones a availability() y a create().
// expectedInputs: text | image | audio — expectedOutputs: solo text.
// Idiomas (Chrome 149): "en" | "es" | "ja" | "de" | "fr".
const status = await LanguageModel.availability({
  expectedInputs: [{ type: "text", languages: ["en"] }],
  expectedOutputs: [{ type: "text", languages: ["en"] }]
});
// "available" | "downloadable" | "downloading" | "unavailable"

if (status === "available") {
  const session = await LanguageModel.create({
    expectedInputs: [{ type: "text", languages: ["en"] }],
    expectedOutputs: [{ type: "text", languages: ["en"] }]
  });
  const result = await session.prompt("Summarize this in one sentence: ...");
}

// samplingMode ("most-predictable" … "most-creative") es origin trial web;
// en extensiones siguen topK/temperature legacy + LanguageModel.params().
// const session = await LanguageModel.create({ samplingMode: "creative" });

Prompt API — streaming + salida JSON con schema

const stream = session.promptStreaming("Rewrite this paragraph:");
for await (const chunk of stream) {
  process.stdout.write(chunk);
}

// Salida estructurada (JSON Schema) — igual para prompt()/promptStreaming():
const schema = { type: "object", properties: { rating: { type: "number" } } };
const raw = await session.prompt("Puntuá este feedback 0-5 como JSON:", {
  responseConstraint: schema
});
const { rating } = JSON.parse(raw);

Summarizer API — puntos clave de contenido largo

const summarizer = await Summarizer.create({
  type: "key-points",
  format: "markdown",
  length: "medium"
});
const summary = await summarizer.summarize(longText);

Translator API — traducción en el dispositivo

const translator = await Translator.create({
  sourceLanguage: "en",
  targetLanguage: "es"
});
const text = await translator.translate("Hello, world");

Writer + Rewriter APIs — solo Developer trial

const writer = await Writer.create({
  tone: "formal",
  format: "plain-text",
  length: "medium",
  sharedContext: "Release notes for a Chrome extension"
});
const draft = await writer.write("A new offline mode");

const rewriter = await Rewriter.create({
  tone: "more-casual",
  length: "shorter",
  format: "plain-text"
});
const revised = await rewriter.rewrite(draft);

En qué es bueno Nano — y en qué no

Mantené las tareas acotadas: resumir, reescribir, extraer, clasificar y traducir textos cortos. Nano es un modelo chico con ventana de contexto chica, así que QA de documentos largos, generación de código y razonamiento multi-paso siguen siendo territorio del modelo cloud tras tu fallback. Declarálos expectedInputs/expectedOutputs por adelantado para que Chrome descargue paquetes de idioma o falle con NotSupportedError temprano en vez de a mitad del prompt.

4. Qué hacer esta semana

Un plan concreto de cinco pasos para pasar de cero a una función en dispositivo antes del viernes:

✅ Tu checklist de lanzamiento

  1. 1. Instalá Chrome 148+ y abrí chrome://on-device-internals para confirmar el estado del modelo en tu máquina.
  2. 2. Agregá un gate de LanguageModel.availability() a una función existente — un botón de resumir es la primera victoria clásica.
  3. 3. Lanzá primero el fallback cloud: si el estado no es “available”, derivá a tu endpoint actual.
  4. 4. Reemplazá un prompt artesanal por una API de tarea: Summarizer para resúmenes, Translator para contenido de usuarios.
  5. 5. Si necesitás Writer, Rewriter o Proofreader, tratalas como Developer trial: gate con availability(), cloud como ruta por defecto, y esperá cambios en la superficie.

📦 Mejor primera función para extensiones

  1. Resumir la pestaña actual: API estable, valor obvio, contexto mínimo.
  2. Traducir texto seleccionado in situ: Translator estable, sin ida a servidor.
  3. Reescribir respuestas de reseñas con control de tono: Developer trial — tras availability().

5. Fuentes

Todos los nombres, estados y formas de código de arriba salen de la documentación oficial de Chrome y del explainer del W3C — nunca solo de tutoriales de terceros:

Conclusión

Chrome convirtió el navegador en un runtime de IA: Gemini Nano viene con el navegador, la Prompt API es estable, y las APIs de tarea cubren gratis los trabajos más comunes. Los equipos que ganen en 2026 van a tratar la inferencia en dispositivo como un tier gratis nuevo en su stack, no como un reemplazo de los modelos cloud.

Empezá con un botón de resumir tras un check de availability() y un fallback cloud. Ese patrón — detectar, crear, transmitir, degradar con gracia — es todo el juego, y funciona en producción hoy.

Machete: estado de un vistazo

Estable

  • • Prompt API (web: 148+)
  • • Summarizer (138+)
  • • Translator (138+)

Developer trial

  • • Writer (Developer trial)
  • • Rewriter (Developer trial)
  • • Proofreader (Developer trial)

Chequear siempre

  • • availability() primero
  • • Fallback cloud
  • • on-device-internals
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