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é
- Rejoignez la phase d'évaluation de l'API Summarizer pour les origines, qui s'exécute de Chrome 131 à Chrome 136. Les essais Origin Trial vous permettent de proposer la fonctionnalité à des utilisateurs réels sur votre origine, dans Chrome.
- Suivez notre implémentation dans État de Chrome.
- La proposition d'API Summarizer fait partie d'une suite d'API d'écriture et est ouverte à la discussion.
- Rejoignez le programme Preview anticipé pour découvrir en avant-première les nouvelles API d'IA intégrées et participer aux discussions sur notre liste de diffusion.
S'inscrire à l'essai
Pour commencer à utiliser l'API Summarizer, procédez comme suit:
- Accepter le Règlement Google sur les utilisations interdites de l'IA générative
- Accédez à la phase d'évaluation de l'API Summarizer en version d'origine.
- 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
.
- Dans le champ Origine Web, indiquez votre origine ou l'ID de l'extension,
- Pour envoyer votre demande, cliquez sur Register (S'inscrire).
- Copiez le jeton fourni et ajoutez-le à chaque page Web de votre origine ou de votre fichier pour votre extension, sur laquelle vous souhaitez activer le test.
- Si vous créez une extension, suivez les instructions du test de l'origine des extensions.
- 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:
- Ouvrez Chrome Canary sur l'une des plates-formes suivantes: Windows, Mac ou Linux.
- Accédez à
chrome://flags/#summarization-api-for-gemini-nano
. - Sélectionnez Activé.
- 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éeskey-points
(par défaut),tl;dr
,teaser
etheadline
.format
: format de la synthèse, avec les valeurs autoriséesmarkdown
(par défaut) etplain-text
.length
: longueur de la synthèse, avec les valeurs autoriséesshort
,medium
(par défaut) etlong
. La signification de ces longueurs varie en fonction de latype
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 a demandé à Mozilla et à WebKit 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.
- Pour envoyer des commentaires sur l'implémentation de Chrome, envoyez un rapport de bug ou une demande de fonctionnalité.
- Discuter de la conception de l'API Summarizer sur GitHub en commentant un problème existant ou en en créant un
- Participez à l'élaboration des normes en rejoignant le groupe de la communauté Web Incubator.