Migrar para os SDKs de IA Logic do Firebase dos SDKs de cliente de IA do Google


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

  1. Faça login no console do Firebase e selecione seu projeto do Firebase.

  2. No console do Firebase, acesse Serviços de IA > Lógica de IA.

  3. Clique em Começar para iniciar um fluxo de trabalho guiado que ajuda a configurar as APIs necessárias e os recursos do projeto.

  4. 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.

  5. Se solicitado no fluxo de trabalho do console, siga as instruções na tela para registrar o app e conectá-lo ao Firebase.

  6. 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.

  1. No Xcode, com seu projeto de app aberto, acesse File > Add Package Dependencies.

  2. Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:

    https://github.com/firebase/firebase-ios-sdk
    
  3. Selecione a versão mais recente do SDK.

  4. Selecione as bibliotecas FirebaseAILogic e FirebaseAppCheck.

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.

  1. Instale o SDK do Firebase para JS para Web usando o npm:

    npm install firebase
    
  2. Inicialize 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.

  1. 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_check
    
  2. No 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';
    
  3. Ainda no arquivo lib/main.dart, verifique se você inicializou o Firebase usando o objeto DefaultFirebaseOptions exportado pelo arquivo de configuração:

    await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
    
  4. 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:

  1. No Xcode, com seu projeto de app aberto, navegue até o painel Packages Dependencies.

  2. Selecione o pacote generative-ai-swift na lista de dependências de pacotes.

  3. 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

// BEFORE
import 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

// BEFORE
import 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

// BEFORE
import 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

// BEFORE
import { 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

// BEFORE
import '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 enum por structs 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ções switch, agora é necessário incluir um caso default: para cobrir valores desconhecidos ou não processados, incluindo novos valores que serão adicionados ao SDK no futuro.

    • A enumeração BlockThreshold foi renomeada como HarmBlockThreshold. Esse tipo agora é um struct.

    • Os casos unknown e unspecified foram removidos das seguintes enumerações (agora structs): HarmCategory, HarmBlockThreshold, HarmProbability, BlockReason e FinishReason.

    • Substituição da enumeração ModelContent.Part por um protocolo chamado Part para 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 ThrowingPartsRepresentable foi removido, e os inicializadores de ModelContent foram simplificados para evitar erros ocasionais do compilador. As imagens que não forem codificadas corretamente ainda vão gerar erros quando forem usadas em generateContent.

    • Substituímos os casos ModelContent.Part pelos seguintes tipos struct em conformidade com o protocolo Part:

      • .text a TextPart
      • De .data para InlineDataPart
      • De .fileData para FileDataPart
      • De .functionCall para FunctionCallPart
      • .functionResponse a FunctionResponsePart
  • Categoria de dano

    • Mudança de HarmCategory para que não seja mais aninhado no tipo SafetySetting. Se você se referir a ele como SafetySetting.HarmCategory, isso pode ser substituído por HarmCategory.
  • Feedback de segurança

    • O tipo SafetyFeedback foi removido, já que não era usado em nenhuma das respostas.
  • Metadados de citação

    • A propriedade citationSources foi renomeada como citations em CitationMetadata.
  • Total de caracteres faturáveis

    • A propriedade totalBillableCharacters em CountTokensResponse foi alterada para ser opcional, refletindo situações em que nenhum caractere é enviado.
  • Resposta do candidato

    • Renomeamos CandidateResponse como Candidate para corresponder a outras plataformas.
  • Configuração de geração

    • As propriedades públicas de GenerationConfig foram alteradas para internal. Todos eles permanecem configuráveis no inicializador.

Kotlin

  • Enumerações

    • As classes enum e sealed foram 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 BlockThreshold foi renomeada como HarmBlockThreshold.

    • Valores removidos das seguintes enumerações: HarmBlockThreshold, HarmProbability, HarmSeverity, BlockReason e FinishReason.

  • Métodos de blob

    • Renomeação de todos os métodos que incluíam Blob como parte do nome para usar InlineData.
  • Configurações de segurança

    • O campo method foi mudado para ser anulável.
  • Classe de duração

    • Removemos todos os usos da classe Duration do Kotlin e a substituímos por long. Essa mudança oferece uma interoperabilidade melhor com o Java.
  • Metadados de citação

    • Todos os campos declarados anteriormente em CitationMetadata foram agrupados em uma nova classe chamada Citation. As citações podem ser encontradas na lista chamada citations em CitationMetadata. Essa mudança permite um melhor alinhamento de tipos em todas as plataformas.
  • Contar tokens

    • O campo totalBillableCharacters foi mudado para ser anulável.
  • Total de caracteres faturáveis

    • A propriedade totalBillableCharacters em CountTokensResponse foi alterada para ser opcional, refletindo situações em que nenhum caractere é enviado.
  • Como instanciar um modelo

    • O parâmetro requestOptions foi movido para o final da lista de parâmetros para se alinhar com outras plataformas.

Java

  • Enumerações

    • As classes enum e sealed foram 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 BlockThreshold foi renomeada como HarmBlockThreshold.

    • Valores removidos das seguintes enumerações: HarmBlockThreshold, HarmProbability, HarmSeverity, BlockReason e FinishReason.

  • Métodos de blob

    • Renomeação de todos os métodos que incluíam Blob como parte do nome para usar InlineData.
  • Configurações de segurança

    • O campo method foi mudado para ser anulável.
  • Classe de duração

    • Removemos todos os usos da classe Duration do Kotlin e a substituímos por long. Essa mudança oferece uma interoperabilidade melhor com o Java.
  • Metadados de citação

    • Todos os campos declarados anteriormente em CitationMetadata foram agrupados em uma nova classe chamada Citation. As citações podem ser encontradas na lista chamada citations em CitationMetadata. Essa mudança permite um melhor alinhamento de tipos em todas as plataformas.
  • Contar tokens

    • O campo totalBillableCharacters foi mudado para ser anulável.
  • Total de caracteres faturáveis

    • A propriedade totalBillableCharacters em CountTokensResponse foi alterada para ser opcional, refletindo situações em que nenhum caractere é enviado.
  • Como instanciar um modelo

    • O parâmetro requestOptions foi movido para o final da lista de parâmetros para se alinhar com outras plataformas.

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, BlockReason e FinishReason.
  • Motivo do bloqueio

    • Mudança de blockReason em PromptFeedback para ser opcional.
  • 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 GoogleGenerativeAIError e, opcionalmente, migrados para AIError.

Dart

  • Enumerações

    • Valores removidos das seguintes enumerações: HarmCategory, HarmProbability, BlockReason e FinishReason.
  • Parte de dados

    • Renomeamos DataPart como InlineDataPart e a função static data como inlineData para alinhar com outras plataformas.
  • Opções de solicitação

    • Remoção de RequestOptions, já que timeout não estava funcionando. Ele será adicionado novamente em breve, mas será movido para o tipo GenerativeModel para corresponder a outras plataformas.
  • Sequências de paradas

    • O parâmetro stopSequences em GenerationConfig foi alterado para ser opcional e usar null como padrão em vez de uma matriz vazia.
  • Citações

    • A propriedade citationSources foi renomeada como citations em CitationMetadata. O tipo CitationSource foi renomeado como Citation para corresponder a outras plataformas.
  • 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, EmbedContentRequest e EmbedContentResponse.
  • Contar tokens

    • Campos extras que não são mais necessários foram removidos da função countTokens. Apenas contents é necessário.
  • Como instanciar um modelo

    • O parâmetro systemInstruction foi movido para o final da lista de parâmetros para se alinhar com outras plataformas.
  • Funcionalidade de incorporação

    • Remoção da funcionalidade de embedding não compatível (embedContent e batchEmbedContents) do modelo.

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