API de Writer

Fecha de publicación: 20 de mayo de 2025

Explicación Web Extensiones Estado de Chrome Intent
GitHub Detrás de una bandera Prueba de Origin Detrás de una bandera Prueba de Origin Ver Intención de experimentar

La API de Writer te ayuda a crear contenido nuevo que se ajuste a una tarea de escritura especificada. La API de Writer y la API de Rewriter forman parte de la propuesta de APIs de asistencia para la escritura.

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

Casos de uso

Escribe contenido nuevo según tu idea inicial y el contexto opcional. Esto se puede usar para lo siguiente:

  • Ayuda a los usuarios a escribir cualquier tipo de contenido, como opiniones, entradas de blog o correos electrónicos.
  • Ayuda a los usuarios a escribir mejores solicitudes de asistencia.
  • Redacta una introducción para una serie de muestras de trabajo para captar mejor ciertas habilidades.

¿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 Writer, que se ejecuta en Chrome 137 a 142.

Revisa los requisitos de hardware

Las APIs de Language Detector y Translator solo funcionan en computadoras de escritorio en Chrome.

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 Chrome para Android, iOS y ChromeOS aún no son compatibles con nuestras APIs respaldadas por Gemini Nano.
  • Almacenamiento: Al menos 22 GB en el volumen que contiene tu perfil de Chrome
  • GPU: Más de 4 GB de VRAM
  • Red: Datos ilimitados o una conexión de uso no medido

Estos requisitos existen para ti en tu proceso de desarrollo y para los usuarios que trabajan con las funciones que compilas.

Regístrate para la prueba de origen

La API de Writer está disponible en una prueba de origen conjunta con la API de Rewriter. Para comenzar a usar estas APIs, haz lo siguiente:

  1. Acepta la Política de Usos Prohibidos de IA Generativas de Google.
  2. Ve a la prueba de origen de la API de Writer.
  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 enviarla, haz clic en Registrarse.
  5. Copia el token proporcionado y agrégalo a cada página web participante en tu origen o inclúyelo en el manifiesto de tu extensión.
  6. Comienza a usar las APIs de Writer y 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/#writer-api-for-gemini-nano.
  2. Selecciona Habilitado.
  3. Haz clic en Reiniciar o reinicia Chrome.

Usa la API de Writer

Primero, ejecuta la detección de funciones para ver si el navegador admite estas APIs.

if ('Writer' in self) {
  // The Writer API is supported.
}

La API de Writer 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 Writer.availability() asíncrona. Muestra una cadena que puede tomar cuatro valores posibles:

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

Para activar la descarga del modelo y comenzar el escritor, llama a la función Writer.create(). Si la respuesta a availability() fue downloadable, escucha el progreso de la descarga y, luego, infórmalo al usuario, ya que la descarga puede tardar.

const writer = await Writer.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 escritor. Toma un objeto options opcional con los siguientes parámetros:

  • tone: El tono de la escritura puede referirse al estilo, el carácter o la actitud del contenido. El valor se puede configurar en formal, neutral (predeterminado) o casual.
  • format: Es el formato de salida, con los valores permitidos markdown (predeterminado) y plain-text.
  • length: Es la longitud de la salida, con los valores permitidos short, medium (predeterminado) y long.
  • sharedContext: Cuando escribes multiples salidas, 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 writer:

const options = {
  sharedContext: 'This is an email to acquaintances about an upcoming event.',
  tone: 'casual',
  format: 'plain-text',
  length: 'medium',
};

const available = await Writer.availability();
let writer;
if (available === 'unavailable') {
  // The Writer API isn't usable.
  return;
}
if (available === 'available') {
  // The Writer API can be used immediately .
  writer = await Writer.create(options);
} else {
  // The Writer can be used after the model is downloaded.
  writer = await Writer.create(options);
  writer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

Comenzar a escribir

Hay dos formas de generar escritura desde el modelo: no continua y continua.

Salida sin transmisión

Con la escritura no continua, el modelo procesa la entrada como un todo y, luego, produzca el resultado.

Para obtener un resultado que no sea de transmisión, llama a la función write() asíncrona. Debes incluir una instrucción para el contenido que quieres que se escriba. Puedes agregar un context opcional para proporcionar la información de referencia del modelo, lo que puede ayudar al modelo a cumplir mejor con tus expectativas para el resultado.

// Non-streaming
const writer = await Writer.create();
const result = await writer.write(
  "An inquiry to my bank about how to enable wire transfers on my account.", {
    context: "I'm a longstanding customer",
  },
);

Cómo transmitir el resultado de la escritura

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 escritor de transmisión, llama a la función writeStreaming() y itera sobre los segmentos de texto disponibles en la transmisión. Puedes agregar un context opcional para proporcionar la información de referencia del modelo, lo que puede ayudar al modelo a cumplir mejor con tus expectativas para el resultado.

// Streaming
const writer = await Writer.create();
const stream = writer.writeStreaming(
  "An inquiry to my bank about how to enable wire transfers on my account.", {
    context: "I'm a longstanding customer",
  },
);
for await (const chunk of stream) {
  composeTextbox.append(chunk);
}

Cómo compartir el contexto para varias tareas

Te recomendamos que uses un writer para generar varios elementos de contenido. En este caso, es útil agregar sharedContext. Por ejemplo, es posible que quieras ayudar a los revisores a brindar mejores comentarios en los comentarios.

// Shared context and per writing task context
const writer = await Writer.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});

const stream = writer.writeStreaming(
  "Write a blog post about how I love all this work on gen AI at Google!" +
  "Mention that there's 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."}
);

for await (const chunk of stream) {
  composeTextbox.append(chunk);
}

Cómo volver a usar un escritor

Puedes usar el mismo escritor para crear varios tipos de contenido.

// Reuse a writer
const writer = await Writer.create({ tone: "formal" });

const reviews = await Promise.all(
  Array.from(
    document.querySelectorAll("#reviews > .review"),
    (reviewEl) => writer.write(reviewEl.textContent)
  ),
);

Detén el escritor

Para finalizar el proceso de escritura, aborta el controlador y destruye el escritor.

// Aborting a writer
const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const writer = await Writer.create({ signal: controller.signal });
await writer.write(reviewEl.textContent, { signal: controller.signal });

// Destroying a writer
writer.destroy();

Demostración

Interactúa y comparte comentarios

Writer y la API de Rewriter están en discusión activa 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, como Gemini Nano y otros modelos de expertos, en el navegador.