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 der LanguageModel Schnittstelle erstellt eine Kopie des LanguageModel, auf dem sie aufgerufen wird, einschließlich seines vollständigen Kontextfensterzustands. Die geklonte Sitzung kann unabhängig verwendet werden, ohne das Original zu beeinflussen.
Das Original und der Klon teilen bis zum Zeitpunkt des Klonens dieselbe Kontextgeschichte, was es ermöglicht, mehrere Antwortpfade zu erkunden oder Variationen zu testen, ohne von vorne zu beginnen.
Zum Beispiel könnten Sie einen gemeinsamen Kontext durch append() oder frühe prompt() prompt()-Aufrufe erstellen, die Sitzung klonen und dann unterschiedliche Anschlussbefehle parallel an jeden Klon senden.
Syntax
clone()
clone(options)
Parameter
optionsOptional-
Ein Objekt, das die übergebenen Optionen darstellt. Wenn dieses Argument fehlt, werden die
optionsder ursprünglichen Sitzung, wie etwa ihr Abort-Signal, verwendet. Eigenschaften umfassen:signal-
Ein
AbortSignalzur Stornierung des Klonvorgangs.
Rückgabewert
Ein Promise, das mit einer geklonten LanguageModel Instanz aufgelöst wird.
Ausnahmen
AbortErrorDOMException-
Wird ausgelöst, wenn der Vorgang über die
signal-Option abgebrochen wird. NotAllowedErrorDOMException-
Wird ausgelöst, wenn die Nutzung der Methode durch eine
language-modelPermissions-Policyblockiert ist. OperationErrorDOMException-
Wird ausgelöst, wenn das Klonen aus einem anderen Grund fehlschlägt, der nicht in den anderen Ausnahmetypen aufgeführt ist.
Beispiele
Siehe auch Verwendung der Prompt API > Klonen einer Sitzung.
Erkundung mehrerer Antwortpfade
Das folgende Beispiel zeigt, wie verschiedene Antwortpfade untersucht werden können. Zuerst wird eine einzelne Sitzung mit dem Beginn einer Geschichte erstellt. Dann wird die ursprüngliche Sitzung zweimal geklont, bevor unterschiedliche Endungen abgefragt werden. 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 neu zu versuchen
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, wenn 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 Abbruchsignal
Das folgende Beispiel erstellt ein Timeout, um den Klonvorgang 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> |