Signatur
Beschreibung
Die Eigenschaft expectedInputLanguages gehört zur Summarizer API. Mit dieser API fasst ein Sprachmodell im Browser Texte lokal zusammen. Die Eigenschaft gibt ein eingefrorenes Array mit BCP-47-Sprachcodes zurück, etwa ["de", "en"]. Diese Sprachen haben Sie beim Aufruf von Summarizer.create() über die gleichnamige Option angegeben. Der Browser hat beim Erzeugen geprüft, ob das Modell sie verarbeiten kann.
Die Angabe ist für das Modell ein Hinweis darauf, in welchen Sprachen die Texte kommen, die Sie an summarize() oder summarizeStreaming() übergeben. Unterstützt das Modell eine der Sprachen nicht, schlägt schon create() fehl. Ob eine Sprachkombination verfügbar ist, prüfen Sie vorher mit Summarizer.availability().
Brauchbar ist die Eigenschaft vor allem, wenn eine Instanz an anderer Stelle im Code wiederverwendet wird. Dann lässt sich prüfen, ob sie für die aktuelle Eingabesprache passt, oder ob eine neue Instanz mit anderen Sprachen nötig ist. Wurde die Option beim Erzeugen weggelassen, liefert die Eigenschaft null.
Rückgabewert
FrozenArray) mit BCP-47-Sprachcodes, die beim Erzeugen angegeben wurden. Wurde die Option nicht gesetzt, ist der Wert null.Beispiele
Summarizer mit erwarteten Eingabesprachen erzeugen und auslesen
if ('Summarizer' in self) {
const summarizer = await Summarizer.create({
type: 'tldr',
format: 'plain-text',
length: 'short',
expectedInputLanguages: ['de', 'en'],
outputLanguage: 'de'
});
console.log(summarizer.expectedInputLanguages);
console.log(Object.isFrozen(summarizer.expectedInputLanguages));
}
Vorher die Verfügbarkeit einer Sprachkombination prüfen
const options = {
type: 'key-points',
expectedInputLanguages: ['ja'],
outputLanguage: 'en'
};
const status = await Summarizer.availability(options);
if (status === 'unavailable') {
console.warn('Japanische Eingaben werden nicht unterstützt.');
} else {
const summarizer = await Summarizer.create(options);
console.log('Eingabesprachen:', summarizer.expectedInputLanguages.join(', '));
}
Wiederverwendete Instanz prüfen oder eine neue erzeugen
const cache = new Map();
const getSummarizer = async (lang) => {
const cached = cache.get(lang);
if (cached?.expectedInputLanguages?.includes(lang)) {
return cached;
}
const summarizer = await Summarizer.create({
expectedInputLanguages: [lang],
outputLanguage: lang
});
cache.set(lang, summarizer);
return summarizer;
};
const text = document.querySelector('article').textContent;
const lang = document.documentElement.lang || 'en';
const summarizer = await getSummarizer(lang);
console.log(await summarizer.summarize(text));
Ohne Angabe beim Erzeugen
const summarizer = await Summarizer.create();
console.log(summarizer.expectedInputLanguages);
// Wichtig · Fallstricke
- Experimentell: Die Summarizer API gibt es derzeit nur in Chromium-Browsern auf dem Desktop (Chrome ab Version 138), mit Einschränkungen bei der Hardware. Firefox und Safari unterstützen sie nicht. Prüfen Sie deshalb die Unterstützung mit
'Summarizer' in self, bevor Sie die API nutzen. - Die Eigenschaft ist schreibgeschützt, und das zurückgegebene Array ist eingefroren. Ein Aufruf wie
push()löst im strikten Modus einenTypeErroraus. Für andere Sprachen erzeugen Sie eine neue Instanz. - Ist eine angegebene Sprache nicht verfügbar, wird das Promise von
create()abgewiesen, meist mit einerNotSupportedError-DOMException. Rufen Sie daher vorherSummarizer.availability()mit denselben Optionen auf. - Die Angabe ist ein Hinweis an das Modell, keine Prüfung der Eingabe. Wenn Sie Texte in anderen Sprachen übergeben, erhalten Sie unter Umständen schlechtere Zusammenfassungen, aber keine Fehlermeldung.
- Verwenden Sie gültige BCP-47-Codes wie
"de"oder"en-US". Der Browser kann die Codes normalisieren. - Beim ersten Aufruf von
create()muss der Browser das Modell unter Umständen erst herunterladen. Dafür ist eine Nutzeraktivierung nötig, etwa ein Klick.