Skip to content

Commit 2e0c14c

Browse files
Firebase AI Logic and Imagen update (#41)
Migrate to Firebase AI Logic and update to Imagen 4
1 parent 2b19309 commit 2e0c14c

File tree

14 files changed

+49
-48
lines changed

14 files changed

+49
-48
lines changed

ai-catalog/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Browse the samples inside the `/samples` folder:
2424
- More to come...
2525

2626
> **Requires Firebase setup** the samples relying on Google Cloud models (Gemini Pro, Gemini Flash, etc...)
27-
> require setting up a Firebase project and connecting the app to Firebase (read more [here](https://firebase.google.com/docs/vertex-ai/get-started?platform=android#set-up-firebase)).
27+
> require setting up a Firebase project and connecting the app to Firebase (read more [here](https://firebase.google.com/docs/ai-logic/get-started?platform=android&api=dev#set-up-firebase)).
2828
2929
> 🚧 **Work-in-Progress:** we are working on bringing more samples into the application.
3030
@@ -33,7 +33,7 @@ Browse the samples inside the `/samples` folder:
3333
1. Clone the repository
3434
2. Open the whole project in Android Studio.
3535
3. Set up a Firebase project and connect your app to Firebase by adding your Firebase configuration
36-
file (google-services.json) to the app. Read more [here](https://firebase.google.com/docs/vertex-ai/get-started?platform=android#set-up-firebase).
36+
file (google-services.json) to the app. Read more [here](https://firebase.google.com/docs/ai-logic/get-started?platform=android&api=dev#set-up-firebase).
3737
3. Sync & Run `app` configuration
3838

3939
The app will open with the samples list screen that allows you to navigate throughout the different

ai-catalog/app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ dependencies {
7878
implementation(libs.hilt.android)
7979
implementation(libs.hilt.navigation.compose)
8080
implementation(platform(libs.firebase.bom))
81-
implementation(libs.firebase.vertexai)
81+
implementation(libs.firebase.ai)
8282
ksp(libs.hilt.compiler)
8383

8484
implementation(project(":samples:gemini-multimodal"))

ai-catalog/gradle/libs.versions.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[versions]
22
agp = "8.8.0"
33
coilCompose = "3.1.0"
4-
firebaseBom = "33.12.0"
4+
firebaseBom = "33.14.0"
55
mlkitGenAi = "1.0.0-beta1"
66
kotlin = "2.1.0"
77
coreKtx = "1.15.0"
@@ -23,15 +23,14 @@ ksp = "2.1.0-1.0.29"
2323
runtimeLivedata = "1.7.6"
2424
material3Android = "1.3.1"
2525
media3 = "1.6.1"
26-
material3AndroidVersion = "1.3.2"
2726
firebaseCommonKtx = "21.0.0"
2827
uiToolingPreviewAndroid = "1.8.1"
2928

3029
[libraries]
3130
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
3231
coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilCompose" }
3332
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" }
34-
firebase-vertexai = { group = "com.google.firebase", name = "firebase-vertexai" }
33+
firebase-ai = { group = "com.google.firebase", name = "firebase-ai" }
3534
firebase-common-ktx = { group = "com.google.firebase", name = "firebase-common-ktx", version.ref = "firebaseCommonKtx" }
3635
genai-image-description = { module = "com.google.mlkit:genai-image-description", version.ref = "mlkitGenAi" }
3736
genai-proofreading = { module = "com.google.mlkit:genai-proofreading", version.ref = "mlkitGenAi" }

ai-catalog/samples/gemini-chatbot/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ dependencies {
6262
implementation(platform(libs.androidx.compose.bom))
6363
implementation(libs.androidx.material.icons.extended)
6464
implementation(platform(libs.firebase.bom))
65-
implementation(libs.firebase.vertexai)
65+
implementation(libs.firebase.ai)
6666
implementation(libs.hilt.android)
6767
implementation(libs.hilt.navigation.compose)
6868
implementation(libs.androidx.runtime.livedata)

ai-catalog/samples/gemini-chatbot/src/main/java/com/android/ai/samples/geminichatbot/GeminiChatbotViewModel.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@ package com.android.ai.samples.geminichatbot
2020
import androidx.lifecycle.ViewModel
2121
import androidx.lifecycle.viewModelScope
2222
import com.google.firebase.Firebase
23-
import com.google.firebase.vertexai.type.HarmBlockThreshold
24-
import com.google.firebase.vertexai.type.HarmCategory
25-
import com.google.firebase.vertexai.type.SafetySetting
26-
import com.google.firebase.vertexai.type.content
27-
import com.google.firebase.vertexai.type.generationConfig
28-
import com.google.firebase.vertexai.vertexAI
23+
import com.google.firebase.ai.ai
24+
import com.google.firebase.ai.type.GenerativeBackend
25+
import com.google.firebase.ai.type.HarmBlockThreshold
26+
import com.google.firebase.ai.type.HarmCategory
27+
import com.google.firebase.ai.type.SafetySetting
28+
import com.google.firebase.ai.type.content
29+
import com.google.firebase.ai.type.generationConfig
2930
import kotlinx.coroutines.flow.MutableStateFlow
3031
import kotlinx.coroutines.flow.StateFlow
3132
import kotlinx.coroutines.launch
@@ -37,7 +38,7 @@ class GeminiChatbotViewModel @Inject constructor(): ViewModel() {
3738
val messageList: StateFlow<List<ChatMessage>> = _messageList
3839

3940
private val generativeModel by lazy {
40-
Firebase.vertexAI.generativeModel(
41+
Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
4142
"gemini-2.0-flash",
4243
generationConfig = generationConfig {
4344
temperature = 0.9f
@@ -52,7 +53,7 @@ class GeminiChatbotViewModel @Inject constructor(): ViewModel() {
5253
SafetySetting(HarmCategory.DANGEROUS_CONTENT, HarmBlockThreshold.MEDIUM_AND_ABOVE)
5354
),
5455
systemInstruction = content {
55-
"""You are a friendly assistant. Keep your response short."""
56+
text("""You are a friendly assistant. Keep your response short.""")
5657
}
5758
)
5859
}

ai-catalog/samples/gemini-multimodal/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ dependencies {
6868
implementation(libs.androidx.material.icons.extended)
6969
implementation(libs.androidx.material.icons.extended)
7070
implementation(platform(libs.firebase.bom))
71-
implementation(libs.firebase.vertexai)
71+
implementation(libs.firebase.ai)
7272
implementation(libs.hilt.android)
7373
implementation(libs.hilt.navigation.compose)
7474
implementation(libs.androidx.runtime.livedata)

ai-catalog/samples/gemini-multimodal/src/main/java/com/android/ai/samples/geminimultimodal/GeminiMultimodalViewModel.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ import androidx.lifecycle.MutableLiveData
2121
import androidx.lifecycle.ViewModel
2222
import androidx.lifecycle.viewModelScope
2323
import com.google.firebase.Firebase
24-
import com.google.firebase.vertexai.type.HarmBlockThreshold
25-
import com.google.firebase.vertexai.type.HarmCategory
26-
import com.google.firebase.vertexai.type.SafetySetting
27-
import com.google.firebase.vertexai.type.content
28-
import com.google.firebase.vertexai.type.generationConfig
29-
import com.google.firebase.vertexai.vertexAI
24+
import com.google.firebase.ai.ai
25+
import com.google.firebase.ai.type.GenerativeBackend
26+
import com.google.firebase.ai.type.HarmBlockThreshold
27+
import com.google.firebase.ai.type.HarmCategory
28+
import com.google.firebase.ai.type.SafetySetting
29+
import com.google.firebase.ai.type.content
30+
import com.google.firebase.ai.type.generationConfig
3031
import kotlinx.coroutines.flow.MutableStateFlow
3132
import kotlinx.coroutines.flow.StateFlow
3233
import kotlinx.coroutines.launch
@@ -41,7 +42,7 @@ class GeminiMultimodalViewModel @Inject constructor(): ViewModel() {
4142
val isGenerating: LiveData<Boolean> = _isGenerating
4243

4344
private val generativeModel by lazy {
44-
Firebase.vertexAI.generativeModel(
45+
Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
4546
"gemini-2.0-flash",
4647
generationConfig = generationConfig {
4748
temperature = 0.9f

ai-catalog/samples/gemini-video-summarization/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ dependencies {
5353
implementation(libs.androidx.ui.tooling.preview.android)
5454
ksp(libs.hilt.compiler)
5555
implementation(platform(libs.firebase.bom))
56-
implementation(libs.firebase.vertexai)
56+
implementation(libs.firebase.ai)
5757

5858
// Media3 ExoPlayer
5959
implementation(libs.androidx.media3.exoplayer)

ai-catalog/samples/gemini-video-summarization/src/main/java/com/android/ai/samples/geminivideosummary/viewmodel/VideoSummarizationViewModel.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ import android.util.Log
2222
import androidx.lifecycle.ViewModel
2323
import androidx.lifecycle.viewModelScope
2424
import com.google.firebase.Firebase
25-
import com.google.firebase.vertexai.type.content
26-
import com.google.firebase.vertexai.vertexAI
25+
import com.google.firebase.ai.ai
26+
import com.google.firebase.ai.type.GenerativeBackend
27+
import com.google.firebase.ai.type.content
2728
import kotlinx.coroutines.flow.MutableStateFlow
2829
import kotlinx.coroutines.flow.StateFlow
2930
import kotlinx.coroutines.launch
@@ -50,7 +51,7 @@ class VideoSummarizationViewModel @Inject constructor() : ViewModel() {
5051
_outputText.value = OutputTextState.Loading
5152

5253
try {
53-
val generativeModel = Firebase.vertexAI.generativeModel("gemini-2.0-flash")
54+
val generativeModel = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel("gemini-2.0-flash")
5455

5556
val requestContent = content {
5657
fileData(videoSource.toString(), "video/mp4")

ai-catalog/samples/genai-image-description/src/main/java/com/android/ai/samples/genai_image_description/GenAIImageDescriptionViewModel.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,21 @@
1818
package com.android.ai.samples.genai_image_description
1919

2020
import android.content.Context
21-
import android.graphics.Bitmap
2221
import android.net.Uri
2322
import android.provider.MediaStore
2423
import androidx.lifecycle.ViewModel
2524
import androidx.lifecycle.viewModelScope
25+
import com.android.ai.samples.geminimultimodal.R
2626
import com.google.mlkit.genai.common.FeatureStatus
27-
import kotlinx.coroutines.guava.await
2827
import com.google.mlkit.genai.imagedescription.ImageDescriber
2928
import com.google.mlkit.genai.imagedescription.ImageDescriberOptions
3029
import com.google.mlkit.genai.imagedescription.ImageDescription
3130
import com.google.mlkit.genai.imagedescription.ImageDescriptionRequest
3231
import kotlinx.coroutines.flow.MutableStateFlow
3332
import kotlinx.coroutines.flow.StateFlow
33+
import kotlinx.coroutines.guava.await
3434
import kotlinx.coroutines.launch
3535
import javax.inject.Inject
36-
import com.android.ai.samples.geminimultimodal.R
3736

3837
class GenAIImageDescriptionViewModel @Inject constructor() : ViewModel() {
3938
private val _resultGenerated = MutableStateFlow("")

0 commit comments

Comments
 (0)