Fecha de publicación: 20 de mayo de 2025
Explicación | Web | Extensiones | Estado de Chrome | Intent |
---|---|---|---|---|
GitHub | 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:
- Acepta la Política de Usos Prohibidos de IA Generativas de Google.
- Ve a la prueba de origen de la API de Writer.
- 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 cada página web participante en tu origen o inclúyelo en el manifiesto de tu extensión.
- 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:
- Ve a
chrome://flags/#writer-api-for-gemini-nano
. - Selecciona Habilitado.
- 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 enformal
,neutral
(predeterminado) ocasual
.format
: Es el formato de salida, con los valores permitidosmarkdown
(predeterminado) yplain-text
.length
: Es la longitud de la salida, con los valores permitidosshort
,medium
(predeterminado) ylong
.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.
- Lee la explicación, haz preguntas y participa en el debate.
- Revisa la implementación de Chrome en Estado de Chrome.
- Ú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.
- Si tienes comentarios sobre la implementación de Chrome, informa un error de Chromium.
Descubre todas las APIs de IA integradas que usan modelos, como Gemini Nano y otros modelos de expertos, en el navegador.