Publicado em 20 de maio de 2025
Explicação | Web | Extensões | Status do Chrome | Intenção |
---|---|---|---|---|
Ver | Intenção de fazer um experimento |
A API Writer ajuda a criar conteúdo 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 para escrita.
Essas APIs de parceiros podem ajudar você a melhorar o conteúdo criado pelos usuários.
Casos de uso
Escreva um novo conteúdo com base na 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 melhores solicitações de suporte.
- Escreva uma introdução para uma série de amostras de trabalho para capturar melhor certas habilidades.
Seu caso de uso está faltando? Participe do Programa de testes antecipados para compartilhar seu feedback.
Primeiros passos
Participe do teste de origem da API Writer, executado no Chrome 137 a 142.
Analisar os requisitos de hardware
As APIs Language Detector e Translator funcionam em computadores somente no Chrome.
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 mais recentes) ou Linux. O Chrome para Android, iOS e ChromeOS ainda não são compatíveis com nossas APIs com suporte do Gemini Nano.
- Armazenamento: pelo menos 22 GB no volume que contém seu perfil do Chrome.
- GPU: estritamente mais de 4 GB de VRAM.
- Rede: dados ilimitados ou uma conexão ilimitada.
Esses requisitos existem para você no processo de desenvolvimento e para os usuários que trabalham com os recursos que você cria.
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:
- Confirme que você leu e aceitou a Política de uso proibido da IA generativa do Google.
- Acesse o teste de origem da API Writer.
- Clique em Registrar e preencha o formulário. No campo "Origem da Web", informe o ID da origem ou da extensão,
chrome-extension://YOUR_EXTENSION_ID
. - Para enviar, clique em Registrar.
- 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.
- Comece a usar as APIs Writer e Rewriter.
Saiba mais sobre 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, é necessário atualizar o Chrome para a versão mais recente. Em seguida, siga estas etapas:
- Acesse
chrome://flags/#writer-api-for-gemini-nano
. - Selecione Ativado.
- Clique em Reiniciar ou reinicie o Chrome.
Usar a API Writer
Primeiro, execute a detecção de recursos para saber se o navegador oferece suporte a essas APIs.
if ('Writer' in self) {
// The Writer API is supported.
}
A API Writer e todas as outras APIs de IA integradas estão integradas no navegador. O Gemini Nano é feito o download separadamente na primeira vez que um site usa uma API AI integrada. Na prática, se um usuário já interagiu com uma API integrada, ele fez o download do modelo no navegador.
Para determinar se o modelo está pronto para uso, chame a função Writer.availability()
assíncrona. Ele retorna uma string que pode ter quatro valores possíveis:
unavailable
: o navegador oferece suporte à API Writer, mas ela não pode ser usada no momento. Isso pode acontecer por vários motivos, como espaço em disco insuficiente para fazer o download do modelo.available
: o navegador oferece suporte à API Writer e pode ser usado imediatamente.downloadable
: o navegador oferece suporte à API Writer, mas precisa fazer o download do modelo primeiro.downloading
: o navegador oferece suporte à API Writer e está fazendo o download do modelo.
Para acionar o download do modelo e iniciar o gravador, chame a função Writer.create()
. Se a resposta para availability()
foi downloadable
, detecte o progresso do download e informe o usuário, já que o download pode levar algum 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 de gravação. Ele usa um objeto options
opcional com os seguintes parâmetros:
tone
: o tom da escrita pode se referir ao estilo, ao caráter ou à atitude do conteúdo. O valor pode ser definido comoformal
,neutral
(padrão) oucasual
.format
: a formatação da saída, com os valores permitidosmarkdown
(padrão) eplain-text
.length
: o comprimento da saída, com os valores permitidosshort
,medium
(padrão) elong
.sharedContext
: ao gravar 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.
writer = await Writer.create(options);
writer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
}
Começar a escrever
Há duas maneiras de gerar a escrita do modelo: sem e com .
Saída sem
Com a gravação sem , o modelo processa a entrada como um todo e, em seguida, produz a saída.
Para receber uma saída sem , chame a função write()
assíncrona. Você precisa incluir uma instrução para o conteúdo que você quer escrever. É possível adicionar um context
opcional para fornecer informações de contexto do modelo, o que pode ajudar o modelo a atender melhor às suas expectativas em relação à saída.
// Non-
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",
},
);
Stream de saída de gravação
O oferece resultados em tempo real. A saída é atualizada continuamente à medida que a entrada é adicionada e ajustada.
Para acessar um gravador de , chame a função write()
e itere os segmentos de texto disponíveis no stream. É possível adicionar um context
opcional para fornecer informações de contexto do modelo, o que pode ajudar o modelo a atender melhor às suas expectativas em relação à saída.
//
const writer = await Writer.create();
const stream = writer.write(
"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 o 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.write(
"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 compositor
Você pode usar o mesmo redator 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, interrompa 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 compartilhamento de feedback
O Writer e a API Rewriter estão em discussão ativa e sujeitos a mudanças no futuro. Se você testar essa API e tiver feedback, vamos adorar receber sua opinião.
- Leia o texto explicativo, faça perguntas e participe da discussão.
- Confira a implementação do Chrome no Status do Chrome.
- Participe do programa de visualização antecipada para conferir as novas APIs e ter acesso à nossa lista de e-mails.
- Se você tiver feedback sobre a implementação do Chrome, registre um bug do Chromium.
Descubra todas as APIs de IA integradas que usam modelos, incluindo o Gemini Nano e outros modelos de especialistas, no navegador.