Gepubliceerd: 22 oktober 2025
| Uitleg | Web | Uitbreidingen | Chrome-status | Intentie |
|---|---|---|---|---|
| GitHub | Weergave | Voornemen om te experimenteren |
De Writer API helpt je bij het creëren van nieuwe content die voldoet aan een specifieke schrijfopdracht. De Writer API en de Rewriter API maken deel uit van het voorstel voor API's voor schrijfondersteuning .
Deze partner-API's kunnen u helpen de door gebruikers gemaakte content te verbeteren.
Gebruiksvoorbeelden
Schrijf nieuwe content, gebaseerd op je oorspronkelijke idee en eventueel aanvullende context. Dit kan bijvoorbeeld gebruikt worden om:
- Gebruikers van de supportafdeling kunnen allerlei soorten content schrijven, zoals recensies, blogberichten of e-mails.
- Help gebruikers betere ondersteuningsverzoeken te schrijven.
- Schrijf een inleiding voor een reeks werkvoorbeelden om bepaalde vaardigheden beter in kaart te brengen.
Staat jouw gebruiksscenario er niet bij? Doe mee aan het early preview-programma en deel je feedback.
Aan de slag
Doe mee aan de Origin-proef van de Writer API, die draait in Chrome-versies 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 Writer API is beschikbaar in een gezamenlijke origin trial met de Rewriter API. Om deze API's te gaan gebruiken:
- Neem kennis van het beleid van Google inzake verboden toepassingen van generatieve AI .
- Ga naar de proefversie van de Writer API .
- 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. - Om je inzending in te dienen, klik je op Registreren .
- Kopieer het verstrekte token en voeg het toe aan elke deelnemende webpagina op uw server of neem het op in uw extensiemanifest .
- Begin met het gebruiken van de Writer- en Rewriter-API's.
Lees meer over hoe u kunt beginnen met Origin-onderzoeken .
Voeg ondersteuning toe voor localhost
Om toegang te krijgen tot de Writer API op localhost, gebruik je de Chrome-vlaggen :
- Stel
chrome://flags/#optimization-guide-on-device-modelin op Ingeschakeld . - 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
-
- Klik op Opnieuw opstarten of Chrome opnieuw starten.
Gebruik de Writer API
Voer eerst een 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 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 Writer.availability() aan. Als het antwoord op availability() is dat het model downloadable is, luistert u naar de voortgang van de download en informeert u de gebruiker hierover, aangezien de download enige tijd kan duren.
const availability = await Writer.availability();
Om het downloaden van het model te starten en de writer te starten, controleer je of de gebruiker is geactiveerd en roep je 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 schrijverobject 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 opformal,neutral(standaard) ofcasual. -
format: De uitvoeropmaak, met de toegestane waardenmarkdown(standaard) enplain-text. -
length: De lengte van de uitvoer, met de toegestane waardenshort(standaard),mediumenlong. -
sharedContext: Bij het schrijven van meerdere outputs 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 writer object geïnitialiseerd kan worden:
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}%`);
});
}
});
}
Wijs de verwachte talen toe.
De Writer API ondersteunt meerdere talen. Stel de gewenste invoer- en contexttaal, evenals de gewenste uitvoertaal, in bij het aanmaken van uw sessie. Hierdoor kan de browser het verzoek weigeren als een specifieke taalcombinatie niet wordt ondersteund.
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."
});
Begin met schrijven
Er zijn twee manieren om uitvoer vanuit het model te genereren: uitvoer op basis van een verzoek 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 uitvoer op basis van een verzoek te verkrijgen, roept u de asynchrone functie write() aan. U moet een prompt opgeven voor de inhoud die u wilt laten schrijven. U kunt optioneel een context toevoegen om achtergrondinformatie aan het model te verstrekken, wat het model kan helpen beter aan uw verwachtingen voor de uitvoer te voldoen.
// 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",
},
);
Uitvoer van stream-schrijven
Streaming biedt continue resultaten in realtime. De output wordt stapsgewijs bijgewerkt naarmate input wordt toegevoegd en aangepast.
Om een streaming writer te verkrijgen, roept u de functie writeStreaming() 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 beter aan uw verwachtingen voor de uitvoer te voldoen.
// 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);
}
Deel de context voor meerdere taken.
U kunt een writer inschakelen om meerdere stukken content te genereren. In dat geval is het handig om sharedContext toe te voegen. U wilt bijvoorbeeld reviewers helpen betere feedback te geven in reacties.
// 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);
}
Hergebruik een schrijver
Je kunt dezelfde schrijver gebruiken om meerdere soorten content te creëren.
// 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 afbreken 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();
Demo
Toestemmingsbeleid, iframes en webworkers
Standaard is de Writer 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 Writer API by
setting the `allow="writer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="writer"></iframe>
De Writer 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 intensief besproken en kunnen in de toekomst nog veranderen. Als u deze API uitprobeert en feedback heeft, horen we dat graag.
- Lees de toelichting , stel vragen en neem deel aan de discussie.
- Raadpleeg Chrome Status voor updates over de implementatie van de API in Chrome.
- Als je feedback hebt over de implementatie in Chrome, meld dit dan via een Chromium-bugrapport .
- Meld je aan voor het early preview-programma en krijg als eerste toegang tot nieuwe API's en onze mailinglijst.
Ontdek alle ingebouwde AI API's die gebruikmaken van modellen, waaronder Gemini Nano en andere expertmodellen, rechtstreeks in de browser.