API de Rewriter

Publicado el 20 de mayo de 2025

Explicación Web Extensiones Estado de Chrome Intent
GitHub Prueba de origen Prueba de origen Prueba de origen Prueba de origen 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 APIs de Writing Assistance.

Estas APIs pueden ayudarte a mejorar el contenido creado por los usuarios.

Casos de uso

Mejora el texto existente haciéndolo más largo o más corto, o cambiando el tono. Por ejemplo, podrías hacer lo siguiente:

  • Reescribe un correo electrónico corto para que suene más cortés y formal.
  • Sugerir ediciones en las opiniones de los clientes para ayudar a otros clientes a comprender los comentarios o eliminar la toxicidad
  • Formatea el 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 142.

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 de funcionamiento 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 y Rewriter funcionan en Chrome cuando se cumplen las siguientes condiciones:

  • Sistema operativo: Windows 10 o 11; macOS 13 o versiones posteriores (Ventura y versiones posteriores); o Linux Las APIs que usan Gemini Nano aún no son compatibles con Chrome para Android, iOS y ChromeOS.
  • Almacenamiento: Al menos 22 GB en el volumen que contiene tu perfil de Chrome
  • GPU: Estrictamente más de 4 GB de VRAM
  • Red: Datos ilimitados o una conexión de uso no medido

El tamaño exacto de Gemini Nano puede variar ligeramente. Para conocer el tamaño actual, visita chrome://on-device-internals y ve a Estado del modelo. Abre la Ruta de acceso al archivo que se indica para determinar el tamaño del modelo.

Regístrate para 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:

  1. Aceptar la Política de Uso Prohibido de IA Generativas de Google
  2. Ve a la prueba de origen de la API de Rewriter.
  3. 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.
  4. Para enviar la solicitud, haz clic en Registrar.
  5. Copia el token proporcionado y agrégalo a todas las páginas web participantes de tu origen o inclúyelo en el manifiesto de tu extensión.
  6. 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 las APIs de Writer y Rewriter en localhost durante la prueba de origen, debes actualizar Chrome a la versión más reciente. Luego, sigue estos pasos:

  1. Ve a chrome://flags/#rewriter-api-for-gemini-nano.
  2. Selecciona Habilitada.
  3. Haz clic en Reiniciar 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(). Devuelve una cadena que puede tomar cuatro valores posibles:

  • unavailable: El navegador admite la API de Rewriter, pero no se puede usar en este momento. Esto podría deberse a varios motivos, como espacio en disco disponible insuficiente para descargar el modelo.
  • available: El navegador admite la API de Rewriter y se puede usar de inmediato.
  • downloadable: El navegador admite la API de Rewriter, pero primero debe descargar el modelo.
  • downloading: El navegador admite la API de Rewriter y, actualmente, está descargando el modelo.

Para activar la descarga del modelo y comenzar a reescribir, llama a la función Rewriter.create(). Si la respuesta a availability() fue downloadable, escucha el progreso de la descarga y avísale al usuario, ya que la descarga puede tardar.

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 de reescritura. Toma un objeto options opcional con los siguientes parámetros:

  • tone: El tono de escritura puede referirse al estilo, el carácter o la actitud del contenido. El valor se puede establecer en more-formal, as-is (predeterminado) o more-casual.
  • format: Es el formato de salida, con los valores permitidos as-is (predeterminado), markdown y plain-text.
  • length: Es la longitud del resultado, con los valores permitidos shorter, as-is (predeterminado) y longer.
  • sharedContext: Cuando reescribes varios fragmentos de contenido, un contexto compartido puede ayudar al modelo a crear contenido que se alinee mejor 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);
  });
}

Comenzar a reescribir

Existen dos formas de generar contenido a partir del modelo: sin transmisión y con transmisión.

Salida sin transmisión

Con la reescritura sin transmisión, el modelo procesa la entrada como un todo y, luego, produce la salida.

Para obtener un resultado que no sea de transmisión, llama a la función asíncrona rewrite(). Debes incluir el texto inicial que quieres volver a escribir. Puedes agregar un context opcional para proporcionar información de contexto al modelo, lo que puede ayudarlo a satisfacer mejor tus expectativas sobre el resultado.

// Non-streaming
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."
});

Salida de reescritura de la transmisión

La transmisión ofrece resultados en tiempo real. El resultado 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, luego, itera sobre los segmentos de texto disponibles en la transmisión. Puedes agregar un context opcional para proporcionar información general al modelo, lo que puede ayudarlo a satisfacer mejor tus expectativas sobre 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);
}

Compartir contexto para varias tareas

Es posible que desees usar un rewriter para generar varias piezas de contenido. En este caso, es útil agregar sharedContext. Por ejemplo, tal vez quieras ayudar a los revisores a brindar mejores 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);
}

Cómo reutilizar un reescritor

Puedes usar el mismo reescritor para editar varios fragmentos de contenido. Esto puede ser especialmente útil si se agrega el reescritor a una herramienta de comentarios o retroalimentación 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",
    })
  ),
);

Detener 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

Interactúa 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.

Descubre todas las APIs de IA integradas que usan modelos, incluidos Gemini Nano y otros modelos expertos, en el navegador.