LanguageModel: append()-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 append()-Methode der LanguageModel-Schnittstelle fügt dem Kontextfenster der Sitzung Inhalte hinzu, ohne eine Modellantwort zu erzeugen. Sie gibt eine Promise zurück, die erfüllt wird, sobald die Inhalte erfolgreich in den Kontext geladen wurden. Verwenden Sie diese Methode, um einen Kontext vorzuladen, bevor Sie dem Modell eine Frage stellen.
Ein Kontext kann aus einem Dokument, einer Unterhaltung, einem Verlauf oder Hintergrundinformationen bestehen. Sie können die append()-Methode jederzeit während der Sitzung aufrufen.
Syntax
append(input)
append(input, options)
Parameter
input-
Der Inhalt, der dem Kontextfenster hinzugefügt werden soll. Dies ist entweder:
- Eine Zeichenfolge – Kurzform für eine einzelne Textnachricht.
- Ein Array von Objekten, die jeweils eine einzelne Nachricht in einer Unterhaltung mit einem Sprachmodell darstellen.
Die Objekte können folgende Eigenschaften haben:
role-
Eine Zeichenfolge, die angibt, aus welcher Perspektive die Nachricht formuliert ist. Muss einer der folgenden Werte sein:
system-
Eine Anweisung auf Systemebene, die das allgemeine Verhalten des Modells steuert. Dies muss die erste Anweisung sein, die an das Modell übergeben wird.
user-
Eine Nachricht des Benutzers, auf die die API antworten soll.
assistant-
Eine Eingabe, die dem KI-Assistenten Kontext bereitstellt, etwa seine Persona oder das Format seiner Antworten. Solche Nachrichten dienen hauptsächlich dazu, Kontext oder einen Verlauf 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 die folgenden Eigenschaften:
type-
Ein Aufzählungswert, der den Inhaltstyp angibt. Dies kann einer der folgenden Werte sein:
audio-
Audioinhalt.
image-
Bildinhalt.
text-
Textinhalt.
tool-call-
Ein vom Modell ausgelöster Tool-Aufruf.
tool-response-
Das Ergebnis eines Tool-Aufrufs.
value-
Der Inhalt der Nachricht. Wenn
typeden Werttexthat, ist dies immer eine Zeichenfolge. Wenntypeden Wertaudiooderimagehat, kannvalueeinem von mehreren verschiedenen Objekttypen entsprechen; siehe Welche Datentypen werden akzeptiert?.
prefixOptional-
Ein boolescher Wert, standardmäßig
false. Beitruewird die Nachricht als Präfix für die nächste generierte Antwort des Modells behandelt und nicht als vollständiger Gesprächsbeitrag.
optionsOptional-
Ein Objekt mit den übergebbaren Optionen. Dazu gehört:
signal-
Ein
AbortSignal, mit dem sich der Vorgang des Hinzufügens abbrechen lässt.
Rückgabewert
Eine Promise, die mit undefined erfüllt wird, sobald die Inhalte in das Kontextfenster vorgeladen wurden. Bei einem Fehler wird sie mit einem der folgenden Ausnahme-Werte zurückgewiesen.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn der Vorgang über die Option
signalabgebrochen wurde. 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 wurde odervaluekein akzeptierter Datentyp ist.
OperationErrorDOMException-
Wird ausgelöst, wenn das Vorladen aus einem anderen Grund fehlschlägt, der nicht unter den übrigen Ausnahmetypen aufgeführt ist.
QuotaExceededErrorDOMException-
Wird ausgelöst, wenn das Hinzufügen von
inputdazu führen würde, dass die Kontextnutzung der Sitzung den Wert vonLanguageModel.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 an den Kontext übergebene Nachricht war.
Beispiele
Kontext vor einer Prompt-Anfrage hinzufügen
Dieses Beispiel zeigt, wie Sie vor dem Aufruf von prompt() dem Kontext Inhalte mit der Rolle user hinzufügen.
Beachten Sie, dass wir in diesem Fall nur die Texteingabe (documentText) angeben müssen, da user die Standardrolle ist.
const documentText = "This is my important essay...";
const session = await LanguageModel.create();
// Preload the document text into context
await session.append(documentText);
// Now ask questions about the document
const summary = await session.prompt(
"Summarize the key points of this document.",
);
console.log(summary);
Kontext mit einem Abbruchsignal hinzufügen
Mit einem Abbruchsignal können Sie den Vorgang des Hinzufügens abbrechen. Das folgende Beispiel übergibt ein AbortSignal an signal und ruft nach 3 Sekunden dessen Methode abort() auf.
const controller = new AbortController();
setTimeout(() => controller.abort(), 3000);
try {
await session.append(
"Here is some background context for future questions.",
{
signal: controller.signal,
},
);
console.log("Context appended successfully.");
} catch (err) {
if (err.name === "AbortError") {
console.log("Append was aborted.");
}
}
Kontextnutzung nach dem Hinzufügen prüfen
Der folgende Code zeigt, wie Sie nach dem Hinzufügen einer großen Menge an Kontext die Anzahl der verwendeten Tokens protokollieren.
const largeDocument = "This is my large body of text...";
const session = await LanguageModel.create();
await session.append(largeDocument);
console.log(
`Context used: ${session.contextUsage} / ${session.contextWindow} tokens`,
);
Spezifikationen
| Spezifikation |
|---|
| Prompt API> # dom-languagemodel-append> |