O Firebase AI Logic e os SDKs do cliente eram chamados de "Vertex AI in Firebase". Para refletir melhor nossos serviços e recursos expandidos (por exemplo, agora oferecemos suporte ao Gemini Developer API!), renomeamos e reempacotamos nossos serviços no Firebase AI Logic.
Para acessar com segurança os modelos de IA generativa do Google diretamente dos seus apps para dispositivos móveis ou da Web, agora você pode escolher um provedor "Gemini API": o Agent Platform Gemini API (formerly Vertex AI), que já está disponível há muito tempo, ou o Gemini Developer API. Isso significa que agora você tem a opção de usar o Gemini Developer API, que oferece um nível sem custo financeiro com limites de taxa e cotas razoáveis.
Visão geral das etapas para migrar para os SDKs do Firebase AI Logic
Etapa 1: escolha o melhor provedor da API Gemini para seu app e casos de uso.
Etapa 2: ative as APIs necessárias.
Etapa 3: atualize a biblioteca usada no app.
Etapa 4: atualize a inicialização no app.
Etapa 5: atualize o código de acordo com os recursos que você usa.
Etapa 1: escolha o melhor provedor da API Gemini para seu app
Com essa migração, você pode escolher o provedor de "Gemini API":
Os SDKs antigos "Vertex AI in Firebase" só podiam usar o Agent Platform Gemini API (formerly Vertex AI).
Os novos SDKs do Firebase AI Logic permitem que você escolha qual provedor de Gemini API quer chamar diretamente do seu app para dispositivos móveis ou da Web: Gemini Developer API ou Agent Platform Gemini API (formerly Vertex AI).
Analise as diferenças entre usar os dois provedores do Gemini API, especialmente em termos de recursos compatíveis, preços e limites de taxa. Por exemplo, o Gemini Developer API não é compatível com o fornecimento de arquivos usando URLs Cloud Storage, mas pode ser uma boa opção se você quiser aproveitar o nível sem custo financeiro e a cota razoável.
Etapa 2: ativar as APIs necessárias
Verifique se todas as APIs necessárias estão ativadas no seu projeto do Firebase para usar o provedor "Gemini API" escolhido.
É possível ativar os dois provedores de API no projeto ao mesmo tempo.
Faça login no console do Firebase e selecione seu projeto do Firebase.
No console do Firebase, acesse Serviços de IA > Lógica de IA.
Clique em Começar para iniciar um fluxo de trabalho guiado que ajuda a configurar as APIs necessárias e os recursos do projeto.
Selecione o provedor da API Gemini que você quer usar com os SDKs do Firebase AI Logic. Se quiser, você pode configurar e usar o outro provedor de API mais tarde.
Gemini Developer API — faturamento opcional (disponível no plano de preços Spark sem custo financeiro)
O fluxo de trabalho do console vai ativar as APIs necessárias e criar uma chave de API do Gemini no seu projeto.
Não adicione essa chave de API do Gemini à base de código do app. Saiba mais.Agent Platform Gemini API (formerly Vertex AI) — faturamento obrigatório (exige o plano de preços Blaze de pagamento por uso)
O fluxo de trabalho do console vai ativar as APIs necessárias no seu projeto.
Continue neste guia de migração para atualizar a biblioteca e a inicialização no seu app.
Etapa 3: atualizar a biblioteca usada no app
Atualize a base de código do app para usar a biblioteca Firebase AI Logic.
Swift
No Xcode, com o projeto do app aberto, atualize o pacote do Firebase para a versão 12.5.0 ou mais recente usando uma das seguintes opções:
Opção 1: atualize todos os pacotes: acesse File > Packages > Update to Latest Package Versions.
Opção 2: atualize o Firebase individualmente. Acesse o pacote do Firebase na seção Dependências do pacote. Clique com o botão direito do mouse no pacote do Firebase e selecione Update Package.
Verifique se o pacote do Firebase agora mostra a versão 12.5.0 ou mais recente. Se não estiver, verifique se os requisitos de pacote especificados permitem a atualização para a v12.5.0 ou mais recente.
Selecione o destino do app no Editor de projetos e acesse a seção Frameworks, Libraries, and Embedded Content.
Adicione a nova biblioteca: selecione o botão + e adicione FirebaseAILogic do pacote do Firebase.
Depois de migrar o app (consulte as seções restantes neste guia), remova a biblioteca antiga:
Selecione FirebaseVertexAI-Preview e pressione o botão —.
Kotlin
No arquivo Gradle do módulo (nível do app) (geralmente
<project>/<app-module>/build.gradle.ktsou<project>/<app-module>/build.gradle), substitua as dependências antigas (conforme aplicável) pelas seguintes.Talvez seja mais fácil migrar a base de código do app (consulte as seções restantes deste guia) antes de excluir a dependência antiga.
// BEFORE dependencies {
implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")} // AFTER dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.1.0")) // Add the dependency for the Firebase AI Logic library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") }Sincronize seu projeto do Android com os arquivos Gradle.
Se você optar por não usar o Firebase Android BoM, basta adicionar
a dependência da biblioteca firebase-ai e aceitar a versão mais recente
sugerida pelo Android Studio.
Java
No arquivo Gradle do módulo (nível do app) (geralmente
<project>/<app-module>/build.gradle.ktsou<project>/<app-module>/build.gradle), substitua as dependências antigas (conforme aplicável) pelas seguintes.Talvez seja mais fácil migrar a base de código do app (consulte as seções restantes deste guia) antes de excluir a dependência antiga.
// BEFORE dependencies {
implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")} // AFTER dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.1.0")) // Add the dependency for the Firebase AI Logic library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") }Sincronize seu projeto do Android com os arquivos Gradle.
Se você optar por não usar o Firebase Android BoM, basta adicionar
a dependência da biblioteca firebase-ai e aceitar a versão mais recente
sugerida pelo Android Studio.
Web
Instale a versão mais recente do SDK do Firebase para JS para Web usando o npm:
npm i firebase@latest
OU
yarn add firebase@latest
Onde quer que você tenha importado a biblioteca, atualize as instruções de importação para usar
firebase/ai.Pode ser mais fácil migrar a base de código do app (consulte as seções restantes neste guia) antes de excluir as importações antigas.
// BEFORE import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai-preview";// AFTER import { initializeApp } from "firebase/app"; import { getAI, getGenerativeModel } from "firebase/ai";
Dart
Atualize para usar o pacote
firebase_aino arquivopubspec.yamlexecutando o seguinte comando no diretório do projeto do Flutter:flutter pub add firebase_ai
Recrie seu projeto do Flutter:
flutter run
Depois de concluir a migração do app (consulte as seções restantes neste guia), exclua o pacote antigo:
flutter pub remove firebase_vertexai
Unity
O suporte para o Unity não estava disponível em "Vertex AI in Firebase".
Saiba como começar a usar o SDK do Firebase AI Logic para Unity.
Etapa 4: atualizar a inicialização no app
|
Clique no seu provedor de Gemini API para conferir o conteúdo e o código específicos do provedor nesta página. |
Atualize a forma como você inicializa o serviço para o provedor de API escolhido e
crie uma instância GenerativeModel.
Swift
import FirebaseAILogic
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(modelName: "gemini-3.8-flash")
Kotlin
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash")
Java
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } 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 with a model that supports your use case.
const model = getGenerativeModel(ai, { model: "gemini-3.8-flash" });
Dart
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-3.8-flash');
Unity
O suporte para o Unity não estava disponível em "Vertex AI in Firebase".
Saiba como começar a usar o SDK do Firebase AI Logic para Unity.
Dependendo do recurso que você está usando, nem sempre é possível
criar uma instância de GenerativeModel. Para
fazer streaming de entrada e saída usando o Gemini Live API,
crie uma instância LiveModel.
Etapa 5: atualizar o código de acordo com os recursos que você usa
Esta etapa descreve as mudanças que podem ser necessárias dependendo dos recursos que você usa.
Se você usa URLs Cloud Storage e trocou para usar o Gemini Developer API nesta migração, atualize suas solicitações multimodais para incluir arquivos como dados inline (ou use URLs do YouTube para vídeos).
Várias mudanças foram introduzidas nas versões em GA dos SDKs "Vertex AI in Firebase". Essas mesmas mudanças são necessárias para usar os SDKs do Firebase AI Logic. Confira as listas a seguir para ver as mudanças que talvez sejam necessárias no seu código para acomodar o SDK do Firebase AI Logic.
Obrigatório para todos os idiomas e plataformas
Chamada de função
Se você implementou esse recurso antes da GA, será necessário atualizar a forma como define seu esquema. Recomendamos que você consulte o guia de chamada de função atualizado para saber como escrever suas declarações de função.Como gerar saída estruturada (como JSON) usando
responseSchema
Se você implementou esse recurso antes da GA, será necessário atualizar a forma como define seu esquema. Recomendamos que você consulte o novo guia de resposta estruturada para saber como escrever esquemas JSON.Tempo limite
- Mudança do tempo limite padrão para solicitações para 180 segundos.
Obrigatório com base na plataforma ou no idioma
Swift
Enumerações
Substituição da maioria dos tipos
enumporstructs com variáveis estáticas. Essa mudança permite mais flexibilidade para desenvolver a API de maneira compatível com versões anteriores. Ao usar instruçõesswitch, agora é necessário incluir um casodefault:para cobrir valores desconhecidos ou não processados, incluindo novos valores adicionados ao SDK no futuro.A enumeração
BlockThresholdfoi renomeada comoHarmBlockThreshold. Esse tipo agora é umstruct.Os casos
unknowneunspecifiedforam removidos das seguintes enumerações (agorastructs):HarmCategory,HarmBlockThreshold,HarmProbability,BlockReasoneFinishReason.Substituição da enumeração
ModelContent.Partpor um protocolo chamadoPartpara permitir que novos tipos sejam adicionados de maneira compatível com versões anteriores. Essa mudança é descrita em mais detalhes na seção Partes do conteúdo.
Partes do conteúdo
O protocolo
ThrowingPartsRepresentablefoi removido, e os inicializadores deModelContentforam simplificados para evitar erros ocasionais do compilador. As imagens que não forem codificadas corretamente ainda vão gerar erros quando forem usadas emgenerateContent.Os casos
ModelContent.Partforam substituídos pelos seguintes tiposstructem conformidade com o protocoloPart:.textaTextPart- De
.dataparaInlineDataPart - De
.fileDataparaFileDataPart - De
.functionCallparaFunctionCallPart .functionResponseaFunctionResponsePart
Categoria de dano
- Mudança de
HarmCategorypara que não seja mais aninhado no tipoSafetySetting. Se você se referir a ele comoSafetySetting.HarmCategory, ele pode ser substituído porHarmCategory.
- Mudança de
Feedback de segurança
- O tipo
SafetyFeedbackfoi removido, já que não era usado em nenhuma das respostas.
- O tipo
Metadados de citação
- A propriedade
citationSourcesfoi renomeada comocitationsemCitationMetadata.
- A propriedade
Total de caracteres faturáveis
- A propriedade
totalBillableCharactersemCountTokensResponsefoi alterada para ser opcional, refletindo situações em que nenhum caractere é enviado.
- A propriedade
Resposta candidata
- Renomeamos
CandidateResponsecomoCandidatepara corresponder a outras plataformas.
- Renomeamos
Configuração de geração
- As propriedades públicas de
GenerationConfigforam alteradas parainternal. Todos eles permanecem configuráveis no inicializador.
- As propriedades públicas de
Kotlin
Enumerações
As classes
enumesealedforam substituídas por classes regulares. Essa mudança permite mais flexibilidade para desenvolver a API de maneira compatível com versões anteriores.A enumeração
BlockThresholdfoi renomeada comoHarmBlockThreshold.Valores removidos das seguintes enumerações:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasoneFinishReason.
Métodos de blob
- Renomeação de todos os métodos que incluíam
Blobcomo parte do nome para usarInlineData.
- Renomeação de todos os métodos que incluíam
Configurações de segurança
- O campo
methodfoi mudado para ser anulável.
- O campo
Classe de duração
- Removemos todos os usos da classe
Durationdo Kotlin e os substituímos porlong. Essa mudança oferece uma interoperabilidade melhor com o Java.
- Removemos todos os usos da classe
Metadados de citação
- Todos os campos declarados anteriormente em
CitationMetadataforam agrupados em uma nova classe chamadaCitation. As citações podem ser encontradas na lista chamadacitationsemCitationMetadata. Essa mudança permite um melhor alinhamento de tipos em todas as plataformas.
- Todos os campos declarados anteriormente em
Contar tokens
- O campo
totalBillableCharactersfoi mudado para ser anulável.
- O campo
Total de caracteres faturáveis
- A propriedade
totalBillableCharactersemCountTokensResponsefoi alterada para ser opcional, refletindo situações em que nenhum caractere é enviado.
- A propriedade
Como instanciar um modelo
- O parâmetro
requestOptionsfoi movido para o final da lista de parâmetros para se alinhar com outras plataformas.
- O parâmetro
Live API
O valor
UNSPECIFIEDfoi removido da classe de tipo enumeradoResponseModality. Em vez disso, usenull.LiveGenerationConfig.setResponseModalitiesfoi renomeado comoLiveGenerationConfig.setResponseModality.A classe
LiveContentResponse.Statusfoi removida, e os campos de status foram aninhados como propriedades deLiveContentResponse.A classe
LiveContentResponsefoi removida e, em vez disso, foram fornecidas subclasses deLiveServerMessageque correspondem às respostas do modelo.LiveModelFutures.connectfoi alterado para retornarListenableFuture<LiveSessionFutures>em vez deListenableFuture<LiveSession>.
Java
Enumerações
As classes
enumesealedforam substituídas por classes regulares. Essa mudança permite mais flexibilidade para desenvolver a API de maneira compatível com versões anteriores.A enumeração
BlockThresholdfoi renomeada comoHarmBlockThreshold.Valores removidos das seguintes enumerações:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReasoneFinishReason.
Métodos de blob
- Renomeação de todos os métodos que incluíam
Blobcomo parte do nome para usarInlineData.
- Renomeação de todos os métodos que incluíam
Configurações de segurança
- O campo
methodfoi mudado para ser anulável.
- O campo
Classe de duração
- Removemos todos os usos da classe
Durationdo Kotlin e os substituímos porlong. Essa mudança oferece uma interoperabilidade melhor com o Java.
- Removemos todos os usos da classe
Metadados de citação
- Todos os campos declarados anteriormente em
CitationMetadataforam agrupados em uma nova classe chamadaCitation. As citações podem ser encontradas na lista chamadacitationsemCitationMetadata. Essa mudança permite um melhor alinhamento de tipos em todas as plataformas.
- Todos os campos declarados anteriormente em
Contar tokens
- O campo
totalBillableCharactersfoi mudado para ser anulável.
- O campo
Total de caracteres faturáveis
- A propriedade
totalBillableCharactersemCountTokensResponsefoi alterada para ser opcional, refletindo situações em que nenhum caractere é enviado.
- A propriedade
Como instanciar um modelo
- O parâmetro
requestOptionsfoi movido para o final da lista de parâmetros para se alinhar com outras plataformas.
- O parâmetro
Live API
O valor
UNSPECIFIEDfoi removido da classe de tipo enumeradoResponseModality. Em vez disso, usenull.LiveGenerationConfig.setResponseModalitiesfoi renomeado comoLiveGenerationConfig.setResponseModality.A classe
LiveContentResponse.Statusfoi removida, e os campos de status foram aninhados como propriedades deLiveContentResponse.A classe
LiveContentResponsefoi removida e, em vez disso, foram fornecidas subclasses deLiveServerMessageque correspondem às respostas do modelo.LiveModelFutures.connectfoi alterado para retornarListenableFuture<LiveSessionFutures>em vez deListenableFuture<LiveSession>.
Vários métodos do builder Java foram alterados para retornar corretamente a instância da classe, em vez de
void.
Web
Enumerações
- Valores removidos das seguintes enumerações:
HarmCategory,BlockThreshold,HarmProbability,HarmSeverity,BlockReasoneFinishReason.
- Valores removidos das seguintes enumerações:
Motivo do bloqueio
- Mudança de
blockReasonemPromptFeedbackpara ser opcional.
- Mudança de
Mudanças necessárias somente se você estiver começando a usar o Gemini Developer API (em vez do Agent Platform Gemini API (formerly Vertex AI)):
Configurações de segurança
- Os usos do
SafetySetting.methodincompatível foram removidos.
- Os usos do
Dados inline
- Os usos do
InlineDataPart.videoMetadataincompatível foram removidos.
- Os usos do
Dart
Enumerações
- Valores removidos das seguintes enumerações:
HarmCategory,HarmProbability,BlockReasoneFinishReason.
- Valores removidos das seguintes enumerações:
Parte de dados
- Renomeamos
DataPartcomoInlineDataParte a funçãostaticdatacomoinlineDatapara alinhar com outras plataformas.
- Renomeamos
Opções de solicitação
- Remoção de
RequestOptions, já quetimeoutnão estava funcionando. Ele será adicionado novamente em breve, mas será movido para o tipoGenerativeModelpara corresponder a outras plataformas.
- Remoção de
Sequências de parada
- O parâmetro
stopSequencesemGenerationConfigfoi alterado para ser opcional e usarnullcomo padrão em vez de uma matriz vazia.
- O parâmetro
Citações
- A propriedade
citationSourcesfoi renomeada comocitationsemCitationMetadata. O tipoCitationSourcefoi renomeado comoCitationpara corresponder a outras plataformas.
- A propriedade
Tipos, métodos e propriedades públicos desnecessários
- Os seguintes tipos, métodos e propriedades que foram
expostos sem intenção foram removidos:
defaultTimeout,CountTokensResponseFields,parseCountTokensResponse,parseEmbedContentResponse,parseGenerateContentResponse,parseContent,BatchEmbedContentsResponse,ContentEmbedding,EmbedContentRequesteEmbedContentResponse.
- Os seguintes tipos, métodos e propriedades que foram
expostos sem intenção foram removidos:
Contar tokens
- Campos extras que não são mais necessários foram removidos da função
countTokens. Apenascontentsé necessário.
- Campos extras que não são mais necessários foram removidos da função
Como instanciar um modelo
- O parâmetro
systemInstructionfoi movido para o final da lista de parâmetros para se alinhar com outras plataformas.
- O parâmetro
Funcionalidade de incorporação
- Remoção da funcionalidade de embedding não compatível (
embedContentebatchEmbedContents) do modelo.
- Remoção da funcionalidade de embedding não compatível (
Unity
O suporte para o Unity não estava disponível em "Vertex AI in Firebase".
Saiba como começar a usar o SDK do Firebase AI Logic para Unity.
Possíveis erros relacionados à migração
Ao migrar para a versão de GA do Firebase AI Logic, talvez você encontre erros se não tiver concluído todas as mudanças necessárias, conforme descrito neste guia de migração.
Erro 403: Requests to this API firebasevertexai.googleapis.com ... are blocked.
Se você receber um erro 403 que diz
Requests to this API firebasevertexai.googleapis.com ... are blocked.,
isso geralmente significa que a chave de API do Firebase no seu
arquivo ou objeto de configuração do Firebase não tem uma API necessária na
lista de permissões para o produto que você está tentando usar.
Verifique se a chave de API do Firebase usada pelo app tem todas as APIs necessárias incluídas na lista de permissões "Restrições de API". Para o Firebase AI Logic, a chave de API do Firebase precisa ter pelo menos a API Firebase AI Logic na lista de permissões. Essa API deveria ter sido adicionada automaticamente à lista de permissões da sua chave de API quando você ativou as APIs necessárias no console do Firebase.
É possível conferir todas as chaves de API no painel APIs e serviços > Credenciais no console do Google Cloud.
Envie feedback sobre sua experiência com o Firebase AI Logic