Schrijver-API

Gepubliceerd: 20 mei 2025

Uitlegger Web Uitbreidingen Chrome-status Intentie
GitHub Oorsprongsproef Oorsprongsproef Oorsprongsproef Oorsprongsproef Weergave Intentie om te experimenteren

Met de Writer API kunt u nieuwe content creëren die voldoet aan een specifieke schrijftaak. De Writer API en de Rewriter API maken deel uit van het voorstel voor Writing Assistance API's .

Met deze partner-API's kunt u de door gebruikers gemaakte content verbeteren.

Gebruiksscenario's

Schrijf nieuwe content, gebaseerd op je oorspronkelijke idee en eventueel context. Dit kan gebruikt worden om:

  • Ondersteuningsgebruikers schrijven allerlei soorten content, zoals recensies, blogberichten of e-mails.
  • Help gebruikers betere ondersteuningsverzoeken te schrijven.
  • Maak een inleiding voor een reeks werkvoorbeelden om bepaalde vaardigheden beter vast te leggen.

Ontbreekt uw use case? Doe mee aan het early preview-programma en deel uw feedback.

Aan de slag

Doe mee aan de proefperiode van de Writer API in Chrome 137 tot en met 142.

Controleer de hardwarevereisten

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

De Language Detector- en Translator-API's werken in Chrome op desktopcomputers. Deze API's werken niet op mobiele apparaten. De Prompt API, Summarizer API, Writer API en Rewriter API werken in Chrome wanneer aan de volgende voorwaarden is voldaan:

  • Besturingssysteem : Windows 10 of 11; macOS 13+ (Ventura en hoger); of Linux. Chrome voor Android, iOS en ChromeOS worden nog niet ondersteund door de API's die Gemini Nano gebruiken.
  • Opslag : minimaal 22 GB vrije ruimte op het volume met uw Chrome-profiel.
  • GPU : absoluut meer dan 4 GB VRAM.
  • Netwerk : Onbeperkt dataverbruik of een onbeperkte verbinding.

De exacte grootte van de Gemini Nano kan variëren naarmate de browser het model bijwerkt. Om de huidige grootte te bepalen, gaat u naar chrome://on-device-internals en vervolgens naar Modelstatus . Open het vermelde bestandspad om de modelgrootte te bepalen.

Meld je aan voor de oorsprongsproef

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

  1. Erken het beleid van Google inzake verboden toepassingen van generatieve AI .
  2. Ga naar de proefversie van de Writer API .
  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 te verzenden, klikt u op Registreren .
  5. Kopieer het verstrekte token en voeg het toe aan elke deelnemende webpagina op uw oorsprong of neem het op in het manifest van uw extensie .
  6. Begin met het gebruiken van de Writer- en Rewriter-API's.

Lees meer over hoe u kunt beginnen met oorsprongsproeven .

Ondersteuning toevoegen aan localhost

Om tijdens de proefperiode toegang te krijgen tot de Writer- en Rewriter-API's op localhost, moet u Chrome updaten naar de nieuwste versie. Volg vervolgens deze stappen:

  1. Ga naar chrome://flags/#writer-api-for-gemini-nano .
  2. Selecteer Ingeschakeld .
  3. Klik op Opnieuw starten of start Chrome opnieuw.

Gebruik de Writer API

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

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

De Writer API en alle andere ingebouwde AI API's zijn geïntegreerd in de browser. Gemini Nano wordt apart gedownload wanneer een website voor het eerst een ingebouwde AI API gebruikt. In de praktijk geldt dat als een gebruiker al eerder met een ingebouwde API heeft gewerkt, hij of zij het model al naar zijn of haar browser heeft gedownload.

Om te bepalen of het model klaar is voor gebruik, roept u de asynchrone functie Writer.availability() aan. Als het antwoord op availability() downloadable is, luister dan naar de voortgang van het downloaden en informeer de gebruiker, aangezien het downloaden enige tijd kan duren.

const availability = await Writer.availability();

Om het downloaden van het model te activeren en de schrijver te starten, controleert u of de gebruiker het heeft geactiveerd en roept u de functie Writer.create() aan.

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

API-functies

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

  • tone : Schrijftoon kan verwijzen naar de stijl, het karakter of de houding van de content. De waarde kan worden ingesteld op formal , neutral (standaard) of casual .
  • format : De opmaak van de uitvoer, met de toegestane waarden markdown (standaard) en plain-text .
  • length : De lengte van de uitvoer, met de toegestane waarden short , medium (standaard) en long .
  • sharedContext : Wanneer u meerdere uitvoerresultaten schrijft, kan een gedeelde context het model helpen inhoud te creëren die beter aansluit bij uw verwachtingen.

Het volgende voorbeeld laat zien hoe u een writer object initieert:

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

Begin met schrijven

Er zijn twee manieren om tekst uit het model te schrijven: niet-streaming en streaming.

Niet-streaming output

Bij niet-streaming schrijven verwerkt het model de invoer als geheel en produceert vervolgens de uitvoer.

Om een niet-streaming output te krijgen, roept u de asynchrone write() functie aan. U moet een prompt toevoegen voor de content die u wilt laten schrijven. U kunt een optionele context toevoegen om achtergrondinformatie over het model te verstrekken, wat kan helpen om het model beter te laten voldoen aan uw verwachtingen voor de output.

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

Stream-schrijfuitvoer

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

Om een streaming writer te krijgen, roept u de functie writeStreaming() aan en itereert u over de beschikbare tekstsegmenten in de stream. U kunt een optionele context toevoegen om achtergrondinformatie over het model te geven, waardoor het model mogelijk beter aan uw verwachtingen voor de uitvoer voldoet.

// 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);
}

Deel context voor meerdere taken

Mogelijk wilt u een writer inschakelen om meerdere stukken content te genereren. In dat geval is het handig om sharedContext toe te voegen. U kunt reviewers bijvoorbeeld helpen betere feedback te geven in reacties.

// 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);
}

Een schrijver hergebruiken

U kunt dezelfde schrijver gebruiken om meerdere stukken content te maken.

// 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)
  ),
);

Stop de schrijver

Om het schrijfproces te beëindigen, moet u de controller uitschakelen en de schrijver vernietigen.

// 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();

Demonstratie

Betrek en deel feedback

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

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