Résumer des articles dans Chrome avec l'IA intégrée

Publié le 11 novembre 2024

Imaginez que vous puissiez offrir à vos utilisateurs la possibilité de condenser des articles longs, des documents complexes ou même des conversations de chat animées en résumés concis et pertinents.

L'API Summarizer permet de générer différents types de résumés dans différents formats et longueurs, 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 par chat ;
  • suggérer des titres et des titres pour les articles ;
  • Créer un résumé concis et informatif d'un texte long.
  • Générer un extrait d'un livre à partir d'un avis

Disponibilité

S'inscrire à l'essai

Pour commencer à utiliser l'API Summarizer, procédez comme suit:

  1. Accepter le Règlement de Google sur les utilisations interdites de l'IA générative
  2. Accédez à la phase d'évaluation de l'API Summarizer en version d'origine.
  3. Cliquez sur Register (Enregistrer) et remplissez le formulaire.
    • Dans le champ Origine Web, indiquez votre origine ou l'ID de l'extension, chrome-extension://YOUR_EXTENSION_ID.
  4. Pour envoyer votre demande, cliquez sur Register (S'inscrire).
  5. Copiez le jeton fourni, puis ajoutez-le à chaque page Web de votre origine ou de votre fichier pour votre extension, sur laquelle vous souhaitez activer l'essai.
  6. Commencez à utiliser l'API Summarizer.

Découvrez comment commencer à utiliser les tests d'origine.

Limites pendant la période d'essai de l'origine

Lors du test d'origine, l'API Summarizer ne permet de résumer que des textes en anglais, car la qualité du modèle n'a été testée que sur du contenu en anglais. Nous prévoyons de lever cette limitation une fois que nous aurons testé d'autres langues pour vérifier leur qualité et leur sécurité, et que l'API sera largement disponible.

Ajouter la prise en charge de localhost

Pour accéder à l'API Summarizer sur localhost pendant la phase d'évaluation de l'origine, vous devez disposer de Chrome Canary. Ensuite, procédez comme suit:

  1. Ouvrez Chrome Canary sur l'une des plates-formes suivantes: Windows, Mac ou Linux.
  2. Accédez à chrome://flags/#summarization-api-for-gemini-nano.
  3. Sélectionnez Activé.
  4. Cliquez sur Relancer ou redémarrez Chrome.

Utiliser l'API Summarizer

Commencez par exécuter la détection de fonctionnalités pour voir si le navigateur est compatible avec l'API Summarizer.

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

Téléchargement du modèle

L'API Summarizer utilise un puissant modèle d'IA entraîné pour générer des résumés de haute qualité. Bien que l'API soit intégrée à Chrome, le modèle est téléchargé séparément la première fois qu'un site Web utilise l'API.

Pour déterminer si le modèle est prêt à l'emploi, appelez la fonction ai.summarizer.capabilities() asynchrone. Elle renvoie un objet AISummarizerCapabilities avec un champ available pouvant prendre trois valeurs possibles:

  • no: Le navigateur actuel est compatible avec l'API Summarizer, mais il ne peut pas être utilisé pour le moment. Plusieurs raisons peuvent expliquer ce problème, comme un espace disque disponible insuffisant pour télécharger le modèle.
  • readily: le navigateur actuel est compatible avec l'API Summarizer et peut être utilisé immédiatement.
  • after-download: le navigateur actuel est compatible avec l'API Summarizer, mais il doit d'abord télécharger le modèle.

Pour déclencher le téléchargement du modèle et créer le récapitulatif, appelez la fonction ai.summarizer.create() asynchrone. Si la réponse à capabilities() était after-download, il est recommandé d'écouter la progression du téléchargement. Vous pouvez ainsi informer l'utilisateur si le téléchargement prend du temps.

const summarizer = await ai.summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
    });
  }
});

Fonctions de l'API

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

  • sharedContext: contexte partagé supplémentaire pouvant aider le récapitulatif.
  • type: type de résumé, avec les valeurs autorisées key-points (par défaut), tl;dr, teaser et headline.
  • format: format de la synthèse, avec les valeurs autorisées markdown (par défaut) et plain-text.
  • length: longueur de la synthèse, avec les valeurs autorisées short, medium (par défaut) et long. La signification de ces longueurs varie en fonction de la type demandée. Par exemple, dans l'implémentation de Chrome, un bref résumé des points clés se compose de trois puces, et un bref résumé se compose d'une phrase. Un long résumé des points clés se compose de sept puces, et un long résumé se compose d'un paragraphe.

L'exemple suivant montre comment initialiser le récapitulatif.

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;
}

Exécuter le récapitulatif

Il existe deux façons d'exécuter le récapitulatif: en streaming et en non-streaming.

Résumé sans streaming

Avec la synthèse non en streaming, le modèle traite l'entrée dans son ensemble, puis produit la sortie.

Pour obtenir un résumé non en streaming, appelez la fonction summarize() asynchrone du récapitulatif. Le premier argument de la fonction 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 générales 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écapitulatif de streaming

Le résumé en streaming offre 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 la fonction summarizeStreaming() du récapitulatif. Itérez ensuite sur les segments de texte disponibles dans le flux.

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() renvoie un ReadableStream, dans lequel les segments de réponse se construisent successivement les uns sur les autres. Cela signifie que chaque réponse contient l'intégralité du récapitulatif généré jusqu'à ce point, et non seulement le segment suivant, ce qui n'est pas le comportement prévu.

Nous prévoyons de nous aligner sur les autres API de streaming de la plate-forme, où les segments sont des éléments successifs d'un seul long flux. Pour le moment, pour obtenir le comportement souhaité, vous pouvez implémenter ce qui suit:

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);

Démo

Vous pouvez essayer l'API Summarizer dans le Summarizer API Playground.

Effort de standardisation

Nous mettons tout en œuvre pour normaliser l'API Summarizer afin de garantir la compatibilité entre les navigateurs.

Notre proposition d'API a reçu l'appui de la communauté et a été transférée au groupe de la communauté de l'incubateur Web du W3C pour une discussion plus approfondie. L'équipe Chrome a demandé des commentaires au Groupe d'architecture technique du W3C, et à Mozilla et WebKit de préciser leur position sur les normes.

Participer et envoyer des commentaires

Commencez à tester l'API Summarizer dès maintenant en participant à la phase d'évaluation et envoyez-nous vos commentaires. Vos commentaires peuvent avoir un impact direct sur la façon dont nous créons et implémentons les futures versions de cette API et de toutes les API d'IA intégrées.