prompt api como usartestar prompt apichrome built-in ai ativar

Como testar a Prompt API no seu Chrome hoje

Prompt API Brasil

Como testar a Prompt API no seu Chrome hoje

Dez minutos. É o que separa você de ter IA rodando local no browser, sem pagar nada, sem mandar dado pra lugar nenhum. A Prompt API tá no Chrome 148+ (stable) desde maio de 2026 — qualquer dev web pode testar agora pelo Console. Este tutorial te leva do zero ao primeiro prompt funcionando.

TL;DR

  • Chrome 148+ stable já vem com a Prompt API habilitada — sem flags ou origin trials
  • Verifique o modelo em chrome://on-device-internals e teste com LanguageModel.availability() no Console
  • Suporta streaming, JSON Schema, multimodal e chat com contexto — tudo local e gratuito

Mockup do Chrome DevTools mostrando uma resposta bem-sucedida da Prompt API.

Pré-requisitos

Antes de sair colando código, confere se tua máquina aguenta:

RequisitoMínimoRecomendado
Chrome148+Última versão stable
SOWindows 10, macOS 13+, LinuxQualquer desktop
Armazenamento22 GB livres30+ GB livres
GPU>4 GB VRAM8+ GB VRAM
CPU (sem GPU)16 GB RAM, 4 cores
RedeNão-medida (para download)Wi-Fi/ethernet

Não funciona em mobile. Não funciona em ChromeOS que não seja Chromebook Plus. Notebook com 8 GB de RAM e gráfico integrado? Vai sofrer. Melhor saber agora.

Passo 1: Verificar a versão do Chrome

Abre o Chrome e vai em:

chrome://settings/help

Ou clique em ⋮ → Ajuda → Sobre o Google Chrome.

Precisa ser 148 ou mais. Tá atrás? Atualiza. É automático, mas às vezes demora uns dias pra chegar.

Mockup da página chrome://settings/help com versão 148 destacada.

Passo 2: Verificar o status do modelo Gemini Nano

O modelo baixa sozinho quando o hardware dá conta. Pra conferir:

  1. Abra uma nova aba
  2. Navegue para: chrome://on-device-internals
  3. Procure a seção “Language Model” ou “Optimization Guide On Device Model”

Os possíveis estados:

EstadoO que significaO que fazer
AvailableBaixado e pronto✅ Bom, pode seguir
DownloadingDownload em andamentoEsperar
DownloadableDisponível para baixarCriar uma sessão para iniciar
Not availableHardware insuficienteConferir requisitos

Não aparece como available? Pode ser hardware fraco, menos de 22 GB livres, ou conexão que o sistema marcou como medida (4G/5G contando dados). As três pegam gente.

Mockup da página chrome://on-device-internals mostrando Language Model disponível.

Passo 3: Primeiro teste no Console

Abre DevTools (F12 ou Ctrl+Shift+I), aba Console, e cola:

// Verificar disponibilidade da Prompt API
const status = await LanguageModel.availability();
console.log('Status:', status);

Voltou 'available'? Segue. Voltou 'downloadable'? O próximo passo puxa o modelo.

Passo 4: Criar sua primeira sessão

// Criar sessão com monitoramento de download
const session = await LanguageModel.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Download: ${(e.loaded * 100).toFixed(1)}%`);
    });
  }
});

console.log('Sessão criada!');
console.log(`Context window: ${session.contextWindow} tokens`);

Se o modelo não tava baixado, isso inicia os ~4,27 GB. Progresso aparece no console. Espera acabar — dependendo da sua internet, de 5 a 30 minutos. Vai pegar um café.

Passo 5: Enviar seu primeiro prompt

Sessão criada, agora o que interessa:

const resposta = await session.prompt(
  'What are the 3 largest cities in Brazil? Reply in a short list.'
);
console.log(resposta);

Output esperado (pode variar):

1. São Paulo
2. Rio de Janeiro
3. Brasília

Detalhe importante: como o Gemini Nano não suporta português oficialmente, manda em inglês pra resultado decente. Em PT funciona de vez em quando, mas oscila tanto que não dá pra confiar.

Passo 6: Streaming de respostas

Para respostas longas, streaming mostra o texto aparecendo progressivamente:

const stream = session.promptStreaming(
  'Write a short paragraph about artificial intelligence in web browsers.'
);

let fullResponse = '';
for await (const chunk of stream) {
  fullResponse = chunk; // chunk é cumulativo no Chrome
  console.clear();
  console.log(fullResponse);
}

Aqui tem uma pegadinha que derruba gente migrando de outras APIs: no Chrome, cada chunk vem com o texto completo até aquele ponto. É cumulativo. Na OpenAI, chunks são incrementais — só o delta. Se você copiar padrão de código da OpenAI sem adaptar, vai duplicar texto. Fica o aviso.

Passo 7: Structured output com JSON Schema

Esse é o recurso que eu mais uso. Força a resposta num formato JSON específico:

const schema = {
  type: "object",
  properties: {
    sentiment: {
      type: "string",
      enum: ["positive", "negative", "neutral"]
    },
    confidence: {
      type: "number"
    }
  },
  required: ["sentiment", "confidence"]
};

const resultado = await session.prompt(
  'Classify the sentiment: "I love this product, it changed my life!"',
  { responseConstraint: schema }
);

const parsed = JSON.parse(resultado);
console.log(parsed);
// { sentiment: "positive", confidence: 0.95 }

Acabou a era de parsear texto livre com regex e torcer pra dar certo. O modelo é obrigado a devolver JSON válido conforme o schema. Funciona em 95%+ dos casos com schemas simples. Schemas complexos com aninhamento profundo, aí já escorrega mais.

Passo 8: Sessão com contexto (chat)

A API mantém contexto entre prompts na mesma sessão:

const chatSession = await LanguageModel.create({
  initialPrompts: [
    {
      role: 'system',
      content: 'You are a helpful coding assistant. Be concise.'
    }
  ]
});

// Primeira pergunta
const r1 = await chatSession.prompt('What is a closure in JavaScript?');
console.log('R1:', r1);

// Follow-up — o modelo lembra do contexto anterior
const r2 = await chatSession.prompt('Give me a simple example of one.');
console.log('R2:', r2);

// Ver quanto do contexto já usou
console.log(`Contexto: ${chatSession.contextUsage}/${chatSession.contextWindow}`);

Context window de ~4.096 tokens. Parece pouco (é pouco). Mas pra perguntas e respostas curtas dá uns 8-15 turnos antes de estourar. Pra um assistente rápido de código, serve.

Passo 9: Input multimodal (imagem)

Dá para enviar imagens junto com texto:

const multiSession = await LanguageModel.create({
  expectedInputs: [
    { type: 'text', languages: ['en'] },
    { type: 'image' }
  ],
  expectedOutputs: [{ type: 'text', languages: ['en'] }]
});

// Carregar uma imagem aleatória e pedir descrição
const response = await fetch('https://picsum.photos/400/300');
const imageBlob = await response.blob();

const description = await multiSession.prompt([{
  role: 'user',
  content: [
    { type: 'text', value: 'Describe this image in detail:' },
    { type: 'image', value: imageBlob }
  ]
}]);

console.log(description);

É lento (2-5 segundos com GPU), mas funciona. Pra gerar alt text automaticamente — acessibilidade client-side sem custo recorrente — é ouro puro.

Passo 10: Limpeza e gerenciamento de sessão

// Ver uso de memória
console.log(`Tokens usados: ${session.contextUsage}/${session.contextWindow}`);

// Clonar sessão (preserva contexto)
const clone = await session.clone();

// Destruir sessão (liberar recursos)
session.destroy();
// A partir daqui, session.prompt() lança erro

Sessão come memória. Destrói quando não precisar mais. Especialmente em SPA onde o usuário fica horas na mesma página — se não limpar, vai acumulando até a aba engasgar.

Troubleshooting

”LanguageModel is not defined”

Três culpados: Chrome abaixo de 148, iframe cross-origin sem allow="language-model", ou tentativa em mobile. Sempre um dos três.

Status “unavailable”

Hardware não atende requisitos mínimos, menos de 22 GB livres, ou ChromeOS sem Chromebook Plus.

Download não inicia

Conexão marcada como medida pelo sistema operacional. Verifique chrome://on-device-internals para mensagens de erro. Às vezes um restart do Chrome resolve.

Respostas de baixa qualidade

Manda em inglês. Seja específico. Use responseConstraint pra guiar formato. E lembra: é um modelo de ~4 GB. Não vai escrever dissertação de mestrado. Calibra a expectativa.

Erro “QuotaExceededError”

Estourou o context window. Mata a sessão e cria outra. Ou manda prompts mais curtos. Ou divide em sessões menores. Não tem mágica.

Integração em uma página web

Fora do Console, em produção, sempre faz feature detection. Sempre:

async function isPromptAPIAvailable() {
  if (!('LanguageModel' in window)) {
    return { available: false, reason: 'API not supported in this browser' };
  }

  const status = await LanguageModel.availability();

  if (status === 'unavailable') {
    return { available: false, reason: 'Hardware requirements not met' };
  }

  return { available: true, status };
}

// Uso
const check = await isPromptAPIAvailable();
if (check.available) {
  const session = await LanguageModel.create();
  // sua feature de IA aqui
} else {
  // fallback ou desabilitar feature
  console.log(`Prompt API indisponível: ${check.reason}`);
}

Nunca assuma que a API vai estar lá. Progressive enhancement — a regra de ouro que todo mundo prega e metade ignora.

Conclusão

Testar a Prompt API é mais simples do que o setup sugere: Chrome 148+, hardware ok, Console aberto, cola o código. Em minutos você verifica disponibilidade, cria sessão, manda prompt com resposta estruturada. Tudo local. Custo zero.

Agora a parte boa: construir algo de verdade com isso. Os 5 demos práticos da Prompt API têm código completo que você copia e adapta pro seu caso.

Leia também:


FAQ

Preciso ativar alguma flag para usar a Prompt API?

Não. A partir do Chrome 148 (stable, maio 2026), está habilitada por padrão para web pages. Só garanta que seu Chrome está atualizado.

Quanto tempo leva o download do modelo Gemini Nano?

O modelo tem ~4,27 GB. Em conexão de 100 Mbps, leva uns 5-7 minutos. Em conexões mais lentas, 20-30 minutos. Dá para monitorar o progresso via callback monitor em LanguageModel.create().

Posso usar a Prompt API em localhost durante desenvolvimento?

Sim. Funciona em qualquer origem, incluindo localhost e file://. Para iframes cross-origin, adicione o atributo allow="language-model".

Os dados dos meus prompts são enviados ao Google?

Não. Toda inferência é local. Nenhum dado é enviado ao Google ou a terceiros durante o uso da API.

A Prompt API funciona no Chrome para Android?

Não. Funciona apenas em Chrome desktop (Windows, macOS, Linux, ChromeOS em Chromebook Plus). Sem previsão oficial para mobile.

Referências