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 Tokens im Kontextfenster 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 Sie ihn senden. Das Ergebnis kann mit LanguageModel.contextWindow und LanguageModel.contextUsage verglichen werden, um festzustellen, ob der Input in das Kontextfenster-Limit passt.
Dies ist besonders nützlich für Anwendungen mit langen Kontexten wie Dokumentenzusammenfassungen, bei denen Sie möglicherweise Inhalte aufteilen oder kürzen müssen, um innerhalb des Kontextfensters-Limits zu bleiben.
Syntax
measureContextUsage(input)
measureContextUsage(input, options)
Parameter
input-
Der Inhalt, der dem Kontextfenster hinzugefügt werden soll. Dies ist entweder:
- Ein String — Abkürzung 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 die folgenden Eigenschaften haben:
role-
Ein String, der den Standpunkt angibt, aus dem die Nachricht formuliert ist. Muss eines der folgenden sein:
system-
Eine systembezogene 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 bietet, wie zum Beispiel seine Persona oder das Format seiner Antworten. Solche Nachrichten dienen hauptsächlich dazu, Kontext/Verlauf bereitzustellen und die Reaktion des Modells weiter zu gestalten.
content-
Ein String, der eine Textaufforderung 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-
Audioinhalt.
image-
Bildinhalt.
text-
Textinhalt.
tool-call-
Ein Werkzeugaufruf, der vom Modell ausgegeben wurde.
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 Boolean, standardmäßig
false. 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 sind:
responseConstraint-
Ein Objekt, das der von JSON Schema definierten Struktur folgt und das genaue Format definiert, in dem die Ausgabe des Modells geliefert werden soll. Wenn angegeben und
omitResponseConstraintInputfalseist, ist jede implementationsdefinierte Einschränkungs-Beschreibungsnachricht in der Messung enthalten. omitResponseConstraintInput-
Ein Boolean; wenn
true, wird die automatische Einschränkungs-Beschreibungsnachricht von der Messung ausgeschlossen. signal-
Ein
AbortSignalzum Abbrechen der Operation.
Rückgabewert
Ein Promise, das mit einer Number aufgelöst wird und die Anzahl der Tokens im Kontextfenster darstellt, die der Input verbrauchen würde.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn die Operation über die
signalOption abgebrochen wird. NotAllowedErrorDOMException-
Wird ausgelöst, wenn die Nutzung der Methode durch eine
language-modelPermissions-Policyblockiert ist. 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 für Aufforderungen nicht unterstützt.
- Der
typeeiner Nachrichtimageoderaudioist, aber der Typ nicht in denexpectedInputsaufgeführt war, oder dervaluekein akzeptierter Datentyp ist.
- Die
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
TypeError-
Wird ausgelöst, wenn:
omitResponseConstraintInputtrueist, aberresponseConstraintnicht angegeben wurde.- Die
roleeiner Nachrichtsystemist, die Nachricht jedoch nicht die erste Nachricht ist, die an den 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 zuerst den verbleibenden Kontext und übergibt diesen Wert an measureContextUsage(). Wenn needed kleiner oder gleich remaining ist, gibt es 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> |