Fecha de publicación: 22 de octubre de 2025
| Explicativa | Web | Extensiones | Estado de Chrome | Intención |
|---|---|---|---|---|
| GitHub | Ver | Intención de experimentar |
La API de Rewriter te ayuda a revisar y reestructurar texto. Esta API y la API de Writer forman parte de la propuesta de las APIs de Writing Assistance.
Estas APIs pueden ayudarte a mejorar el contenido creado por los usuarios.
Casos de uso
Perfecciona el texto existente haciéndolo más largo o más corto, o cambiando el tono. Por ejemplo, puedes hacer lo siguiente:
- Reescribir un correo electrónico corto para que suene más cortés y formal
- Sugerir ediciones a las opiniones de los clientes para ayudar a otros clientes a comprender los comentarios o quitar el contenido tóxico
- Dar formato al contenido para satisfacer las expectativas de ciertos públicos
¿Falta tu caso de uso? Únete al programa de versión preliminar anticipada para compartir tus comentarios.
Comenzar
Únete a la prueba de origen de la API de Rewriter, que se ejecuta en Chrome 137 a 148.
Revisa los requisitos de hardware
Existen los siguientes requisitos para los desarrolladores y los usuarios que operan funciones con estas APIs en Chrome. Es posible que otros navegadores tengan requisitos operativos diferentes.
Las APIs de Language Detector y Translator funcionan en Chrome en computadoras de escritorio. Estas APIs no funcionan en dispositivos móviles.
Las APIs de Prompt, Summarizer, Writer, Rewriter y Proofreader funcionan en Chrome cuando se cumplen las siguientes condiciones:
- Sistema operativo: Windows 10 o 11; macOS 13 o versiones posteriores (Ventura y versiones posteriores); Linux; o ChromeOS (desde la plataforma 16389.0.0 y versiones posteriores) en Chromebook Plus dispositivos. Las APIs que usan Gemini Nano aún no admiten Chrome para Android, iOS y ChromeOS en dispositivos que no sean Chromebook Plus.
- Almacenamiento: Al menos 22 GB de espacio libre en el volumen que contiene tu perfil de Chrome
- GPU o CPU: Los modelos integrados pueden ejecutarse con GPU o CPU.
- GPU: Estrictamente más de 4 GB de VRAM
- CPU: 16 GB de RAM o más y 4 núcleos de CPU o más.
- Nota: La API de Prompt con entrada de audio requiere una GPU.
- Red: Datos ilimitados o una conexión no medida
El tamaño exacto de Gemini Nano puede variar a medida que el navegador actualiza el modelo. Para determinar el tamaño actual, visita chrome://on-device-internals.
Regístrate en la prueba de origen
La API de Rewriter está disponible en una prueba de origen conjunta con la API de Writer. Para comenzar a usar estas APIs, haz lo siguiente:
- Ve a la prueba de origen de la API de Rewriter.
- Haz clic en Registrarse y completa el formulario. En el campo Origen web, proporciona
tu origen o
ID de extensión,
chrome-extension://YOUR_EXTENSION_ID. - Para enviarla, haz clic en Registrarse.
- Copia el token proporcionado y agrégalo a todas las páginas web participantes de tu origen o inclúyelo en el manifiesto de la extensión.
- Comienza a usar la API de Rewriter.
Obtén más información para comenzar a usar las pruebas de origen.
Agrega compatibilidad con localhost
Para acceder a la API de Rewriter en localhost, usa las marcas de Chrome:
- Configura
chrome://flags/#optimization-guide-on-device-modelcomo Habilitado. - Configura las siguientes marcas como Habilitado o Habilitado (multilingüe):
chrome://flags/#prompt-api-for-gemini-nano-multimodal-inputchrome://flags/#writer-api-for-gemini-nano
- Haz clic en Volver a iniciar o reinicia Chrome.
Usa la API de Rewriter
Primero, ejecuta la detección de funciones para ver si el navegador admite estas APIs.
if ('Rewriter' in self) {
// The Rewriter API is supported.
}
La API de Rewriter y todas las demás APIs de IA integradas están integradas en el navegador. Gemini Nano se descarga por separado la primera vez que un sitio web usa una API de IA integrada. En la práctica, si un usuario ya interactuó con una API integrada, descargó el modelo en su navegador.
Para determinar si el modelo está listo para usarse, llama a la función asíncrona
Rewriter.availability().
Si la respuesta a availability() fue downloadable, escucha el progreso de la descarga y avísale al usuario, ya que la descarga puede demorar.
const availability = await Rewriter.availability();
Para activar la descarga del modelo y comenzar el reescritor, verifica la
activación del usuario
y llama a la función Rewriter.create().
const rewriter = await Rewriter.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
Funciones de la API
La función create() te permite configurar un nuevo objeto rewriter. Toma un objeto options opcional con los siguientes parámetros:
tone: El tono de escritura puede hacer referencia al estilo, el carácter o la actitud del contenido. El valor se puede establecer enmore-formal,as-is(predeterminado) omore-casual.format: El formato de salida, con los valores permitidosas-is(predeterminado),markdownyplain-text.length: La longitud de la salida, con los valores permitidosshorter,as-is(predeterminado) ylonger.sharedContext: Cuando se reescriben varios contenidos, un contexto compartido puede ayudar al modelo a crear contenido mejor alineado con tus expectativas.
En el siguiente ejemplo, se muestra cómo iniciar un objeto rewriter:
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'more-casual',
format: 'plain-text',
length: 'shorter',
};
const available = await Rewriter.availability();
let rewriter;
if (available === 'unavailable') {
// The Rewriter API isn't usable.
return;
}
if (available === 'available') {
// The Rewriter API can be used immediately .
rewriter = await Rewriter.create(options);
} else {
// The Rewriter can be used after the model is downloaded.
rewriter = await Rewriter.create(options);
rewriter.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
}
Asigna los idiomas esperados
La API de Rewriter admite varios idiomas. Establece los idiomas de entrada, salida y contexto esperados cuando crees tu sesión. Esto permite que el navegador rechace la solicitud si no puede admitir una combinación de idiomas específica.
const rewriter = await Rewriter.create({
tone: "more-formal",
expectedInputLanguages: ["en", "ja", "es"],
expectedContextLanguages: ["en", "ja", "es"],
outputLanguage: "es",
sharedContext: "These are requests to rewrite messages to teachers in a
Spanish language program, by students who may speak Spanish, Japanese, or
English. Staff expect questions to be written in Spanish."
});
Comienza a reescribir
Hay dos maneras de generar contenido a partir del modelo: salida basada en solicitudes y transmisión.
Salida basada en solicitudes
Para la salida basada en solicitudes (o "sin transmisión"), el modelo espera a que se genere toda la entrada, procesa esa entrada en su totalidad y, luego, produce la salida.
Para obtener una salida basada en solicitudes, llama a la función asíncrona rewrite(). Debes incluir el texto inicial que deseas reescribir. Puedes agregar un context opcional para proporcionar información de contexto del modelo, lo que puede ayudar al modelo a satisfacer mejor tus expectativas para la salida.
// Request-based
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const result = await rewriter.rewrite(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible."
});
Transmite el resultado de la reescritura
La transmisión ofrece resultados en tiempo real. La salida se actualiza de forma continua a medida que se agrega y ajusta la entrada.
Para obtener un reescritor de transmisión, llama a la función rewriteStreaming() y itera sobre los segmentos de texto disponibles en la transmisión. Puedes agregar un context opcional para proporcionar información de contexto del modelo, lo que puede ayudar al modelo a satisfacer mejor tus expectativas para el resultado.
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const stream = rewriter.rewriteStreaming(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible.",
tone: "more-casual",
});
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
Comparte contexto para varias tareas
Es posible que desees usar un rewriter para generar varios contenidos. En este caso, es útil agregar sharedContext. Por ejemplo, es posible que desees ayudar a los revisores a brindar mejores comentarios en los comentarios.
// Shared context and per writing task context
const rewriter = await Rewriter.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});
const stream = rewriter.rewriteStreaming(
"Love all this work on generative AI at Google! So much to learn and so many new things I can do!",
{
context: "The request comes from someone working at a startup providing an e-commerce CMS solution.",
tone: "more-casual",
}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
Reutiliza un reescritor
Puedes usar el mismo reescritor para editar varios contenidos. Esto puede ser particularmente útil si agregas el reescritor a una herramienta de comentarios o comentarios para ayudar a los escritores a ofrecer comentarios productivos y útiles.
// Reusing a rewriter
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const rewrittenReviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => rewriter.rewrite(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible.",
tone: "more-casual",
})
),
);
Detén el reescritor
Para finalizar el proceso de reescritura, anula el controlador y destruye el rewriter.
// Stop a rewriter
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const rewriter = await Rewriter.create({ signal: controller.signal });
await rewriter.rewrite(reviewEl.textContent, { signal: controller.signal });
// Destroy a rewriter
rewriter.destroy();
Demostración
Política de permisos, iframes y Web Workers
De forma predeterminada, la API de Rewriter solo está disponible para las ventanas de nivel superior y sus iframes del mismo origen. Se puede delegar el acceso a la API a iframes de origen cruzado
con el atributo allow="" de la política de permisos:
<!--
The hosting site at https://main.example.com can grant a cross-origin iframe
at https://cross-origin.example.com/ access to the Rewriter API by
setting the `allow="rewriter"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="rewriter"></iframe>
La API de Rewriter no está disponible en Web Workers. Esto se debe a la complejidad de establecer un documento responsable para cada trabajador, para verificar el estado con respecto a las políticas de permisos.
Participa y comparte comentarios
Las APIs de Writer y Rewriter están en debate activo y están sujetas a cambios en el futuro. Si pruebas esta API y tienes comentarios, nos encantaría conocerlos.
- Lee la explicación, haz preguntas y participa en el debate.
- Revisa el estado de Chrome para ver la implementación de la API de Rewriter en Chrome.
- Si tienes comentarios sobre la implementación de Chrome, informa un error de Chromium.
- Únete al programa de versión preliminar anticipada para obtener una vista previa de las nuevas APIs y acceder a nuestra lista de distribución.
Descubre todas las APIs de IA integradas que usan modelos, incluidos Gemini Nano y otros modelos expertos, en el navegador.