Fecha de publicación: 11 de noviembre de 2024
Imagina que pudieras ofrecer a tus usuarios la capacidad de sintetizar artículos extensos, documentos complejos o incluso conversaciones de chat animadas en resúmenes concisos y perspicaces.
La API de Summarizer se puede usar para generar diferentes tipos de resúmenes en variados formatos y longitudes, como oraciones, párrafos, listas con viñetas y mucho más. Creemos que esta API es útil en las siguientes situaciones:
- Resumir los puntos clave de un artículo o una conversación por chat
- Sugerir títulos y encabezados para los artículos
- Crear un resumen informativo y conciso de un texto extenso
- Generar un adelanto de un libro basado en una reseña.
Disponibilidad
- Únete a la prueba de origen de la API de Summarizer, que se ejecuta desde la versión 131 de Chrome hasta la 136. Las pruebas de origen te permiten ofrecer la función a usuarios reales en tu origen, en Chrome.
- Sigue nuestra implementación en Estado de Chrome.
- La propuesta de la API de Summarizer forma parte de un paquete de APIs de escritura y está abierta a la discusión.
- Únete al programa de vista previa anticipada para obtener una vista previa de las nuevas APIs de IA integradas y acceder a las conversaciones en nuestra lista de distribución.
Regístrate para la prueba de origen
Para comenzar a usar la API de Summarizer, sigue estos pasos:
- Acepta la Política de Usos Prohibidos de IA Generativas de Google.
- Ve a la prueba de origen de la API de Summarizer.
- Haz clic en Registrarse y completa el formulario.
- En el campo Origen web, proporciona tu origen o el ID de extensión,
chrome-extension://YOUR_EXTENSION_ID
.
- En el campo Origen web, proporciona tu origen o el ID de extensión,
- Para enviarla, haz clic en Registrarse.
- Copia el token proporcionado y agrégalo a cada página web de tu origen o archivo de la extensión en la que deseas que se habilite la prueba.
- Si compilas una extensión, sigue las instrucciones de la prueba de origen de extensiones.
- Comienza a usar la API de Summarizer.
Obtén más información para comenzar a usar las pruebas de origen.
Limitaciones durante la prueba del origen
Durante la prueba de origen, la API de Summarizer solo admite el resumen de textos en inglés, ya que la calidad del modelo solo se probó en contenido en inglés. Tenemos la intención de levantar esta limitación una vez que hayamos probado otros lenguajes para verificar la calidad y la seguridad, y la API esté disponible para todos.
Agrega compatibilidad con localhost
Para acceder a la API de Summarizer en localhost
durante la prueba de origen, debes tener Chrome Canary. Luego, sigue estos pasos:
- Abre Chrome Canary en una de estas plataformas: Windows, Mac o Linux.
- Ve a
chrome://flags/#summarization-api-for-gemini-nano
. - Selecciona Habilitado.
- Haz clic en Reiniciar o reinicia Chrome.
Usa la API de Summarizer
Primero, ejecuta la detección de funciones para ver si el navegador admite la API de Summarizer.
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
Descarga del modelo
La API de Summarizer usa un potente modelo de IA entrenado para generar resúmenes de alta calidad. Si bien la API está integrada en Chrome, el modelo se descarga por separado la primera vez que un sitio web usa la API.
Para determinar si el modelo está listo para usarse, llama a la función ai.summarizer.capabilities()
asíncrona. Muestra un objeto AISummarizerCapabilities
con un campo available
que puede tener tres valores posibles:
no
: El navegador actual admite la API de Summarizer, 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.readily
: El navegador actual admite la API de Summarizer y se puede usar de inmediato.after-download
: El navegador actual admite la API de Summarizer, pero primero debe descargar el modelo.
Para activar la descarga del modelo y crear el resumidor, llama a la función ai.summarizer.create()
asíncrona. Si la respuesta a capabilities()
fue after-download
, se recomienda escuchar el progreso de la descarga. De esta manera, puedes informar al usuario en caso de que la descarga tarde.
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
Funciones de la API
La función create()
te permite configurar un nuevo objeto de resumen según tus necesidades. Toma un objeto options
opcional con los siguientes parámetros:
sharedContext
: Es un contexto compartido adicional que puede ayudar al generador de resúmenes.type
: Es el tipo de resumen, con los valores permitidoskey-points
(predeterminado),tl;dr
,teaser
yheadline
.format
: Es el formato del resumen, con los valores permitidosmarkdown
(predeterminado) yplain-text
.length
: Es la longitud del resumen, con los valores permitidosshort
,medium
(predeterminado) ylong
. El significado de estas longitudes varía según eltype
solicitado. Por ejemplo, en la implementación de Chrome, un resumen breve de puntos clave consta de tres viñetas, y un resumen breve es una oración. Un resumen largo de puntos clave consta de siete viñetas, y un resumen largo es un párrafo.
En el siguiente ejemplo, se muestra cómo inicializar el resumidor.
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
// The Summarizer API isn't usable.
return;
}
if (available === 'readily') {
// The Summarizer API can be used immediately .
summarizer = await self.ai.summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await self.ai.summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await summarizer.ready;
}
Ejecuta el sintetizador
Existen dos maneras de ejecutar el resumidor: transmisión continua y sin transmisión continua.
Resumen sin transmisión
Con el resumen sin transmisión, el modelo procesa la entrada en su totalidad y, luego, produce el resultado.
Para obtener un resumen no continuo, llama a la función summarize()
asíncrona del sintetizador. El primer argumento de la función es el texto que deseas
resumir. El segundo argumento opcional es un objeto con un campo context
.
Este campo te permite agregar detalles de contexto que podrían mejorar el resumen.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
Resumen de transmisiones
El resumen de 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 resumen continuo, llama a la función summarizeStreaming()
del sintetizador. Luego, itera sobre los segmentos de texto disponibles en el flujo.
let result = '';
let previousChunk = '';
for await (const chunk of stream) {
const newChunk = chunk.startsWith(previousChunk)
? chunk.slice(previousChunk.length) : chunk;
console.log(newChunk);
result += newChunk;
previousChunk = chunk;
}
console.log(result);
summarizeStreaming()
muestra un ReadableStream
, en el que los segmentos de respuesta se compilan de forma sucesiva entre sí. Esto significa que cada respuesta contiene todo el resumen generado hasta ese punto, no solo el siguiente segmento, que no es el comportamiento deseado.
Tenemos la intención de alinearnos con otras APIs de transmisión en la plataforma, en las que los segmentos son partes sucesivas de una sola transmisión larga. Por ahora, para lograr el comportamiento deseado, puedes implementar lo siguiente:
let result = '';
let previousLength = 0;
for await (const segment of stream) {
const newContent = segment.slice(previousLength);
console.log(newContent);
previousLength = segment.length;
result += newContent;
}
console.log(result);
Demostración
Puedes probar la API de Summarizer en el Summarizer API Playground.
Esfuerzo de estandarización
Estamos trabajando para estandarizar la API de Summarizer y garantizar la compatibilidad con varios navegadores.
Nuestra propuesta de API recibió apoyo de la comunidad y se trasladó al grupo comunitario de Web Incubator del W3C para que se analice en más detalle. El equipo de Chrome solicitó comentarios al grupo de arquitectura técnica del W3C y a Mozilla y WebKit para conocer sus posiciones sobre los estándares.
Participa y comparte comentarios
Únete a la prueba de origen y comparte tus comentarios para comenzar a probar la API de Summarizer ahora. Tus comentarios pueden afectar directamente la forma en que compilamos e implementamos las versiones futuras de esta API y todas las APIs de IA integradas.
- Si quieres enviar comentarios sobre la implementación de Chrome, envía un informe de errores o una solicitud de función.
- Para analizar el diseño de la API de Summarizer en GitHub, comenta un problema existente o abre uno nuevo.
- Únete al grupo de la comunidad de Web Incubator para participar en el esfuerzo por establecer estándares.