Signatur
Beschreibung
Die Eigenschaft inputQuota gehört zur eingebauten KI-Schnittstelle LanguageDetector (Language Detector API). Sie liefert eine Zahl: Das ist das Eingabelimit, das der Browser bzw. das lokale Sprachmodell für eine einzelne Spracherkennung vorsieht. Die Einheit legt die Implementierung fest (meist Token, nicht Zeichen). Direkt mit string.length vergleichen lässt sich der Wert deshalb nicht.
Zusammen mit LanguageDetector.prototype.measureInputUsage() ist inputQuota nützlich, um vor dem Aufruf von detect() zu prüfen, ob ein Text in das Limit passt. So vermeidest du einen abgelehnten Promise mit QuotaExceededError und kannst lange Texte gezielt kürzen oder in Abschnitte aufteilen. Für die Spracherkennung reicht meist schon ein repräsentativer Ausschnitt.
Der Wert ist pro Instanz fest und ändert sich nicht, solange die Instanz existiert. Gibt es kein Limit, kann der Wert Infinity sein.
Rückgabewert
detect()-Aufruf in der Einheit der Implementierung (meist Token). Kann Infinity sein.Beispiele
Detektor erzeugen und Kontingent auslesen
if ('LanguageDetector' in self) {
const availability = await LanguageDetector.availability();
if (availability !== 'unavailable') {
const detector = await LanguageDetector.create();
console.log('Eingabelimit:', detector.inputQuota);
}
} else {
console.log('Language Detector API nicht unterstützt');
}
Vor detect() prüfen, ob der Text ins Limit passt
const detector = await LanguageDetector.create();
const text = document.querySelector('#kommentar').value;
const usage = await detector.measureInputUsage(text);
if (usage <= detector.inputQuota) {
const [best] = await detector.detect(text);
console.log(`Sprache: ${best.detectedLanguage} (${(best.confidence * 100).toFixed(1)} %)`);
} else {
console.warn(`Text zu lang: ${usage} von ${detector.inputQuota} erlaubt`);
}
Langen Text schrittweise kürzen
const detectSafely = async (detector, text) => {
let sample = text;
// Text halbieren, bis er ins Kontingent passt
while (sample.length > 0 &&
(await detector.measureInputUsage(sample)) > detector.inputQuota) {
sample = sample.slice(0, Math.floor(sample.length / 2));
}
return detector.detect(sample);
};
const detector = await LanguageDetector.create({ expectedInputLanguages: ['de', 'en'] });
const results = await detectSafely(detector, sehrLangerArtikel);
console.log(results[0].detectedLanguage);
QuotaExceededError abfangen
const detector = await LanguageDetector.create();
try {
await detector.detect('Lorem ipsum '.repeat(100000));
} catch (err) {
if (err.name === 'QuotaExceededError') {
console.error(`Limit von ${detector.inputQuota} überschritten`);
} else {
throw err;
}
}
// Wichtig · Fallstricke
- Kompatibilität: Experimentelle API, bisher nur in Chromium-Browsern (Chrome/Edge ab etwa Version 138) für Desktop verfügbar. Firefox und Safari unterstützen sie nicht. Prüfe die Unterstützung vorher mit
'LanguageDetector' in self. Die API steht nur in sicheren Kontexten (HTTPS) zur Verfügung. - Einheit:
inputQuotazählt meist Token, keine Zeichen. Wie viel ein Text verbraucht, verrät nurmeasureInputUsage(). Vergleiche mittext.lengthsind unzuverlässig. - Nur lesbar: Eine Zuweisung wird ignoriert (im strict mode gibt es einen
TypeError). Das Limit lässt sich nicht erhöhen. - Wird das Limit überschritten, lehnt
detect()den Promise mit einemQuotaExceededErrorab. - Das Modell muss eventuell erst heruntergeladen werden.
create()braucht dann unter Umständen eine Nutzeraktion und kann dauern. Den Fortschritt verfolgst du über die Optionmonitor. - Nach
destroy()ist die Instanz nicht mehr nutzbar. Der Wert voninputQuotaist dann ohne Bedeutung.