Firebase AI Logic dan SDK kliennya sebelumnya disebut "Vertex AI in Firebase". Untuk lebih mencerminkan layanan dan fitur kami yang diperluas (misalnya, kami sekarang mendukung Gemini Developer API!), kami mengganti nama dan mengemas ulang layanan kami menjadi Firebase AI Logic.
Untuk mengakses model AI generatif Google secara aman langsung dari aplikasi seluler atau web Anda, Anda kini dapat memilih penyedia "Gemini API" — baik Agent Platform Gemini API (formerly Vertex AI) yang sudah lama tersedia maupun Gemini Developer API yang baru tersedia. Artinya, Anda kini memiliki opsi untuk menggunakan Gemini Developer API, yang menyediakan paket tanpa biaya dengan pembatasan kapasitas dan kuota yang wajar.
Ringkasan langkah-langkah untuk bermigrasi ke Firebase AI Logic SDK
Langkah 1: Pilih penyedia "Gemini API" terbaik untuk aplikasi dan kasus penggunaan Anda.
Langkah 2: Aktifkan API yang diperlukan.
Langkah 3: Perbarui pustaka yang digunakan di aplikasi Anda.
Langkah 4: Perbarui inisialisasi di aplikasi Anda.
Langkah 5: Perbarui kode Anda, bergantung pada fitur yang Anda gunakan.
Langkah 1: Pilih penyedia "Gemini API" terbaik untuk aplikasi Anda
Dengan migrasi ini, Anda memiliki pilihan penyedia "Gemini API":
SDK "Vertex AI in Firebase" lama hanya dapat menggunakan Agent Platform Gemini API (formerly Vertex AI).
Dengan Firebase AI Logic SDK baru, Anda dapat memilih penyedia "Gemini API" yang ingin dipanggil langsung dari aplikasi seluler atau web Anda, baik Gemini Developer API maupun Agent Platform Gemini API (formerly Vertex AI).
Tinjau perbedaan antara penggunaan dua penyedia Gemini API, terutama dalam hal fitur yang didukung, harga, dan batas kecepatan. Sebagai contoh, Gemini Developer API tidak mendukung penyediaan file menggunakan URL Cloud Storage, tetapi mungkin merupakan pilihan yang baik jika Anda ingin memanfaatkan paket tanpa biaya dan kuota yang wajar.
Langkah 2: Aktifkan API yang diperlukan
Pastikan semua API yang diperlukan diaktifkan di project Firebase Anda untuk menggunakan penyedia "Gemini API" yang Anda pilih.
Perhatikan bahwa Anda dapat mengaktifkan kedua penyedia API di project Anda secara bersamaan.
Login ke Firebase console, lalu pilih project Firebase Anda.
Di Firebase console, buka AI Services > AI Logic.
Klik Mulai untuk meluncurkan alur kerja terpandu yang membantu Anda menyiapkan API yang diperlukan dan resource untuk project Anda.
Pilih penyedia "Gemini API" yang ingin Anda gunakan dengan Firebase AI Logic SDK. Anda dapat menyiapkan dan menggunakan penyedia API lain nanti, jika Anda mau.
Gemini Developer API — penagihan opsional (tersedia di paket harga Spark tanpa biaya)
Alur kerja konsol akan mengaktifkan API yang diperlukan dan membuat kunci API Gemini di project Anda.
Jangan menambahkan kunci API Gemini ini ke codebase aplikasi Anda. Pelajari lebih lanjut.Agent Platform Gemini API (formerly Vertex AI) — penagihan diperlukan (memerlukan paket harga Blaze bayar sesuai penggunaan)
Alur kerja konsol akan mengaktifkan API yang diperlukan dalam project Anda.
Lanjutkan di panduan migrasi ini untuk mengupdate library dan inisialisasi di aplikasi Anda.
Langkah 3: Update library yang digunakan di aplikasi Anda
Perbarui codebase aplikasi Anda untuk menggunakan library Firebase AI Logic.
Swift
Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, update paket Firebase ke v12.5.0 atau yang lebih baru menggunakan salah satu opsi berikut:
Opsi 1: Update semua paket: Buka File > Packages > Update to Latest Package Versions.
Opsi 2: Update Firebase satu per satu: Buka paket Firebase di bagian yang disebut Package Dependencies. Klik kanan paket Firebase, lalu pilih Update Package.
Pastikan paket Firebase kini menampilkan v12.5.0 atau yang lebih baru. Jika tidak, verifikasi bahwa Persyaratan Paket yang Anda tentukan mengizinkan update ke v12.5.0 atau yang lebih baru.
Pilih target aplikasi Anda di Project Editor, lalu buka bagian Frameworks, Libraries, and Embedded Content.
Tambahkan library baru: Pilih tombol +, lalu tambahkan FirebaseAILogic dari paket Firebase.
Setelah Anda selesai memigrasikan aplikasi (lihat bagian yang tersisa dalam panduan ini), pastikan untuk menghapus library lama:
Pilih FirebaseVertexAI-Preview, lalu tekan tombol —.
Kotlin
Dalam file Gradle modul (level aplikasi) (biasanya
<project>/<app-module>/build.gradle.ktsatau<project>/<app-module>/build.gradle), ganti dependensi lama (jika ada) dengan dependensi berikut.Perhatikan bahwa mungkin lebih mudah untuk memigrasikan codebase aplikasi Anda (lihat bagian lainnya dalam panduan ini) sebelum menghapus dependensi lama.
// 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.0.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") }Sinkronkan project Android Anda dengan file Gradle.
Perhatikan bahwa jika Anda memilih untuk tidak menggunakan Firebase Android BoM, cukup tambahkan
dependensi untuk library firebase-ai dan setujui versi terbaru
yang disarankan oleh Android Studio.
Java
Dalam file Gradle modul (level aplikasi) (biasanya
<project>/<app-module>/build.gradle.ktsatau<project>/<app-module>/build.gradle), ganti dependensi lama (jika berlaku) dengan yang berikut.Perhatikan bahwa mungkin lebih mudah untuk memigrasikan codebase aplikasi Anda (lihat bagian lainnya dalam panduan ini) sebelum menghapus dependensi lama.
// 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.0.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") }Sinkronkan project Android Anda dengan file Gradle.
Perhatikan bahwa jika Anda memilih untuk tidak menggunakan Firebase Android BoM, cukup tambahkan
dependensi untuk library firebase-ai dan terima versi terbaru
yang disarankan oleh Android Studio.
Web
Dapatkan Firebase JS SDK versi terbaru untuk Web menggunakan npm:
npm i firebase@latest
ATAU
yarn add firebase@latest
Di mana pun Anda telah mengimpor library, perbarui pernyataan impor untuk menggunakan
firebase/ai.Perhatikan bahwa mungkin lebih mudah untuk memigrasikan codebase aplikasi Anda (lihat bagian lainnya dalam panduan ini) sebelum menghapus impor lama.
// 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
Perbarui penggunaan paket
firebase_aidi filepubspec.yamlAnda dengan menjalankan perintah berikut dari direktori project Flutter Anda:flutter pub add firebase_ai
Build ulang project Flutter Anda:
flutter run
Setelah Anda selesai memigrasikan aplikasi (lihat bagian yang tersisa dalam panduan ini), pastikan untuk menghapus paket lama:
flutter pub remove firebase_vertexai
Unity
Dukungan untuk Unity tidak tersedia dari "Vertex AI in Firebase".
Pelajari cara memulai Firebase AI Logic SDK untuk Unity.
Langkah 4: Perbarui inisialisasi di aplikasi Anda
|
Klik penyedia Gemini API untuk melihat konten dan kode khusus penyedia di halaman ini. |
Perbarui cara Anda melakukan inisialisasi layanan untuk penyedia API yang Anda pilih dan
buat instance 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
Dukungan untuk Unity tidak tersedia dari "Vertex AI in Firebase".
Pelajari cara mulai menggunakan Firebase AI Logic SDK untuk Unity.
Perhatikan bahwa bergantung pada kemampuan yang Anda gunakan, Anda mungkin tidak selalu
membuat instance GenerativeModel. Untuk
mengalirkan input dan output menggunakan Gemini Live API,
buat instance LiveModel.
Langkah 5: Perbarui kode Anda bergantung pada fitur yang Anda gunakan
Langkah ini menjelaskan perubahan yang mungkin diperlukan, bergantung pada fitur yang Anda gunakan.
Jika Anda menggunakan URL Cloud Storage dan Anda beralih menggunakan Gemini Developer API dalam migrasi ini, Anda harus memperbarui permintaan multimodal Anda untuk menyertakan file sebagai data inline (atau menggunakan URL YouTube untuk video).
Beberapa perubahan diperkenalkan untuk SDK "Vertex AI in Firebase" versi GA. Perubahan yang sama ini diperlukan untuk menggunakan SDK Firebase AI Logic. Tinjau daftar berikut untuk mengetahui perubahan yang mungkin perlu Anda lakukan pada kode untuk mengakomodasi penggunaan SDK Firebase AI Logic.
Wajib untuk semua bahasa dan platform
Panggilan fungsi
Jika Anda menerapkan fitur ini sebelum GA, Anda harus memperbarui cara Anda menentukan skema. Sebaiknya tinjau panduan panggilan fungsi yang telah diperbarui untuk mempelajari cara menulis deklarasi fungsi.Membuat output terstruktur (seperti JSON) menggunakan
responseSchema
Jika Anda menerapkan fitur ini sebelum GA, Anda harus memperbarui cara Anda 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
enumdenganstructdengan variabel statis. Perubahan ini memungkinkan fleksibilitas yang lebih besar untuk mengembangkan API dengan cara yang kompatibel dengan versi lama. Saat menggunakan pernyataanswitch, Anda kini harus menyertakan kasusdefault:untuk mencakup nilai yang tidak diketahui atau tidak ditangani, termasuk nilai baru yang ditambahkan ke SDK pada masa mendatang.Mengganti nama enumerasi
BlockThresholdmenjadiHarmBlockThreshold; jenis ini sekarang menjadistruct.Menghapus kasus
unknowndanunspecifieddari enumerasi berikut (sekarangstruct):HarmCategory,HarmBlockThreshold,HarmProbability,BlockReason, danFinishReason.Mengganti enumerasi
ModelContent.Partdengan protokol bernamaPartuntuk memungkinkan jenis baru ditambahkan dengan cara yang kompatibel mundur. Perubahan ini dijelaskan secara lebih mendetail di bagian Bagian konten.
Bagian konten
Menghapus protokol
ThrowingPartsRepresentable, dan menyederhanakan penginisialisasi untukModelContentguna menghindari error compiler sesekali. Gambar yang tidak dienkode dengan benar akan tetap menampilkan error saat digunakan digenerateContent.Mengganti kasus
ModelContent.Partdengan jenisstructberikut yang sesuai dengan protokolPart:.textkeTextPart.datakeInlineDataPart.fileDatakeFileDataPart.functionCallkeFunctionCallPart.functionResponsekeFunctionResponsePart
Kategori bahaya
- Mengubah
HarmCategoryagar tidak lagi bertingkat dalam jenisSafetySetting. Jika Anda menyebutnya sebagaiSafetySetting.HarmCategory, nama tersebut dapat diganti denganHarmCategory.
- Mengubah
Masukan keamanan
- Menghapus jenis
SafetyFeedback, karena tidak digunakan dalam respons apa pun.
- Menghapus jenis
Metadata kutipan
- Mengganti nama properti
citationSourcesmenjadicitationsdiCitationMetadata.
- Mengganti nama properti
Total karakter yang dapat ditagih
- Mengubah properti
totalBillableCharactersdiCountTokensResponsemenjadi opsional untuk mencerminkan situasi saat tidak ada karakter yang dikirim.
- Mengubah properti
Respons kandidat
- Mengganti nama
CandidateResponsemenjadiCandidateagar sesuai dengan platform lain.
- Mengganti nama
Konfigurasi pembuatan
- Mengubah properti publik
GenerationConfigmenjadiinternal. Semuanya tetap dapat dikonfigurasi di penginisialisasi.
- Mengubah properti publik
Kotlin
Enumerasi
Mengganti class
enumdan classsealeddengan class reguler. Perubahan ini memungkinkan fleksibilitas yang lebih besar untuk mengembangkan API dengan cara yang kompatibel dengan versi lama.Mengganti nama enumerasi
BlockThresholdmenjadiHarmBlockThreshold.Menghapus nilai dari enumerasi berikut:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReason, danFinishReason.
Metode blob
- Mengganti nama semua metode yang menyertakan
Blobsebagai bagian dari namanya untuk menggunakanInlineDatasebagai gantinya.
- Mengganti nama semua metode yang menyertakan
Setelan keamanan
- Mengubah kolom
methodmenjadi nullable.
- Mengubah kolom
Class durasi
- Menghapus semua penggunaan class
DurationKotlin, dan menggantinya denganlong. Perubahan ini memberikan interoperabilitas yang lebih baik dengan Java.
- Menghapus semua penggunaan class
Metadata kutipan
- Membungkus semua kolom yang sebelumnya dideklarasikan di
CitationMetadatake dalam kelas baru yang disebutCitation. Kutipan dapat ditemukan dalam daftar yang disebutcitationsdiCitationMetadata. Perubahan ini memungkinkan penyelarasan jenis yang lebih baik di seluruh platform.
- Membungkus semua kolom yang sebelumnya dideklarasikan di
Menghitung token
- Mengubah kolom
totalBillableCharactersmenjadi nullable.
- Mengubah kolom
Total karakter yang dapat ditagih
- Mengubah properti
totalBillableCharactersdiCountTokensResponsemenjadi opsional untuk mencerminkan situasi saat tidak ada karakter yang dikirim.
- Mengubah properti
Membuat instance model
- Memindahkan parameter
requestOptionske akhir daftar parameter agar selaras dengan platform lain.
- Memindahkan parameter
Live API
Menghapus nilai
UNSPECIFIEDuntuk class enumResponseModality. Sebagai gantinya, gunakannull.LiveGenerationConfig.setResponseModalitiestelah diganti namanya menjadiLiveGenerationConfig.setResponseModality.Menghapus class
LiveContentResponse.Status, dan sebagai gantinya, menyusun kolom status sebagai propertiLiveContentResponse.Menghapus class
LiveContentResponse, dan sebagai gantinya, menyediakan subclassLiveServerMessageyang cocok dengan respons dari model.Mengubah
LiveModelFutures.connectagar menampilkanListenableFuture<LiveSessionFutures>, bukanListenableFuture<LiveSession>.
Java
Enumerasi
Mengganti class
enumdan classsealeddengan class reguler. Perubahan ini memungkinkan fleksibilitas yang lebih besar untuk mengembangkan API dengan cara yang kompatibel dengan versi lama.Mengganti nama enumerasi
BlockThresholdmenjadiHarmBlockThreshold.Menghapus nilai dari enumerasi berikut:
HarmBlockThreshold,HarmProbability,HarmSeverity,BlockReason, danFinishReason.
Metode blob
- Mengganti nama semua metode yang menyertakan
Blobsebagai bagian dari namanya untuk menggunakanInlineDatasebagai gantinya.
- Mengganti nama semua metode yang menyertakan
Setelan keamanan
- Mengubah kolom
methodmenjadi nullable.
- Mengubah kolom
Class durasi
- Menghapus semua penggunaan class
DurationKotlin, dan menggantinya denganlong. Perubahan ini memberikan interoperabilitas yang lebih baik dengan Java.
- Menghapus semua penggunaan class
Metadata kutipan
- Membungkus semua kolom yang sebelumnya dideklarasikan di
CitationMetadatake dalam kelas baru yang disebutCitation. Kutipan dapat ditemukan dalam daftar yang disebutcitationsdiCitationMetadata. Perubahan ini memungkinkan penyelarasan jenis yang lebih baik di seluruh platform.
- Membungkus semua kolom yang sebelumnya dideklarasikan di
Menghitung token
- Mengubah kolom
totalBillableCharactersmenjadi nullable.
- Mengubah kolom
Total karakter yang dapat ditagih
- Mengubah properti
totalBillableCharactersdiCountTokensResponsemenjadi opsional untuk mencerminkan situasi saat tidak ada karakter yang dikirim.
- Mengubah properti
Membuat instance model
- Memindahkan parameter
requestOptionske akhir daftar parameter agar selaras dengan platform lain.
- Memindahkan parameter
Live API
Menghapus nilai
UNSPECIFIEDuntuk class enumResponseModality. Sebagai gantinya, gunakannull.LiveGenerationConfig.setResponseModalitiestelah diganti namanya menjadiLiveGenerationConfig.setResponseModality.Menghapus class
LiveContentResponse.Status, dan sebagai gantinya, menyusun kolom status sebagai propertiLiveContentResponse.Menghapus class
LiveContentResponse, dan sebagai gantinya, menyediakan subclassLiveServerMessageyang cocok dengan respons dari model.Mengubah
LiveModelFutures.connectagar menampilkanListenableFuture<LiveSessionFutures>, bukanListenableFuture<LiveSession>.
Mengubah berbagai metode builder Java agar kini menampilkan instance class-nya dengan benar, bukan
void.
Web
Enumerasi
- Menghapus nilai dari enumerasi berikut:
HarmCategory,BlockThreshold,HarmProbability,HarmSeverity,BlockReason, danFinishReason.
- Menghapus nilai dari enumerasi berikut:
Alasan pemblokiran
- Mengubah
blockReasondiPromptFeedbackmenjadi opsional.
- Mengubah
Perubahan diperlukan hanya jika Anda mulai menggunakan Gemini Developer API (bukan Agent Platform Gemini API (formerly Vertex AI)):
Setelan keamanan
- Menghapus penggunaan
SafetySetting.methodyang tidak didukung.
- Menghapus penggunaan
Data inline
- Menghapus penggunaan
InlineDataPart.videoMetadatayang tidak didukung.
- Menghapus penggunaan
Dart
Enumerasi
- Menghapus nilai dari enumerasi berikut:
HarmCategory,HarmProbability,BlockReason, danFinishReason.
- Menghapus nilai dari enumerasi berikut:
Bagian data
- Mengganti nama
DataPartmenjadiInlineDataPart, dan fungsidatastaticmenjadiinlineDataagar selaras dengan platform lain.
- Mengganti nama
Opsi permintaan
- Menghapus
RequestOptionskarenatimeouttidak berfungsi. Fitur ini akan ditambahkan kembali dalam waktu dekat, tetapi akan dipindahkan ke jenisGenerativeModelagar sesuai dengan platform lain.
- Menghapus
Hentikan urutan
- Mengubah parameter
stopSequencesdiGenerationConfigmenjadi opsional dan ditetapkan secara default kenull, bukan array kosong.
- Mengubah parameter
Kutipan
- Mengganti nama properti
citationSourcesmenjadicitationsdiCitationMetadata. JenisCitationSourcediganti namanya menjadiCitationagar sesuai dengan platform lain.
- Mengganti nama properti
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, danEmbedContentResponse.
- Menghapus jenis, metode, dan properti berikut yang tidak sengaja diekspos:
Menghitung token
- Menghapus kolom tambahan dari fungsi
countTokensyang tidak lagi diperlukan. Hanyacontentsyang diperlukan.
- Menghapus kolom tambahan dari fungsi
Membuat instance model
- Memindahkan parameter
systemInstructionke akhir daftar parameter agar selaras dengan platform lain.
- Memindahkan parameter
Fungsi penyematan
- Menghapus fungsi penyematan yang tidak didukung (
embedContentdanbatchEmbedContents) dari model.
- Menghapus fungsi penyematan yang tidak didukung (
Unity
Dukungan untuk Unity tidak tersedia dari "Vertex AI in Firebase".
Pelajari cara memulai Firebase AI Logic SDK untuk Unity.
Kemungkinan error terkait migrasi
Saat bermigrasi untuk menggunakan versi GA Firebase AI Logic, Anda mungkin mengalami error jika belum menyelesaikan semua perubahan yang diperlukan seperti yang dijelaskan dalam panduan migrasi ini.
Error 403: Requests to this API firebasevertexai.googleapis.com ... are blocked.
Jika Anda menerima error 403 yang bertuliskan
Requests to this API firebasevertexai.googleapis.com ... are blocked.,
biasanya hal ini berarti kunci Firebase API dalam
file atau objek konfigurasi Firebase Anda tidak memiliki API yang diperlukan dalam
daftar yang diizinkan untuk produk yang Anda coba gunakan.
Pastikan kunci Firebase API yang digunakan oleh aplikasi Anda memiliki semua API yang diperlukan yang disertakan dalam daftar yang diizinkan "Pembatasan API" kunci. Untuk Firebase AI Logic, kunci Firebase API Anda harus memiliki setidaknya API Firebase AI Logic dalam daftar yang diizinkan. API ini seharusnya telah otomatis ditambahkan ke daftar yang diizinkan untuk kunci API Anda saat Anda mengaktifkan API yang diperlukan di Firebase console.
Anda dapat melihat semua kunci API di panel APIs & Services > Credentials di Google Cloud console.
Berikan masukan tentang pengalaman Anda menggunakan Firebase AI Logic