From 0bcbd63efe32c9e929a93b51b06613c78b8b80f1 Mon Sep 17 00:00:00 2001 From: David Motsonashvili Date: Tue, 4 Feb 2025 11:14:26 -0800 Subject: [PATCH 1/8] make a public preview annotation for Imagen --- .../com/google/firebase/vertexai/FirebaseVertexAI.kt | 2 ++ .../kotlin/com/google/firebase/vertexai/ImagenModel.kt | 2 ++ .../firebase/vertexai/common/PublicPreviewAPI.kt | 10 ++++++++++ 3 files changed, 14 insertions(+) create mode 100644 firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt index 9e78e8811ba..c2a67aec0eb 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt @@ -22,6 +22,7 @@ import com.google.firebase.app import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider import com.google.firebase.auth.internal.InternalAuthProvider import com.google.firebase.inject.Provider +import com.google.firebase.vertexai.common.PublicPreviewAPI import com.google.firebase.vertexai.type.Content import com.google.firebase.vertexai.type.GenerationConfig import com.google.firebase.vertexai.type.ImagenGenerationConfig @@ -90,6 +91,7 @@ internal constructor( * @param requestOptions Configuration options for sending requests to the backend. * @return The initialized [ImagenModel] instance. */ + @OptIn(PublicPreviewAPI::class) @JvmOverloads public fun imagenModel( modelName: String, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt index ee0c6eb7107..2dc8704b0f9 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt @@ -22,6 +22,7 @@ import com.google.firebase.vertexai.common.APIController import com.google.firebase.vertexai.common.AppCheckHeaderProvider import com.google.firebase.vertexai.common.ContentBlockedException import com.google.firebase.vertexai.common.GenerateImageRequest +import com.google.firebase.vertexai.common.PublicPreviewAPI import com.google.firebase.vertexai.type.FirebaseVertexAIException import com.google.firebase.vertexai.type.ImagenGCSImage import com.google.firebase.vertexai.type.ImagenGenerationConfig @@ -34,6 +35,7 @@ import com.google.firebase.vertexai.type.RequestOptions * Represents a generative model (like Imagen), capable of generating images based on various input * types. */ +@PublicPreviewAPI public class ImagenModel internal constructor( private val modelName: String, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt new file mode 100644 index 00000000000..811df026246 --- /dev/null +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt @@ -0,0 +1,10 @@ +package com.google.firebase.vertexai.common + +@Retention(AnnotationRetention.BINARY) +@RequiresOptIn( + level = RequiresOptIn.Level.ERROR, + message = + "This API is currently experimental and in public preview and may change in behavior in " + + "backwards-incompatible ways without notice.", +) +public annotation class PublicPreviewAPI() From f4de5632559af96cec8b8cfb06f9db30212d4d83 Mon Sep 17 00:00:00 2001 From: David Motsonashvili Date: Tue, 4 Feb 2025 11:17:19 -0800 Subject: [PATCH 2/8] added java interop layer annotation --- .../src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt | 1 + .../com/google/firebase/vertexai/java/ImagenModelFutures.kt | 2 ++ 2 files changed, 3 insertions(+) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt index 2dc8704b0f9..00fa0abf19c 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt @@ -128,6 +128,7 @@ internal constructor( } } +@OptIn(PublicPreviewAPI::class) private fun ImagenGenerationResponse.Internal.validate(): ImagenGenerationResponse.Internal { if (predictions.none { it.mimeType != null }) { throw ContentBlockedException( diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt index bcdb981a6a2..d12b5e433c1 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt @@ -19,6 +19,7 @@ package com.google.firebase.vertexai.java import androidx.concurrent.futures.SuspendToFutureAdapter import com.google.common.util.concurrent.ListenableFuture import com.google.firebase.vertexai.ImagenModel +import com.google.firebase.vertexai.common.PublicPreviewAPI import com.google.firebase.vertexai.type.ImagenGCSImage import com.google.firebase.vertexai.type.ImagenGenerationResponse import com.google.firebase.vertexai.type.ImagenInlineImage @@ -28,6 +29,7 @@ import com.google.firebase.vertexai.type.ImagenInlineImage * * @see [ImagenModel] */ +@OptIn(PublicPreviewAPI::class) public abstract class ImagenModelFutures internal constructor() { /** * Generates an image, returning the result directly to the caller. From eb94249075417cdc18dc24b10b734964f436422a Mon Sep 17 00:00:00 2001 From: David Motsonashvili Date: Tue, 4 Feb 2025 11:19:09 -0800 Subject: [PATCH 3/8] added opt in to tests --- .../java/com/google/firebase/vertexai/UnarySnapshotTests.kt | 2 ++ .../src/test/java/com/google/firebase/vertexai/util/tests.kt | 3 +++ 2 files changed, 5 insertions(+) diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt index 70bd884eff9..4a71e1504fb 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt @@ -16,6 +16,7 @@ package com.google.firebase.vertexai +import com.google.firebase.vertexai.common.PublicPreviewAPI import com.google.firebase.vertexai.type.BlockReason import com.google.firebase.vertexai.type.ContentBlockedException import com.google.firebase.vertexai.type.FinishReason @@ -54,6 +55,7 @@ import kotlinx.serialization.json.jsonPrimitive import org.json.JSONArray import org.junit.Test +@OptIn(PublicPreviewAPI::class) internal class UnarySnapshotTests { private val testTimeout = 5.seconds diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/util/tests.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/util/tests.kt index 986d4e675bc..dec0cc31dcf 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/util/tests.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/util/tests.kt @@ -14,11 +14,14 @@ * limitations under the License. */ +@file:OptIn(PublicPreviewAPI::class) + package com.google.firebase.vertexai.util import com.google.firebase.vertexai.GenerativeModel import com.google.firebase.vertexai.ImagenModel import com.google.firebase.vertexai.common.APIController +import com.google.firebase.vertexai.common.PublicPreviewAPI import com.google.firebase.vertexai.type.RequestOptions import io.kotest.matchers.collections.shouldNotBeEmpty import io.kotest.matchers.nulls.shouldNotBeNull From deaaf3f1b27c708a7638f61ddb96a8a7b5eed65b Mon Sep 17 00:00:00 2001 From: David Motsonashvili Date: Tue, 4 Feb 2025 11:24:15 -0800 Subject: [PATCH 4/8] add copyright header --- .../firebase/vertexai/common/PublicPreviewAPI.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt index 811df026246..797a24d1687 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.google.firebase.vertexai.common @Retention(AnnotationRetention.BINARY) From d02a0cffa55efe028ecc59ce110945a1cd4c846d Mon Sep 17 00:00:00 2001 From: David Motsonashvili Date: Tue, 4 Feb 2025 11:27:41 -0800 Subject: [PATCH 5/8] add the annotation more widely --- .../kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt | 2 +- .../com/google/firebase/vertexai/common/APIController.kt | 1 + .../kotlin/com/google/firebase/vertexai/common/Request.kt | 1 + .../com/google/firebase/vertexai/java/ImagenModelFutures.kt | 2 +- .../com/google/firebase/vertexai/type/ImagenAspectRatio.kt | 3 +++ .../com/google/firebase/vertexai/type/ImagenGCSImage.kt | 3 +++ .../google/firebase/vertexai/type/ImagenGenerationConfig.kt | 4 ++++ .../google/firebase/vertexai/type/ImagenGenerationResponse.kt | 2 ++ .../com/google/firebase/vertexai/type/ImagenImageFormat.kt | 2 ++ .../com/google/firebase/vertexai/type/ImagenInlineImage.kt | 2 ++ .../google/firebase/vertexai/type/ImagenPersonFilterLevel.kt | 3 +++ .../google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt | 3 +++ .../com/google/firebase/vertexai/type/ImagenSafetySettings.kt | 3 +++ 13 files changed, 29 insertions(+), 2 deletions(-) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt index c2a67aec0eb..814e767b9b6 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt @@ -91,8 +91,8 @@ internal constructor( * @param requestOptions Configuration options for sending requests to the backend. * @return The initialized [ImagenModel] instance. */ - @OptIn(PublicPreviewAPI::class) @JvmOverloads + @PublicPreviewAPI public fun imagenModel( modelName: String, generationConfig: ImagenGenerationConfig? = null, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/APIController.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/APIController.kt index a1c6cc0a665..2120614d359 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/APIController.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/APIController.kt @@ -82,6 +82,7 @@ internal val JSON = Json { * @property apiClient The value to pass in the `x-goog-api-client` header. * @property headerProvider A provider that generates extra headers to include in all HTTP requests. */ +@OptIn(PublicPreviewAPI::class) internal class APIController internal constructor( private val key: String, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/Request.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/Request.kt index e9558d4479e..8b4dab75661 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/Request.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/Request.kt @@ -74,6 +74,7 @@ internal data class GenerateImageRequest( ) : Request { @Serializable internal data class ImagenPrompt(val prompt: String) + @OptIn(PublicPreviewAPI::class) @Serializable internal data class ImagenParameters( val sampleCount: Int = 1, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt index d12b5e433c1..25d4e6fb655 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt @@ -29,7 +29,7 @@ import com.google.firebase.vertexai.type.ImagenInlineImage * * @see [ImagenModel] */ -@OptIn(PublicPreviewAPI::class) +@PublicPreviewAPI public abstract class ImagenModelFutures internal constructor() { /** * Generates an image, returning the result directly to the caller. diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenAspectRatio.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenAspectRatio.kt index 8bcdaf70307..95d7c4b475b 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenAspectRatio.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenAspectRatio.kt @@ -16,7 +16,10 @@ package com.google.firebase.vertexai.type +import com.google.firebase.vertexai.common.PublicPreviewAPI + /** Represents the aspect ratio that the generated image should conform to. */ +@PublicPreviewAPI public class ImagenAspectRatio private constructor(internal val internalVal: String) { public companion object { /** A square image, useful for icons, profile pictures, etc. */ diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt index 765e27b3583..2478cfb7d8b 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt @@ -16,11 +16,14 @@ package com.google.firebase.vertexai.type +import com.google.firebase.vertexai.common.PublicPreviewAPI + /** * Represents an Imagen-generated image that is contained in Google Cloud Storage. * * @param gcsUri Contains the `gs://` URI for the image. * @param mimeType Contains the MIME type of the image (for example, `"image/png"`). */ +@PublicPreviewAPI public class ImagenGCSImage internal constructor(public val gcsUri: String, public val mimeType: String) {} diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt index 40fcb8aca73..37cc6ef32b5 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt @@ -16,6 +16,8 @@ package com.google.firebase.vertexai.type +import com.google.firebase.vertexai.common.PublicPreviewAPI + /** * Contains extra settings to configure image generation. * @@ -26,6 +28,7 @@ package com.google.firebase.vertexai.type * @param imageFormat The file format/compression of the generated images. * @param addWatermark Adds an invisible watermark to mark the image as AI generated. */ +@PublicPreviewAPI public class ImagenGenerationConfig( public val negativePrompt: String? = null, public val numberOfImages: Int? = 1, @@ -88,6 +91,7 @@ public class ImagenGenerationConfig( * } * ``` */ +@PublicPreviewAPI public fun imagenGenerationConfig( init: ImagenGenerationConfig.Builder.() -> Unit ): ImagenGenerationConfig { diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationResponse.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationResponse.kt index 703678d78a3..46892a9bfb9 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationResponse.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationResponse.kt @@ -16,6 +16,7 @@ package com.google.firebase.vertexai.type +import com.google.firebase.vertexai.common.PublicPreviewAPI import kotlinx.serialization.Serializable /** @@ -25,6 +26,7 @@ import kotlinx.serialization.Serializable * @param filteredReason if fewer images were generated than were requested, this field will contain * the reason they were filtered out. */ +@PublicPreviewAPI public class ImagenGenerationResponse internal constructor(public val images: List, public val filteredReason: String?) { diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt index 12551e6895b..507231d1d59 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt @@ -16,6 +16,7 @@ package com.google.firebase.vertexai.type +import com.google.firebase.vertexai.common.PublicPreviewAPI import kotlinx.serialization.Serializable /** @@ -26,6 +27,7 @@ import kotlinx.serialization.Serializable * means the image is permitted to be lower quality to reduce size. This parameter is not relevant * for every MIME type. */ +@PublicPreviewAPI public class ImagenImageFormat private constructor(public val mimeType: String, public val compressionQuality: Int?) { diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenInlineImage.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenInlineImage.kt index 5d83cea7d3b..6951d918d1f 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenInlineImage.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenInlineImage.kt @@ -19,6 +19,7 @@ package com.google.firebase.vertexai.type import android.graphics.Bitmap import android.graphics.BitmapFactory import android.util.Base64 +import com.google.firebase.vertexai.common.PublicPreviewAPI /** * Represents an Imagen-generated image that is contained inline @@ -26,6 +27,7 @@ import android.util.Base64 * @param data Contains the raw bytes of the image * @param mimeType Contains the MIME type of the image (for example, `"image/png"`) */ +@PublicPreviewAPI public class ImagenInlineImage internal constructor(public val data: ByteArray, public val mimeType: String) { diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenPersonFilterLevel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenPersonFilterLevel.kt index 22d4bc13cc3..1242eaf08fc 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenPersonFilterLevel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenPersonFilterLevel.kt @@ -16,7 +16,10 @@ package com.google.firebase.vertexai.type +import com.google.firebase.vertexai.common.PublicPreviewAPI + /** A filter used to prevent images from containing depictions of children or people. */ +@PublicPreviewAPI public class ImagenPersonFilterLevel private constructor(internal val internalVal: String) { public companion object { /** No filters applied. */ diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt index 788fd0760b1..7d423a7fb84 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt @@ -16,7 +16,10 @@ package com.google.firebase.vertexai.type +import com.google.firebase.vertexai.common.PublicPreviewAPI + /** Used for safety filtering. */ +@PublicPreviewAPI public class ImagenSafetyFilterLevel private constructor(internal val internalVal: String) { public companion object { /** Strongest filtering level, most strict blocking. */ diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetySettings.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetySettings.kt index 47fc8144870..c151b34963e 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetySettings.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetySettings.kt @@ -16,12 +16,15 @@ package com.google.firebase.vertexai.type +import com.google.firebase.vertexai.common.PublicPreviewAPI + /** * A configuration for filtering unsafe content or images containing people. * * @param safetyFilterLevel Used to filter unsafe content. * @param personFilterLevel Used to filter images containing people. */ +@PublicPreviewAPI public class ImagenSafetySettings( internal val safetyFilterLevel: ImagenSafetyFilterLevel, internal val personFilterLevel: ImagenPersonFilterLevel, From 8e798a4e4c0dea501d0c65b7542665f845fecfdb Mon Sep 17 00:00:00 2001 From: David Motsonashvili Date: Tue, 4 Feb 2025 11:33:16 -0800 Subject: [PATCH 6/8] moved the annotation to vertexai.type --- .../kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt | 2 +- .../main/kotlin/com/google/firebase/vertexai/ImagenModel.kt | 2 +- .../com/google/firebase/vertexai/common/APIController.kt | 1 + .../main/kotlin/com/google/firebase/vertexai/common/Request.kt | 1 + .../com/google/firebase/vertexai/java/ImagenModelFutures.kt | 2 +- .../com/google/firebase/vertexai/type/ImagenAspectRatio.kt | 2 -- .../kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt | 2 -- .../google/firebase/vertexai/type/ImagenGenerationConfig.kt | 2 -- .../google/firebase/vertexai/type/ImagenGenerationResponse.kt | 1 - .../com/google/firebase/vertexai/type/ImagenImageFormat.kt | 1 - .../com/google/firebase/vertexai/type/ImagenInlineImage.kt | 1 - .../google/firebase/vertexai/type/ImagenPersonFilterLevel.kt | 2 -- .../google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt | 2 -- .../com/google/firebase/vertexai/type/ImagenSafetySettings.kt | 2 -- .../firebase/vertexai/{common => type}/PublicPreviewAPI.kt | 2 +- .../java/com/google/firebase/vertexai/UnarySnapshotTests.kt | 3 +-- .../src/test/java/com/google/firebase/vertexai/util/tests.kt | 2 +- 17 files changed, 8 insertions(+), 22 deletions(-) rename firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/{common => type}/PublicPreviewAPI.kt (95%) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt index 814e767b9b6..9b6c82e2acb 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt @@ -22,7 +22,7 @@ import com.google.firebase.app import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider import com.google.firebase.auth.internal.InternalAuthProvider import com.google.firebase.inject.Provider -import com.google.firebase.vertexai.common.PublicPreviewAPI +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.Content import com.google.firebase.vertexai.type.GenerationConfig import com.google.firebase.vertexai.type.ImagenGenerationConfig diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt index 00fa0abf19c..42a386795e5 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt @@ -22,7 +22,7 @@ import com.google.firebase.vertexai.common.APIController import com.google.firebase.vertexai.common.AppCheckHeaderProvider import com.google.firebase.vertexai.common.ContentBlockedException import com.google.firebase.vertexai.common.GenerateImageRequest -import com.google.firebase.vertexai.common.PublicPreviewAPI +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.FirebaseVertexAIException import com.google.firebase.vertexai.type.ImagenGCSImage import com.google.firebase.vertexai.type.ImagenGenerationConfig diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/APIController.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/APIController.kt index 2120614d359..f8bfe0bc24f 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/APIController.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/APIController.kt @@ -26,6 +26,7 @@ import com.google.firebase.vertexai.type.FinishReason import com.google.firebase.vertexai.type.GRpcErrorResponse import com.google.firebase.vertexai.type.GenerateContentResponse import com.google.firebase.vertexai.type.ImagenGenerationResponse +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.RequestOptions import com.google.firebase.vertexai.type.Response import io.ktor.client.HttpClient diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/Request.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/Request.kt index 8b4dab75661..49af70278dc 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/Request.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/Request.kt @@ -20,6 +20,7 @@ import com.google.firebase.vertexai.common.util.fullModelName import com.google.firebase.vertexai.type.Content import com.google.firebase.vertexai.type.GenerationConfig import com.google.firebase.vertexai.type.ImagenImageFormat +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.SafetySetting import com.google.firebase.vertexai.type.Tool import com.google.firebase.vertexai.type.ToolConfig diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt index 25d4e6fb655..542cb695b4c 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt @@ -19,7 +19,7 @@ package com.google.firebase.vertexai.java import androidx.concurrent.futures.SuspendToFutureAdapter import com.google.common.util.concurrent.ListenableFuture import com.google.firebase.vertexai.ImagenModel -import com.google.firebase.vertexai.common.PublicPreviewAPI +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.ImagenGCSImage import com.google.firebase.vertexai.type.ImagenGenerationResponse import com.google.firebase.vertexai.type.ImagenInlineImage diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenAspectRatio.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenAspectRatio.kt index 95d7c4b475b..e605a6e987e 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenAspectRatio.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenAspectRatio.kt @@ -16,8 +16,6 @@ package com.google.firebase.vertexai.type -import com.google.firebase.vertexai.common.PublicPreviewAPI - /** Represents the aspect ratio that the generated image should conform to. */ @PublicPreviewAPI public class ImagenAspectRatio private constructor(internal val internalVal: String) { diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt index 2478cfb7d8b..b0918643924 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGCSImage.kt @@ -16,8 +16,6 @@ package com.google.firebase.vertexai.type -import com.google.firebase.vertexai.common.PublicPreviewAPI - /** * Represents an Imagen-generated image that is contained in Google Cloud Storage. * diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt index 37cc6ef32b5..bbf795f4d40 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt @@ -16,8 +16,6 @@ package com.google.firebase.vertexai.type -import com.google.firebase.vertexai.common.PublicPreviewAPI - /** * Contains extra settings to configure image generation. * diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationResponse.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationResponse.kt index 46892a9bfb9..a1a80360848 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationResponse.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationResponse.kt @@ -16,7 +16,6 @@ package com.google.firebase.vertexai.type -import com.google.firebase.vertexai.common.PublicPreviewAPI import kotlinx.serialization.Serializable /** diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt index 507231d1d59..41c85e98a7a 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt @@ -16,7 +16,6 @@ package com.google.firebase.vertexai.type -import com.google.firebase.vertexai.common.PublicPreviewAPI import kotlinx.serialization.Serializable /** diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenInlineImage.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenInlineImage.kt index 6951d918d1f..03e93abf8e7 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenInlineImage.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenInlineImage.kt @@ -19,7 +19,6 @@ package com.google.firebase.vertexai.type import android.graphics.Bitmap import android.graphics.BitmapFactory import android.util.Base64 -import com.google.firebase.vertexai.common.PublicPreviewAPI /** * Represents an Imagen-generated image that is contained inline diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenPersonFilterLevel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenPersonFilterLevel.kt index 1242eaf08fc..14031c86766 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenPersonFilterLevel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenPersonFilterLevel.kt @@ -16,8 +16,6 @@ package com.google.firebase.vertexai.type -import com.google.firebase.vertexai.common.PublicPreviewAPI - /** A filter used to prevent images from containing depictions of children or people. */ @PublicPreviewAPI public class ImagenPersonFilterLevel private constructor(internal val internalVal: String) { diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt index 7d423a7fb84..205538ebc0a 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetyFilterLevel.kt @@ -16,8 +16,6 @@ package com.google.firebase.vertexai.type -import com.google.firebase.vertexai.common.PublicPreviewAPI - /** Used for safety filtering. */ @PublicPreviewAPI public class ImagenSafetyFilterLevel private constructor(internal val internalVal: String) { diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetySettings.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetySettings.kt index c151b34963e..d5a00b557bd 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetySettings.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenSafetySettings.kt @@ -16,8 +16,6 @@ package com.google.firebase.vertexai.type -import com.google.firebase.vertexai.common.PublicPreviewAPI - /** * A configuration for filtering unsafe content or images containing people. * diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PublicPreviewAPI.kt similarity index 95% rename from firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt rename to firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PublicPreviewAPI.kt index 797a24d1687..a1e9d57b948 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/PublicPreviewAPI.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PublicPreviewAPI.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.google.firebase.vertexai.common +package com.google.firebase.vertexai.type @Retention(AnnotationRetention.BINARY) @RequiresOptIn( diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt index 4a71e1504fb..f01830ce258 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt @@ -16,7 +16,7 @@ package com.google.firebase.vertexai -import com.google.firebase.vertexai.common.PublicPreviewAPI +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.BlockReason import com.google.firebase.vertexai.type.ContentBlockedException import com.google.firebase.vertexai.type.FinishReason @@ -36,7 +36,6 @@ import com.google.firebase.vertexai.util.goldenUnaryFile import com.google.firebase.vertexai.util.shouldNotBeNullOrEmpty import io.kotest.assertions.throwables.shouldThrow import io.kotest.inspectors.forAtLeastOne -import io.kotest.matchers.collections.shouldContain import io.kotest.matchers.collections.shouldNotBeEmpty import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.should diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/util/tests.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/util/tests.kt index dec0cc31dcf..9428aea67ef 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/util/tests.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/util/tests.kt @@ -21,7 +21,7 @@ package com.google.firebase.vertexai.util import com.google.firebase.vertexai.GenerativeModel import com.google.firebase.vertexai.ImagenModel import com.google.firebase.vertexai.common.APIController -import com.google.firebase.vertexai.common.PublicPreviewAPI +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.RequestOptions import io.kotest.matchers.collections.shouldNotBeEmpty import io.kotest.matchers.nulls.shouldNotBeNull From 2f1cee8309e26ce7f51c74f55d51694156d80f17 Mon Sep 17 00:00:00 2001 From: David Motsonashvili Date: Tue, 4 Feb 2025 11:37:52 -0800 Subject: [PATCH 7/8] format --- .../kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt | 2 +- .../src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt | 2 +- .../com/google/firebase/vertexai/java/ImagenModelFutures.kt | 2 +- .../java/com/google/firebase/vertexai/UnarySnapshotTests.kt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt index 9b6c82e2acb..b89e5671992 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/FirebaseVertexAI.kt @@ -22,12 +22,12 @@ import com.google.firebase.app import com.google.firebase.appcheck.interop.InteropAppCheckTokenProvider import com.google.firebase.auth.internal.InternalAuthProvider import com.google.firebase.inject.Provider -import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.Content import com.google.firebase.vertexai.type.GenerationConfig import com.google.firebase.vertexai.type.ImagenGenerationConfig import com.google.firebase.vertexai.type.ImagenSafetySettings import com.google.firebase.vertexai.type.InvalidLocationException +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.RequestOptions import com.google.firebase.vertexai.type.SafetySetting import com.google.firebase.vertexai.type.Tool diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt index 42a386795e5..c4cb355dbe2 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/ImagenModel.kt @@ -22,13 +22,13 @@ import com.google.firebase.vertexai.common.APIController import com.google.firebase.vertexai.common.AppCheckHeaderProvider import com.google.firebase.vertexai.common.ContentBlockedException import com.google.firebase.vertexai.common.GenerateImageRequest -import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.FirebaseVertexAIException import com.google.firebase.vertexai.type.ImagenGCSImage import com.google.firebase.vertexai.type.ImagenGenerationConfig import com.google.firebase.vertexai.type.ImagenGenerationResponse import com.google.firebase.vertexai.type.ImagenInlineImage import com.google.firebase.vertexai.type.ImagenSafetySettings +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.RequestOptions /** diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt index 542cb695b4c..13bcd710ffa 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/java/ImagenModelFutures.kt @@ -19,10 +19,10 @@ package com.google.firebase.vertexai.java import androidx.concurrent.futures.SuspendToFutureAdapter import com.google.common.util.concurrent.ListenableFuture import com.google.firebase.vertexai.ImagenModel -import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.ImagenGCSImage import com.google.firebase.vertexai.type.ImagenGenerationResponse import com.google.firebase.vertexai.type.ImagenInlineImage +import com.google.firebase.vertexai.type.PublicPreviewAPI /** * Wrapper class providing Java compatible methods for [ImagenModel]. diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt index f01830ce258..a8a1cf1bd78 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/UnarySnapshotTests.kt @@ -16,7 +16,6 @@ package com.google.firebase.vertexai -import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.BlockReason import com.google.firebase.vertexai.type.ContentBlockedException import com.google.firebase.vertexai.type.FinishReason @@ -26,6 +25,7 @@ import com.google.firebase.vertexai.type.HarmProbability import com.google.firebase.vertexai.type.HarmSeverity import com.google.firebase.vertexai.type.InvalidAPIKeyException import com.google.firebase.vertexai.type.PromptBlockedException +import com.google.firebase.vertexai.type.PublicPreviewAPI import com.google.firebase.vertexai.type.ResponseStoppedException import com.google.firebase.vertexai.type.SerializationException import com.google.firebase.vertexai.type.ServerException From ef4dbf2152ba3404ead81dff500c8ba618f28910 Mon Sep 17 00:00:00 2001 From: David Motsonashvili Date: Tue, 4 Feb 2025 13:52:42 -0800 Subject: [PATCH 8/8] Update firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PublicPreviewAPI.kt Co-authored-by: Daymon <17409137+daymxn@users.noreply.github.com> --- .../com/google/firebase/vertexai/type/PublicPreviewAPI.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PublicPreviewAPI.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PublicPreviewAPI.kt index a1e9d57b948..50f9880f3be 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PublicPreviewAPI.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PublicPreviewAPI.kt @@ -20,7 +20,7 @@ package com.google.firebase.vertexai.type @RequiresOptIn( level = RequiresOptIn.Level.ERROR, message = - "This API is currently experimental and in public preview and may change in behavior in " + + "This API is part of an experimental public preview and may change in " + "backwards-incompatible ways without notice.", ) public annotation class PublicPreviewAPI()