API Writer

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 Writer ajuda você a criar conteúdo novo que esteja de acordo com uma tarefa de escrita especificada. A API Writer e a API Rewriter fazem parte da proposta de APIs de assistência de escrita.

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

Casos de uso

Escrever um novo conteúdo com base na sua ideia inicial e no contexto opcional. Isso pode ser usado para:

  • Ajude os usuários a escrever qualquer tipo de conteúdo, como avaliações, postagens de blog ou e-mails.
  • Ajude os usuários a escrever solicitações de suporte melhores.
  • Escreva uma introdução para uma série de exemplos de trabalho e capture melhor determinadas habilidades.

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 Writer, 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 de espaço livre 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 conforme o navegador atualiza o modelo. Para determinar 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 Writer está disponível em um teste de origem conjunto com a API Rewriter. Para começar a usar essas APIs:

  1. Confirme a Política de uso proibido da IA generativa do Google.
  2. Acesse o teste de origem da API Writer.
  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 as APIs Writer e 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/#writer-api-for-gemini-nano.
  2. Selecione Ativado.
  3. Clique em Reiniciar ou reinicie o Chrome.

Usar a API Writer

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

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

A API Writer 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 para o navegador.

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

  • unavailable: o navegador é compatível com a API Writer, 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 Writer e pode ser usada imediatamente.
  • downloadable: o navegador é compatível com a API Writer, mas precisa baixar o modelo primeiro.
  • downloading: o navegador é compatível com a API Writer e está baixando o modelo.

Para acionar o download do modelo e iniciar o gravador, chame a função Writer.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 writer = await Writer.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 gravador. 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 formal, neutral (padrão) ou casual.
  • format: a formatação da saída, com os valores permitidos markdown (padrão) e plain-text.
  • length: o comprimento da saída, com os valores permitidos short, medium (padrão) e long.
  • sharedContext: ao escrever várias saídas, 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 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}%`);
      });
    }
  });
}

Começar a escrever

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

Saída não streaming

Com a escrita 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 write(). Você precisa incluir um comando para o conteúdo que quer escrever. 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 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",
  },
);

Saída de gravação de stream

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

Para receber um gravador de streaming, chame a função writeStreaming() 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.

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

Compartilhar contexto para várias tarefas

Você pode usar um writer 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 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);
}

Reutilizar um gravador

Você pode usar o mesmo escritor para criar vários conteúdos.

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

Parar o gravador

Para encerrar o processo de gravação, aborte o controlador e destrua o gravador.

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

Demonstração

Engajamento e como compartilhar feedback

A API Writer e a Rewriter estão em discussão e sujeitas a mudanças no futuro. Se você testar essa API e tiver feedback, vamos adorar saber sua opinião.

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