Met de Summarizer API kunnen webontwikkelaars lokale, AI-gestuurde tekstsamenvattingen rechtstreeks in de browser aanbieden met Gemini Nano in Chrome of Phi in Edge. Deze API ondersteunt verschillende indelingen, waaronder kernpunten, koppen en In het kort, en werkt volledig op het apparaat om de privacy van de gebruiker te waarborgen.
Aan de slag
De Summarizer API is beschikbaar vanaf Chrome en Edge 138. Hiervoor moet je het model van Gemini Nano of Phi (respectievelijk) eenmalig downloaden.
Hardware- en softwarevereisten
- OS: Windows 10/11, macOS 13+, Linux of ChromeOS (Chromebook Plus).
- Opslag: 22 GB vrije ruimte voor het profielvolume.
- RAM/CPU: 16+ GB RAM en 4+ CPU-kernen.
- VRAM: 4 GB+ (bij gebruik van GPU).
Modeldownload en beschikbaarheid
Check of het model klaar is, moet worden gedownload of niet beschikbaar is.
Verplichte opties doorgeven: Je moet hetzelfde object met configuratieopties doorgeven aan zowel Summarizer.availability(options) als Summarizer.create(options). Gebruik NIET de beëindigde window.ai.summarizer API-surface.
Verplichte voortgangscontrole: Je MOET een controle implementeren voor de voortgang van de modeldownload door een monitor(m)-callback te geven aan Summarizer.create() en een listener toe te voegen voor de gebeurtenis downloadprogress.
Vereiste voor gebruikersactivatie: Als availability 'downloadable' of 'downloading' is, is een gebruikersactivatie (zoals een klik van de gebruiker) vereist om de daadwerkelijke download via Summarizer.create() te activeren. Plaats de aanroep voor het maken in een event-listener in plaats van deze onvoorwaardelijk aan te roepen bij het laden van de pagina om NotAllowedError te voorkomen.
const options = {
type: 'key-points',
format: 'plain-text',
length: 'medium'
};
const availability = await Summarizer.availability(options);
if (availability === 'available') {
const summarizer = await Summarizer.create(options);
// Ready to use immediately
} else if (availability === 'downloadable') {
// A user gesture is strictly required to start the download
document.getElementById('start-download-btn').addEventListener('click', async () => {
const summarizer = await Summarizer.create({
...options,
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${Math.round((e.loaded / e.total) * 100)}%`);
});
},
});
});
}
API-functies en -configuratie
Als je een samenvatting maakt via Summarizer.create(options), kun je de uitvoer aanpassen:
| Parameter | Opties | Beschrijving |
|---|---|---|
type |
key-points, tldr, teaser, headline |
Definieert de overzichtsstrategie. |
format |
markdown, plain-text |
Stijl van uitvoersyntaxis. |
length |
short, medium, long |
Doellengte (bijvoorbeeld 1 of 5 zinnen). |
preference |
auto, speed, capability |
Zorgt voor een balans tussen vertraging en kwaliteit. |
Voorbeeldconfiguratie
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
if (navigator.userActivation.isActive) {
const summarizer = await Summarizer.create(options);
}
Taalondersteuning
Je kunt verwachte talen specificeren om te zorgen dat de browser het specifieke overzichtsverzoek kan verwerken.
const summarizer = await Summarizer.create({
type: 'key-points',
expectedInputLanguages: ['en', 'ja'],
outputLanguage: 'es',
});
Samenvattingsmethoden
1. Batchsamenvatting
Verwerkt de hele tekst in één keer en retourneert het resultaat.
const longText = document.querySelector('article').innerText;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
console.log(summary);
2. Samenvatting van stream
Retourneert resultaten in realtime terwijl het model ze genereert, wat een responsievere UI oplevert.
const stream = summarizer.summarizeStreaming(longText);
for await (const chunk of stream) {
console.log(chunk);
}
Beveiliging en machtigingen
- Privacy van gegevens: Er worden geen gegevens naar Google gestuurd. De verwerking vindt plaats op het lokale apparaat.
Cross-Origin: Toegang kan worden verleend aan iframes via het Rechtenbeleid.
<iframe src="https://example.com/" allow="summarizer"></iframe>Web Workers: Wordt op dit moment niet ondersteund.
Reservestrategie
Check voordat je de beschikbaarheid initialiseert of opvraagt of de browser de Summarizer API ondersteunt:
if ('Summarizer' in self) {
// The Summarizer API is supported.
} else {
// Execute fallback strategy
}
Als de Summarizer API niet wordt ondersteund of als beschikbaarheidscontroles 'unavailable' retourneren, moet je op een correcte manier terugvallen.
Aanbevolen opties:
- Remote API Fallback: Stuur het distillatieverzoek naar een servereindpunt of externe API (zoals de Vertex AI Gemini API) zodat gebruikers nog steeds samenvattingen krijgen.
- Graceful degradation: Zet de bedieningselementen voor samenvattingen visueel uit in de UI of verberg de knop terwijl je een vriendelijk bericht toont (bijvoorbeeld
"Local summarization is currently unsupported in this browser"). Zorg dat interactie geen algemene onverwerkte runtime-uitzonderingen activeert. - Polyfill-fallback: Je kunt door de community onderhouden polyfills zoals
built-in-ai-task-apis-polyfillsofprompt-api-polyfillgebruiken om het API-oppervlak te emuleren met externe services met modellen in de cloud of on-device-deductie met lokale modellen.
Gevolgen voor privacy en kosten: Deze polyfills sturen verzoeken mogelijk door naar externe servers (zoals de Gemini API via de cloud). Dit maakt de privacygaranties op het apparaat van de native ingebouwde AI-API's volledig ongeldig en leidt tot gebruikskosten voor de API aan de serverzijde.