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 des LanguageModel Interfaces fügt Inhalt zum Kontextfenster der Sitzung hinzu, ohne eine Antwort des Modells zu generieren. Sie gibt ein Promise zurück, das aufgelöst wird, wenn der Inhalt erfolgreich in den Kontext geladen wurde. Verwenden Sie diese Methode, um einen Kontext vorzuladen, bevor Sie dem Modell eine Frage stellen.
Ein Kontext kann ein Dokument, ein Gespräch, eine Historie oder Hintergrundinformationen sein. Sie können die append()-Methode zu jedem Zeitpunkt während der Lebensdauer der Sitzung aufrufen.
Syntax
append(input)
append(input, options)
Parameter
input-
Der Inhalt, der dem Kontextfenster hinzugefügt werden soll. Dies ist entweder:
- Ein String — Kurzform für eine einzelne textuelle Nachricht.
- Ein Array von Objekten, die jeweils eine einzelne Nachricht in einem Gespräch mit einem Sprachmodell darstellen.
Objekte können die folgenden Eigenschaften haben:
role-
Ein String, der den Standpunkt angibt, aus dem die Nachricht formuliert ist. Muss eine der folgenden sein:
system-
Eine systemweite Anweisung, die das Gesamtverhalten des Modells leitet. Dies muss die erste Anweisung sein, die dem Modell übergeben wird.
user-
Eine Nachricht vom Benutzer, auf die die API reagieren soll.
assistant-
Eine Eingabe, die den KI-Assistenten mit Kontext versorgt, wie z.B. seine Persona oder das Format seiner Antworten. Solche Nachrichten dienen hauptsächlich dazu, Kontext/Verlauf bereitzustellen und zu beeinflussen, wie das Modell reagiert.
content-
Ein String, der ein textliches Prompt darstellt, oder ein Array von Objekten. Jedes Objekt umfasst die folgenden Eigenschaften:
type-
Ein enumerierter Wert, der die Art des Inhalts darstellt. Dies kann eine der folgenden sein:
audio-
Audio-Inhalt.
image-
Bildinhalt.
text-
Textinhalt.
tool-call-
Ein vom Modell ausgeführter Werkzeugaufruf.
tool-response-
Das Ergebnis eines Werkzeugaufrufs.
value-
Der Inhalt der Nachricht. Wenn der
typetextist, ist dies immer ein String. Wenn dertypeaudiooderimageist, kann dervalueeine der mehreren verschiedenen Objektarten sein; siehe Welche Datentypen werden akzeptiert?.
prefixOptional-
Ein boolescher Wert, der standardmäßig
falseist. Wenntrue, wird die Nachricht als Präfix für die nächste generierte Antwort des Modells behandelt, anstatt als vollständiger Turn.
optionsOptional-
Ein Objekt, das die übergebenen Optionen darstellt. Eigenschaften umfassen:
signal-
Ein
AbortSignal, um die Append-Operation abzubrechen.
Rückgabewert
Ein Promise, das mit undefined aufgelöst wird, wenn der Inhalt in das Kontextfenster vorgefüllt wurde, oder mit einem der folgenden Ausnahmewerte bei Fehlschlag abgelehnt wird.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn die Operation über die
signal-Option abgebrochen wurde. NotAllowedErrorDOMException-
Wird ausgelöst, wenn die Nutzung der Methode durch eine
language-modelPermissions-Policyblockiert wird. NotSupportedErrorDOMException-
Wird ausgelöst, wenn:
- Die
roleeiner Nachrichtassistantist und ihrtypeetwas anderes alstextist. - Der
typeeiner Nachrichttextist und ihrvaluekein String ist. - Der Eingabe- oder Ausgabetext in einer Sprache ist, die der Benutzeragent nicht für Prompts unterstützt.
- Der
typeeiner Nachrichtimageoderaudioist, aber der Typ nicht inexpectedInputsaufgeführt war, oder dervaluekein akzeptierter Datentyp ist.
- Die
OperationErrorDOMException-
Wird ausgelöst, wenn das Vorfüllen aus einem anderen, nicht in den anderen Ausnahmetypen aufgeführten Grund fehlschlägt.
QuotaExceededErrorDOMException-
Wird ausgelöst, wenn das Anhängen von
inputdazu führen würde, dass die Nutzung des Sitzungs-Kontextes das Modell'sLanguageModel.contextWindowüberschreitet. SyntaxErrorDOMException-
Wird ausgelöst, wenn:
- Keine Nachrichten im Nachrichtenarray enthalten sind.
- Die
prefix-Eigenschaft 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, diese aber nicht die erste Nachricht war, die dem Kontext übergeben wurde.
Beispiele
Kontext vor dem Prompten anhängen
Dieses Beispiel zeigt, wie einem Kontext für die Benutzerrolle hinzugefügt wird, bevor prompt() aufgerufen wird.
Beachten Sie, dass wir einfach Texteingaben (documentText) in diesem Fall angeben können, 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);
Anhängen von Kontext mit einem Abbruchsignal
Ein Abbruchsignal ermöglicht es, eine Append-Operation abzubrechen. Das folgende Beispiel übergibt ein AbortSignal an das signal-Mitglied und ruft seine abort()-Methode nach 3 Sekunden 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.");
}
}
Überprüfung der Kontextnutzung nach dem Anhängen
Der folgende Code zeigt, wie die Anzahl der Tokens protokolliert wird, die nach dem Anhängen einer großen Menge an Kontext verwendet wurden.
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> |