Chrome incluyó un modelo de IA directamente dentro del navegador. La API de Prompt es la interfaz de JavaScript que se invoca para usarlo. Sin clave de API, sin ida y vuelta de red, sin facturación por token. El modelo es Gemini Nano, se ejecuta en el dispositivo del usuario, y a partir de Chrome 138 está generalmente disponible para extensiones y detrás de una bandera para páginas web. Para los desarrolladores de API, esto cambia lo que es razonable hacer en el cliente.
Esta guía cubre qué es la API de Prompt de Chrome, cómo difiere de la API de Gemini en la nube, cuándo encaja realmente en un flujo de trabajo de API, código práctico tanto para extensiones como para páginas web, y los límites que se alcanzarán más rápido de lo que la documentación admite. Lo combinamos con Apidog al final para que las mismas tareas tengan una ruta de respaldo cuando el modelo no esté disponible.
En resumen
- La API de Prompt de Chrome expone Gemini Nano a través de
LanguageModel, disponible enwindow.LanguageModelpara páginas web ychrome.languageModelpara extensiones. - El modelo se ejecuta completamente en el dispositivo. Sin llamadas de red, sin clave, sin costo por token.
- Estable para extensiones de Chrome en Chrome 138+. Para páginas web, se está implementando detrás de la bandera
chrome://flags/#prompt-api-for-gemini-nanoy un Origin Trial registrado. - Mejores usos para desarrolladores de API: análisis de entrada del lado del cliente, reparación de la forma JSON, resumen de respuestas de API para la interfaz de usuario y generación de stubs durante el desarrollo.
- Siempre conecte un respaldo en la nube. El modelo en el dispositivo falla abierto; su código no debería hacerlo.
Lo que la API de Prompt realmente expone
La API de Prompt es uno de un pequeño grupo de API de "IA incorporada" que Chrome comenzó a lanzar el año pasado. Las otras son más específicas: Summarizer, Writer, Rewriter, Translator y Language Detector. La API de Prompt es la interfaz de propósito general; las otras la envuelven con valores predeterminados específicos de la tarea.

Tres primitivas importan:
LanguageModel.availability(). Devuelveavailable(disponible),downloadable(descargable),downloading(descargando) ounavailable(no disponible). El modelo pesa alrededor de 2 GB y se descarga en segundo plano la primera vez que un sitio lo solicita.LanguageModel.create(options). Inicia una sesión. La sesión mantiene el estado del turno, el prompt del sistema y algunos parámetros de muestreo.session.prompt(text)ysession.promptStreaming(text). Las dos formas de llamar realmente al modelo.
La forma es intencionalmente cercana al SDK de Gemini en la nube, pero simplificada. Todavía no hay llamadas a herramientas, no hay entrada de imagen en el canal estable (está en Origin Trial), y la ventana de contexto es pequeña (4K tokens de entrada, 1K de salida, con una expansión suave a 8K en total).
Una primera llamada desde una página web se ve así:
if (!('LanguageModel' in window)) {
console.warn('Prompt API not available. Falling back to cloud.');
} else {
const status = await LanguageModel.availability();
if (status === 'unavailable') {
console.warn('Device does not support Gemini Nano.');
} else {
if (status !== 'available') {
// Triggers a background download. Show a UI.
await LanguageModel.create({ monitor(m) {
m.addEventListener('downloadprogress', e => {
console.log(`downloaded ${(e.loaded * 100).toFixed(0)}%`);
});
}});
}
const session = await LanguageModel.create({
systemPrompt: 'You answer in three concise bullets. JSON only.',
});
const reply = await session.prompt(
'Summarize this changelog in three bullets.\n\n' + changelog
);
console.log(reply);
}
}
Cada pieza significativa se muestra en el fragmento: detección de características, verificación de disponibilidad, descarga opcional, creación de sesión, prompt del sistema, llamada al prompt.
Cómo difiere de la API de Gemini en la nube
Misma familia, diferente implementación. Las diferencias moldean lo que se puede y no se puede construir sobre ella.
| Propiedad | API de Prompt de Chrome | API de Gemini (nube) |
|---|---|---|
| Modelo | Gemini Nano (en el dispositivo) | gemini-3-flash, gemini-3-flash-preview, gemini-3-pro |
| Costo por llamada | Cero | Facturación por token |
| Latencia | 50 a 300 ms el primer token típico | 200 a 800 ms el primer token |
| Red | No se requiere después de la descarga del modelo | Requerida en cada llamada |
| Privacidad | La entrada nunca sale del dispositivo | Enviada a los servidores de Google |
| Ventana de contexto | 4K entrada / 1K salida (8K combinado) | Hasta 1M de tokens |
| Llamada a herramientas | No (planificado) | Sí |
| Multimodal | Entrada de imagen en Origin Trial | Sí |
| Modo JSON | Mejor esfuerzo mediante prompt del sistema | De primera clase con esquema |
| Disponibilidad | Solo Chrome, solo hardware capaz | Cualquier cliente con red |
El modelo en el dispositivo es aproximadamente dos órdenes de magnitud más pequeño que gemini-3-flash. Úsalo para tareas cortas donde habrías enviado una expresión regular o un clasificador de prompts ajustado a mano. No lo uses como un reemplazo directo para Gemini en la nube.
Dónde encaja realmente en el flujo de trabajo de un desarrollador de API
Cuatro casos de uso compensan el costo de integración. Fuera de estos, la API de la nube sigue siendo la opción correcta.
1. Análisis y reformateo de la entrada del usuario del lado del cliente.Toma una consulta de formato libre y conviértela en un filtro estructurado para tu API. El usuario escribe "cargos de Stripe de más de $100 la semana pasada"; la API de Prompt lo convierte en { "amount_gt": 100, "since": "2026-04-22", "provider": "stripe" } antes de llamar a tu endpoint de búsqueda. Ahorra un viaje de ida y vuelta y protege la privacidad del usuario.
2. Resumen de respuestas de API para la interfaz de usuario.Llamas a tu propia API, obtienes 40 registros y necesitas un resumen de una línea para mostrar en una tarjeta. Enviar los registros a un modelo en la nube añade latencia y costo. La API de Prompt se ejecuta localmente y regresa en menos de 200 ms.
3. Reparación de la forma JSON.Las respuestas de LLM llegan mal formadas con la suficiente frecuencia como para importar. Ejecuta una pasada de reparación única a través de Gemini Nano: "Aquí hay un JSON inválido. Devuelve solo JSON válido con los mismos campos." Barato, rápido, sin costo.
4. Stubbing local durante el desarrollo.Mientras conectas un nuevo endpoint y el backend está medio construido, genera cuerpos de respuesta plausibles sobre la marcha. Las formas no serán correctas para producción, pero desbloquean el trabajo de front-end. Combínalo con el servidor de simulacros de Apidog para una configuración híbrida donde los endpoints críticos provienen de ejemplos guardados y los exploratorios de la API de Prompt.
Integración en una extensión
Las extensiones obtienen la API de Prompt en el canal estable a partir de Chrome 138. Se declara el permiso y se llama a chrome.languageModel.
manifest.json:
{
"manifest_version": 3,
"name": "Endpoint Summarizer",
"version": "1.0.0",
"permissions": ["languageModel"],
"action": { "default_popup": "popup.html" }
}
popup.js:
const status = await chrome.languageModel.availability();
if (status === 'unavailable') {
document.getElementById('out').textContent =
'Device does not support on-device AI.';
return;
}
const session = await chrome.languageModel.create({
systemPrompt: [
'You summarize HTTP responses in three short bullets.',
'Mention status, the most-changed field, and any error keys.',
].join(' '),
temperature: 0.3,
topK: 3,
});
document.getElementById('go').addEventListener('click', async () => {
const tab = await chrome.tabs.query({ active: true, currentWindow: true });
const [{ result }] = await chrome.scripting.executeScript({
target: { tabId: tab[0].id },
func: () => document.body.innerText.slice(0, 4000),
});
const stream = session.promptStreaming(result);
const out = document.getElementById('out');
out.textContent = '';
for await (const chunk of stream) {
out.textContent += chunk;
}
});
Dos cosas a destacar. temperature y topK son los únicos parámetros de muestreo que expone la API; topP no es compatible en el canal estable. La transmisión es un iterador asíncrono, no eventos enviados por el servidor, por lo que el patrón de consumo es for await en lugar del lector SSE que se escribiría para Gemini en la nube.
Integración en una página web
Las páginas web necesitan que el usuario active una bandera o que tu origen esté inscrito en el Origin Trial. El token de prueba va en una meta etiqueta.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="origin-trial" content="YOUR_TRIAL_TOKEN_HERE" />
</head>
<body>
<textarea id="in" placeholder="Pega una respuesta de API..."></textarea>
<button id="go">Resumir</button>
<pre id="out"></pre>
<script type="module">
if (!('LanguageModel' in window)) {
document.getElementById('out').textContent =
'Prompt API not available in this browser.';
} else {
const session = await LanguageModel.create({
systemPrompt: 'Reply in JSON: { "summary": "...", "tags": [...] }',
temperature: 0.2,
});
document.getElementById('go').onclick = async () => {
const text = document.getElementById('in').value;
const reply = await session.prompt(text);
try {
document.getElementById('out').textContent =
JSON.stringify(JSON.parse(reply), null, 2);
} catch {
document.getElementById('out').textContent = reply;
}
};
}
</script>
</body>
</html>
Si quieres probar la página sin un token de Origin Trial, abre chrome://flags/#prompt-api-for-gemini-nano, actívalo y reinicia Chrome. La bandera ha sido estable en las últimas seis versiones, pero no se promete que permanezca para siempre; implementa la ruta de Origin Trial si quieres un comportamiento predecible.
Límites y trampas que la documentación no enfatiza lo suficiente
Seis cosas que te causarán problemas.
- El contexto es pequeño. 4K de entrada, 1K de salida. Trunca agresivamente. No pegues un documento JSON de 50K tokens y esperes una respuesta útil.
- El soporte de hardware es desigual. El modelo necesita aproximadamente 4 GB de VRAM o memoria unificada y solo se ejecuta en Chrome 138+ en Windows, macOS, Linux y ChromeOS recientes. Chrome para móvil no es compatible al momento de escribir esto.
- La primera carga es lenta. La descarga de 2 GB ocurre en segundo plano pero bloquea la primera sesión. Siempre muestra una interfaz de usuario de progreso de descarga.
- Sin llamadas a herramientas. Si tu tarea necesita que el modelo llame a tu API, hazlo tú mismo en el cliente; el modelo solo decide qué llamar.
- Deriva del prompt del sistema. El modelo en el dispositivo sigue los prompts del sistema menos rígidamente que las variantes en la nube. Fija el formato con ejemplos de una sola vez en el prompt del sistema.
- Los permisos importan. Las extensiones necesitan
"languageModel"enpermissions. Olvídalo y la API devolverá silenciosamenteunavailable.
Implementa un respaldo en la nube antes de lanzar
Tu aplicación se envía a usuarios que no tienen el modelo. Siempre implementa un respaldo. El patrón es corto:
async function summarize(text) {
if ('LanguageModel' in window) {
const status = await LanguageModel.availability();
if (status === 'available') {
const session = await LanguageModel.create({
systemPrompt: 'Reply with one bullet summary, max 12 words.',
});
return session.prompt(text);
}
}
// Fallback: call your server, which calls cloud Gemini or your own model.
const r = await fetch('/api/summarize', {
method: 'POST', body: JSON.stringify({ text }),
});
return (await r.json()).summary;
}
Privacidad y qué decir a los usuarios
El punto fuerte de la API de Prompt es que la entrada nunca sale del dispositivo. Esto es cierto hoy y es la intención de diseño explícita de la iniciativa de IA incorporada. Dos matices que vale la pena conocer:
- El modelo en sí fue entrenado por Google con datos de Google; ejecutarlo localmente no cambia eso. Chrome envía los pesos con la actualización del navegador.
- La telemetría sobre el uso aún puede ser reportada por Chrome bajo la configuración normal de telemetría de Chrome del usuario. El contenido del prompt no forma parte de esa telemetría.
Para la mayoría de las aplicaciones de consumo, esta es una historia de privacidad sólida que puedes incluir en tu interfaz de usuario sin revisión legal. Para cargas de trabajo reguladas (HIPAA, PCI), consulta con tu asesor legal antes de depender de ello.
Cuándo omitir la API de Prompt
Elige la API de Gemini en la nube cuando:
- Tu tarea necesita más de 4K tokens de entrada.
- Necesitas llamadas a herramientas, salida estructurada con cumplimiento de esquema o entradas multimodales más allá de Origin Trial.
- Atiendes a usuarios en Safari, Firefox o Chrome móvil. El soporte del navegador es solo para Chrome hoy y Apple no ha señalado una fecha de lanzamiento.
- La calidad de la salida importa más que la latencia. Nano es pequeño; Pro no lo es.
Para el ángulo de código abierto, Cómo ejecutar DeepSeek V4 localmente cubre la ejecución de un modelo significativamente más grande en una máquina de desarrollador sin salir de la red local.
Preguntas frecuentes
¿Está la API de Prompt en el proceso oficial de estándares web?Está en el grupo comunitario W3C WebML como propuesta. Trátala como específica de Chrome hasta que otros motores la implementen.
¿Puedo usarla desde un service worker?En Chrome 138+, sí para extensiones. Las páginas web actualmente la restringen al contexto del documento. Consulta la documentación antes de implementarla en un service worker.
¿Qué tamaño de modelo estoy obteniendo realmente?Gemini Nano está en el rango de parámetros de 2-4B, cuantificado para ajustarse. Google no se ha comprometido con un tamaño específico; espera que crezca.
¿Admite llamadas a funciones?No en el canal estable. La rama de Origin Trial tiene soporte experimental para herramientas; no dependas de ello para producción.
¿Cómo lo pruebo en un CI automatizado?Aún no puedes ejecutar el modelo en el dispositivo en Chromium sin interfaz gráfica. Simula el global LanguageModel en las pruebas y ejecuta la ruta de respaldo en la nube en CI.
¿Es gratuito para uso comercial?Sí. No hay facturación por llamada. Tú asumes el costo de almacenamiento en el dispositivo del usuario (alrededor de 2 GB) y Chrome gestiona las actualizaciones.
Para los equipos que ya están ejecutando flujos de trabajo de LLM en la nube junto con esto, la publicación Qué es GPT-5.5 cubre las compensaciones del lado de la nube con mayor profundidad, y Apidog gestiona la simulación y la conexión de respaldo sin una herramienta de prueba separada.
