LanguageModel: Statische Methode create()
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die statische Methode create() der Schnittstelle LanguageModel erstellt eine neue LanguageModel-Instanz und lädt die zugehörigen Modelldaten automatisch herunter, falls sie noch nicht verfügbar sind.
Syntax
LanguageModel.create()
LanguageModel.create(options)
Parameter
optionsOptional-
Ein Objekt mit den Optionen zum Erstellen einer
LanguageModel-Sitzung. Es kann folgende Eigenschaften enthalten:expectedInputs-
Ein Array von Objekten, die die erforderlichen Eingabemodalitäten und Sprachen beschreiben. Jedes Objekt kann folgende Eigenschaften enthalten:
type-
Ein Aufzählungswert, der den Inhaltstyp angibt. Der Wert muss einer der folgenden sein:
text-
Einfacher Text.
image-
Bildinhalt.
audio-
Audioinhalt.
tool-call-
Ein vom Modell ausgelöster Werkzeugaufruf.
tool-response-
Das Ergebnis eines Werkzeugaufrufs.
languagesOptional-
Ein Array von Zeichenfolgen mit BCP-47-Sprachtags (zum Beispiel
en,fr,ja), die die Sitzung für diesen Inhaltstyp verarbeiten können soll. Der User Agent verwendet diese Liste, um festzustellen, ob das Modell die angegebenen Sprachen unterstützt, und um geeignete Modellkomponenten oder Feinabstimmungen auszuwählen.
expectedOutputs-
Ein Array von Objekten, die die erforderlichen Ausgabemodalitäten und Sprachen beschreiben. Jedes Objekt kann folgende Eigenschaften enthalten:
type-
Ein Aufzählungswert, der den Inhaltstyp angibt. Der Wert muss einer der folgenden sein:
text-
Einfacher Text.
image-
Bildinhalt.
audio-
Audioinhalt.
tool-call-
Ein vom Modell ausgelöster Werkzeugaufruf.
tool-response-
Das Ergebnis eines Werkzeugaufrufs.
languagesOptional-
Ein Array von Zeichenfolgen mit BCP-47-Sprachtags (zum Beispiel
en,fr,ja), die die Sitzung für diesen Inhaltstyp verarbeiten können soll. Der User Agent verwendet diese Liste, um festzustellen, ob das Modell die angegebenen Sprachen unterstützt, und um geeignete Modellkomponenten oder Feinabstimmungen auszuwählen.
initialPrompts-
Ein Array von Objekten, die Nachrichten darstellen, die beim Erstellen einer Sprachmodellsitzung übergeben werden. Dadurch kann sich das Modell an Anweisungen oder einen vorherigen Dialog „erinnern“, ohne dass diese bei jeder neuen Anfrage erneut gesendet werden müssen. Jedes Objekt kann folgende Eigenschaften enthalten:
role-
Eine Zeichenfolge, die angibt, aus welcher Perspektive die Nachricht formuliert ist. Der Wert muss einer der folgenden sein:
system-
Eine Anweisung auf Systemebene, die das allgemeine Verhalten des Modells steuert. Sie muss die erste Anweisung sein, die an das Modell übergeben wird.
user-
Eine Nachricht der benutzenden Person, auf die die API antworten soll.
assistant-
Eine Eingabe, die Kontext für den KI-Assistenten bereitstellt, etwa seine Persona oder das Format seiner Antworten. Solche Nachrichten dienen hauptsächlich dazu, Kontext beziehungsweise einen Gesprächsverlauf bereitzustellen und die Antworten des Modells weiter zu beeinflussen.
content-
Eine Zeichenfolge, die einen textuellen Prompt darstellt, oder ein Array von Objekten. Jedes Objekt enthält folgende Eigenschaften:
type-
Ein Aufzählungswert, der den Inhaltstyp angibt. Der Wert kann einer der folgenden sein:
audio-
Audioinhalt.
image-
Bildinhalt.
text-
Textinhalt.
tool-call-
Ein vom Modell ausgelöster Werkzeugaufruf.
tool-response-
Das Ergebnis eines Werkzeugaufrufs.
value-
Der Inhalt der Nachricht. Wenn
typeden Werttexthat, ist dies immer eine Zeichenfolge. Wenntypeden Wertaudiooderimagehat, kannvalueeiner von mehreren unterschiedlichen Objekttypen sein; siehe Welche Datentypen werden akzeptiert?.
prefixOptional-
Ein boolescher Wert, der standardmäßig
falseist. Beitruewird die Nachricht als Präfix für die nächste generierte Antwort des Modells behandelt und nicht als abgeschlossener Gesprächsbeitrag.
monitor-
Eine Referenz auf eine
CreateMonitor-Callback-Funktion, die Ereignisse zum Downloadfortschritt empfängt. signal-
Ein
AbortSignal, mit dem die Erstellung der Sitzung abgebrochen werden kann. tools-
Ein Array von Objekten, die der KI verfügbare Werkzeuge darstellen. Jedes Objekt kann folgende Eigenschaften enthalten:
name-
Eine Zeichenfolge, die dem Werkzeug einen eindeutigen Namen gibt, mit dem das Modell bei einem Werkzeugaufruf darauf verweist.
description-
Eine Zeichenfolge, die beschreibt, was das Werkzeug tut. Das Modell verwendet diese Beschreibung, um zu entscheiden, ob und wann es das Werkzeug aufruft.
inputSchema-
Ein JSON-Schema, das die Eingabeparameter des Werkzeugs beschreibt. Das Modell verwendet dieses Schema, um die Argumente für die
execute-Funktion des Werkzeugs zusammenzustellen. execute-
Eine Callback-Funktion, die der User Agent aufruft, wenn das Modell dieses Werkzeug aufruft. Ihre Argumente hängen vom verwendeten Modell ab. Sie muss ein
Promisezurückgeben, das mit einemStringals Ergebnis des Werkzeugs erfüllt wird.
Rückgabewert
Ein Promise, das mit einer neuen LanguageModel-Instanz erfüllt wird.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn der Vorgang über die Option
signalabgebrochen wurde. InvalidStateErrorDOMException-
Wird ausgelöst, wenn das aufrufende Dokument nicht vollständig aktiv ist.
NotAllowedErrorDOMException-
Wird ausgelöst, wenn die Verwendung der Methode durch eine
language-model-Permissions-Policyblockiert wird. NotSupportedErrorDOMException-
Wird ausgelöst, wenn:
roleeiner Nachricht den Wertassistanthat und ihrtypeeinen anderen Wert alstexthat.typeeiner Nachricht den Werttexthat und ihrvaluekeine Zeichenfolge ist.- Der Eingabe- oder Ausgabetext in einer Sprache verfasst ist, die der User Agent für Prompts nicht unterstützt.
typeeiner Nachricht den Wertimageoderaudiohat, dieser Typ aber nicht inexpectedInputsaufgeführt ist odervaluekein akzeptierter Datentyp ist.
OperationErrorDOMException-
Wird ausgelöst, wenn die Erstellung aus einem anderen Grund fehlschlägt, der nicht bei den übrigen Ausnahmetypen aufgeführt ist.
QuotaExceededErrorDOMException-
Wird ausgelöst, wenn der in
initialPromptsbereitgestellte Inhalt dasLanguageModel.contextWindowdes Modells überschreitet. SyntaxErrorDOMException-
Wird ausgelöst, wenn:
- Das Nachrichten-Array keine Nachrichten enthält.
- Die Eigenschaft
prefixeiner Nachricht auftruegesetzt ist und:roleder Nachricht nichtassistantist.- Die Nachricht nicht das letzte Element im Nachrichten-Array ist.
TypeError-
Wird ausgelöst, wenn:
roleeiner Nachricht den Wertsystemhat, die Nachricht aber nicht die erste war, die an den Kontext übergeben wurde.
Beschreibung
Die Methode create() erstellt eine neue Sprachmodellsitzung und lädt das Modell automatisch herunter, falls es noch nicht verfügbar ist.
Sie können den Fortschritt eines Modelldownloads mit der Option monitor überwachen.
Prüfen Sie vor dem Aufruf von create() mit LanguageModel.availability(), ob die gewünschte Konfiguration unterstützt wird.
Nachdem eine Sitzung erstellt wurde, können Sie über ihre Instanzmethoden – LanguageModel.prompt(), LanguageModel.promptStreaming(), LanguageModel.append() und weitere – mit dem Modell interagieren.
Sicherheit
Eine vorübergehende Benutzeraktivierung ist erforderlich. Damit diese Funktion genutzt werden kann, muss die benutzende Person mit der Seite oder einem UI-Element interagieren.
Beispiele
>Eine einfache Sitzung erstellen
Dieses Beispiel erstellt eine Standardsitzung und fragt anschließend nach dem Ergebnis der Addition von 2 und 2.
Text wird standardmäßig unterstützt, daher sollte das heruntergeladene Modell für diesen Fall geeignet sein.
const session = await LanguageModel.create();
const answer = await session.prompt("What is 2 + 2?");
console.log(answer);
Siehe auch Die Prompt API verwenden > Eine LanguageModel-Sitzung erstellen.
Eine Sitzung mit einem System-Prompt erstellen
Das folgende Beispiel gibt der KI vor dem Generieren einer Antwort Anweisungen dazu, welche Persona sie annehmen soll.
const session = await LanguageModel.create({
initialPrompts: [
{
role: "system",
content: "You are a concise assistant. Respond in one sentence.",
},
],
});
const response = await session.prompt("What is photosynthesis?");
console.log(response);
Downloadfortschritt überwachen
Dieser Code zeigt, wie Sie den Fortschritt eines Modelldownloads überwachen können. Beachten Sie, dass das Ereignis nie ausgelöst wird, wenn das Modell nicht verfügbar oder bereits vorhanden ist.
const session = await LanguageModel.create({
monitor(monitor) {
monitor.addEventListener("downloadprogress", ({ loaded, total }) => {
console.log(`Model download: ${Math.round((loaded / total) * 100)}%`);
});
},
});
Siehe auch Die Prompt API verwenden > Downloadfortschritt überwachen.
Few-Shot-Prompts bereitstellen
Das folgende Beispiel zeigt, wie Sie mit einem Few-Shot-Prompt die API auffordern, eine bestimmte Aufgabe (eine Übersetzung ins Französische) in einem bestimmten Format auszuführen. Anschließend werden einige Beispiele bereitgestellt, anhand derer sie das richtige Ausgabeformat lernen kann.
const session = await LanguageModel.create({
expectedInputs: [{ type: "text", languages: ["en"] }],
expectedOutputs: [{ type: "text", languages: ["en", "fr"] }],
initialPrompts: [
{
role: "system",
content:
"Translate the user's input to French. Use the output format 'English input: French output'",
},
{ role: "user", content: "Hello" },
{ role: "assistant", content: "Hello: Bonjour" },
{ role: "user", content: "Goodbye" },
{ role: "assistant", content: "Goodbye: Au revoir" },
{ role: "user", content: "The train is late" },
{
role: "assistant",
content: "The train is late: Le train est en retard",
},
{ role: "user", content: "My shoes are pink" },
{
role: "assistant",
content: "My shoes are pink: Mes chaussures sont roses",
},
],
});
const result = await session.prompt("Window");
console.log(result); // "Window: Fenêtre"
Siehe auch Kontext mit anfänglichen und fortlaufenden Prompt-Eingaben hinzufügen > Few-Shot-Prompts.
Ein Werkzeug mit einer Callback-Funktion definieren
Dieses Beispiel erstellt eine Sitzung mit einem hypothetischen Werkzeug zum Abrufen des Wetters. Wenn das Modell entscheidet, das Werkzeug aufzurufen, ruft der User Agent execute() mit den vom Modell bereitgestellten Argumenten auf.
async function getWeatherData(location) {
const response = await fetch(
`https://api.example.com/weather?city=${location}`,
);
const data = await response.json();
return `${data.temp}°C, ${data.description}`;
}
const session = await LanguageModel.create({
tools: [
{
name: "getWeather",
description: "Returns the current weather for a given city.",
inputSchema: {
type: "object",
properties: {
location: { type: "string", description: "The city name." },
},
required: ["location"],
},
async execute(...args) {
const location = args[0];
return await getWeatherData(location);
},
},
],
});
const response = await session.prompt("What's the weather like in Tokyo?");
console.log(response);
Eine Sitzung abbrechen
Das folgende Beispiel ermöglicht es, einen Prompt abzubrechen. Dazu wird zunächst ein AbortController erstellt und seine Methode abort() dem Click-Handler einer Abbrechen-Schaltfläche zugewiesen. Anschließend wird create() aufgerufen und AbortController.signal als Eigenschaft signal übergeben.
const controller = new AbortController();
const cancelButton = document.getElementById("cancel-button");
cancelButton.addEventListener("click", () => controller.abort());
const session = await LanguageModel.create({
signal: controller.signal,
initialPrompts: [
{
role: "system",
content: "You are a helpful assistant.",
},
],
});
Siehe auch Die Prompt API verwenden > Vorgänge abbrechen und Instanzen zerstören.
Spezifikationen
| Spezifikation |
|---|
| Prompt API> # dom-languagemodel-create> |