Start · Sprachen · JavaScript · Referenz · LanguageModel.availability()

LanguageModel.availability()

Methode

Prüft asynchron, ob das eingebaute Sprachmodell des Browsers mit den angegebenen Optionen nutzbar ist, ohne eine Sitzung zu erzeugen oder einen Download zu starten.

seit JavaScript Experimentell: Chrome 138+ (Erweiterungen), Web pe Kategorie: webapi

Signatur

LanguageModel.availability(options)

Beschreibung

LanguageModel.availability() ist eine statische Methode der Prompt API. Sie gehört zu den eingebauten KI-Funktionen des Browsers („Built-in AI“). Die Methode gibt ein Promise zurück. Es wird mit einer Zeichenkette erfüllt, die anzeigt, ob das lokale Sprachmodell für eine bestimmte Konfiguration bereitsteht. Dazu gehören zum Beispiel die Ein- und Ausgabearten (Text, Bild, Audio) und die Sprachen.

Rufen Sie die Methode vor LanguageModel.create() auf. So können Sie entscheiden, ob Sie die KI-Funktion anbieten, erst einen Download-Hinweis zeigen oder auf eine Lösung ohne KI bzw. auf dem Server ausweichen. Der Aufruf selbst lädt kein Modell herunter und erzeugt keine Sitzung.

Mögliche Rückgabewerte:

  • "unavailable": Das Gerät oder der Browser unterstützt die angeforderte Konfiguration nicht.
  • "downloadable": Die Konfiguration wird unterstützt, aber das Modell (oder ein Teil davon) muss erst heruntergeladen werden.
  • "downloading": Ein Download läuft gerade.
  • "available": Das Modell ist sofort einsatzbereit.

Übergeben Sie hier dieselben Optionen, die Sie später an create() übergeben wollen. Die Antwort hängt von diesen Optionen ab. Mit Englisch als Text kann das Modell zum Beispiel "available" melden, mit Audio-Eingabe dagegen "unavailable".

Parameter

Name Typ Default Beschreibung
$options Object {} Die Konfiguration, die geprüft werden soll. Sie hat dieselbe Form wie die Optionen von LanguageModel.create().
$options.expectedInputs Array<{type: "text"|"image"|"audio", languages?: string[]}> Die erwarteten Eingabearten und optional deren Sprachen als BCP-47-Codes, z. B. [{ type: "text", languages: ["de", "en"] }].
$options.expectedOutputs Array<{type: "text", languages?: string[]}> Die erwarteten Ausgabearten und -sprachen, z. B. [{ type: "text", languages: ["de"] }].
$options.tools Array<Object> Optionale Werkzeug-Definitionen für Tool-Calling. Die Unterstützung hängt von der Implementierung ab.
$options.topK number Sampling-Parameter. Mancherorts nur in Erweiterungen erlaubt. Muss zusammen mit temperature angegeben werden.
$options.temperature number Sampling-Temperatur. Muss zusammen mit topK angegeben werden. Die gültigen Grenzen liefert LanguageModel.params().

Rückgabewert

Typ
Promise<"unavailable" | "downloadable" | "downloading" | "available">
Beschreibung
Ein Promise, das mit dem Verfügbarkeitsstatus als Zeichenkette erfüllt wird. Bei ungültigen Optionen, z. B. einem ungültigen Sprachcode, wird es abgelehnt (TypeError oder RangeError).

Beispiele

Einfache Verfügbarkeitsprüfung mit Funktionserkennung

const checkPromptApi = async () => {
  if (!('LanguageModel' in self)) {
    return 'Prompt API wird nicht unterstützt';
  }
  const status = await LanguageModel.availability();
  return `Status: ${status}`;
};

checkPromptApi().then(console.log);
Status: available

Deutsche Ein- und Ausgabe prüfen und Oberfläche anpassen

const options = {
  expectedInputs: [{ type: 'text', languages: ['de'] }],
  expectedOutputs: [{ type: 'text', languages: ['de'] }]
};

const button = document.querySelector('#ai-summary');

const status = await LanguageModel.availability(options);

switch (status) {
  case 'available':
    button.textContent = 'Zusammenfassen';
    break;
  case 'downloadable':
  case 'downloading':
    button.textContent = 'KI-Modell laden & zusammenfassen';
    break;
  default:
    button.hidden = true; // Ausweichen auf Server-Lösung
}
console.log(status);
downloadable

Download nach Nutzeraktion starten und Fortschritt anzeigen

const options = {
  expectedInputs: [{ type: 'text', languages: ['de'] }],
  expectedOutputs: [{ type: 'text', languages: ['de'] }]
};

document.querySelector('#start').addEventListener('click', async () => {
  const status = await LanguageModel.availability(options);
  if (status === 'unavailable') {
    console.warn('Kein lokales Modell möglich');
    return;
  }
  // create() braucht bei einem Download eine Nutzeraktivierung
  const session = await LanguageModel.create({
    ...options,
    monitor(m) {
      m.addEventListener('downloadprogress', (e) => {
        console.log(`Download: ${Math.round(e.loaded * 100)} %`);
      });
    }
  });
  const answer = await session.prompt('Nenne drei Vorteile von lokaler KI.');
  console.log(answer);
});
Download: 0 % Download: 57 % Download: 100 % 1. Datenschutz … 2. Offline-Nutzung … 3. Keine Serverkosten …

Multimodale Eingabe (Bild) prüfen

const imageStatus = await LanguageModel.availability({
  expectedInputs: [{ type: 'text' }, { type: 'image' }]
});
console.log(imageStatus === 'unavailable'
  ? 'Bildanalyse nicht möglich'
  : `Bildanalyse: ${imageStatus}`);
Bildanalyse: available

// Wichtig · Fallstricke

  • Experimentell: Die Prompt API ist noch kein Standard. In Chrome ist sie für Erweiterungen ab Version 138 verfügbar, im Web nur über einen Origin Trial oder Flags. Firefox und Safari unterstützen sie derzeit nicht. Prüfen Sie immer zuerst mit 'LanguageModel' in self.
  • Hardware-Anforderungen: Auch in unterstützten Browsern kann "unavailable" zurückkommen. Mögliche Gründe sind zu wenig Speicherplatz, RAM oder GPU-Leistung, ein nicht unterstütztes Betriebssystem oder Mobilgeräte.
  • Status ist eine Momentaufnahme: "downloadable" kann jederzeit zu "downloading" oder "available" wechseln. Speichern Sie den Wert nicht dauerhaft, sondern prüfen Sie ihn vor jeder Sitzung neu.
  • Nutzeraktivierung: availability() braucht keine Nutzeraktion. Wenn create() bei "downloadable" einen Download auslöst, ist aber eine vorübergehende Nutzeraktivierung nötig, z. B. ein Klick.
  • Gleiche Optionen verwenden: Das Ergebnis gilt nur für die übergebene Konfiguration. Weichen die Optionen bei create() ab, kann das Verhalten anders sein.
  • Fingerprinting/Datenschutz: Der Status kann etwas über das Gerät verraten. Browser können die Antworten deshalb vereinheitlichen oder die API durch eine Permissions Policy (language-model) in iframes sperren.
  • topK und temperature müssen immer gemeinsam angegeben werden. Im Web-Kontext sind sie teilweise nicht erlaubt.