Gepubliceerd: 11 november 2024
Stel u voor dat u uw gebruikers de mogelijkheid zou kunnen bieden om lange artikelen, complexe documenten of zelfs levendige chatgesprekken om te zetten in beknopte en verhelderende samenvattingen.
De Summarizer API kan worden gebruikt om verschillende soorten samenvattingen te genereren in verschillende lengtes en formaten, zoals zinnen, alinea's, lijsten met opsommingstekens en meer. Wij zijn van mening dat deze API nuttig is in de volgende scenario's:
- Het samenvatten van de belangrijkste punten van een artikel of een chatgesprek.
- Titels en koppen voor artikelen voorstellen.
- Een beknopte en informatieve samenvatting maken van een lange tekst.
- Op basis van een boekrecensie een teaser voor een boek genereren.
Beschikbaarheid
- Neem deel aan de Summarizer API Origin-proefperiode , die loopt van Chrome 131 tot Chrome 136. Met Origin-proefversies kunt u de functie aanbieden aan echte gebruikers op uw oorspronkelijke locatie, in Chrome.
- Volg onze implementatie in Chrome Status .
- Het Summarizer API-voorstel maakt deel uit van een reeks schrijf-API's en staat open voor discussie .
- Sluit u aan bij het vroege preview-programma voor een eerste blik op nieuwe ingebouwde AI API's en toegang tot discussies op onze mailinglijst.
Meld u aan voor de origin-proefperiode
Volg deze stappen om de Summarizer API te gaan gebruiken:
- Erken het beleid van Google inzake verboden gebruik van generatieve AI .
- Ga naar de Summarizer API Origin-proefversie .
- Klik op Registreren en vul het formulier in.
- Geef in het veld Weboorsprong uw herkomst- of extensie-ID op:
chrome-extension://YOUR_EXTENSION_ID
.
- Geef in het veld Weboorsprong uw herkomst- of extensie-ID op:
- Om te verzenden klikt u op Registreren .
- Kopieer het verstrekte token en voeg het toe aan elke webpagina op uw oorsprong of bestand voor uw extensie waarop u de proefversie wilt inschakelen.
- Als u een extensie bouwt, volgt u de oorspronkelijke proefinstructies voor Extensies
- Begin met het gebruik van de Summarizer-API .
Lees meer over hoe u aan de slag kunt gaan met origin-proeven .
Beperkingen tijdens het herkomstproces
Tijdens de origin-proefperiode ondersteunt de Summarizer API alleen het samenvatten van Engelse teksten, omdat de modelkwaliteit alleen grondig werd getest op Engelse inhoud. We zijn van plan deze beperking op te heffen zodra we aanvullende talen op kwaliteit en veiligheid hebben getest en de API algemeen beschikbaar is.
Voeg ondersteuning toe aan localhost
Om tijdens de origin-proefperiode toegang te krijgen tot de Summarizer API op localhost
, moet je Chrome Canary hebben. Volg vervolgens deze stappen:
- Open Chrome Canary op een van deze platforms: Windows, Mac of Linux.
- Ga naar
chrome://flags/#summarization-api-for-gemini-nano
. - Selecteer Ingeschakeld .
- Klik op Opnieuw starten of start Chrome opnieuw.
Gebruik de Summarizer-API
Voer eerst functiedetectie uit om te zien of de browser de Summarizer API ondersteunt.
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
Model downloaden
De Summarizer API maakt gebruik van een krachtig AI-model dat is getraind om samenvattingen van hoge kwaliteit te genereren. Hoewel de API in Chrome is ingebouwd, wordt het model afzonderlijk gedownload wanneer een website de API voor het eerst gebruikt.
Om te bepalen of het model klaar is voor gebruik, roept u de asynchrone functie ai.summarizer.capabilities()
aan. Het retourneert een AISummarizerCapabilities
-object met een available
veld dat drie mogelijke waarden kan aannemen:
-
no
: De huidige browser ondersteunt de Summarizer API, maar kan momenteel niet worden gebruikt. Dit kan een aantal redenen hebben, zoals onvoldoende beschikbare schijfruimte om het model te downloaden. -
readily
: De huidige browser ondersteunt de Summarizer API en kan meteen worden gebruikt. -
after-download
: De huidige browser ondersteunt de Summarizer API, maar moet eerst het model downloaden.
Om het downloaden van het model te activeren en de samenvatter te maken, roept u de asynchrone functie ai.summarizer.create()
aan. Als het antwoord op capabilities()
after-download
was, kunt u het beste luisteren naar de downloadvoortgang. Op deze manier kunt u de gebruiker informeren als het downloaden tijd kost.
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
API-functies
Met de create()
functie kunt u een nieuw samenvattend object naar uw wensen configureren. Er is een optioneel options
voor nodig met de volgende parameters:
-
sharedContext
: Extra gedeelde context die de samenvatter kan helpen. -
type
: Het type samenvatting, met de toegestane waardenkey-points
(standaard),tl;dr
,teaser
enheadline
. -
format
: Het formaat van de samenvatting, met de toegestane waardenmarkdown
(standaard) enplain-text
. -
length
: De lengte van de samenvatting, met de toegestane waardenshort
,medium
(standaard) enlong
. De betekenis van deze lengtes varieert afhankelijk van het gevraagdetype
. In de implementatie van Chrome bestaat een korte samenvatting van de belangrijkste punten bijvoorbeeld uit drie opsommingstekens, en een korte samenvatting uit één zin; een lange samenvatting van de belangrijkste punten bestaat uit zeven opsommingstekens, en een lange samenvatting uit een paragraaf.
In het volgende voorbeeld ziet u hoe u de samenvatter initialiseert.
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;
}
Voer de samenvatting uit
Er zijn twee manieren om de samenvatting uit te voeren: streaming en niet-streaming.
Niet-streaming samenvatting
Bij niet-streaming-samenvatting verwerkt het model de invoer als geheel en produceert vervolgens de uitvoer.
Om een niet-streaming samenvatting te krijgen, roept u de asynchrone summarize()
aan. Het eerste argument voor de functie is de tekst die u wilt samenvatten. Het tweede, optionele argument is een object met een context
. In dit veld kunt u achtergronddetails toevoegen die de samenvatting kunnen verbeteren.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
Samenvatting van streaming
Streaming-samenvatting biedt resultaten in realtime. De uitvoer wordt voortdurend bijgewerkt naarmate de invoer wordt toegevoegd en aangepast.
Om een streamingsamenvatting te krijgen, roept u de summarizeStreaming()
functie aan. Herhaal vervolgens de beschikbare tekstsegmenten in de stream.
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()
retourneert een ReadableStream
, waarin de antwoordsegmenten achtereenvolgens op elkaar voortbouwen. Dit betekent dat elk antwoord de volledige samenvatting bevat die tot dat moment is gegenereerd, en niet alleen het volgende segment, wat niet het beoogde gedrag is.
We zijn van plan om ons aan te passen aan andere streaming-API's op het platform, waarbij de segmenten opeenvolgende stukken van één lange stream zijn. Om het beoogde gedrag te bereiken, kunt u voorlopig het volgende implementeren:
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);
Demo
U kunt de Summarizer API uitproberen in de Summarizer API Playground .
Standaardisatie-inspanning
We werken aan het standaardiseren van de Summarizer API, om compatibiliteit tussen browsers te garanderen.
Ons API-voorstel kreeg steun van de gemeenschap en is voor verdere discussie verplaatst naar de W3C Web Incubator Community Group . Het Chrome-team vroeg om feedback van de W3C Technical Architecture Group en vroeg Mozilla en WebKit naar hun standaardposities.
Doe mee en deel feedback
Begin nu met het testen van de Summarizer API door deel te nemen aan de origin-proefperiode en deel uw feedback. Uw input kan rechtstreeks van invloed zijn op de manier waarop we toekomstige versies van deze API en alle ingebouwde AI API's bouwen en implementeren.
- Voor feedback over de implementatie van Chrome kunt u een bugrapport of een functieverzoek indienen.
- Bespreek het Summarizer API-ontwerp op GitHub door commentaar te geven op een bestaand probleem of een nieuw probleem te openen.
- Neem deel aan de inspanningen op het gebied van standaarden door lid te worden van de Web Incubator Community Group .