Writer API

Veröffentlicht am 22. Oktober 2025

Erklärung Web Erweiterungen Chrome-Status Absicht
GitHub Testversion für Entwickler Testzeitraum für Entwickler Testversion für Entwickler Testzeitraum für Entwickler Ansicht Absicht zum Testen

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 die Writing Assistance APIs.

Mit diesen Partner-APIs können Sie von Nutzern erstellte Inhalte verbessern.

Anwendungsfälle

Neue Inhalte basierend auf Ihrer ursprünglichen Idee und optionalem Kontext erstellen. Dies kann für Folgendes verwendet werden:

  • Nutzer beim Schreiben von Inhalten aller Art unterstützen, z. B. Rezensionen, Blogposts oder E‑Mails.
  • Nutzer beim Verfassen besserer Supportanfragen unterstützen.
  • Eine Einleitung für eine Reihe von Arbeitsproben entwerfen, um bestimmte Fähigkeiten besser zu erfassen.

Fehlt Ihr Anwendungsfall? Nehmen Sie am Early-Access-Programm teil, um uns Ihr Feedback mitzuteilen.

Jetzt starten

Nehmen Sie am Ursprungstest für die Writer API teil, der in Chrome 137 bis 148 läuft.

Hardwareanforderungen prüfen

Die folgenden Anforderungen gelten für Entwickler und Nutzer, die diese APIs in Chrome verwenden. Bei anderen Browsern gelten möglicherweise andere Betriebsanforderungen.

Die Language Detector API und die Translator API funktionieren in Chrome auf dem Desktop. Diese APIs funktionieren nicht auf Mobilgeräten.

Die Prompt API, Summarizer API, Writer API, Rewriter API und Proofreader 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), Linux oder ChromeOS (ab Plattform 16389.0.0) auf Chromebook Plus-Geräten. Chrome für Android, iOS und ChromeOS auf Geräten, die keine Chromebook Plus-Geräte sind, werden 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 oder CPU: Integrierte Modelle können mit GPU oder CPU ausgeführt werden.
    • GPU: Mehr als 4 GB VRAM.
    • CPU: Mindestens 16 GB RAM und mindestens 4 CPU-Kerne.
    • Hinweis: Für die Prompt API mit Audioeingabe ist eine GPU erforderlich.
  • Netzwerk: Unbegrenzte Daten oder eine nicht getaktete Verbindung.

Die genaue Größe von Gemini Nano kann variieren, da der Browser das Modell aktualisiert. Die aktuelle Größe finden Sie unter chrome://on-device-internals.

Für den Ursprungstest registrieren

Die Writer API ist in einem gemeinsamen Ursprungstest mit der Rewriter API verfügbar. So verwenden Sie diese APIs:

  1. Bestätigen Sie die Richtlinie zur unzulässigen Nutzung von generativer KI von Google.
  2. Rufen Sie den Ursprungstest für die Writer API auf.
  3. Klicken Sie auf Registrieren und füllen Sie das Formular aus. Geben Sie im Feld „Web-Ursprung“ Ihren Ursprung oder Ihre Erweiterungs ID an: chrome-extension://YOUR_EXTENSION_ID.
  4. Klicken Sie zum Senden auf Registrieren.
  5. Kopieren Sie das bereitgestellte Token und fügen Sie es auf jeder teilnehmenden Webseite in Ihrem Ursprung ein oder fügen Sie es in das Manifest Ihrer Erweiterung ein.
  6. Verwenden Sie die Writer API und die Rewriter API.

Weitere Informationen zum Einstieg in Ursprungstests.

Unterstützung für localhost hinzufügen

So greifen Sie auf die Writer API auf localhost zu: Verwenden Sie Chrome-Flags:

  1. Setzen Sie chrome://flags/#optimization-guide-on-device-model auf Aktiviert.
  2. Setzen Sie die folgenden Flags auf Aktiviert oder Mehrsprachig aktiviert:
    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
    • chrome://flags/#writer-api-for-gemini-nano
  3. Klicken Sie auf Neu starten oder starten Sie Chrome neu.

Writer API verwenden

Führen Sie zuerst eine 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 eingebunden. Gemini Nano wird beim ersten Mal separat heruntergeladen, wenn eine Website eine integrierte KI-API verwendet. Wenn ein Nutzer bereits mit einer integrierten API interagiert hat, hat er das Modell bereits in seinen Browser heruntergeladen.

Rufen Sie die asynchrone Writer.availability() Funktion auf, um zu prüfen, ob das Modell einsatzbereit ist. Wenn die Antwort auf availability() downloadable lautet, achten Sie auf den Downloadfortschritt und informieren Sie den Nutzer, da der Download einige Zeit dauern kann.

const availability = await Writer.availability();

Wenn Sie den Download des Modells auslösen und den Writer starten möchten, prüfen Sie, ob der Nutzer die Funktion aktiviert hat, und rufen Sie die Writer.create() Funktion auf.

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. Sie verwendet ein optionales options-Objekt mit den folgenden Parametern:

  • tone: Schreibton kann sich auf den Stil, den Charakter oder die Einstellung des Inhalts beziehen. Der Wert kann auf formal, neutral (Standard) oder casual gesetzt werden.
  • format: Die Ausgabeformatierung mit den zulässigen Werten markdown (Standard) und plain-text.
  • length: Die Länge der Ausgabe mit den zulässigen Werten short (Standard), medium und long.
  • sharedContext: Wenn Sie mehrere Ausgaben schreiben, kann ein gemeinsamer Kontext dem Modell helfen, Inhalte zu erstellen, die besser Ihren Erwartungen entsprechen.

Das folgende Beispiel zeigt, wie Sie ein writer-Objekt initiieren:

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}%`);
      });
    }
  });
}

Erwartete Sprachen zuweisen

Die Writer API unterstützt mehrere Sprachen. Legen Sie beim Erstellen Ihrer Sitzung die erwarteten Eingabe- und Kontextsprachen sowie die erwartete Ausgabesprache fest. So kann der Browser die Anfrage ablehnen, wenn er eine bestimmte Sprachkombination nicht unterstützt.

const writer = await Writer.create({
  tone: "formal",
  expectedInputLanguages: ["en", "ja", "es"],
  expectedContextLanguages: ["en", "ja", "es"],
  outputLanguage: "es",
  sharedContext: "These are requests to write messages to teachers in a Spanish
    language program, by students who may speak Spanish, Japanese, or English.
    Staff expect questions to be written in Spanish."
});

Text schreiben

Es gibt zwei Möglichkeiten, Text vom Modell auszugeben: anfragebasierte Ausgabe und Streaming.

Anfragebasierte Ausgabe

Bei der anfragebasierten Ausgabe (oder „Nicht-Streaming“) wartet das Modell, bis die gesamte Eingabe generiert wurde, verarbeitet diese Eingabe als Ganzes und erzeugt dann die Ausgabe.

Rufen Sie die asynchrone Funktion write() auf, um eine anfragebasierte Ausgabe zu erhalten. Sie müssen einen Prompt für die gewünschten Inhalte angeben. Sie können optional einen context hinzufügen, um dem Modell Hintergrundinformationen zu geben. So kann das Modell Ihre Erwartungen an die Ausgabe möglicherweise besser erfüllen.

// Request-based
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",
  },
);

Schreibausgabe streamen

Streaming bietet kontinuierliche Ergebnisse in Echtzeit. Die Ausgabe wird inkrementell aktualisiert, wenn Eingaben hinzugefügt und angepasst werden.

Rufen Sie die Funktion writeStreaming() auf, um einen Streaming-Writer zu erhalten, und durchlaufen Sie die verfügbaren Textsegmente im Stream. Sie können optional einen context hinzufügen, um dem Modell Hintergrundinformationen zu geben. So kann das Modell Ihre Erwartungen an die Ausgabe möglicherweise besser erfüllen.

// Streaming
const writer = await Writer.create(
  expectedInputLanguages: ["en"],
  expectedContextLanguages: ["en"],
  outputLanguage: "en",
);
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

Sie können einen 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({
    expectedInputLanguages: ["en"],
    expectedContextLanguages: ["en"],
    outputLanguage: "en",
    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);
}

Writer wiederverwenden

Sie können denselben Writer 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)
  ),
);

Writer beenden

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

Berechtigungsrichtlinie, iFrames und Web Worker

Standardmäßig ist die Writer API nur für Fenster der obersten Ebene und für ihre iFrames mit derselben Quelle verfügbar. Der Zugriff auf die API kann mithilfe des Attributs der Berechtigungsrichtlinie an iFrames mit unterschiedlichen Quellen delegiert werden: allow=""

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Writer API by
  setting the `allow="writer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="writer"></iframe>

Die Writer API ist in Web Workern nicht verfügbar. Das liegt daran, dass es sehr aufwendig ist, für jeden Worker ein verantwortliches Dokument zu erstellen, um den Status der Berechtigungsrichtlinie zu prüfen.

Feedback geben und sich beteiligen

Die Writer API und die Rewriter API werden aktiv diskutiert und können sich in Zukunft ändern. Wenn Sie diese API testen und Feedback haben, freuen wir uns darauf.

Entdecken Sie alle der integrierten KI-APIs, die Modelle verwenden, einschließlich Gemini Nano und anderer Expertenmodelle, im Browser.