Publié le 20 mai 2025
Explication | Web | Extensions | État de Chrome | Intention |
---|---|---|---|---|
GitHub | Afficher | Intention de tester |
L'API Writer vous aide à créer du contenu conforme à une tâche de rédaction spécifique. L'API Writer et l'API Rewriter font partie de la proposition d'API d'aide à la rédaction.
Ces API partenaires peuvent vous aider à améliorer les contenus créés par les utilisateurs.
Cas d'utilisation
Rédigez de nouveaux contenus en fonction de votre idée initiale et du contexte facultatif. Vous pouvez l'utiliser pour :
- Les utilisateurs de l'assistance peuvent rédiger n'importe quel type de contenu, comme des avis, des articles de blog ou des e-mails.
- Aidez les utilisateurs à rédiger de meilleures demandes d'assistance.
- Rédige une introduction pour une série d'exemples de travaux, afin de mieux mettre en évidence certaines compétences.
Votre cas d'utilisation est-il manquant ? Participez au programme Preview pour nous faire part de vos commentaires.
Commencer
Participez à la phase d'évaluation de l'API Writer, qui se déroule dans Chrome 137 à 142.
Consulter la configuration matérielle requise
Les exigences suivantes s'appliquent aux développeurs et aux utilisateurs qui utilisent des fonctionnalités à l'aide de ces API dans Chrome. Il est possible que les exigences de fonctionnement soient différentes dans les autres navigateurs.
Les API Language Detector et Translator fonctionnent dans Chrome sur ordinateur. Ces API ne fonctionnent pas sur les appareils mobiles. Les API Prompt, Summarizer, Writer et Rewriter fonctionnent dans Chrome lorsque les conditions suivantes sont remplies :
- Système d'exploitation : Windows 10 ou 11, macOS 13 ou version ultérieure (Ventura et versions ultérieures) ou Linux. Chrome pour Android, iOS et ChromeOS ne sont pas encore compatibles avec les API qui utilisent Gemini Nano.
- Stockage : au moins 22 Go d'espace libre sur le volume contenant votre profil Chrome.
- GPU : plus de 4 Go de VRAM.
- Réseau : données illimitées ou connexion non limitée.
La taille exacte de Gemini Nano peut varier à mesure que le navigateur met à jour le modèle. Pour déterminer la taille actuelle, accédez à chrome://on-device-internals
, puis à État du modèle. Ouvrez le chemin d'accès au fichier indiqué pour déterminer la taille du modèle.
S'inscrire à la version d'évaluation de l'origine
L'API Writer est disponible dans une phase d'évaluation conjointe avec l'API Rewriter. Pour commencer à utiliser ces API :
- Acceptez le Règlement sur les utilisations interdites de l'IA générative de Google.
- Accédez à l'origin trial de l'API Writer.
- Cliquez sur S'inscrire et remplissez le formulaire. Dans le champ "Origine Web", indiquez votre origine ou l'ID de l'extension,
chrome-extension://YOUR_EXTENSION_ID
. - Pour valider, cliquez sur S'inscrire.
- Copiez le jeton fourni et ajoutez-le à chaque page Web participante de votre origine ou incluez-le dans votre fichier manifeste de l'extension.
- Commencez à utiliser les API Writer et Rewriter.
Découvrez comment faire vos premiers pas avec les versions d'essai des origines.
Ajouter la prise en charge de localhost
Pour accéder aux API Writer et Rewriter sur localhost pendant l'Origin Trial, vous devez mettre à jour Chrome vers la dernière version. Ensuite, procédez comme suit :
- Accédez à
chrome://flags/#writer-api-for-gemini-nano
. - Sélectionnez Activé.
- Cliquez sur Relancer ou redémarrez Chrome.
Utiliser l'API Writer
Tout d'abord, exécutez la détection de fonctionnalités pour voir si le navigateur est compatible avec ces API.
if ('Writer' in self) {
// The Writer API is supported.
}
L'API Writer et toutes les autres API d'IA intégrées sont intégrées au navigateur. Gemini Nano est téléchargé séparément la première fois qu'un site Web utilise une API d'IA intégrée. En pratique, si un utilisateur a déjà interagi avec une API intégrée, il a téléchargé le modèle dans son navigateur.
Pour déterminer si le modèle est prêt à être utilisé, appelez la fonction asynchrone Writer.availability()
. Elle renvoie une chaîne qui peut prendre quatre valeurs possibles :
unavailable
: le navigateur est compatible avec l'API Writer, mais elle ne peut pas être utilisée pour le moment. Plusieurs raisons peuvent expliquer ce problème, comme un espace disque insuffisant pour télécharger le modèle.available
: le navigateur est compatible avec l'API Writer et peut être utilisé immédiatement.downloadable
: le navigateur est compatible avec l'API Writer, mais il doit d'abord télécharger le modèle.downloading
: le navigateur est compatible avec l'API Writer et télécharge actuellement le modèle.
Pour déclencher le téléchargement du modèle et démarrer le rédacteur, appelez la fonction Writer.create()
. Si la réponse à availability()
est downloadable
, écoutez la progression du téléchargement et informez l'utilisateur, car le téléchargement peut prendre du temps.
const writer = await Writer.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
Fonctions de l'API
La fonction create()
vous permet de configurer un nouvel objet Writer. Il accepte un objet options
facultatif avec les paramètres suivants :
tone
: le ton de l'écriture peut faire référence au style, au caractère ou à l'attitude du contenu. La valeur peut être définie surformal
,neutral
(par défaut) oucasual
.format
: format de sortie, avec les valeurs autoriséesmarkdown
(par défaut) etplain-text
.length
: longueur de la sortie, avec les valeurs autoriséesshort
,medium
(par défaut) etlong
.sharedContext
: lorsque vous écrivez plusieurs sorties, un contexte partagé peut aider le modèle à créer du contenu mieux adapté à vos attentes.
L'exemple suivant montre comment initialiser un objet writer
:
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}%`);
});
}
});
}
Commencer à écrire
Il existe deux façons de générer du texte à partir du modèle : sans flux et avec flux.
Sortie sans streaming
Avec l'écriture sans streaming, le modèle traite l'entrée dans son ensemble, puis produit la sortie.
Pour obtenir une sortie non diffusée en flux continu, appelez la fonction asynchrone write()
. Vous devez inclure un prompt pour le contenu que vous souhaitez faire rédiger. Vous pouvez ajouter un context
facultatif pour fournir au modèle des informations générales, ce qui peut l'aider à mieux répondre à vos attentes concernant le résultat.
// 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",
},
);
Diffuser en continu la sortie d'écriture
Le streaming fournit des résultats en temps réel. La sortie est mise à jour en continu à mesure que l'entrée est ajoutée et ajustée.
Pour obtenir un writer de flux, appelez la fonction writeStreaming()
et itérez sur les segments de texte disponibles dans le flux. Vous pouvez ajouter un context
facultatif pour fournir au modèle des informations générales, ce qui peut l'aider à mieux répondre à vos attentes concernant le résultat.
// 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);
}
Partager le contexte pour plusieurs tâches
Vous pouvez utiliser un writer
pour générer plusieurs contenus. Dans ce cas, il est utile d'ajouter sharedContext
. Par exemple, vous pouvez aider les évaluateurs à fournir de meilleurs commentaires.
// 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);
}
Réutiliser un rédacteur
Vous pouvez utiliser le même rédacteur pour créer plusieurs contenus.
// 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)
),
);
Arrêter le rédacteur
Pour mettre fin au processus d'écriture, abandonnez le contrôleur et détruisez l'écrivain.
// 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();
Démo
Interagir et envoyer des commentaires
L'API Writer et l'API Rewriter font l'objet de discussions actives et sont susceptibles d'être modifiées à l'avenir. Si vous essayez cette API et que vous avez des commentaires, n'hésitez pas à nous les envoyer.
- Lisez l'explication, posez des questions et participez à la discussion.
- Consultez l'implémentation pour Chrome sur Chrome Status.
- Rejoignez le programme d'accès anticipé pour découvrir en avant-première les nouvelles API et accéder à notre liste de diffusion.
- Si vous avez des commentaires sur l'implémentation de Chrome, signalez un bug Chromium.
Découvrez toutes les API d'IA intégrées qui utilisent des modèles, y compris Gemini Nano et d'autres modèles experts, dans le navigateur.