Veröffentlicht am 20. Mai 2025
Erklärung | Web | Erweiterungen | Chrome-Status | Absicht |
---|---|---|---|---|
GitHub | Ansicht | Absichtserklärung für Tests |
Mit der Writer API können Sie neue Inhalte erstellen, die einer bestimmten Schreibaufgabe entsprechen. Die Writer API und die Rewriter API sind Teil des Vorschlags für Writing Assistance APIs.
Mit diesen Partner-APIs können Sie von Nutzern erstellte Inhalte verbessern.
Anwendungsfälle
Neue Inhalte auf Grundlage Ihrer ursprünglichen Idee und des optionalen Kontexts erstellen Das könnte für Folgendes verwendet werden:
- Nutzer können damit beliebige Inhalte wie Rezensionen, Blogposts oder E‑Mails verfassen.
- Nutzer dabei unterstützen, bessere Supportanfragen zu schreiben
- Verfassen Sie eine Einleitung für eine Reihe von Arbeitsbeispielen, um bestimmte Fähigkeiten besser zu erfassen.
Fehlt Ihr Anwendungsfall? Nehmen Sie am Early-Access-Programm teil, um uns Feedback zu geben.
Jetzt starten
Nehmen Sie am Ursprungstest für die Writer API teil, der in Chrome 137 bis 142 läuft.
Hardwareanforderungen prüfen
Für Entwickler und Nutzer, die Funktionen mit diesen APIs in Chrome verwenden, gelten die folgenden Anforderungen. Bei anderen Browsern gelten möglicherweise andere Betriebsanforderungen.
Die APIs für die Spracherkennung und die Übersetzung funktionieren in der Desktopversion von Chrome. Diese APIs funktionieren nicht auf Mobilgeräten. Die Prompt API, Summarizer API, Writer API und Rewriter API funktionieren in Chrome, wenn die folgenden Bedingungen erfüllt sind:
- Betriebssystem: Windows 10 oder 11, macOS 13 oder höher (Ventura und höher) oder Linux. Chrome für Android, iOS und ChromeOS wird von den APIs, die Gemini Nano verwenden, noch nicht unterstützt.
- Speicher: Mindestens 22 GB freier Speicherplatz auf dem Volume, das Ihr Chrome-Profil enthält.
- GPU: Mehr als 4 GB VRAM.
- Netzwerk: Unbegrenzte Daten oder eine Verbindung ohne Volumenbegrenzung.
Die genaue Größe von Gemini Nano kann variieren, da das Modell vom Browser aktualisiert wird. Die aktuelle Größe finden Sie unter chrome://on-device-internals
im Bereich Modellstatus. Öffnen Sie den aufgeführten Dateipfad, um die Modellgröße zu ermitteln.
Für den Ursprungstest registrieren
Die Writer API ist in einem gemeinsamen Ursprungstest mit der Rewriter API verfügbar. So beginnen Sie mit der Verwendung dieser APIs:
- Bestätigen Sie die Richtlinie zur unzulässigen Nutzung von generativer KI von Google.
- Rufen Sie die Writer API-Testversion auf.
- Klicken Sie auf Registrieren und füllen Sie das Formular aus. Geben Sie im Feld „Webursprung“ Ihren Ursprung oder Ihre Erweiterungs-ID ein,
chrome-extension://YOUR_EXTENSION_ID
. - Klicken Sie zum Einreichen auf Registrieren.
- Kopieren Sie das bereitgestellte Token und fügen Sie es auf jeder teilnehmenden Webseite Ihres Ursprungs ein oder fügen Sie es in Ihr Erweiterungsmanifest ein.
- Beginnen Sie mit der Verwendung der Writer- und Rewriter-APIs.
Weitere Informationen zum Einstieg in Origin Trials
Unterstützung für localhost hinzufügen
Wenn Sie während des Ursprungstests auf die Writer- und Rewriter-APIs auf localhost zugreifen möchten, müssen Sie Chrome auf die neueste Version aktualisieren. Folgen Sie anschließend dieser Anleitung:
- Öffnen Sie
chrome://flags/#writer-api-for-gemini-nano
. - Wählen Sie Aktiviert aus.
- Klicken Sie auf Neu starten oder starten Sie Chrome neu.
Writer API verwenden
Führen Sie zuerst die Funktionserkennung aus, um zu prüfen, ob der Browser diese APIs unterstützt.
if ('Writer' in self) {
// The Writer API is supported.
}
Die Writer API und alle anderen integrierten KI‑APIs sind in den Browser integriert. Gemini Nano wird beim ersten Mal, wenn eine Website eine integrierte KI-API verwendet, separat heruntergeladen. Wenn ein Nutzer bereits mit einer integrierten API interagiert hat, hat er das Modell in seinen Browser heruntergeladen.
Rufen Sie die asynchrone Funktion Writer.availability()
auf, um festzustellen, ob das Modell einsatzbereit ist. Es wird ein String zurückgegeben, der vier mögliche Werte annehmen kann:
unavailable
: Der Browser unterstützt die Writer API, sie kann aber derzeit nicht verwendet werden. Das kann verschiedene Gründe haben, z. B. unzureichender Speicherplatz zum Herunterladen des Modells.available
: Der Browser unterstützt die Writer API und kann sofort verwendet werden.downloadable
: Der Browser unterstützt die Writer API, muss das Modell aber zuerst herunterladen.downloading
: Der Browser unterstützt die Writer API und lädt das Modell gerade herunter.
Rufen Sie die Funktion Writer.create()
auf, um den Modelldownload auszulösen und den Writer zu starten. Wenn die Antwort auf availability()
downloadable
war, höre auf den Downloadfortschritt und informiere den Nutzer, da der Download einige Zeit dauern kann.
const writer = await Writer.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
API-Funktionen
Mit der Funktion create()
können Sie ein neues Writer-Objekt konfigurieren. Es verwendet ein optionales options
-Objekt mit den folgenden Parametern:
tone
: Der Schreibstil kann sich auf den Stil, den Charakter oder die Haltung des Inhalts beziehen. Der Wert kann aufformal
,neutral
(Standard) odercasual
festgelegt werden.format
: Die Ausgabeformatierung mit den zulässigen Wertenmarkdown
(Standard) undplain-text
.length
: Die Länge der Ausgabe mit den zulässigen Wertenshort
,medium
(Standard) undlong
.sharedContext
: Wenn Sie mehrere Ausgaben schreiben, kann ein gemeinsamer Kontext dem Modell helfen, Inhalte zu erstellen, die besser auf Ihre Erwartungen abgestimmt sind.
Das folgende Beispiel zeigt, wie ein writer
-Objekt initialisiert wird:
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'casual',
format: 'plain-text',
length: 'medium',
};
const available = await Writer.availability();
let writer;
if (available === 'unavailable') {
// The Writer API isn't usable.
return;
}
if (available === 'available') {
// The Writer API can be used immediately .
writer = await Writer.create(options);
} else {
// The Writer can be used after the model is downloaded.
const writer = await Writer.create({
...options,
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
}
Text schreiben
Es gibt zwei Möglichkeiten, Text vom Modell auszugeben: nicht streamend und streamend.
Nicht-Streaming-Ausgabe
Beim Schreiben ohne Streaming verarbeitet das Modell die Eingabe als Ganzes und gibt dann die Ausgabe aus.
Wenn Sie eine Ausgabe ohne Streaming erhalten möchten, rufen Sie die asynchrone Funktion write()
auf. Sie müssen einen Prompt für die gewünschten Inhalte eingeben. Sie können optional ein context
hinzufügen, um dem Modell Hintergrundinformationen zu geben. Das kann dem Modell helfen, Ihre Erwartungen an die Ausgabe besser zu erfüllen.
// Non-streaming
const writer = await Writer.create();
const result = await writer.write(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
Ausgabe streamen
Streaming bietet Ergebnisse in Echtzeit. Die Ausgabe wird kontinuierlich aktualisiert, wenn der Nutzer Eingaben hinzufügt und anpasst.
Rufen Sie die Funktion writeStreaming()
auf, um einen Streaming-Writer zu erhalten, und iterieren Sie über die verfügbaren Textsegmente im Stream. Sie können optional ein context
hinzufügen, um dem Modell Hintergrundinformationen zu geben. Das kann dem Modell helfen, Ihre Erwartungen an die Ausgabe besser zu erfüllen.
// Streaming
const writer = await Writer.create();
const stream = writer.writeStreaming(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
Kontext für mehrere Aufgaben freigeben
Möglicherweise möchten Sie ein writer
verwenden, um mehrere Inhalte zu generieren. In diesem Fall ist es sinnvoll, sharedContext
hinzuzufügen. So können Sie beispielsweise Prüfern helfen, besseres Feedback in Kommentaren zu geben.
// Shared context and per writing task context
const writer = await Writer.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});
const stream = writer.writeStreaming(
"Write a blog post about how I love all this work on gen AI at Google!" +
"Mention that there's so much to learn and so many new things I can do!",
{ context: " The request comes from someone working at a startup providing an e-commerce CMS solution."}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
Autor wiederverwenden
Sie können denselben Autor verwenden, um mehrere Inhalte zu erstellen.
// Reuse a writer
const writer = await Writer.create({ tone: "formal" });
const reviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => writer.write(reviewEl.textContent)
),
);
Autor stoppen
Um den Schreibvorgang zu beenden, brechen Sie den Controller ab und zerstören Sie den Writer.
// Aborting a writer
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const writer = await Writer.create({ signal: controller.signal });
await writer.write(reviewEl.textContent, { signal: controller.signal });
// Destroying a writer
writer.destroy();
Demo
Feedback geben
Die Writer- und Rewriter API werden derzeit aktiv diskutiert und können sich in Zukunft ändern. Wenn Sie diese API ausprobieren und Feedback haben, freuen wir uns darauf.
- Lesen Sie die Erläuterung, stellen Sie Fragen und beteiligen Sie sich an der Diskussion.
- Informationen zur Implementierung für Chrome finden Sie unter Chrome Status.
- Nehmen Sie am Early-Access-Programm teil, um neue APIs vorab kennenzulernen und Zugriff auf unsere Mailingliste zu erhalten.
- Wenn Sie Feedback zur Implementierung in Chrome haben, erstellen Sie in Chromium einen Eintrag für das Problem.
Entdecken Sie alle integrierten KI-APIs, die Modelle verwenden, einschließlich Gemini Nano und anderer Expertenmodelle, im Browser.