Rewriter-API

Gepubliceerd: 22 oktober 2025

Uitleg Web Uitbreidingen Chrome-status Intentie
GitHub Ontwikkelaarsproef Ontwikkelaarsproef Ontwikkelaarsproef Ontwikkelaarsproef Weergave Voornemen om te experimenteren

De Rewriter API helpt je bij het herzien en herstructureren van tekst. Deze API en de Writer API maken deel uit van het voorstel voor API's voor schrijfondersteuning .

Deze API's kunnen je helpen de door gebruikers gemaakte content te verbeteren.

Gebruiksvoorbeelden

Verbeter bestaande tekst door deze langer of korter te maken, of de toon aan te passen. Je zou bijvoorbeeld het volgende kunnen doen:

  • Herschrijf een korte e-mail zodat deze beleefder en formeler klinkt.
  • Suggesties voor aanpassingen aan klantrecensies kunnen andere klanten helpen de feedback te begrijpen of negatieve reacties te verwijderen.
  • Formatteer de content om aan de verwachtingen van specifieke doelgroepen te voldoen.

Staat jouw gebruiksscenario er niet bij? Doe mee aan het early preview-programma en deel je feedback.

Aan de slag

Doe mee aan de Rewriter API origin-proef , die draait in Chrome 137 tot en met 148.

Bekijk de hardwarevereisten.

De volgende vereisten gelden voor ontwikkelaars en gebruikers die functies gebruiken die deze API's in Chrome inzetten. Andere browsers kunnen andere vereisten hebben.

De API's voor taaldetectie en -vertaling werken in Chrome op desktops. Deze API's werken niet op mobiele apparaten.

De Prompt API , Summarizer API , Writer API , Rewriter API en Proofreader API werken in Chrome wanneer aan de volgende voorwaarden wordt voldaan:

  • Besturingssysteem : Windows 10 of 11; macOS 13+ (Ventura en nieuwer); Linux; of ChromeOS (vanaf platform 16389.0.0 en nieuwer) op Chromebook Plus- apparaten. Chrome voor Android, iOS en ChromeOS op niet-Chromebook Plus-apparaten wordt nog niet ondersteund door de API's die gebruikmaken van Gemini Nano.
  • Opslag : Minimaal 22 GB vrije ruimte op het volume waarop uw Chrome-profiel staat.
  • GPU of CPU : Ingebouwde modellen kunnen met een GPU of een CPU werken.
    • GPU : Strikt meer dan 4 GB VRAM.
    • CPU : 16 GB RAM of meer en 4 processorkernen of meer.
  • Netwerk : Onbeperkte data of een verbinding zonder datalimiet.

De exacte afmetingen van de Gemini Nano kunnen variëren, afhankelijk van de browserupdate van het model. Ga naar chrome://on-device-internals om de huidige afmetingen te achterhalen.

Meld je aan voor de Origin-proef.

De Rewriter API is beschikbaar in een gezamenlijke origin trial met de Writer API. Om deze API's te gaan gebruiken:

  1. Neem kennis van het beleid van Google inzake verboden toepassingen van generatieve AI .
  2. Ga naar de Rewriter API origin-proefversie .
  3. Klik op Registreren en vul het formulier in. Geef in het veld Web origin uw origin- of extensie-ID op, chrome-extension://YOUR_EXTENSION_ID .
  4. Om je inzending in te dienen, klik je op Registreren .
  5. Kopieer het verstrekte token en voeg het toe aan elke deelnemende webpagina op uw server of neem het op in uw extensiemanifest .
  6. Begin met het gebruiken van de Rewriter API.

Lees meer over hoe u kunt beginnen met Origin-onderzoeken .

Voeg ondersteuning toe voor localhost

Om toegang te krijgen tot de Rewriter API op localhost, gebruik je de Chrome-vlaggen :

  1. Stel chrome://flags/#optimization-guide-on-device-model in op Ingeschakeld .
  2. Stel de volgende vlaggen in op Ingeschakeld of Meertalig ingeschakeld :
    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
    • chrome://flags/#writer-api-for-gemini-nano
  3. Klik op Opnieuw opstarten of Chrome opnieuw starten.

Gebruik de Rewriter API

Voer eerst een functiedetectie uit om te controleren of de browser deze API's ondersteunt.

if ('Rewriter' in self) {
  // The Rewriter API is supported.
}

De Rewriter API en alle andere ingebouwde AI API's zijn geïntegreerd in de browser. Gemini Nano wordt apart gedownload de eerste keer dat een website een ingebouwde AI API gebruikt. In de praktijk geldt dat als een gebruiker al eerder met een ingebouwde API heeft gewerkt, het model al in de browser is gedownload.

Om te bepalen of het model klaar is voor gebruik, roept u de asynchrone functie Rewriter.availability() aan. Als het antwoord op availability() downloadable is, luistert u naar de voortgang van de download en informeert u de gebruiker, aangezien de download enige tijd kan duren.

const availability = await Rewriter.availability();

Om het downloaden van het model te starten en de herschrijver te activeren, controleert u of de gebruiker is geactiveerd en roept u de functie Rewriter.create() aan.

const rewriter = await Rewriter.create({
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

API-functies

Met de functie create() kunt u een nieuw rewriter-object configureren. Deze functie accepteert een optioneel options met de volgende parameters:

  • tone : De schrijftoon kan verwijzen naar de stijl, het karakter of de houding van de inhoud. De waarde kan worden ingesteld op more-formal , as-is (standaard) of more-casual .
  • format : De uitvoeropmaak, met de toegestane waarden as-is (standaard), markdown en plain-text .
  • length : De lengte van de uitvoer, met de toegestane waarden shorter , as-is (standaard) en longer .
  • sharedContext : Bij het herschrijven van meerdere stukken content kan een gedeelde context het model helpen om content te creëren die beter aansluit bij uw verwachtingen.

Het volgende voorbeeld laat zien hoe een rewriter kan worden geïnitialiseerd:

const options = {
  sharedContext: 'This is an email to acquaintances about an upcoming event.',
  tone: 'more-casual',
  format: 'plain-text',
  length: 'shorter',
};

const available = await Rewriter.availability();
let rewriter;
if (available === 'unavailable') {
  // The Rewriter API isn't usable.
  return;
}
if (available === 'available') {
  // The Rewriter API can be used immediately .
  rewriter = await Rewriter.create(options);
} else {
  // The Rewriter can be used after the model is downloaded.
  rewriter = await Rewriter.create(options);
  rewriter.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

Wijs de verwachte talen toe.

De Rewriter API ondersteunt meerdere talen. Stel de gewenste invoer-, uitvoer- en contexttaal in bij het aanmaken van uw sessie. Hierdoor kan de browser het verzoek weigeren als een specifieke taalcombinatie niet wordt ondersteund.

const rewriter = await Rewriter.create({
  tone: "more-formal",
  expectedInputLanguages: ["en", "ja", "es"],
  expectedContextLanguages: ["en", "ja", "es"],
  outputLanguage: "es",
  sharedContext: "These are requests to rewrite 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."
});

Begin met herschrijven

Er zijn twee manieren om content vanuit het model weer te geven: op verzoek gebaseerde uitvoer en streaming.

Op verzoek gebaseerde uitvoer

Bij uitvoer op basis van een verzoek (of "niet-streaming") wacht het model tot de volledige invoer is gegenereerd, verwerkt deze invoer in zijn geheel en produceert vervolgens de uitvoer.

Om een ​​op verzoek gebaseerde uitvoer te krijgen, roept u de asynchrone functie rewrite() aan. U moet de oorspronkelijke tekst die u wilt laten herschrijven, meesturen. U kunt optioneel een context toevoegen om het model achtergrondinformatie te geven, wat het model kan helpen om beter aan uw verwachtingen voor de uitvoer te voldoen.

// Request-based
const rewriter = await Rewriter.create({
  sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const result = await rewriter.rewrite(reviewEl.textContent, {
  context: "Avoid any toxic language and be as constructive as possible."
});

Uitvoer van het herschrijven van streams

Streaming biedt resultaten in realtime. De output wordt continu bijgewerkt naarmate de input wordt toegevoegd en aangepast.

Om een ​​streaming-herschrijver te verkrijgen, roept u de functie rewriteStreaming() aan en doorloopt u de beschikbare tekstsegmenten in de stream. U kunt optioneel een context toevoegen om het model achtergrondinformatie te geven, wat het model kan helpen om beter aan uw verwachtingen voor de uitvoer te voldoen.

const rewriter = await Rewriter.create({
  sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});

const stream = rewriter.rewriteStreaming(reviewEl.textContent, {
  context: "Avoid any toxic language and be as constructive as possible.",
  tone: "more-casual",
});

for await (const chunk of stream) {
  composeTextbox.append(chunk);
}

Deel de context voor meerdere taken.

Je kunt een rewriter gebruiken om meerdere stukken content te genereren. In dat geval is het handig om sharedContext toe te voegen. Je wilt bijvoorbeeld reviewers helpen betere feedback te geven in reacties.

// Shared context and per writing task context
const rewriter = await Rewriter.create({
  sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});

const stream = rewriter.rewriteStreaming(
  "Love all this work on generative AI at Google! 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.",
    tone: "more-casual",
  }
);

for await (const chunk of stream) {
  composeTextbox.append(chunk);
}

Hergebruik een herschrijver

Je kunt dezelfde herschrijftool gebruiken om meerdere teksten tegelijk te bewerken. Dit kan met name handig zijn als je de herschrijftool integreert in een feedback- of commentaartool, zodat schrijvers productieve en nuttige feedback kunnen geven.

// Reusing a rewriter
const rewriter = await Rewriter.create({
  sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});

const rewrittenReviews = await Promise.all(
  Array.from(
    document.querySelectorAll("#reviews > .review"),
    (reviewEl) => rewriter.rewrite(reviewEl.textContent, {
      context: "Avoid any toxic language and be as constructive as possible.",
      tone: "more-casual",
    })
  ),
);

Stop de herschrijver

Om het herschrijfproces te beëindigen, moet u de controller afbreken en de rewriter vernietigen.

// Stop a rewriter
const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const rewriter = await Rewriter.create({ signal: controller.signal });
await rewriter.rewrite(reviewEl.textContent, { signal: controller.signal });

// Destroy a rewriter
rewriter.destroy();

Demo

Toestemmingsbeleid, iframes en webworkers

Standaard is de Rewriter API alleen beschikbaar voor vensters op het hoogste niveau en hun iframes van dezelfde oorsprong. Toegang tot de API kan worden gedelegeerd aan iframes van een andere oorsprong met behulp van het attribuut allow="" in het machtigingsbeleid.

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

De Rewriter API is niet beschikbaar in Web Workers. Dit komt door de complexiteit van het opstellen van een verantwoordelijk document voor elke worker, om de status van het machtigingsbeleid te controleren.

Betrek de deelnemers en deel je feedback.

De Writer- en Rewriter-API's worden momenteel actief besproken en kunnen in de toekomst nog veranderen. Als u deze API uitprobeert en feedback heeft, horen we dat graag.

Ontdek alle ingebouwde AI API's die gebruikmaken van modellen, waaronder Gemini Nano en andere expertmodellen, rechtstreeks in de browser.