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 Resumer se puede usar para generar diferentes tipos de resúmenes con distintas longitudes y formatos, como oraciones, párrafos, listas de 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 avance de un libro a partir de una opinión sobre un libro
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, para probar la API con usuarios reales en producción. Las pruebas de origen habilitan la función para todos los usuarios de tu origen en Chrome. Obtén más información para comenzar a usar las pruebas de origen.
- Si bien puede haber límites de uso, puedes integrar estas funciones para realizar pruebas en tiempo real y recopilar comentarios de los usuarios. El objetivo es informar las iteraciones futuras de esta API, a medida que trabajamos para lograr una mayor disponibilidad.
- Sigue nuestra implementación en Estado de Chrome.
- La propuesta de la API de Resumer forma parte de un paquete de APIs de escritura y está dispuesta a discutir.
- Únete al programa de versión preliminar para adelantarte a las nuevas APIs de IA integradas y acceder al debate sobre nuestra lista de distribución.
Limitaciones durante la prueba de origen
Durante la prueba de origen, la API de Summarizer solo admite resumir textos en inglés, ya que la calidad del modelo solo se probó de manera exhaustiva en el contenido en inglés. Tenemos la intención de quitar esta limitación una vez que hayamos probado otros idiomas para mejorar la calidad y la seguridad, y la API esté ampliamente disponible.
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 varias razones, como espacio insuficiente en el disco 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 tome tiempo.
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
Funciones de 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 el 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 generador de resúmenes.
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 resumidor
Existen dos maneras de ejecutar el generador de resúmenes: por transmisión y sin transmisión.
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 por transmisión
Los resúmenes por transmisión ofrecen 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 una ReadableStream
, en la que los segmentos de respuesta se compilan de forma sucesiva unos de otros. Esto significa que cada respuesta contiene el resumen completo generado hasta ese momento, 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ó asistencia de la comunidad y se trasladó al W3C Web Incubator Community Group para analizarlo 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.