Crie recursos e web apps com tecnologia de IA e inferência híbrida usando Firebase AI Logic. A inferência híbrida permite executar a inferência usando modelos no dispositivo quando disponíveis e fazer fallback para modelos hospedados na nuvem quando não estão disponíveis (e vice-versa).
Nesta página, descrevemos como começar a usar o SDK do cliente. Depois de concluir essa configuração padrão, confira as outras opções e recursos de configuração (como saída estruturada).
A inferência no dispositivo é compatível com apps da Web executados no Chrome para computador.
Casos de uso recomendados e recursos disponíveis
Casos de uso recomendados:
Usar um modelo no dispositivo para inferência oferece:
- Privacidade reforçada
- Contexto local
- Inferência sem custo financeiro
- Funcionalidade off-line
Usar ofertas de funcionalidade híbrida:
- Alcance 100% do seu público-alvo, independente da disponibilidade do modelo no dispositivo ou da conectividade com a Internet
Recursos e funcionalidades compatíveis para inferência no dispositivo:
A inferência no dispositivo só é compatível com geração de texto de uma única vez (não chat), com saída de streaming ou não streaming. Ele é compatível com os seguintes recursos de geração de texto:
Gerar texto com base em entradas de texto e imagem, especificamente tipos de imagens de entrada JPEG e PNG
Também é possível gerar saída estruturada, incluindo JSON e enums.
Antes de começar
Observações:
A inferência usando um modelo no dispositivo usa a API Prompt do Chrome; já a inferência usando um modelo hospedado na nuvem usa o provedor Gemini API escolhido (o Gemini Developer API ou o Vertex AI Gemini API).
Esta página descreve como começar a desenvolver usando localhost. Saiba mais sobre como usar APIs em localhost na documentação do Chrome.
Depois de concluir essa configuração padrão, confira as outras opções e recursos de configuração, como saída estruturada.
Depois de implementar o recurso, você pode permitir que os usuários finais testem o recurso no app real.
Começar no localhost
Estas etapas de início descrevem a configuração geral necessária para qualquer solicitação de comando compatível que você queira enviar.
Etapa 1: configurar o Chrome e a API Prompt para inferência no dispositivo
Verifique se você está usando uma versão recente do Chrome. Atualize em chrome://settings/help.
A inferência no dispositivo está disponível no Chrome v139 e versões mais recentes.Ative o modelo multimodal no dispositivo definindo a seguinte flag como Enabled:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
Reinicie o Chrome.
(Opcional) Faça o download do modelo no dispositivo antes da primeira solicitação.
A API Prompt está integrada ao Chrome, mas o modelo no dispositivo não está disponível por padrão. Se você ainda não tiver baixado o modelo antes da primeira solicitação de inferência no dispositivo, a solicitação vai iniciar automaticamente o download do modelo em segundo plano.
Etapa 2: configurar um projeto do Firebase e conectar seu app a ele
Faça login no console do Firebase e selecione seu projeto do Firebase.
No console Firebase, acesse a página Firebase AI Logic.
Clique em Começar para iniciar um fluxo de trabalho guiado que ajuda a configurar as APIs necessárias e os recursos do projeto.
Configure seu projeto para usar um provedor "Gemini API".
Recomendamos começar usando o Gemini Developer API. A qualquer momento, você pode configurar o Vertex AI Gemini API (e o requisito de faturamento).
Para o Gemini Developer API, o console vai ativar as APIs necessárias e criar uma chave de API Gemini no seu projeto.
Não adicione essa chave de API Gemini à base de código do seu app. Saiba mais.Se solicitado no fluxo de trabalho do console, siga as instruções na tela para registrar e conectar seu app ao Firebase.
Continue para a próxima etapa deste guia para adicionar o SDK ao app.
Etapa 3: adicionar o SDK
A biblioteca do Firebase oferece acesso às APIs para interagir com modelos generativos. A biblioteca está incluída como parte do SDK do Firebase para JavaScript na Web.
Instale o SDK do Firebase para JavaScript para Web usando o npm:
npm install firebaseInicialize o Firebase no seu app:
import { initializeApp } from "firebase/app"; // TODO(developer) Replace the following with your app's Firebase configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize FirebaseApp const firebaseApp = initializeApp(firebaseConfig);
Etapa 4: inicializar o serviço e criar uma instância de modelo
|
Clique no seu provedor de Gemini API para conferir o conteúdo e o código específicos do provedor nesta página. |
Configure o seguinte antes de enviar uma solicitação de comando ao modelo.
Inicialize o serviço para o provedor de API escolhido.
Criar uma instância
GenerativeModel. Faça o seguinte:Chame
getGenerativeModelapós ou em uma interação do usuário final (como um clique de botão). Esse é um pré-requisito parainferenceMode.Defina o
modecomo uma destas opções:PREFER_ON_DEVICE: use o modelo no dispositivo se ele estiver disponível. Caso contrário, use o modelo hospedado na nuvem.ONLY_ON_DEVICE: use o modelo no dispositivo se ele estiver disponível. Caso contrário, gere uma exceção.PREFER_IN_CLOUD: use o modelo hospedado na nuvem se ele estiver disponível. Caso contrário, use o modelo no dispositivo.ONLY_IN_CLOUD: use o modelo hospedado na nuvem se ele estiver disponível. Caso contrário, gere uma exceção.
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, InferenceMode } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance
// Call `getGenerativeModel` after or on an end-user interaction
// Set the mode (for example, use the on-device model if it's available)
const model = getGenerativeModel(ai, { mode: InferenceMode.PREFER_ON_DEVICE });
Etapa 5: enviar uma solicitação de comando a um modelo
Esta seção mostra como enviar vários tipos de entrada para gerar diferentes tipos de saída, incluindo:
- Gerar texto com base em entradas somente de texto
- Gerar texto com base em entradas de texto e imagem (multimodais)
Se você quiser gerar uma saída estruturada (como JSON ou tipos enumerados), use um dos exemplos a seguir de "gerar texto" e configure o modelo para responder de acordo com um esquema fornecido.
Gerar texto com base em entradas somente de texto
| Antes de testar esta amostra, confira se você concluiu a seção Começar deste guia. |
É possível usar o
generateContent()
para gerar texto com base em um comando que contém texto:
// Imports + initialization of FirebaseApp and backend service + creation of model instance
// Wrap in an async function so you can use await
async function run() {
// Provide a prompt that contains text
const prompt = "Write a story about a magic backpack."
// To generate text output, call `generateContent` with the text input
const result = await model.generateContent(prompt);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
O Firebase AI Logic também é compatível com o streaming de respostas de texto usando
generateContentStream
(em vez de generateContent).
Gerar texto com base em entradas de texto e imagem (multimodais)
| Antes de testar esta amostra, confira se você concluiu a seção Começar deste guia. |
É possível usar
generateContent()
para gerar texto com base em um comando que contém arquivos de texto e imagem, fornecendo o mimeType de cada
arquivo de entrada e o próprio arquivo.
Os tipos de imagem de entrada compatíveis para inferência no dispositivo são PNG e JPEG.
// Imports + initialization of FirebaseApp and backend service + creation of model instance
// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result.split(',')[1]);
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
async function run() {
// Provide a text prompt to include with the image
const prompt = "Write a poem about this picture:";
const fileInputEl = document.querySelector("input[type=file]");
const imagePart = await fileToGenerativePart(fileInputEl.files[0]);
// To generate text output, call `generateContent` with the text and image
const result = await model.generateContent([prompt, imagePart]);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
O Firebase AI Logic também é compatível com o streaming de respostas de texto usando
generateContentStream
(em vez de generateContent).
Permitir que os usuários finais testem seu recurso
Para que os usuários finais testem seu recurso no app, você precisa se inscrever nos testes de origem do Chrome. Esses testes têm duração e uso limitados.
Inscreva-se no teste de origem do Chrome da API Prompt. Você vai receber um token.
Forneça o token em todas as páginas da Web em que você quer ativar o recurso de teste. Use uma das seguintes opções:
Forneça o token como uma metatag na tag
<head>:<meta http-equiv="origin-trial" content="TOKEN">Forneça o token como um cabeçalho HTTP:
Origin-Trial: TOKENForneça o token de maneira programática.
O que mais você pode fazer?
Você pode usar várias opções e recursos de configuração adicionais para suas experiências híbridas:
Recursos ainda não disponíveis para inferência no dispositivo
Como uma versão de prévia, nem todos os recursos do SDK da Web estão disponíveis para inferência no dispositivo. Os recursos a seguir ainda não são compatíveis com a inferência no dispositivo, mas geralmente estão disponíveis para a inferência baseada na nuvem.
Gerar texto com base em tipos de entrada de arquivo de imagem diferentes de JPEG e PNG
- Pode fazer fallback para o modelo hospedado na nuvem. No entanto, o modo
ONLY_ON_DEVICEvai gerar um erro.
- Pode fazer fallback para o modelo hospedado na nuvem. No entanto, o modo
Gerar texto com base em entradas de áudio, vídeo e documentos (como PDFs)
- Pode fazer fallback para o modelo hospedado na nuvem. No entanto, o modo
ONLY_ON_DEVICEvai gerar um erro.
- Pode fazer fallback para o modelo hospedado na nuvem. No entanto, o modo
Gerar imagens usando modelos Gemini ou Imagen
- Pode fazer fallback para o modelo hospedado na nuvem. No entanto, o modo
ONLY_ON_DEVICEvai gerar um erro.
- Pode fazer fallback para o modelo hospedado na nuvem. No entanto, o modo
Fornecer arquivos usando URLs em solicitações multimodais. Você precisa fornecer arquivos como dados inline para modelos no dispositivo.
Chat multiturno
- Pode fazer fallback para o modelo hospedado na nuvem. No entanto, o modo
ONLY_ON_DEVICEvai gerar um erro.
- Pode fazer fallback para o modelo hospedado na nuvem. No entanto, o modo
Streaming bidirecional com o Gemini Live API
Fornecer ao modelo ferramentas para ajudar na geração da resposta (como chamada de função, execução de código, contexto de URL e embasamento com a Pesquisa Google)
Contar tokens
- Sempre gera um erro. A contagem varia entre modelos hospedados na nuvem e no dispositivo, então não há um substituto intuitivo.
Monitoramento de IA no console do Firebase para inferência no dispositivo.
- Qualquer inferência que use os modelos hospedados na nuvem pode ser monitorada da mesma forma que outras inferências usando o SDK do cliente Firebase AI Logic para Web.
Envie feedback sobre sua experiência com Firebase AI Logic