LanguageModel: measureContextUsage() 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 measureContextUsage() Methode der LanguageModel Schnittstelle schätzt, wie viele Kontextfenstertoken der gegebene Input verbrauchen würde, ohne ihn an das Modell zu senden oder den Zustand der Sitzung zu ändern.
Dies ermöglicht es Ihnen, zu überprüfen, wie viel des Kontextfensters ein gegebener Input erfordert, bevor Sie entscheiden, ob er gesendet werden soll. Das Ergebnis kann mit LanguageModel.contextWindow und LanguageModel.contextUsage verglichen werden, um zu bestimmen, ob der Input in das Limit des Kontextfensters passt.
Dies ist besonders nützlich für Anwendungen mit langem Kontext, wie z.B. Dokumentenzusammenfassungen, bei denen Sie möglicherweise den Inhalt aufteilen oder kürzen müssen, um innerhalb des Kontextfensterlimits 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, wobei jedes Objekt eine einzelne Nachricht in einem Gespräch mit einem Sprachmodell darstellt.
Objekte können folgende 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 vom Benutzer, auf die die API reagieren soll.
assistant-
Ein Input, der Kontext für den KI-Assistenten bereitstellt, wie seine Persona oder das Format seiner Antworten. Solche Nachrichten dienen hauptsächlich der Bereitstellung von Kontext/Historie und beeinflussen weiter, wie das Modell antwortet.
content-
Ein String, der ein textbasiertes Prompt darstellt, oder ein Array von Objekten. Jedes Objekt enthält die folgenden Eigenschaften:
type-
Ein enumerierter Wert, der den Inhaltstyp darstellt. Dies kann einer der folgenden sein:
audio-
Audiocontent.
image-
Bildinhalt.
text-
Textinhalt.
tool-call-
Ein vom Modell ausgegebener Werkzeuaufruf.
tool-response-
Das Ergebnis eines Werkzeuaufrufs.
value-
Der Inhalt der Nachricht. Wenn der
typetextist, ist dies immer ein String. Wenn dertypeaudiooderimageist, kann dervalueeines von mehreren verschiedenen Objekttypen sein; siehe Welche Datentypen werden akzeptiert?.
prefixOptional-
Ein Boolescher Wert, der standardmäßig auf
falsegesetzt ist. Wenntrue, wird die Nachricht als Präfix für die nächste vom Modell generierte Antwort behandelt, anstatt als vollständige Runde.
optionsOptional-
Optionen zur Messung der Kontextnutzung. Eigenschaften umfassen:
responseConstraint-
Ein Objekt, das der Struktur entspricht, die von JSON Schema definiert ist und das genaue Format, in dem die Ausgabe des Modells geliefert werden soll, definiert. Bei Bereitstellung und wenn
omitResponseConstraintInputfalseist, wird jede implementierungsdefinierte Beschränkungsnachricht in die Messung einbezogen. omitResponseConstraintInput-
Ein boolescher Wert; Wenn
true, wird die automatische Beschränkungsnachricht von der Messung ausgeschlossen. signal-
Ein
AbortSignalzum Abbrechen der Operation.
Rückgabewert
Ein Promise, das eine Number auflöst, die die Anzahl der Kontextfenstertoken angibt, die der Input verbrauchen würde.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn die Operation über die Option
signalabgebrochen wurde. NotAllowedErrorDOMException-
Wird ausgelöst, wenn die Verwendung der Methode durch eine
language-modelPermissions-Policyblockiert wird. NotSupportedErrorDOMException-
Wird ausgelöst, wenn:
- Eine Nachricht die
roleassistanthat und ihrtypenichttextist. - Eine Nachricht den
typetexthat und dervaluekein String ist. - Der Eingabetext oder der Ausgabetext in einer Sprache ist, die vom Benutzeragenten für Prompts nicht unterstützt wird.
- Eine Nachricht den
typeimageoderaudiohat, aber der Typ nicht inexpectedInputsaufgelistet ist, oder dervaluekein akzeptierter Datentyp ist.
- Eine Nachricht die
SyntaxErrorDOMException-
Wird ausgelöst, wenn:
- Keine Nachrichten im Nachrichtenarray enthalten sind.
- Die
prefix-Eigenschaft einer Nachricht auftruegesetzt ist und:- Die Nachricht die
rolenichtassistanthat. - Die Nachricht nicht das letzte Element im Nachrichtenarray ist.
- Die Nachricht die
TypeError-
Wird ausgelöst, wenn:
omitResponseConstraintInputtrueist, aberresponseConstraintnicht bereitgestellt wird.- Eine Nachricht die
rolesystemhat, aber nicht die erste Nachricht war, die dem Kontext übergeben wurde.
Beispiele
>Warnung, wenn der Kontext fast voll ist
Das folgende Beispiel verwendet eine Funktion, um zu überprüfen, ob Kontext verfügbar ist, bevor LanguageModel.prompt() aufgerufen wird. Es berechnet zunächst den verbleibenden Kontext und übergibt diesen Wert an measureContextUsage(). Wenn needed kleiner oder gleich remaining ist, wird true zurückgegeben und die Sitzung wird fortgesetzt.
const promptText = "Let me ask you an interesting question...";
async function contextAvailable(promptText) {
const remaining = session.contextWindow - session.contextUsage;
const needed = await session.measureContextUsage(promptText);
return needed <= remaining;
}
const session = await LanguageModel.create();
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> |