Fecha de publicación: 12 de marzo de 2025
Explicación | Web | Extensiones | Estado de Chrome | Intent |
---|---|---|---|---|
GitHub | Ver | Intención de experimentar |
La API de Summarizer te ayuda a generar resúmenes de información en varios formatos y longitudes. Úsala con Gemini Nano en Chrome para realizar inferencias del cliente y explicar de forma concisa textos complejos o largos.
Cuando se realiza del lado del cliente, puedes trabajar con los datos de forma local, lo que te permite mantener los datos sensibles seguros y ofrecer disponibilidad a gran escala. Sin embargo, la ventana de contexto es mucho más pequeña que con los modelos del servidor, lo que significa que podría ser difícil resumir documentos muy grandes. Para resolver este problema, puedes usar la técnica de resumen de resúmenes.
¿Qué es el resumen de resúmenes?
Para usar la técnica de resumen de resúmenes, divide el contenido de entrada en puntos clave y, luego, resume cada parte de forma independiente. Puedes concatenar los resultados de cada parte y, luego, resumir este texto concatenado en un resumen final.

Divide tu contenido de forma cuidadosa
Es importante considerar cómo dividirás un texto extenso, ya que la división en diferentes ubicaciones puede generar resultados muy diferentes en Gemini Nano o en otros LLM. Idealmente, los textos deben dividirse cuando hay un cambio de tema, como una nueva sección de un artículo o en un párrafo. Es importante evitar dividir el texto en medio de una palabra o una oración, lo que significa que no puedes establecer una cantidad de caracteres como único criterio de división.
Existen muchas formas de hacerlo, sin esfuerzo manual. En el siguiente ejemplo, usamos el divisor de texto recursivo de LangChain.js, que equilibra el rendimiento y la calidad de la salida. Esto debería funcionar para la mayoría de las cargas de trabajo.
Cuando creas una instancia nueva, hay dos parámetros clave:
chunkSize
es la cantidad máxima de caracteres permitidos en cada división.chunkOverlap
es la cantidad de caracteres que se superponen entre dos divisiones consecutivas. Esto garantiza que cada fragmento tenga parte del contexto del fragmento anterior.
Divide el texto con splitText()
para mostrar un array de cadenas con cada fragmento.
La mayoría de los LLM tienen su ventana de contexto expresada como una cantidad de tokens, en lugar de una cantidad de caracteres. En promedio, un token contiene 4 caracteres, por lo que puedes estimar la cantidad de tokens que usa una entrada dividiendo la cantidad de caracteres por 4.
En nuestro ejemplo, el chunkSize
tiene 3,000 caracteres, lo que equivale a aproximadamente 750 tokens.
Genera resúmenes para cada división
Una vez que hayas configurado cómo se divide el contenido, puedes generar resúmenes para cada parte con la API de Summarizer.
Crea una instancia del resumidor con la función create()
. Para mantener la mayor cantidad de contexto posible, configuramos el parámetro format
en plain-text
, type
en tl;dr
y length
en long
.
Luego, genera el resumen de cada división creada por RecursiveCharacterTextSplitter
y concatena los resultados en una cadena nueva.
Separó cada resumen con una línea nueva para identificar claramente el resumen de cada parte.
Si bien esta línea nueva no importa cuando se ejecuta este bucle solo una vez, es útil para determinar cómo cada resumen se suma al valor del token para el resumen final. En la mayoría de los casos, esta solución debería funcionar para el contenido de formato medio y largo.
Resumen recursivo de resúmenes
Cuando tienes una cantidad de texto muy larga, la longitud del resumen concatenado puede ser mayor que la ventana de contexto disponible, lo que hace que falle el resumen. Para solucionar este problema, puedes resumir de forma recursiva los resúmenes.

Aún recopilamos las divisiones iniciales que genera RecursiveCharacterTextSplitter
. Luego, en la función recursiveSummarizer()
,
hacemos un bucle del proceso de resumen según la longitud de los caracteres de las
divisiones concatenadas. Si la longitud de los caracteres de los resúmenes supera 3000
, los concatenamos en fullSummaries
. Si no se alcanza el límite, el resumen se guarda como partialSummaries
.
Una vez que se generan todos los resúmenes, los resúmenes parciales finales se agregan al resumen completo. Si solo hay 1 resumen en fullSummaries
, no se necesita ninguna recursividad adicional. La función muestra un resumen final. Si hay más de un resumen, la función se repite y continúa resumiendo los resúmenes parciales.
Probamos esta solución con la RFC de Internet Relay Chat (IRC), que tiene 110,030 caracteres, incluidas 17,560 palabras. La API de Summarizer proporcionó el siguiente resumen:
El Internet Relay Chat (IRC) es una forma de comunicarse en línea en tiempo real con mensajes de texto. Puedes chatear en canales o enviar mensajes privados, y usar comandos para controlar el chat y también interactuar con el servidor. Es como un chat en Internet en el que puedes escribir y ver los mensajes de otras personas al instante.
Eso es muy eficaz. Además, solo tiene 309 caracteres.
Limitaciones
La técnica de resumen de resúmenes te ayuda a operar dentro de la ventana de contexto de un modelo del tamaño de un cliente. Si bien hay muchos beneficios de la IA del cliente, es posible que te encuentres con lo siguiente:
- Resumenes menos precisos: Con la recursividad, la repetición del proceso de resumen es posiblemente infinita, y cada resumen está más alejado del texto original. Esto significa que el modelo puede generar un resumen final que es demasiado superficial para ser útil.
- Rendimiento más lento: Cada resumen lleva tiempo generarse. Una vez más, con una cantidad infinita de resúmenes posibles en textos más grandes, este enfoque puede tardar varios minutos en completarse.
Tenemos una demostración del resumidor disponible y puedes ver el código fuente completo.
Comparte tus comentarios
Intenta usar la técnica de resumen de resúmenes con diferentes longitudes de texto de entrada, diferentes tamaños de división y diferentes longitudes de superposición para determinar qué funciona mejor para tus casos de uso.
Únete a la prueba de origen y comienza a probar la API de Summarizer ahora. Comparte tus comentarios. 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.
- Chatea con el equipo de IA de Chrome sobre tu proceso de resumen o cualquier otra pregunta sobre la IA integrada.