LanguageModel: clone() 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 clone() Methode des LanguageModel Interfaces erstellt eine Kopie des LanguageModel, auf dem sie aufgerufen wird, einschließlich seines vollständigen Kontextfenster-Zustands. Die geklonte Sitzung kann unabhängig verwendet werden, ohne das Original zu beeinflussen.
Das Original und das Klon teilen den gleichen Kontextverlauf bis zum Zeitpunkt des Klonens, sodass Sie mehrere Antwortwege erkunden oder Variationen testen können, ohne von vorne zu beginnen.
Zum Beispiel können Sie einen gemeinsamen Kontext mit append() oder frühen prompt() prompt() Aufrufen erstellen, die Sitzung klonen und dann unterschiedliche Folgeaufrufe parallel an jeden Klon senden.
Syntax
clone()
clone(options)
Parameter
optionsOptional-
Ein Objekt, das die übergebbaren Optionen repräsentiert. Wenn dieses Argument fehlt, werden die
optionsaus der ursprünglichen Sitzung, wie z.B. das Abbruchs-Signal, verwendet. Eigenschaften umfassen:signal-
Ein
AbortSignal, um den Klonvorgang abzubrechen.
Rückgabewert
Ein Promise, das mit einer geklonten LanguageModel Instanz aufgelöst wird.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn der Vorgang über die
signalOption abgebrochen wurde. NotAllowedErrorDOMException-
Wird ausgelöst, wenn die Nutzung der Methode durch eine
language-modelPermissions-Policyblockiert wird. OperationErrorDOMException-
Wird ausgelöst, wenn das Klonen aus einem anderen hier nicht aufgeführten Grund fehlschlägt.
Beispiele
Siehe auch Verwendung der Prompt API > Klonen einer Sitzung.
Erkunden mehrerer Antwortwege
Das folgende Beispiel zeigt, wie verschiedene Antwortwege erkundet werden. Zuerst wird eine einzelne Sitzung mit dem Anfang einer Geschichte erstellt. Dann wird die ursprüngliche Sitzung zweimal geklont, bevor für verschiedene Enden aufgefordert wird. Dieser Ansatz bewahrt die ursprüngliche Sitzung, falls weitere Erkundungen gewünscht sind.
const session = await LanguageModel.create({
initialPrompts: [
{ role: "system", content: "You are a creative writing assistant." },
],
});
await session.append(
"The story begins in a small coastal town during a storm.",
);
const [clone1, clone2] = await Promise.all([session.clone(), session.clone()]);
const [ending1, ending2] = await Promise.all([
clone1.prompt("Write a happy ending."),
clone2.prompt("Write a mysterious ending."),
]);
console.log("Happy ending:", ending1);
console.log("Mysterious ending:", ending2);
Klonen, um nach einem Kontextüberlauf zu wiederholen
Dieses Beispiel verwendet ein Checkpoint- und Rollback-Muster, um den Zustand einer Sitzung zu speichern, bevor versucht wird, eine große Menge an Daten anzuhängen. Das Klonen der Sitzung vor dem Aufruf von append() ermöglicht es der App, den Zustand wiederherzustellen, falls das Kontextfenster überschritten wird.
const veryLargeDocument = "This is my very long story...";
let session = await LanguageModel.create();
const checkpoint = await session.clone();
try {
await session.append(veryLargeDocument);
} catch (err) {
if (err.name === "QuotaExceededError") {
console.warn("Document too large.");
session = checkpoint;
}
}
Klonen einer Sitzung mit einem Abbruchs-Signal
Das folgende Beispiel erstellt einen Timeout, um den Klon-Vorgang abzubrechen, wenn er länger als drei Sekunden dauert.
const controller = new AbortController();
setTimeout(() => controller.abort(), 3000);
try {
const clonedSession = await session.clone({
signal: controller.signal,
});
console.log("Session cloned successfully.");
} catch (err) {
if (err.name === "AbortError") {
console.log("Clone operation was aborted.");
}
}
Spezifikationen
| Spezifikation |
|---|
| Prompt API> # dom-languagemodel-clone> |