LanguageModel: create() statische Methode
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 create() statische Methode der LanguageModel Schnittstelle erstellt eine neue Instanz von LanguageModel und lädt automatisch die entsprechenden Modelldaten herunter, falls diese noch nicht verfügbar sind.
Syntax
LanguageModel.create()
LanguageModel.create(options)
Parameter
optionsOptional-
Ein Objekt, das die Optionen für die Erstellung einer
LanguageModelSitzung darstellt. Eigenschaften beinhalten:expectedInputs-
Ein Array von Objekten, die die erforderlichen Eingabemodalitäten und Sprachen darstellen. Jedes Objekt kann die folgenden Eigenschaften beinhalten:
type-
Ein enumerierter Wert, der den Inhaltstyp angibt. Muss einer der folgenden sein:
text-
Klartext-Inhalt.
image-
Bildinhalt.
audio-
Audioinhalt.
tool-call-
Ein vom Modell ausgeführter Werkzeuginvokation.
tool-response-
Das Ergebnis einer Werkzeuginvokation.
languagesOptional-
Ein Array von Zeichenfolgen, das BCP 47 Sprach-Tags enthält (zum Beispiel,
en,fr,ja), die die Sitzung für diesen Inhaltstyp behandeln soll. Der User-Agent verwendet diese Liste, um zu bestimmen, 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 darstellen. Jedes Objekt kann die folgenden Eigenschaften beinhalten:
type-
Ein enumerierter Wert, der den Inhaltstyp angibt. Muss einer der folgenden sein:
text-
Klartext-Inhalt.
image-
Bildinhalt.
audio-
Audioinhalt.
tool-call-
Ein vom Modell ausgeführter Werkzeuginvokation.
tool-response-
Das Ergebnis einer Werkzeuginvokation.
languagesOptional-
Ein Array von Zeichenfolgen, das BCP 47 Sprach-Tags enthält (zum Beispiel,
en,fr,ja), die die Sitzung für diesen Inhaltstyp behandeln soll. Der User-Agent verwendet diese Liste, um zu bestimmen, 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 während der Erstellung einer Sprachmodell-Sitzung übermittelt werden. Dies ermöglicht es dem Modell, sich Anweisungen oder vorherige Dialoge "zu merken", ohne sie bei jeder neuen Anfrage erneut senden zu müssen. Jedes Objekt kann die folgenden Eigenschaften beinhalten:
role-
Eine Zeichenfolge, die angibt, aus welcher Sicht die Nachricht formuliert ist. Muss einer der folgenden sein:
system-
Eine systemweite Anweisung, die das allgemeine Verhalten des Modells leitet. Dies muss die erste Anweisung sein, die dem Modell übermittelt wird.
user-
Eine Nachricht des Nutzers, auf die die API antworten soll.
assistant-
Eine Eingabe, die Kontext für den AI-Assistenten bietet, wie z.B. seine Persona oder das Format seiner Antworten. Solche Nachrichten dienen hauptsächlich dazu, Kontext/Verlauf zu liefern und weiter zu formen, wie das Modell antwortet.
content-
Eine Zeichenfolge, die ein Text- oder ein Array von Objekten darstellt. Jedes Objekt enthält die folgenden Eigenschaften:
type-
Ein enumerierter Wert, der den Inhaltstyp repräsentiert. Dies kann einer der folgenden sein:
audio-
Audioinhalt.
image-
Bildinhalt.
text-
Textinhalt.
tool-call-
Ein vom Modell ausgeführter Werkzeuginvokation.
tool-response-
Das Ergebnis einer Werkzeuginvokation.
value-
Der Inhalt der Nachricht. Wenn der
typetextist, ist dies immer eine Zeichenfolge. Wenn dertypeaudiooderimageist, kann dervalueeiner von mehreren verschiedenen Objekttypen sein; siehe Welche Datentypen werden akzeptiert?.
prefixOptional-
Ein boolescher Wert, der standardmäßig
falseist. Wenn ertrueist, wird die Nachricht eher als Präfix für die nächste generierte Antwort des Modells behandelt als als vollständiger Zug.
monitor-
Ein Verweis auf eine
CreateMonitorRückruffunktion, um Ereignisse zum Downloadfortschritt zu empfangen. signal-
Ein
AbortSignal, um die Sitzungserstellung abzubrechen. tools-
Ein Array von Objekten, die die dem AI zur Verfügung stehenden Werkzeuge darstellen. Jedes Objekt kann die folgenden Eigenschaften beinhalten:
name-
Eine Zeichenfolge, die dem Werkzeug einen eindeutigen Namen gibt, den das Modell verwendet, um darauf zu verweisen, wenn es einen Werkzeuginvokation ausführt.
description-
Eine Zeichenfolge, die beschreibt, was das Werkzeug macht. Das Modell verwendet diese Beschreibung, um zu entscheiden, ob und wann das Werkzeug aufgerufen wird.
inputSchema-
Ein JSON Schema, das die Eingabeparameter des Werkzeugs beschreibt. Das Modell verwendet dieses Schema, um die Argumente zu konstruieren, die es an die
execute-Funktion des Werkzeugs übergibt. execute-
Eine Rückruffunktion, die vom User-Agent aufgerufen wird, wenn das Modell dieses Werkzeug aufruft. Ihre Argumente sind spezifisch für das Modell, das verwendet wird. Sie muss ein
Promisezurückgeben, das mit einerStringaufgelöst wird, die das Ergebnis des Werkzeugs darstellt.
Rückgabewert
Ein Promise, das mit einer neuen Instanz von LanguageModel aufgelöst wird.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn die Operation über die Option
signalabgebrochen wird. InvalidStateErrorDOMException-
Wird ausgelöst, wenn das aufrufende Dokument nicht vollständig aktiv ist.
NotAllowedErrorDOMException-
Wird ausgelöst, wenn die Nutzung der Methode durch eine
language-modelPermissions-Policyblockiert ist. NotSupportedErrorDOMException-
Wird ausgelöst, wenn:
- Die
roleeiner Nachrichtassistantist und ihrtypeetwas anderes alstextist. - Der
typeeiner Nachrichttextist und ihrvaluekeine Zeichenkette ist. - Der Eingabe- oder Ausgabe-Text in einer Sprache vorliegt, die der User-Agent für das Prompting nicht unterstützt.
- Der
typeeiner Nachrichtimageoderaudioist, dieser Typ aber nicht inexpectedInputsaufgeführt ist, oder dervaluekein akzeptierter Datentyp ist.
- Die
OperationErrorDOMException-
Wird ausgelöst, wenn die Erstellung aus einem anderen Grund als den in den anderen Ausnahmearten aufgeführten fehlschlägt.
QuotaExceededErrorDOMException-
Wird ausgelöst, wenn der in
initialPromptsbereitgestellte Inhalt dasLanguageModel.contextWindowdes Modells überschreitet. SyntaxErrorDOMException-
Wird ausgelöst, wenn:
- Keine Nachrichten im Nachrichtenarray enthalten sind.
- Die
prefixEigenschaft einer Nachricht auftruegesetzt ist und:- Die
roleder Nachricht nichtassistantist. - Die Nachricht nicht das letzte Element im Nachrichtenarray ist.
- Die
TypeErrorDOMException-
Wird ausgelöst, wenn:
- Die
roleeiner Nachrichtsystemist, sie aber nicht die erste Nachricht ist, die an den Kontext übergeben wird.
- Die
Beschreibung
Die create() Methode erstellt eine neue Sprachmodell-Sitzung 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.
Bevor Sie create() aufrufen, verwenden Sie LanguageModel.availability(), um zu überprüfen, ob die gewünschte Konfiguration unterstützt wird.
Sobald eine Sitzung erstellt ist, verwenden Sie deren Instanzmethoden — LanguageModel.prompt(), LanguageModel.promptStreaming(), LanguageModel.append() und andere — um mit dem Modell zu interagieren.
Sicherheit
Transiente Benutzeraktivierung ist erforderlich. Der Benutzer muss mit der Seite oder einem UI-Element interagieren, damit diese Funktion funktioniert.
Beispiele
>Erstellen einer einfachen Sitzung
Dieses Beispiel erstellt eine Standardsitzung und fordert sie dann für das Ergebnis der Addition von 2 und 2 auf.
Beachten Sie, dass Text standardmäßig unterstützt wird, sodass das heruntergeladene Modell für diesen Fall geeignet sein sollte.
const session = await LanguageModel.create();
const answer = await session.prompt("What is 2 + 2?");
console.log(answer);
Siehe auch Verwendung der Prompt API > Erstellung einer LanguageModel Sitzung.
Erstellung einer Sitzung mit einem System-Prompt
Das folgende Beispiel liefert der KI Anweisungen zur Annahme einer Persona, bevor eine Antwort generiert wird.
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);
Überwachung des Download-Fortschritts
Dieser Code zeigt, wie Sie den Download-Fortschritt eines Modells überwachen können. Beachten Sie, dass wenn das Modell nicht verfügbar oder bereits verfügbar ist, das Ereignis nie ausgelöst wird.
const session = await LanguageModel.create({
monitor(monitor) {
monitor.addEventListener("downloadprogress", ({ loaded, total }) => {
console.log(`Model download: ${Math.round((loaded / total) * 100)}%`);
});
},
});
Siehe auch Verwendung der Prompt API > Überwachung des Download-Fortschritts.
Bereitstellung von Few-Shot-Prompts
Das folgende Beispiel zeigt, wie man ein Few-Shot-Prompt verwendet, um die API nach einer bestimmten Aufgabe (französische Übersetzung) in einem spezifischen Format zu fragen, bevor einige Beispiele bereitgestellt werden, um das richtige Ausgabeformat zu erlernen.
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 Hinzufügen von Kontext mit initialen und fortlaufenden Prompt-Eingaben > Few-Shot-Prompts.
Definition eines Werkzeugs mit einer Rückruffunktion
Dieses Beispiel erstellt eine Sitzung mit einem hypothetischen "Wetter abrufen" Werkzeug. Wenn das Modell beschließt, 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"],
},
execute: async (...args) => {
const location = args[0];
return await getWeatherData(location);
},
},
],
});
const response = await session.prompt("What's the weather like in Tokyo?");
console.log(response);
Abbruch einer Sitzung
Das folgende Beispiel ermöglicht es einem Benutzer, einen Prompt abzubrechen. Dies geschieht, indem zuerst ein AbortController erstellt und dessen abort() Methode einem Abbrechen-Button-Click-Handler zugewiesen wird. Anschließend wird create() aufgerufen und AbortController.signal als signal Eigenschaft ü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 Verwendung der Prompt API > Abbruch von Operationen und Zerstörung von Instanzen.
Spezifikationen
| Spezifikation |
|---|
| Prompt API> # dom-languagemodel-create> |