LanguageModel: Methode measureContextUsage()
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 Methode measureContextUsage() der Schnittstelle LanguageModel schätzt, wie viele Tokens des Kontextfensters die angegebene Eingabe verbrauchen würde, ohne sie an das Modell zu senden oder den Zustand der Sitzung zu verändern.
So können Sie prüfen, wie viel Platz eine Eingabe im Kontextfenster benötigt, bevor Sie entscheiden, ob Sie sie senden. Das Ergebnis lässt sich mit LanguageModel.contextWindow und LanguageModel.contextUsage vergleichen, um festzustellen, ob die Eingabe innerhalb der Grenze des Kontextfensters liegt.
Dies ist besonders nützlich für Anwendungen mit langen Kontexten, etwa für die Zusammenfassung von Dokumenten, bei denen Sie Inhalte möglicherweise aufteilen oder kürzen müssen, um innerhalb der Grenze des Kontextfensters zu bleiben.
Syntax
measureContextUsage(input)
measureContextUsage(input, options)
Parameter
input-
Der Inhalt, der dem Kontextfenster hinzugefügt werden soll. Dies ist entweder:
- Ein String – Kurzform für eine einzelne Textnachricht.
- Ein Array von Objekten, von denen jedes eine einzelne Nachricht in einer Konversation mit einem Sprachmodell darstellt.
Die Objekte können folgende Eigenschaften haben:
role-
Ein String, der 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 liefert, etwa seine Persona oder das Format seiner Antworten. Solche Nachrichten dienen hauptsächlich dazu, Kontext oder bisherigen Verlauf bereitzustellen und die Antworten des Modells weiter zu beeinflussen.
content-
Ein String, der einen textuellen Prompt darstellt, oder ein Array von Objekten. Jedes Objekt enthält folgende Eigenschaften:
type-
Ein Aufzählungswert, der die Art des Inhalts 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 ein String. Wenntypeden Wertaudiooderimagehat, kannvalueeiner von mehreren 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 vom Modell generierte Antwort behandelt und nicht als vollständiger Gesprächsbeitrag.
optionsOptional-
Optionen zur Messung der Kontextnutzung. Dazu gehören folgende Eigenschaften:
responseConstraint-
Ein Objekt mit der durch JSON Schema definierten Struktur, das das genaue Format festlegt, in dem die Ausgabe des Modells bereitgestellt werden soll. Wenn es angegeben ist und
omitResponseConstraintInputden Wertfalsehat, wird eine implementierungsabhängige Nachricht zur Beschreibung der Einschränkung in die Messung einbezogen. omitResponseConstraintInput-
Ein boolescher Wert; bei
truewird die automatische Nachricht zur Beschreibung der Einschränkung von der Messung ausgeschlossen. signal-
Ein
AbortSignal, mit dem der Vorgang abgebrochen werden kann.
Rückgabewert
Ein Promise, das mit einer Number erfüllt wird, die angibt, wie viele Tokens des Kontextfensters die Eingabe verbrauchen würde.
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 ihrvaluekein String 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.
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:
omitResponseConstraintInputden Werttruehat, aberresponseConstraintnicht angegeben wurde.roleeiner Nachricht den Wertsystemhat, die Nachricht aber nicht als erste an den Kontext übergeben wurde.
Beispiele
>Warnung, wenn das Kontextfenster fast voll ist
Im folgenden Beispiel prüft eine Funktion, ob noch Platz im Kontextfenster verfügbar ist, bevor LanguageModel.prompt() aufgerufen wird. Sie berechnet zunächst den verbleibenden Platz und übergibt diesen Wert an measureContextUsage(). Wenn needed kleiner oder gleich remaining ist, gibt sie true zurück und die Sitzung wird fortgesetzt.
const promptText = "Let me ask you an interesting question...";
const session = await LanguageModel.create();
async function contextAvailable(promptText) {
const remaining = session.contextWindow - session.contextUsage;
const needed = await session.measureContextUsage(promptText);
return needed <= remaining;
}
if (await contextAvailable(promptText)) {
const response = await session.prompt(promptText);
console.log(response);
} else {
console.warn("Prompt skipped: Not enough context window remaining.");
}
Spezifikationen
| Spezifikation |
|---|
| Prompt API> # dom-languagemodel-measurecontextusage> |