Résumer avec l'IA intégrée

Publié le 11 novembre 2024, dernière mise à jour le 30 juillet 2025

Browser Support

  • Chrome: 138.
  • Edge: behind a flag.
  • Firefox: not supported.
  • Safari: not supported.

Vous pouvez permettre à vos utilisateurs de résumer des articles longs, des documents complexes ou même des conversations de chat animées en des synthèses concises et pertinentes.

L'API Summarizer peut être utilisée pour générer différents types de résumés de longueurs et de formats variés, tels que des phrases, des paragraphes, des listes à puces, etc. Nous pensons que cette API est utile dans les scénarios suivants :

  • Résumer les points clés d'un article ou d'une conversation de chat.
  • Suggérer des titres et des en-têtes pour les articles.
  • Créer un résumé concis et informatif d'un texte long.
  • Générer un teaser pour un livre à partir d'une critique.

Premiers pas

L'API Summarizer est disponible à partir de la version stable de Chrome 138.

Avant d'utiliser cette API, acceptez le Règlement sur les utilisations interdites de l'IA générative de Google.

Exécutez la détection de fonctionnalités pour voir si le navigateur est compatible avec l'API Summarizer.

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

Consulter la configuration matérielle requise

Les exigences suivantes s'appliquent aux développeurs et aux utilisateurs qui utilisent des fonctionnalités à l'aide de ces API dans Chrome. Il est possible que la configuration requise soit différente dans les autres navigateurs.

Les API Language Detector et Translator fonctionnent dans Chrome sur ordinateur. Ces API ne fonctionnent pas sur les appareils mobiles.

Les API Prompt, Summarizer, Writer, Rewriter et Proofreader fonctionnent dans Chrome lorsque les conditions suivantes sont remplies :

  • Système d'exploitation : Windows 10 ou 11 ; macOS 13 ou version ultérieure (Ventura et versions ultérieures) ; Linux ; ou ChromeOS (à partir de la plate-forme 16389.0.0) sur les appareils Chromebook Plus. Chrome pour Android, iOS et ChromeOS sur les appareils non Chromebook Plus ne sont pas encore compatibles avec les API qui utilisent Gemini Nano.
  • Stockage : au moins 22 Go d'espace libre sur le volume contenant votre profil Chrome.
  • GPU ou CPU : les modèles intégrés peuvent s'exécuter avec un GPU ou un CPU.
    • GPU : strictement plus de 4 Go de VRAM.
    • CPU : 16 Go de RAM ou plus et 4 cœurs de processeur ou plus.
    • Remarque : L'API Prompt avec entrée audio nécessite un GPU.
  • Réseau : données illimitées ou connexion non limitée.

La taille exacte de Gemini Nano peut varier à mesure que le navigateur met à jour le modèle. Pour déterminer la taille actuelle, accédez à chrome://on-device-internals.

Téléchargement de modèles

L'API Summarizer utilise un modèle entraîné pour générer des résumés de haute qualité. L'API est intégrée à Chrome, et Gemini Nano est le modèle téléchargé la première fois qu'un site Web utilise cette API.

Pour déterminer si le modèle est prêt à être utilisé, appelez la fonction asynchrone Summarizer.availability(). Si la réponse à availability() est downloadable, écoutez la progression du téléchargement pour informer l'utilisateur de sa progression, car cela peut prendre du temps.

const availability = await Summarizer.availability();

Pour déclencher le téléchargement du modèle et créer le résumé, vérifiez l'activation de l'utilisateur , puis appelez la fonction asynchrone Summarizer.create().

// Proceed to request batch or streaming summarization
const summarizer = await Summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

Fonctions de l'API

La fonction create() vous permet de configurer un nouvel objet de résumé en fonction de vos besoins. Elle accepte un objet options facultatif avec les paramètres suivants :

  • sharedContext : contexte partagé supplémentaire qui peut aider le résumé.
  • type: type de résumé, avec les valeurs autorisées key-points (par défaut), tldr, teaser et headline. Pour en savoir plus, consultez le tableau ci-dessous.
  • format: format du résumé, avec les valeurs autorisées markdown (par défaut) et plain-text.
  • length: longueur du résumé, avec les valeurs autorisées short (par défaut), medium et long. La signification de ces longueurs varie en fonction du type demandé. Par exemple, dans l'implémentation de Chrome, un résumé court des points clés comporte trois puces, et un résumé court comporte une phrase.
  • preference: mécanisme permettant aux développeurs d'indiquer s'ils privilégient l'exécution rapide ou les fonctionnalités complètes.
    • auto: le navigateur équilibre la vitesse d'exécution et la capacité de résumé, et peut ajuster dynamiquement son traitement interne en fonction de l'environnement, des contraintes du système ou du contexte.
    • speed : le navigateur doit privilégier la faible latence et l'exécution rapide. Cette approche privilégie les performances, ce qui peut limiter la capacité de résumé, ce qui peut entraîner une extraction moins nuancée ou une synthèse plus simple du texte source.
    • capability: le navigateur doit privilégier l'exhaustivité et la cohérence du résumé, ainsi qu'un modèle offrant plus de flexibilité en termes de types de résumé et d'autres options configurables. Cette approche vise à capturer avec précision le contexte subtil et à produire des résumés très précis, ce qui peut entraîner une latence plus élevée et des vitesses d'exécution plus lentes.

Une fois définis, les paramètres ne peuvent plus être modifiés. Créez un objet de résumé si vous devez modifier les paramètres.

Le tableau suivant illustre les différents types de résumés et leurs longueurs correspondantes. Les longueurs représentent la valeur maximale possible, car les résultats peuvent parfois être plus courts.

Type Signification Longueur
"tldr" Le résumé doit être court et précis, et fournir un aperçu rapide de l'entrée, adapté à un lecteur occupé.
court 1 phrase
moyen 3 phrases
long 5 phrases
"teaser" Le résumé doit se concentrer sur les parties les plus intéressantes ou intrigantes de l' entrée, conçues pour inciter le lecteur à en savoir plus.
court 1 phrase
moyen 3 phrases
long 5 phrases
"key-points" Le résumé doit extraire les points les plus importants de l'entrée, présentés sous forme de liste à puces.
court 3 puces
moyen 5 puces
long 7 puces
"headline" Le résumé doit contenir efficacement le point principal de l'entrée en une seule phrase, au format d'un titre d'article.
court 12 mots
moyen 17 mots
long 22 mots

Par exemple, vous pouvez initialiser un résumé pour générer une longueur moyenne de points clés en Markdown.

const options = {
  sharedContext: 'This is a scientific article',
  type: 'key-points',
  format: 'markdown',
  length: 'medium',
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
};

const availability = await Summarizer.availability();
if (availability === 'unavailable') {
  // The Summarizer API isn't usable.
  return;
}

// Check for user activation before creating the summarizer
if (navigator.userActivation.isActive) {
  const summarizer = await Summarizer.create(options);
}

Attribuer les langues attendues

L'API Summarizer est compatible avec plusieurs langues. Définissez les langues d'entrée, de sortie et de contexte attendues lorsque vous créez votre session. Cela permet au navigateur de rejeter la requête s'il ne peut pas prendre en charge une combinaison de langues spécifique.

const summarizer = await Summarizer.create({
  type: 'key-points',
  expectedInputLanguages: ['en', 'ja', 'es'],
  outputLanguage: 'es',
  expectedContextLanguages: ['en'],
  sharedContext: 'These are requests to summarize articles from a multilanguage newspaper. The users expect a response in Spanish.',
});

Il existe deux façons d'exécuter le résumé : en streaming et par lot (sortie basée sur la requête).

Résumé par lot

Avec le résumé par lot, le modèle traite l'entrée dans son ensemble, puis génère la sortie.

Pour obtenir un résumé par lot, appelez la fonction summarize(). Le premier argument est le texte que vous souhaitez résumer. Le deuxième argument facultatif est un objet avec un champ context. Ce champ vous permet d'ajouter des informations d'arrière-plan qui peuvent améliorer le résumé.

const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});

Résumé en streaming

Le résumé en streaming propose des résultats en temps réel. La sortie est mise à jour en continu à mesure que l'entrée est ajoutée et ajustée. Pour obtenir un résumé en streaming, appelez summarizeStreaming() au lieu de summarize().

const longText = document.querySelector('article').innerHTML;
const stream = summarizer.summarizeStreaming(longText, {
  context: 'This article is intended for junior developers.',
});
for await (const chunk of stream) {
  console.log(chunk);
}

Démo

Vous pouvez essayer l'API Summarizer dans le bac à sable de l'API Summarizer.

Règles d'autorisation, iframes et Web Workers

Par défaut, l'API Summarizer n'est disponible que pour les fenêtres de premier niveau et leurs iframes de même origine. L'accès à l'API peut être délégué à des iframes d'origine croisée à l'aide de l'attribut allow="" de la règle d'autorisation :

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Summarizer API by
  setting the `allow="summarizer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="summarizer"></iframe>

L'API Summarizer n'est pas disponible dans les Web Workers pour le moment. Cela est dû à la complexité de l'établissement d'un document responsable pour chaque worker, afin de vérifier l'état de la règle d'autorisation.

Envoyer des commentaires

Nous voulons voir ce que vous créez avec l'API Summarizer. Partagez vos sites Web et applications Web avec nous sur X, YouTube, et LinkedIn.

Pour envoyer des commentaires sur l'implémentation de Chrome, signalez un bug ou une demande de fonctionnalité.