Publicado em: 22 de outubro de 2025
| Explicação | Web | Extensões | Status do Chrome | Intenção |
|---|---|---|---|---|
| GitHub | Ver | Intenção de experimentar |
A API Writer ajuda 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 a melhorar o conteúdo criado pelos usuários.
Casos de uso
Escreva conteúdo novo com base na sua ideia inicial e no contexto opcional. Isso pode ser usado para:
- Ajudar os usuários a escrever qualquer tipo de conteúdo, como resenhas, postagens de blog ou e-mails.
- Ajudar os usuários a escrever solicitações de suporte melhores.
- Escrever uma introdução para uma série de exemplos de trabalho, para capturar melhor determinadas habilidades.
Seu caso de uso está faltando? Participe do programa de prévia antecipada para compartilhar seu feedback.
Primeiros passos
Participe do teste de origem da API Writer em execução no Chrome 137 a 148.
Analisar os requisitos de hardware
Os requisitos a seguir existem para desenvolvedores e usuários que operam recursos usando estas APIs no Chrome. Outros navegadores podem ter requisitos operacionais diferentes.
As APIs Language Detector e Translator funcionam no Chrome para computador. Essas APIs não funcionam em dispositivos móveis.
A API Prompt, a API Summarizer, a API Writer, a API Rewriter e a API Proofreader 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); Linux; ou ChromeOS (da plataforma 16389.0.0 e versões mais recentes) em Chromebook Plus dispositivos. O Chrome para Android, iOS e ChromeOS em dispositivos não Chromebook Plus 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 ou CPU: os modelos integrados podem ser executados com GPU ou CPU.
- GPU: estritamente mais de 4 GB de VRAM.
- CPU: 16 GB de RAM ou mais e 4 núcleos de CPU ou mais.
- Rede: dados ilimitados ou uma conexão não limitada.
O tamanho exato do Gemini Nano pode variar à medida que o navegador atualiza o modelo. Para determinar o tamanho atual, acesse chrome://on-device-internals.
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:
- Reconheça a Política de usos proibidos de 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", forneça sua
origem ou ID 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 em seu 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 a API Writer no localhost, use as flags do Chrome:
- Defina
chrome://flags/#optimization-guide-on-device-modelcomo Ativado. - Defina as flags a seguir como Ativado ou Ativado multilíngue:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-inputchrome://flags/#writer-api-for-gemini-nano
- Clique em Reiniciar ou reinicie o Chrome.
Usar a API Writer
Primeiro, execute a detecção de recursos para verificar 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 ao 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(). Se
a resposta a availability() for downloadable, ouça o progresso do download
e informe o usuário, já que o download pode levar algum tempo.
const availability = await Writer.availability();
Para acionar o download do modelo e iniciar o gravador, verifique a
ativação do usuário
e chame a função Writer.create().
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 gravador. Ele usa um objeto options opcional com os seguintes parâmetros:
tone: O tom de escrita pode se referir ao estilo, caráter ou atitude do conteúdo. O valor pode ser definido comoformal,neutral(padrão) oucasual.format: a formatação de saída, com os valores permitidosmarkdown(padrão) eplain-text.length: o comprimento da saída, com os valores permitidosshort(padrão),medium, elong.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}%`);
});
}
});
}
Atribuir idiomas esperados
A API Writer oferece suporte a vários idiomas. Defina os idiomas de entrada e contexto esperados, bem como o idioma de saída esperado ao criar sua sessão. Isso permite que o navegador rejeite a solicitação se o navegador não for possível oferecer suporte a uma combinação de idiomas específica.
const writer = await Writer.create({
tone: "formal",
expectedInputLanguages: ["en", "ja", "es"],
expectedContextLanguages: ["en", "ja", "es"],
outputLanguage: "es",
sharedContext: "These are requests to write 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."
});
Começar a escrever
Há duas maneiras de gerar a saída de escrita do modelo: saída baseada em solicitação e streaming.
Saída baseada em solicitação
Para a saída baseada em solicitação (ou "não streaming"), o modelo aguarda a geração de toda a entrada, processa essa entrada como um todo e, em seguida, produz a saída.
Para receber uma saída baseada em solicitação, chame a função assíncrona write(). É necessário incluir um comando para o conteúdo que você quer escrever. Você pode adicionar um opcional
context para fornecer informações de plano de fundo do modelo, o que pode ajudar o modelo
a atender melhor às suas expectativas para a saída.
// Request-based
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 escrita de stream
O streaming oferece resultados contínuos em tempo real. A saída é atualizada de forma incremental à medida que a entrada é adicionada e ajustada.
Para receber um gravador de streaming, chame a função writeStreaming() e itere
os segmentos de texto disponíveis no stream. Você pode adicionar um opcional
context para fornecer informações de plano de fundo do modelo, o que pode ajudar o modelo
a atender melhor às suas expectativas para a saída.
// Streaming
const writer = await Writer.create(
expectedInputLanguages: ["en"],
expectedContextLanguages: ["en"],
outputLanguage: "en",
);
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
Talvez você queira usar um writer para gerar várias partes de conteúdo. 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({
expectedInputLanguages: ["en"],
expectedContextLanguages: ["en"],
outputLanguage: "en",
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 gravador para criar várias partes de conteúdo.
// 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 escrita, 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
Política de permissões, iframes e Web Workers
Por padrão, a API Writer está disponível apenas para janelas de nível superior e para os
iframes de mesma origem. O acesso à API pode ser delegado a iframes de origem cruzada
usando o atributo da Política de permissões allow="":
<!--
The hosting site at https://main.example.com can grant a cross-origin iframe
at https://cross-origin.example.com/ access to the Writer API by
setting the `allow="writer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="writer"></iframe>
A API Writer não está disponível em Web Workers. Isso ocorre devido à complexidade de estabelecer um documento responsável para cada worker, a fim de verificar o status da Política de permissões.
Engajamento e como compartilhar feedback
A API Writer e a API Rewriter estão em discussão ativa e sujeitas a mudanças no futuro. Se você testar essa API e tiver feedback, gostaríamos de ouvir.
- Leia a explicação, faça perguntas e participe da discussão.
- Consulte o status do Chrome para atualizações sobre a implementação da API no Chrome.
- Se você tiver feedback sobre a implementação do Chrome, registre um bug do Chromium.
- Participe do programa de prévia antecipada para conferir as novas APIs e acessar nossa lista de e-mails.
Descubra todas as APIs de IA integradas que usam modelos, incluindo o Gemini Nano e outros modelos especializados, no navegador.