Acesse diretamente as instruções de migração
Por que migrar para os SDKs do Firebase AI Logic?
Talvez você tenha testado um conjunto alternativo de SDKs de cliente para dispositivos móveis ou Web que concedeu acesso ao Gemini Developer API.
Esses SDKs de cliente não foram integrados ao ecossistema robusto do Firebase, que oferece serviços essenciais para apps para dispositivos móveis e web apps. Eles foram descontinuados em favor dos SDKs de cliente do Firebase AI Logic, que podem dar acesso ao Gemini Developer API.
Recursos de segurança para apps da Web e para dispositivos móveis
Para apps para Web e dispositivos móveis, a segurança é fundamental e requer considerações especiais, porque seu código, incluindo chamadas para a Gemini API, é executado em um ambiente desprotegido. Use o Firebase App Check para proteger as APIs contra abusos de clientes não autorizados.
Ao usar o Firebase App Check com o Firebase AI Logic, você nunca adiciona a chave de API do Gemini para o Gemini Developer API diretamente à base de código do app para dispositivos móveis ou da Web. Em vez disso, a chave de API do Gemini permanece no servidor, sem exposição a usuários maliciosos.
Ecossistema criado para apps da Web e para dispositivos móveis
O Firebase é a plataforma do Google para desenvolver apps para dispositivos móveis e da Web. Usar o Firebase AI Logic significa que seus apps estão em um ecossistema focado nas necessidades de apps e desenvolvedores full-stack. Exemplo:
Defina dinamicamente as configurações de tempo de execução ou troque valores no seu app (como o nome e a versão de um modelo) sem lançar uma nova versão do app usando a Firebase Remote Config.
Use Cloud Storage for Firebase para incluir arquivos grandes nas suas solicitações multimodais (se você usar o Agent Platform Gemini API (formerly Vertex AI)). Os SDKs de cliente do Cloud Storage ajudam a processar uploads e downloads de arquivos (mesmo em condições de rede ruins) e oferecem mais segurança para os dados dos usuários finais. Saiba mais no nosso guia de soluções sobre como usar o Cloud Storage for Firebase.
Gerencie dados estruturados usando SDKs de banco de dados criados para apps da Web e para dispositivos móveis (como Cloud Firestore).
Migrar para os SDKs do Firebase AI Logic
Visão geral das etapas para migrar para os SDKs do Firebase AI Logic:
Etapa 1: configure um projeto do Firebase novo ou atual e conecte seu app ao Firebase.
Etapa 2: adicione os SDKs do Firebase AI Logic ao app.
Etapa 3: atualizar as importações e a inicialização no app.
Etapa 4: atualize o código de acordo com os recursos que você usa.
Etapa 1: configurar um projeto do Firebase e conectar seu app
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 Gemini Developer API. Se quiser, você pode configurar e usar o outro provedor de API mais tarde.
O console vai ativar as APIs necessárias e criar uma nova chave de API dedicada do Gemini no seu projeto.
Não adicione essa nova chave de API do Gemini à base de código do app. Saiba mais.Se solicitado no fluxo de trabalho do console, siga as instruções na tela para registrar o app e conectá-lo ao Firebase.
Continue neste guia de migração para atualizar a biblioteca e a inicialização no seu app.
Etapa 2: adicionar o SDK do Firebase AI Logic ao app
Com o projeto do Firebase configurado e o app conectado ao Firebase (consulte a etapa anterior), agora você pode adicionar o SDK do Firebase AI Logic ao app.
Swift
Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase. Saiba mais sobre outras opções de instalação, se necessário.
A biblioteca Firebase AI Logic fornece acesso às APIs para interagir
com os modelos Gemini. A biblioteca está incluída como parte do
SDK do Firebase para plataformas da Apple (firebase-ios-sdk).
Se você já usa o Firebase, verifique se o pacote é da versão 12.5.0 ou mais recente.
No Xcode, com seu projeto de app aberto, acesse File > Add Package Dependencies.
Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:
https://github.com/firebase/firebase-ios-sdkSelecione a versão mais recente do SDK.
Selecione as bibliotecas
FirebaseAILogiceFirebaseAppCheck.
Quando terminar, o Xcode vai começar a resolver e fazer o download das dependências em segundo plano automaticamente.
Kotlin
O SDK do Firebase AI Logic para Android (firebase-ai) fornece
acesso às APIs para interagir com os modelos do Gemini.
No arquivo Gradle do módulo (nível do app)
(como <project>/<app-module>/build.gradle.kts),
adicione as dependências das bibliotecas Firebase AI Logic e App Check
para Android. Recomendamos o uso do
Firebase Android BoM
para controlar o controle de versões da biblioteca.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.1.0")) // Add the dependencies for the Firebase AI Logic and App Check libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-appcheck-debug") }
Com o Firebase Android BoM, seu app sempre vai usar versões compatíveis das bibliotecas do Firebase para Android.
Java
O SDK do Firebase AI Logic para Android (firebase-ai) fornece
acesso às APIs para interagir com os modelos do Gemini.
No arquivo Gradle do módulo (nível do app)
(como <project>/<app-module>/build.gradle.kts),
adicione as dependências das bibliotecas Firebase AI Logic e App Check
para Android. Recomendamos o uso do
Firebase Android BoM
para controlar o controle de versões da biblioteca.
Para Java, é necessário adicionar mais duas bibliotecas.
dependencies { // ... other androidx dependencies // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.1.0")) // Add the dependencies for the Firebase AI Logic and App Check libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-appcheck-debug") // Required for one-shot operations (to use `ListenableFuture` from Guava Android) implementation("com.google.guava:guava:31.0.1-android") // Required for streaming operations (to use `Publisher` from Reactive Streams) implementation("org.reactivestreams:reactive-streams:1.0.4") }
Com o Firebase Android BoM, seu app sempre vai usar versões compatíveis das bibliotecas do Firebase para Android.
Web
A biblioteca Firebase AI Logic fornece acesso às APIs para interagir com os modelos Gemini. A biblioteca está incluída como parte do SDK do Firebase para JavaScript para Web.
Instale o SDK do Firebase para JS para Web usando o npm:
npm install firebaseInicialize o Firebase no seu app:
import { initializeApp } from "firebase/app"; import { initializeAppCheck, DebugProvider } from "firebase/app-check"; // 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);
Dart
O plug-in Firebase AI Logic para Flutter (firebase_ai) fornece
acesso às APIs para interagir com os modelos Gemini.
No diretório do projeto do Flutter, execute o seguinte comando para instalar os plug-ins Firebase AI Logic e App Check:
flutter pub add firebase_ai firebase_app_checkNo arquivo
lib/main.dart, importe os plug-ins Firebase AI Logic e App Check:import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_ai/firebase_ai.dart'; import 'package:firebase_app_check/firebase_app_check.dart'; import 'firebase_options.dart';Ainda no arquivo
lib/main.dart, verifique se você inicializou o Firebase usando o objetoDefaultFirebaseOptionsexportado pelo arquivo de configuração:await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );Recrie o aplicativo do Flutter:
flutter run
Unity
O suporte para Unity não estava disponível nos SDKs de cliente do Google AI.
Saiba como começar a usar o SDK do Firebase AI Logic para Unity.
Remover o SDK antigo do app
Depois de concluir a migração do app (consulte as seções restantes neste guia), exclua a biblioteca antiga.
Swift
Remova a biblioteca antiga:
No Xcode, com seu projeto de app aberto, navegue até o painel Packages Dependencies.
Selecione o pacote
generative-ai-swiftna lista de dependências de pacotes.Clique no botão
-na parte de baixo da lista e em Remover para confirmar.
Kotlin
dependencies {
implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}
Java
dependencies {
implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}
Web
// BEFORE
import { initializeApp } from "firebase/app";
import { GoogleGenerativeAI } from "@google/generative-ai";
Dart
Exclua o pacote antigo:
flutter pub remove google_generative_ai
Unity
O suporte para Unity não estava disponível nos SDKs de cliente do Google AI.
Saiba como começar a usar o SDK do Firebase AI Logic para Unity.
Etapa 3: atualizar as importações e a inicialização no app
Atualize as importações e como você inicializa o serviço de back-end Gemini Developer API
e crie uma instância GenerativeModel.
Swift
// BEFOREimport GoogleGenerativeAI let model = GenerativeModel(name: "MODEL_NAME", apiKey: APIKey.default)// AFTER 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
// BEFOREimport com.google.ai.client.generativeai.Chat import com.google.ai.client.generativeai.type.Content import com.google.ai.client.generativeai.java.GenerativeModuleFutures...val generativeModel = GenerativeModel(modelName = "MODEL_NAME", // Access your API key as a Build Configuration variable apiKey = BuildConfig.apiKey )// AFTER import com.google.firebase.Firebase import com.google.firebase.ai.ai import com.google.firebase.ai.type.GenerativeBackend ... // 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
// BEFOREimport com.google.ai.client.generativeai.Chat; import com.google.ai.client.generativeai.type.Content; import com.google.ai.client.generativeai.java.GenerativeModuleFutures;...GenerativeModel gm = new GenerativeModel("MODEL_NAME", // Access your API key as a Build Configuration variable BuildConfig.apiKey ); GenerativeModelFutures model = GenerativeModelFutures.from(gm);// AFTER import com.google.firebase.ai.FirebaseAI; import com.google.firebase.ai.GenerativeModel; import com.google.firebase.ai.java.GenerativeModelFutures; import com.google.firebase.ai.type.GenerativeBackend; ... // 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
// BEFOREimport { GoogleGenerativeAI } from "@google/generative-ai"; // Fetch your API_KEY and access your API const API_KEY = "..."; const genAI = new GoogleGenerativeAI(API_KEY);...const model = genAI.getGenerativeModel({ model: "MODEL_NAME"});// AFTER 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
// BEFOREimport 'package:google_generative_ai/google_generative_ai.dart'; final apiKey = Platform.environment['API_KEY']; if (apiKey == null) { print('No \$API_KEY environment variable'); exit(1); } final model = GenerativeModel(model: 'MODEL_NAME', apiKey: apiKey);// AFTER 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 Unity não estava disponível nos SDKs de cliente do Google AI.
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 4: atualizar o código dependendo dos recursos que você usa
Esta etapa descreve as mudanças que podem ser necessárias dependendo dos recursos que você usa.
Os SDKs de cliente do Firebase AI Logic não são compatíveis com a execução de código. Se você usar esse recurso, faça as adaptações necessárias no app.
Confira as listas a seguir para ver as mudanças que talvez sejam necessárias no seu código para acomodar a migração para os SDKs de cliente do Firebase AI Logic.
Obrigatório para todos os idiomas e plataformas
Chamada de função
Se você implementou esse recurso, será necessário atualizar a forma como define o 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, será necessário atualizar a forma como define seu esquema. Recomendamos que você consulte o novo guia de saída estruturada para aprender a 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 que serão 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.Substituímos os casos
ModelContent.Partpelos 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, isso 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 do candidato
- 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 a 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
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 a 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
Web
O SDK do cliente do Google AI para JavaScript passou por muitas mudanças desde que os SDKs do cliente do Firebase AI Logic foram ramificados dele. A lista a seguir mostra algumas mudanças que talvez você precise considerar ao migrar para os SDKs de cliente do Firebase AI Logic.
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
Embasamento na Pesquisa
- Remoção de todos os usos desse recurso, já que ele ainda não é compatível com os SDKs do Firebase AI Logic.
Erros
- Removidos todos os usos de
GoogleGenerativeAIErrore, opcionalmente, migrados paraAIError.
- Removidos todos os usos de
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 paradas
- 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 Unity não estava disponível nos SDKs de cliente do Google AI.
Saiba como começar a usar o SDK do Firebase AI Logic para Unity.
Envie feedback sobre sua experiência com o Firebase AI Logic