API Rewriter

Publié le 22 octobre 2025

Présentateur Web Extensions État de Chrome Intention
GitHub Essai pour les développeursEssai pour les développeurs Essai pour les développeursEssai pour les développeurs Afficher Intention de tester

L'API Rewriter vous aide à réviser et à restructurer du texte. Cette API et l' API Writer font partie de la proposition d'API d'aide à l'écriture.

Ces API peuvent vous aider à améliorer le contenu créé par les utilisateurs.

Cas d'utilisation

Améliorez le texte existant en l'allongeant, en le raccourcissant ou en modifiant le ton. Par exemple, vous pouvez :

  • réécrire un e-mail court pour qu'il soit plus poli et formel ;
  • suggérer des modifications aux avis des clients pour aider les autres clients à comprendre les commentaires ou supprimer les contenus toxiques ;
  • mettre en forme le contenu pour répondre aux attentes de certaines audiences.

Votre cas d'utilisation n'est pas mentionné ? Rejoignez le programme Preview pour nous faire part de vos commentaires.

Premiers pas

Participez à la phase d'évaluation de l'API Rewriter, qui se déroule dans Chrome 137 à 148.

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. D'autres navigateurs peuvent avoir des exigences de fonctionnement différentes.

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, Rewriter et Proofreader fonctionnent dans Chrome lorsque les conditions suivantes sont remplies :

  • Système d'exploitation : Windows 10 ou 11 ; macOS 13+ (Ventura et versions ultérieures) ; Linux ; ou ChromeOS (à partir de la plate-forme 16389.0.0 et versions ultérieures) sur Chromebook Plus appareils. Chrome pour Android, iOS et ChromeOS sur les appareils non Chromebook Plus 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 ou CPU : les modèles intégrés peuvent s'exécuter avec un GPU ou un CPU.
    • GPU : strictement plus de 4 Go de VRAM.
    • CPU : 16 Go de RAM ou plus et 4 cœurs de processeur ou plus.
    • Remarque : L'API Prompt avec entrée audio nécessite un GPU.
  • 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.

S'inscrire à la phase d'évaluation

L'API Rewriter est disponible dans une phase d'évaluation conjointe avec l'API Writer. Pour commencer à utiliser ces API :

  1. Acceptez le Règlement sur les utilisations interdites de l'IA générative de Google.
  2. Accédez à la phase d'évaluation de l'API Rewriter.
  3. Cliquez sur Register (S'inscrire), puis remplissez le formulaire. Dans le champ "Web origin" (Origine Web), indiquez votre origine ou votre ID d'extension, chrome-extension://YOUR_EXTENSION_ID.
  4. Pour valider, cliquez sur Register (S'inscrire).
  5. Copiez le jeton fourni et ajoutez-le à chaque page Web participante de votre origine ou incluez-le dans le fichier manifeste de votre extension.
  6. Commencez à utiliser l'API Rewriter.

Découvrez comment commencer à utiliser les phases d'évaluation.

Ajouter la prise en charge à localhost

Pour accéder à l'API Rewriter sur localhost, utilisez les options Chrome :

  1. Définissez chrome://flags/#optimization-guide-on-device-model sur Enabled (Activé).
  2. Définissez les options suivantes sur Enabled (Activé) ou Enabled Multilingual (Multilingue activé) :
    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
    • chrome://flags/#writer-api-for-gemini-nano
  3. Cliquez sur Relaunch (Relancer) ou redémarrez Chrome.

Utiliser l'API Rewriter

Tout d'abord, exécutez la détection de fonctionnalités pour voir si le navigateur est compatible avec ces API.

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

L'API Rewriter 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 Rewriter.availability(). 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 availability = await Rewriter.availability();

Pour déclencher le téléchargement du modèle et démarrer le réécrivain, vérifiez l' activation de l'utilisateur et appelez la fonction Rewriter.create().

const rewriter = await Rewriter.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 de réécriture. Elle 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 sur more-formal, as-is (par défaut) ou more-casual.
  • format: la mise en forme de la sortie, avec les valeurs autorisées as-is (par défaut), markdown et plain-text.
  • length: la longueur de la sortie, avec les valeurs autorisées shorter, as-is (par défaut) et longer.
  • sharedContext : lorsque vous réécrivez plusieurs éléments de contenu, un contexte partagé peut aider le modèle à créer un contenu mieux adapté à vos attentes.

L'exemple suivant montre comment lancer un objet rewriter :

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

Attribuer les langues attendues

L'API Rewriter est compatible avec plusieurs langues. Définissez les langues d'entrée, de sortie et de contexte attendues lorsque vous créez votre session. Cela permet au navigateur de rejeter la requête s'il ne peut pas prendre en charge une combinaison de langues spécifique.

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

Commencer à réécrire

Il existe deux façons de générer du contenu à partir du modèle : la sortie basée sur les requêtes et le streaming.

Sortie basée sur les requêtes

Pour la sortie basée sur les requêtes (ou "sans streaming"), le modèle attend que l'intégralité de l'entrée soit générée, traite cette entrée dans son ensemble, puis génère la sortie.

Pour obtenir une sortie basée sur les requêtes, appelez la fonction asynchrone rewrite(). Vous devez inclure le texte initial que vous souhaitez réécrire. Vous pouvez ajouter un context facultatif pour fournir des informations de base au modèle, ce qui peut l'aider à mieux répondre à vos attentes concernant la sortie.

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

Diffuser la sortie de réécriture

Le streaming offre 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 réécrivain de streaming, appelez la fonction rewriteStreaming() et parcourez les segments de texte disponibles dans le flux. Vous pouvez ajouter un context facultatif pour fournir des informations de base au modèle, ce qui peut l'aider à mieux répondre à vos attentes concernant la sortie.

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

Partager le contexte pour plusieurs tâches

Vous pouvez utiliser un rewriter pour générer plusieurs éléments de contenu. Dans ce cas, il est utile d'ajouter sharedContext. Par exemple, vous pouvez aider les évaluateurs à fournir de meilleurs commentaires dans les commentaires.

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

Réutiliser un réécrivain

Vous pouvez utiliser le même réécrivain pour modifier plusieurs éléments de contenu. Cela peut être particulièrement utile si vous ajoutez le réécrivain à un outil de commentaires ou de commentaires, afin d'aider les rédacteurs à fournir des commentaires productifs et utiles.

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

Arrêter le réécrivain

Pour mettre fin au processus de réécriture, abandonnez le contrôleur et détruisez le rewriter.

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

Démo

Règle relative aux autorisations, iframes et Web Workers

Par défaut, l'API Rewriter n'est disponible que pour les fenêtres de premier niveau et leurs iframes de même origine. L'accès à l'API peut être délégué à des iframes d'origine croisée à l'aide de l'attribut allow="" de la règle relative aux autorisations :

<!--
  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>

L'API Rewriter n'est pas disponible dans les Web Workers. Cela est dû à la complexité de l'établissement d'un document responsable pour chaque worker, afin de vérifier l'état de la règle relative aux autorisations.

S'engager et partager des commentaires

Les API Writer et 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 en faire part.

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.