Bermigrasi ke Firebase AI Logic SDK dari SDK klien Google AI


Buka langsung petunjuk migrasi

Mengapa bermigrasi untuk menggunakan SDK Firebase AI Logic?

Anda mungkin telah mencoba kumpulan SDK klien seluler atau web alternatif yang memberi Anda akses ke Gemini Developer API.

SDK klien tersebut tidak terintegrasi ke dalam ekosistem Firebase yang andal dan menawarkan layanan penting untuk aplikasi seluler dan web. SDK ini kini tidak digunakan lagi dan diganti dengan SDK klien Firebase AI Logic, yang dapat memberi Anda akses ke Gemini Developer API.

Fitur keamanan untuk aplikasi seluler dan web

Untuk aplikasi seluler dan web, keamanan sangat penting dan memerlukan pertimbangan khusus karena kode Anda – termasuk panggilan ke Gemini API – berjalan di lingkungan yang tidak dilindungi. Anda dapat menggunakan Firebase App Check untuk melindungi API dari penyalahgunaan oleh klien yang tidak sah.

Saat menggunakan Firebase App Check dengan Firebase AI Logic, Anda tidak pernah menambahkan kunci API Gemini untuk Gemini Developer API langsung ke codebase aplikasi seluler atau web. Sebagai gantinya, kunci API Gemini tetap berada di server, tidak terekspos ke pelaku kejahatan.

Ekosistem yang dibuat untuk aplikasi seluler dan web

Firebase adalah platform Google untuk mengembangkan aplikasi seluler dan web. Menggunakan Firebase AI Logic berarti aplikasi Anda berada dalam ekosistem yang berfokus pada kebutuhan aplikasi dan developer full-stack. Contoh:

  • Tetapkan konfigurasi run-time secara dinamis atau tukar nilai di aplikasi Anda (seperti nama dan versi model) tanpa merilis versi aplikasi baru menggunakan Firebase Remote Config.

  • Gunakan Cloud Storage for Firebase untuk menyertakan file berukuran besar dalam permintaan multimodal (jika Anda menggunakan Vertex AI Gemini API). SDK klien Cloud Storage membantu Anda menangani upload dan download file (bahkan dalam kondisi jaringan yang buruk) dan menawarkan keamanan yang lebih baik untuk data pengguna akhir Anda. Pelajari lebih lanjut di panduan solusi tentang penggunaan Cloud Storage for Firebase.

  • Mengelola data terstruktur menggunakan SDK database yang dibuat untuk aplikasi seluler dan web (seperti Cloud Firestore).

Bermigrasi ke Firebase AI Logic SDK

Ringkasan langkah-langkah untuk bermigrasi ke Firebase AI Logic SDK:

  • Langkah 1: Siapkan project Firebase baru atau yang sudah ada dan hubungkan aplikasi Anda ke Firebase.

  • Langkah 2: Tambahkan Firebase AI Logic SDK ke aplikasi Anda.

  • Langkah 3: Perbarui impor dan inisialisasi di aplikasi Anda.

  • Langkah 4: Perbarui kode Anda bergantung pada fitur yang Anda gunakan.

Langkah 1: Siapkan project Firebase dan hubungkan aplikasi Anda

  1. Login ke konsol Firebase, lalu pilih project Firebase Anda.

  2. Di Firebase console, buka halaman Firebase AI Logic.

  3. Klik Mulai untuk meluncurkan alur kerja terpandu yang membantu Anda menyiapkan API yang diperlukan dan resource untuk project Anda.

  4. Pilih Gemini Developer API. Anda dapat menyiapkan dan menggunakan penyedia API lainnya nanti, jika mau.

    Konsol akan mengaktifkan API yang diperlukan dan membuat kunci API Gemini khusus yang baru di project Anda.
    Jangan tambahkan kunci API Gemini baru ini ke codebase aplikasi Anda. Pelajari lebih lanjut.

  5. Jika diminta di alur kerja konsol, ikuti petunjuk di layar untuk mendaftarkan aplikasi dan menghubungkannya ke Firebase.

  6. Lanjutkan di panduan migrasi ini untuk mengupdate library dan inisialisasi di aplikasi Anda.

Langkah 2: Tambahkan Firebase AI Logic SDK ke aplikasi Anda

Setelah project Firebase disiapkan dan aplikasi terhubung ke Firebase (lihat langkah sebelumnya), Anda kini dapat menambahkan SDK Firebase AI Logic ke aplikasi.

Swift

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

Library Firebase AI Logic menyediakan akses ke API untuk berinteraksi dengan model Gemini dan Imagen. Library ini disertakan sebagai bagian dari Firebase SDK untuk platform Apple (firebase-ios-sdk).

Jika Anda sudah menggunakan Firebase, pastikan paket Firebase Anda adalah v11.13.0 atau yang lebih baru.

  1. Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, buka File > Add Package Dependencies.

  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:

    https://github.com/firebase/firebase-ios-sdk
    
  3. Pilih versi SDK terbaru.

  4. Pilih library FirebaseAI.

Setelah selesai, Xcode akan otomatis mulai me-resolve dan mendownload dependensi Anda di latar belakang.

Kotlin

Firebase AI Logic SDK untuk Android (firebase-ai) menyediakan akses ke API untuk berinteraksi dengan model Gemini dan Imagen.

Dalam file Gradle modul (level aplikasi) (seperti <project>/<app-module>/build.gradle.kts), tambahkan dependensi untuk library Firebase AI Logic untuk Android. Sebaiknya gunakan Firebase Android BoM untuk mengontrol pembuatan versi library.

dependencies {
  // ... other androidx dependencies

  // Import the BoM for the Firebase platform
  implementation(platform("com.google.firebase:firebase-bom:33.15.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")
}

Dengan menggunakan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.

Java

Firebase AI Logic SDK untuk Android (firebase-ai) menyediakan akses ke API untuk berinteraksi dengan model Gemini dan Imagen.

Dalam file Gradle modul (level aplikasi) (seperti <project>/<app-module>/build.gradle.kts), tambahkan dependensi untuk library Firebase AI Logic untuk Android. Sebaiknya gunakan Firebase Android BoM untuk mengontrol pembuatan versi library.

Untuk Java, Anda perlu menambahkan dua library tambahan.

dependencies {
  // ... other androidx dependencies

  // Import the BoM for the Firebase platform
  implementation(platform("com.google.firebase:firebase-bom:33.15.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")

  // 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")
}

Dengan menggunakan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.

Web

Library Firebase AI Logic menyediakan akses ke API untuk berinteraksi dengan model Gemini dan Imagen. Library ini disertakan sebagai bagian dari Firebase JavaScript SDK untuk Web.

  1. Instal Firebase JS SDK untuk Web menggunakan npm:

    npm install firebase
    
  2. Inisialisasi Firebase di aplikasi Anda:

    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);
    

Dart

Plugin Firebase AI Logic untuk Flutter (firebase_ai) menyediakan akses ke API untuk berinteraksi dengan model Gemini dan Imagen.

  1. Dari direktori project Flutter Anda, jalankan perintah berikut untuk menginstal plugin inti dan plugin Firebase AI Logic:

    flutter pub add firebase_core && flutter pub add firebase_ai
    
  2. Dalam file lib/main.dart, impor plugin inti Firebase, plugin Firebase AI Logic, dan file konfigurasi yang Anda buat sebelumnya:

    import 'package:firebase_core/firebase_core.dart';
    import 'package:firebase_ai/firebase_ai.dart';
    import 'firebase_options.dart';
    
  3. Selain itu, di file lib/main.dart, lakukan inisialisasi Firebase menggunakan objek DefaultFirebaseOptions yang diekspor oleh file konfigurasi:

    await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
    
  4. Build ulang aplikasi Flutter Anda:

    flutter run
    

Unity

Dukungan untuk Unity tidak tersedia dari SDK klien Google AI.

Pelajari cara memulai Firebase AI Logic SDK untuk Unity.

Menghapus SDK lama dari aplikasi Anda

Setelah selesai memigrasikan aplikasi (lihat bagian lainnya dalam panduan ini), pastikan untuk menghapus library lama.

Swift

Hapus library lama:

  1. Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, buka panel Packages Dependencies.

  2. Pilih paket generative-ai-swift dari daftar dependensi paket.

  3. Klik tombol - dari bagian bawah daftar, lalu klik Hapus untuk mengonfirmasi.

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

Hapus paket lama:
flutter pub remove google_generative_ai

Unity

Dukungan untuk Unity tidak tersedia dari SDK klien Google AI.

Pelajari cara memulai Firebase AI Logic SDK untuk Unity.

Langkah 3: Perbarui impor dan inisialisasi di aplikasi Anda

Perbarui impor dan cara Anda melakukan inisialisasi layanan backend Gemini Developer API dan membuat instance GenerativeModel.

Swift

// BEFORE
import GoogleGenerativeAI

let model = GenerativeModel(name: "MODEL_NAME", apiKey: APIKey.default)

// AFTER
import FirebaseAI

// 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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-flash');

Unity

Dukungan untuk Unity tidak tersedia dari SDK klien Google AI.

Pelajari cara memulai Firebase AI Logic SDK untuk Unity.

Perhatikan bahwa bergantung pada kemampuan yang Anda gunakan, Anda mungkin tidak selalu membuat instance GenerativeModel.

Langkah 4: Perbarui kode bergantung pada fitur yang Anda gunakan

Langkah ini menjelaskan perubahan yang mungkin diperlukan, bergantung pada fitur yang Anda gunakan.

  • SDK klien Firebase AI Logic tidak mendukung eksekusi kode. Jika Anda menggunakan fitur ini, pastikan untuk mengakomodasi hal ini di aplikasi Anda.

  • Tinjau daftar berikut untuk mengetahui perubahan yang mungkin perlu Anda buat dalam kode untuk mengakomodasi migrasi ke SDK klien Firebase AI Logic.

Wajib untuk semua bahasa dan platform

  • Panggilan fungsi
    Jika menerapkan fitur ini, Anda harus melakukan pembaruan pada cara menentukan skema. Sebaiknya tinjau panduan panggilan fungsi yang telah diperbarui untuk mempelajari cara menulis deklarasi fungsi Anda.

  • Membuat output terstruktur (seperti JSON) menggunakan responseSchema
    Jika menerapkan fitur ini, Anda harus melakukan pembaruan pada cara menentukan skema. Sebaiknya tinjau panduan output terstruktur baru untuk mempelajari cara menulis skema JSON.

  • Waktu tunggu

    • Mengubah waktu tunggu default untuk permintaan menjadi 180 detik.

Wajib berdasarkan platform atau bahasa

Swift

  • Enumerasi

    • Mengganti sebagian besar jenis enum dengan struct dengan variabel statis. Perubahan ini memungkinkan fleksibilitas yang lebih besar untuk mengembangkan API dengan cara yang kompatibel dengan versi sebelumnya. Saat menggunakan pernyataan switch, Anda kini harus menyertakan kasus default: untuk mencakup nilai yang tidak diketahui atau tidak ditangani, termasuk nilai baru yang ditambahkan ke SDK pada masa mendatang.

    • Mengganti nama enumerasi BlockThreshold menjadi HarmBlockThreshold; jenis ini sekarang menjadi struct.

    • Menghapus kasus unknown dan unspecified dari enumerasi berikut (sekarang struct): HarmCategory, HarmBlockThreshold, HarmProbability, BlockReason, dan FinishReason.

    • Mengganti enumerasi ModelContent.Part dengan protokol bernama Part untuk memungkinkan jenis baru ditambahkan dengan cara yang kompatibel dengan versi sebelumnya. Perubahan ini dijelaskan secara lebih mendetail di bagian Bagian konten.

  • Bagian konten

    • Menghapus protokol ThrowingPartsRepresentable, dan menyederhanakan penginisialisasi untuk ModelContent guna menghindari error compiler yang sesekali terjadi. Gambar yang tidak dienkode dengan benar akan tetap menampilkan error saat digunakan di generateContent.

    • Mengganti kasus ModelContent.Part dengan jenis struct berikut yang sesuai dengan protokol Part:

      • .text ke TextPart
      • .data ke InlineDataPart
      • .fileData ke FileDataPart
      • .functionCall ke FunctionCallPart
      • .functionResponse ke FunctionResponsePart
  • Kategori bahaya

    • Mengubah HarmCategory agar tidak lagi bertingkat dalam jenis SafetySetting. Jika Anda menyebutnya sebagai SafetySetting.HarmCategory, nilai tersebut dapat diganti dengan HarmCategory.
  • Masukan keselamatan

    • Menghapus jenis SafetyFeedback, karena tidak digunakan dalam respons apa pun.
  • Metadata kutipan

    • Mengganti nama properti citationSources menjadi citations di CitationMetadata.
  • Total karakter yang dapat ditagih

    • Mengubah properti totalBillableCharacters di CountTokensResponse menjadi opsional untuk mencerminkan situasi saat tidak ada karakter yang dikirim.
  • Respons kandidat

    • Mengganti nama CandidateResponse menjadi Candidate agar cocok dengan platform lain.
  • Konfigurasi pembuatan

    • Mengubah properti publik GenerationConfig menjadi internal. Semuanya tetap dapat dikonfigurasi di penginisialisasi.

Kotlin

  • Enumerasi

    • Mengganti class enum dan class sealed dengan class reguler. Perubahan ini memungkinkan fleksibilitas yang lebih besar untuk mengembangkan API dengan cara yang kompatibel dengan versi sebelumnya.

    • Mengganti nama enumerasi BlockThreshold menjadi HarmBlockThreshold.

    • Menghapus nilai dari enumerasi berikut: HarmBlockThreshold, HarmProbability, HarmSeverity, BlockReason, dan FinishReason.

  • Metode blob

    • Mengganti nama semua metode yang menyertakan Blob sebagai bagian dari namanya untuk menggunakan InlineData sebagai gantinya.
  • Setelan keamanan

    • Mengubah kolom method menjadi nullable.
  • Class durasi

    • Menghapus semua penggunaan class Duration Kotlin, dan menggantinya dengan long. Perubahan ini memberikan interoperabilitas yang lebih baik dengan Java.
  • Metadata kutipan

    • Menggabungkan semua kolom yang sebelumnya dideklarasikan di CitationMetadata ke dalam class baru yang disebut Citation. Kutipan dapat ditemukan dalam daftar yang disebut citations di CitationMetadata. Perubahan ini memungkinkan penyelarasan jenis yang lebih baik di seluruh platform.
  • Token jumlah

    • Mengubah kolom totalBillableCharacters menjadi nullable.
  • Total karakter yang dapat ditagih

    • Mengubah properti totalBillableCharacters di CountTokensResponse menjadi opsional untuk mencerminkan situasi saat tidak ada karakter yang dikirim.
  • Membuat instance model

    • Memindahkan parameter requestOptions ke akhir daftar parameter agar selaras dengan platform lain.

Java

  • Enumerasi

    • Mengganti class enum dan class sealed dengan class reguler. Perubahan ini memungkinkan fleksibilitas yang lebih besar untuk mengembangkan API dengan cara yang kompatibel dengan versi sebelumnya.

    • Mengganti nama enumerasi BlockThreshold menjadi HarmBlockThreshold.

    • Menghapus nilai dari enumerasi berikut: HarmBlockThreshold, HarmProbability, HarmSeverity, BlockReason, dan FinishReason.

  • Metode blob

    • Mengganti nama semua metode yang menyertakan Blob sebagai bagian dari namanya untuk menggunakan InlineData sebagai gantinya.
  • Setelan keamanan

    • Mengubah kolom method menjadi nullable.
  • Class durasi

    • Menghapus semua penggunaan class Duration Kotlin, dan menggantinya dengan long. Perubahan ini memberikan interoperabilitas yang lebih baik dengan Java.
  • Metadata kutipan

    • Menggabungkan semua kolom yang sebelumnya dideklarasikan di CitationMetadata ke dalam class baru yang disebut Citation. Kutipan dapat ditemukan dalam daftar yang disebut citations di CitationMetadata. Perubahan ini memungkinkan penyelarasan jenis yang lebih baik di seluruh platform.
  • Token jumlah

    • Mengubah kolom totalBillableCharacters menjadi nullable.
  • Total karakter yang dapat ditagih

    • Mengubah properti totalBillableCharacters di CountTokensResponse menjadi opsional untuk mencerminkan situasi saat tidak ada karakter yang dikirim.
  • Membuat instance model

    • Memindahkan parameter requestOptions ke akhir daftar parameter agar selaras dengan platform lain.

Web

Perhatikan bahwa SDK klien Google AI untuk JavaScript telah mengalami banyak perubahan sejak SDK klien Firebase AI Logic bercabang darinya. Daftar berikut adalah beberapa potensi perubahan yang mungkin perlu Anda pertimbangkan saat bermigrasi ke SDK klien Firebase AI Logic.

  • Enumerasi

    • Menghapus nilai dari enumerasi berikut: HarmCategory, BlockThreshold, HarmProbability, HarmSeverity, BlockReason, dan FinishReason.
  • Alasan pemblokiran

    • Mengubah blockReason di PromptFeedback menjadi opsional.
  • Perujukan Penelusuran

    • Menghapus semua penggunaan fitur ini, karena belum didukung di SDK Firebase AI Logic.
  • Error

    • Menghapus semua penggunaan GoogleGenerativeAIError, dan secara opsional berpindah ke AIError.

Dart

  • Enumerasi

    • Menghapus nilai dari enumerasi berikut: HarmCategory, HarmProbability, BlockReason, dan FinishReason.
  • Bagian data

    • Mengganti nama DataPart menjadi InlineDataPart, dan fungsi static data menjadi inlineData agar selaras dengan platform lain.
  • Opsi permintaan

    • Menghapus RequestOptions karena timeout tidak berfungsi. Jenis ini akan ditambahkan kembali dalam waktu dekat, tetapi akan dipindahkan ke jenis GenerativeModel agar cocok dengan platform lain.
  • Urutan berhenti

    • Mengubah parameter stopSequences di GenerationConfig menjadi opsional dan default ke null, bukan array kosong.
  • Kutipan

    • Mengganti nama properti citationSources menjadi citations di CitationMetadata. Jenis CitationSource diganti namanya menjadi Citation agar cocok dengan platform lain.
  • Jenis, metode, dan properti publik yang tidak diperlukan

    • Menghapus jenis, metode, dan properti berikut yang tidak sengaja diekspos: defaultTimeout, CountTokensResponseFields, parseCountTokensResponse, parseEmbedContentResponse, parseGenerateContentResponse, parseContent, BatchEmbedContentsResponse, ContentEmbedding, EmbedContentRequest, dan EmbedContentResponse.
  • Token jumlah

    • Menghapus kolom tambahan dari fungsi countTokens yang tidak lagi diperlukan. Hanya contents yang diperlukan.
  • Membuat instance model

    • Memindahkan parameter systemInstruction ke akhir daftar parameter agar selaras dengan platform lain.
  • Fungsi penyematan

    • Menghapus fungsi penyematan yang tidak didukung (embedContent dan batchEmbedContents) dari model.

Unity

Dukungan untuk Unity tidak tersedia dari SDK klien Google AI.

Pelajari cara memulai Firebase AI Logic SDK untuk Unity.


Berikan masukan tentang pengalaman Anda dengan Firebase AI Logic