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 Inhalte in das Kontextfenster der Sitzung ein, ohne dass eine Antwort des Modells generiert wird. Sie gibt ein Promise zurück, das aufgelöst wird, wenn der Inhalt erfolgreich in den Kontext geladen wurde. Nutzen 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 jederzeit 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 kann entweder sein:
- 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 repräsentieren.
Die Objekte können die folgenden Eigenschaften haben:
role-
Ein String, der den Standpunkt angibt, aus dem 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 übergeben wird.
user-
Eine Nachricht des Benutzers, auf die die API reagieren soll.
assistant-
Eine Eingabe, die dem KI-Assistenten Kontext gibt, wie z.B. seine Persona oder das Format seiner Antworten. Solche Nachrichten dienen hauptsächlich dazu, Kontext/Verlauf bereitzustellen und die Reaktionen des Modells weiter zu formen.
content-
Ein String, der ein textuelles Prompt darstellt, oder ein Array von Objekten. Jedes Objekt enthält die folgenden Eigenschaften:
type-
Ein aufgezählter Wert, der den Inhaltstyp repräsentiert. Dies kann eines der folgenden sein:
audio-
Audioinhalt.
image-
Bildinhalt.
text-
Textueller Inhalt.
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 dervalueeiner von mehreren verschiedenen Objekttypen sein; siehe Welche Datentypen werden akzeptiert?.
prefixOptional-
Ein Boolescher Wert, der standardmäßig auf
falsesteht. Wenntrue, wird die Nachricht als Präfix für die nächste vom Modell generierte Antwort behandelt, anstatt als vollständige Runde.
optionsOptional-
Ein Objekt, das die übergebenen Optionen darstellt. Zu den Eigenschaften gehören:
signal-
Ein
AbortSignalzur Abbrechung der Anhängeoperation.
Rückgabewert
Ein Promise, das mit undefined aufgelöst wird, wenn der Inhalt in das Kontextfenster vorgefüllt wurde, oder mit einem der folgenden Ausnahmefehlerwerte bei einem Fehler abgelehnt wird.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn die Operation über die
signalOption abgebrochen wurde. NotAllowedErrorDOMException-
Wird ausgelöst, wenn die Nutzung der Methode durch eine
language-modelPermissions-Policyblockiert ist. NotSupportedErrorDOMException-
Wird ausgelöst, wenn:
- Eine Nachricht die
roleassistanthat und ihrtypeetwas anderes alstextist. - Eine Nachricht die
typetexthat und ihrvaluekein String ist. - Der Eingabetext oder Ausgabetext in einer Sprache ist, die der Benutzeragent nicht für Prompts unterstützt.
- Eine Nachricht die
typeimageoderaudiohat, aber der Typ nicht inexpectedInputsaufgeführt ist oder dervaluekein akzeptierter Datentyp ist.
- Eine Nachricht die
OperationErrorDOMException-
Wird ausgelöst, wenn das Vorfüllen aus einem anderen Grund fehlschlägt, der nicht in den anderen Ausnahmetypen aufgelistet ist.
QuotaExceededErrorDOMException-
Wird ausgelöst, wenn das Hinzufügen von
inputdie Kontextnutzung der Sitzung über dasLanguageModel.contextWindowdes Modells hinaus erhöhen würde. 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 eine Nachricht die
rolesystemhat, aber nicht die erste Nachricht ist, die an den Kontext übergeben wurde.
Beispiele
Kontext vor dem Prompt hinzufügen
Dieses Beispiel zeigt, wie man einen Kontext für die Benutzerrolle hinzufügen kann, bevor prompt() aufgerufen wird.
Beachten Sie, dass wir in diesem Fall einfach Texteingaben (documentText) 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);
Kontext mit einem Abbruchsignal hinzufügen
Ein Abbruchsignal ermöglicht es Ihnen, eine Anhängeoperation 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.");
}
}
Kontextnutzung nach dem Anhängen überprüfen
Der folgende Code zeigt, wie die Anzahl der nach dem Anhängen einer großen Menge an Kontext verwendeten Tokens protokolliert wird.
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> |