Introdução à Prompt API — IA On-Device no Navegador

A Prompt API é uma interface JavaScript nativa do Chrome que roda inferência de linguagem natural direto no navegador do usuário — sem mandar nada pra servidor nenhum. Disponível a partir do Chrome 148 (maio de 2026), ela expõe o modelo Gemini Nano (~4,27 GB) através do namespace window.LanguageModel. Aceita texto, imagem e áudio como entrada, e sempre devolve texto.

O que é a Prompt API

Em termos práticos: é uma Web API que dá acesso direto a um LLM embutido no Chrome. Diferente de APIs cloud (OpenAI, Gemini API), toda a inferência acontece localmente no dispositivo do usuário. Nenhum dado sai da máquina depois que o modelo foi baixado.

Ela faz parte da iniciativa Built-in AI do Chrome, junto com as APIs Summarizer, Writer, Rewriter, Translator, Language Detector e Proofreader. A diferença? Essas APIs irmãs são especializadas em tarefas específicas. A Prompt API é a superfície de uso geral — você manda prompts em linguagem natural e recebe respostas do modelo.

O namespace é window.LanguageModel, e toda interação passa por sessões criadas com LanguageModel.create().

Por que a Prompt API existe

A motivação é resolver três problemas que APIs cloud de IA impõem a quem desenvolve pra web:

1. Privacidade por design

Com processamento on-device, os dados do usuário nunca saem do navegador. Ponto. Isso elimina preocupações com LGPD, GDPR e regulamentações de dados sensíveis. Nenhum dado vai pro Google nem pra terceiros durante a inferência.

2. Custo zero de inferência

Depois que o modelo é baixado (uma única vez, compartilhado entre origens), não existe custo por token, por requisição ou por usuário. Isso viabiliza IA em produtos freemium, ferramentas offline e aplicações de alto volume sem aquele susto na fatura no fim do mês.

3. Latência mínima

Sem round-trips de rede, a resposta começa a ser gerada na hora. Pra aplicações interativas — autocompletar, classificação em tempo real, assistentes de escrita — a diferença de experiência é gritante.

Como funciona: arquitetura on-device

A Prompt API opera em três camadas:

┌─────────────────────────────────────────────────┐
│              Aplicação Web (JavaScript)          │
│                                                 │
│   LanguageModel.create() → session.prompt()     │
└──────────────────────┬──────────────────────────┘
                       │ API JavaScript
┌──────────────────────▼──────────────────────────┐
│            Chrome Browser Engine                 │
│                                                 │
│   • Gerenciamento de sessões e contexto         │
│   • Validação de inputs (texto/imagem/áudio)    │
│   • Controle de Permission Policy               │
│   • Download e cache do modelo                  │
└──────────────────────┬──────────────────────────┘
                       │ Inferência local
┌──────────────────────▼──────────────────────────┐
│         Gemini Nano (~4,27 GB on-device)        │
│                                                 │
│   • Processamento via GPU (preferencial)        │
│   • Fallback para CPU (16GB RAM + 4 cores)      │
│   • Context window gerenciado pelo Chrome       │
│   • Modelo compartilhado entre origens          │
└─────────────────────────────────────────────────┘

Fluxo de execução

  1. A aplicação chama LanguageModel.availability() pra checar se o modelo tá disponível
  2. Na primeira vez, o Chrome baixa o Gemini Nano (~4,27 GB). Esse download é compartilhado entre todas as origens
  3. LanguageModel.create() instancia uma sessão com configurações opcionais
  4. session.prompt() ou session.promptStreaming() envia conteúdo e recebe resposta
  5. O Chrome cuida do contexto, limpa sessões destruídas e gerencia overflow

Gerenciamento do modelo pelo Chrome

O Chrome gerencia o ciclo de vida do Gemini Nano de forma transparente:

  • Modelo baixado uma vez, compartilhado entre todas as origens
  • Se o espaço livre cair abaixo de 10 GB após o download, o modelo é removido automaticamente
  • Quando os requisitos de espaço são satisfeitos de novo, ele é re-baixado
  • Atualizações do modelo vêm junto com atualizações do Chrome

Requisitos de hardware

A Prompt API exige hardware mínimo específico pra garantir uma experiência de inferência decente:

RequisitoEspecificação
Sistema operacionalWindows 10/11, macOS 13+ (Ventura), Linux, ChromeOS (Chromebook Plus)
ArmazenamentoMínimo 22 GB livres no volume do perfil Chrome
GPU (recomendado)Mais de 4 GB de VRAM
CPU (alternativa)16 GB de RAM + 4 cores ou mais
Áudio (input)Requer GPU obrigatoriamente
RedeConexão sem limite de dados (só pro download inicial)
ChromeVersão 148 ou superior

Sistemas operacionais que NÃO funcionam

  • Android
  • iOS
  • ChromeOS em dispositivos que não são Chromebook Plus

Nota sobre armazenamento

O tamanho exato do modelo pode variar com atualizações do Chrome. Pra verificar o tamanho atual, acesse chrome://on-device-internals no navegador.

Idiomas suportados

O Gemini Nano suporta um conjunto limitado de idiomas:

CódigoIdioma
enInglês
esEspanhol
jaJaponês
deAlemão
frFrancês

Português brasileiro não é oficialmente suportado na versão atual. Na prática, o modelo consegue gerar respostas parciais em PT-BR por conta do treinamento multilingual do Gemini Nano — mas sem garantia de qualidade. Confesso que nos meus testes o resultado em português fica inconsistente: às vezes sai surpreendentemente bom, às vezes… nem tanto.

Capacidades da API

Inputs suportados

A Prompt API aceita três tipos de entrada:

  • Texto: Strings ou arrays de mensagens com roles (system, user, assistant)
  • Imagem: HTMLImageElement, SVGImageElement, HTMLVideoElement, HTMLCanvasElement, ImageBitmap, OffscreenCanvas, VideoFrame, Blob, ImageData
  • Áudio: AudioBuffer, ArrayBufferView, ArrayBuffer, Blob

Output

A saída é sempre texto. Sem geração de imagens, áudio ou vídeo.

Structured Output

A API suporta responseConstraint pra forçar respostas em formato específico:

  • JSON Schema (boolean, string, object, array, enum)
  • Expressões regulares

Métodos principais

MétodoO que faz
LanguageModel.availability()Verifica disponibilidade do modelo
LanguageModel.create()Cria uma nova sessão
LanguageModel.params()Parâmetros do modelo (só Extensions)
session.prompt()Envia prompt e aguarda resposta completa
session.promptStreaming()Envia prompt com resposta em streaming
session.append()Adiciona mensagens ao contexto
session.clone()Clona sessão existente
session.destroy()Destrói sessão e libera recursos

Limitações que você precisa saber

Antes de sair construindo, entenda o que a Prompt API não faz:

  • Não funciona em Web Workers — só em janelas top-level e iframes same-origin (ou cross-origin com Permission Policy)
  • Não funciona em mobile — Android e iOS estão fora
  • Modelo único — você não escolhe; é sempre o Gemini Nano
  • Sem fine-tuning — não dá pra customizar o modelo
  • Output só texto — nada de geração de imagens, áudio ou código executável
  • Interoperabilidade limitada — Chrome e Edge apenas; Firefox e Safari declararam posição mas sem implementação à vista
  • Qualidade tem limite — Gemini Nano é um modelo de ~3B parâmetros; pra tarefas complexas, modelos cloud são bem superiores

Casos de uso onde ela brilha

A Prompt API funciona melhor em cenários específicos:

  • Classificação de conteúdo em tempo real (spam, tópicos, sentimento)
  • Extração de informações estruturadas de texto livre
  • Autocompletar e sugestões de escrita
  • Resumo de textos curtos
  • Tradução rápida entre idiomas suportados
  • Análise de imagens (descrições, comparações)
  • Transcrição contextual de áudio curto
  • Personalização on-device sem expor dados do usuário

Suporte entre navegadores

NavegadorSO suportadoStatus
ChromeWindows, macOS, Linux, ChromeOS (Chromebook Plus)✅ Suportado (Chrome 148)
EdgeWindows, macOS✅ Suportado
Safari📋 Posição decidida (sem implementação)
Firefox📋 Posição decidida (sem implementação)

Próximos passos

Com essa visão geral, você tá pronto pra colocar a mão na massa. Os próximos artigos cobrem:

  1. Primeiros Passos — Tutorial de setup e primeiro prompt
  2. Enviando Promptsprompt() vs promptStreaming() em detalhe
  3. Sessões — Gerenciamento de contexto e sessões
  4. Multimodal — Trabalhando com imagens e áudio
  5. Structured Output — JSON Schema e validação de respostas

Perguntas frequentes

A Prompt API envia dados para o Google?

Não. Depois do download inicial do modelo, toda inferência acontece localmente. Nenhum dado é transmitido pro Google ou pra terceiros durante o uso da API.

Posso usar a Prompt API em português?

Português não está na lista oficial de idiomas suportados (EN, ES, JA, DE, FR). O modelo pode gerar respostas parciais em PT-BR, mas sem garantia de qualidade. Pra produção, use os idiomas oficialmente suportados.

A Prompt API funciona offline?

Sim, depois do download do modelo. A conexão é necessária só pro download inicial do Gemini Nano (~4,27 GB).

Qual a diferença entre a Prompt API e a Gemini API cloud?

A Prompt API roda localmente no dispositivo com Gemini Nano (modelo pequeno, gratuito, privado). A Gemini API cloud usa modelos maiores (Pro, Flash) com qualidade superior, mas precisa de internet, tem custo por token e envia dados pra servidores do Google.

A Prompt API funciona no Firefox ou Safari?

Não. Atualmente, só Chrome 148+ e Edge suportam a Prompt API. Firefox e Safari declararam suas posições mas não implementaram.


Referências