API Rewriter

Publicado em: 20 de maio de 2025

Explicação Web Extensões Status do Chrome Intenção
GitHub Teste de origem Teste de origem Teste de origem Teste de origem Ver Intenção de experimentar

A API Rewriter ajuda você a revisar e reestruturar textos. Essa API e a API Writer fazem parte da proposta de APIs de assistência de escrita.

Essas APIs podem ajudar você a melhorar o conteúdo criado pelos usuários.

Casos de uso

Refinar um texto para que ele fique mais longo ou curto ou mudar o tom. Por exemplo, você pode:

  • Reescreva um e-mail curto para que ele pareça mais educado e formal.
  • Sugerir edições nas avaliações dos clientes para ajudar outras pessoas a entender o feedback ou remover conteúdo tóxico.
  • Formate o conteúdo para atender às expectativas de determinados públicos-alvo.

Seu caso de uso não está listado? Participe do programa de acesso antecipado para compartilhar seu feedback.

Primeiros passos

Participe do teste de origem da API Rewriter, que será executado no Chrome 137 a 142.

Revisar os requisitos de hardware

Os desenvolvedores e usuários que operam recursos usando essas APIs no Chrome precisam atender aos seguintes requisitos. Outros navegadores podem ter requisitos operacionais diferentes.

As APIs Language Detector e Translator funcionam no Chrome em computadores. Essas APIs não funcionam em dispositivos móveis. As APIs Prompt, Summarizer, Writer e Rewriter funcionam no Chrome quando as seguintes condições são atendidas:

  • Sistema operacional: Windows 10 ou 11, macOS 13 ou mais recente (Ventura e versões posteriores) ou Linux. O Chrome para Android, iOS e ChromeOS ainda não é compatível com as APIs que usam o Gemini Nano.
  • Armazenamento: pelo menos 22 GB no volume que contém seu perfil do Chrome.
  • GPU: mais de 4 GB de VRAM.
  • Rede: dados ilimitados ou uma conexão ilimitada.

O tamanho exato do Gemini Nano pode variar um pouco. Para encontrar o tamanho atual, acesse chrome://on-device-internals e clique em Status do modelo. Abra o Caminho do arquivo listado para determinar o tamanho do modelo.

Inscrever-se no teste de origem

A API Rewriter está disponível em um teste de origem conjunto com a API Writer. Para começar a usar essas APIs:

  1. Confirmar a Política de uso proibido da IA generativa do Google.
  2. Acesse o teste de origem da API Rewriter.
  3. Clique em Registrar e preencha o formulário. No campo "Origem da Web", forneça sua origem ou ID da extensão, chrome-extension://YOUR_EXTENSION_ID.
  4. Para enviar, clique em Registrar.
  5. Copie o token fornecido e adicione-o a todas as páginas da Web participantes na sua origem ou inclua-o no manifesto da extensão.
  6. Comece a usar a API Rewriter.

Saiba como começar a usar os testes de origem.

Adicionar suporte ao localhost

Para acessar as APIs Writer e Rewriter no localhost durante o teste de origem, atualize o Chrome para a versão mais recente. Em seguida, siga estas etapas:

  1. Acesse chrome://flags/#rewriter-api-for-gemini-nano.
  2. Selecione Ativado.
  3. Clique em Reiniciar ou reinicie o Chrome.

Usar a API Rewriter

Primeiro, execute a detecção de recursos para verificar se o navegador é compatível com essas APIs.


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

A API Rewriter e todas as outras APIs de IA integradas estão no navegador. O Gemini Nano é baixado separadamente na primeira vez que um site usa uma API de IA integrada. Na prática, se um usuário já interagiu com uma API integrada, ele baixou o modelo no navegador.

Para determinar se o modelo está pronto para uso, chame a função assíncrona Rewriter.availability(). Ela retorna uma string que pode assumir quatro valores possíveis:

  • unavailable: o navegador é compatível com a API Rewriter, mas ela não pode ser usada no momento. Isso pode acontecer por vários motivos, como espaço em disco disponível insuficiente para baixar o modelo.
  • available: o navegador é compatível com a API Rewriter e pode ser usada imediatamente.
  • downloadable: o navegador é compatível com a API Rewriter, mas precisa baixar o modelo primeiro.
  • downloading: o navegador é compatível com a API Rewriter e está baixando o modelo.

Para acionar o download do modelo e iniciar o rewriter, chame a função Rewriter.create(). Se a resposta a availability() for downloadable, aguarde o progresso do download e informe o usuário, já que o download pode levar tempo.

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

Funções da API

A função create() permite configurar um novo objeto rewriter. Ele usa um objeto options opcional com os seguintes parâmetros:

  • tone: tom de escrita pode se referir ao estilo, caráter ou atitude do conteúdo. O valor pode ser definido como more-formal, as-is (padrão) ou more-casual.
  • format: a formatação da saída, com os valores permitidos as-is (padrão), markdown e plain-text.
  • length: o comprimento da saída, com os valores permitidos shorter, as-is (padrão) e longer.
  • sharedContext: ao reescrever vários conteúdos, um contexto compartilhado pode ajudar o modelo a criar conteúdo mais alinhado às suas expectativas.

O exemplo a seguir demonstra como iniciar um objeto 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);
  });
}

Começar a reescrever

Há duas maneiras de gerar conteúdo do modelo: sem streaming e com streaming.

Saída não streaming

Com a reescrita sem streaming, o modelo processa a entrada como um todo e depois produz a saída.

Para receber uma saída não transmitida, chame a função assíncrona rewrite(). Você precisa incluir o texto inicial que quer reescrever. Você pode adicionar um context opcional para fornecer informações básicas ao modelo, o que pode ajudar a atender melhor às suas expectativas de saída.

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

Saída de reescrita de stream

O streaming oferece resultados em tempo real. A saída é atualizada continuamente à medida que a entrada é adicionada e ajustada.

Para receber um rewriter de streaming, chame a função rewriteStreaming() e itere pelos segmentos de texto disponíveis no stream. Você pode adicionar um context opcional para fornecer informações básicas ao modelo, o que pode ajudar a atender melhor às suas expectativas de saída.

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

Compartilhar contexto para várias tarefas

Você pode usar um rewriter para gerar vários conteúdos. Nesse caso, é útil adicionar sharedContext. Por exemplo, você pode ajudar os revisores a dar um feedback melhor nos comentários.

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

Reutilizar um reescritor

Você pode usar o mesmo reescritor para editar vários conteúdos. Isso pode ser especialmente útil se você adicionar o rewriter a uma ferramenta de feedback ou comentários para ajudar os escritores a oferecer feedback produtivo e útil.

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

Parar o rewriter

Para encerrar o processo de reescrita, aborte o controlador e destrua o 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();

Demonstração

Engajamento e como compartilhar feedback

As APIs Writer e Rewriter estão em discussão e sujeitas a mudanças no futuro. Se você testar essa API e tiver feedback, envie sua opinião.

Conheça todas as APIs de IA integradas que usam modelos, incluindo o Gemini Nano e outros modelos especializados, no navegador.