diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/GenerativeModel.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/GenerativeModel.kt index a49d4c279a8..12d89ab5b59 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/GenerativeModel.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/GenerativeModel.kt @@ -40,6 +40,7 @@ import com.google.firebase.vertexai.type.content import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.map +import kotlinx.serialization.ExperimentalSerializationApi /** * Represents a multimodal model (like Gemini), capable of generating content based on various input @@ -199,6 +200,7 @@ internal constructor( return countTokens(content { image(prompt) }) } + @OptIn(ExperimentalSerializationApi::class) private fun constructRequest(vararg prompt: Content) = GenerateContentRequest( modelName, 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 8696a090fc2..7f84e053147 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 @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +@file:OptIn(ExperimentalSerializationApi::class) package com.google.firebase.vertexai.common @@ -24,6 +25,7 @@ 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 +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -49,14 +51,6 @@ internal data class CountTokensRequest( @SerialName("system_instruction") val systemInstruction: Content.Internal? = null, ) : Request { companion object { - fun forGenAI(generateContentRequest: GenerateContentRequest) = - CountTokensRequest( - generateContentRequest = - generateContentRequest.model?.let { - generateContentRequest.copy(model = fullModelName(it)) - } - ?: generateContentRequest - ) fun forVertexAI(generateContentRequest: GenerateContentRequest) = CountTokensRequest( diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/Candidate.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/Candidate.kt index 5d236c8ecc9..b84bd6929f4 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/Candidate.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/Candidate.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:OptIn(ExperimentalSerializationApi::class) + package com.google.firebase.vertexai.type import com.google.firebase.vertexai.common.util.FirstOrdinalSerializer diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/Content.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/Content.kt index 241d0becfe6..9364f9cad3c 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/Content.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/Content.kt @@ -80,6 +80,7 @@ constructor(public val role: String? = "user", public val parts: List) { public fun build(): Content = Content(role, parts) } + @OptIn(ExperimentalSerializationApi::class) internal fun toInternal() = Internal(this.role ?: "user", this.parts.map { it.toInternal() }) @ExperimentalSerializationApi diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/GenerativeModelTesting.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/GenerativeModelTesting.kt index 67d41c9b5d6..d4c2ad37926 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/GenerativeModelTesting.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/GenerativeModelTesting.kt @@ -40,6 +40,7 @@ import io.ktor.http.content.TextContent import io.ktor.http.headersOf import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.withTimeout +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.encodeToString import org.junit.Test @@ -127,6 +128,7 @@ internal class GenerativeModelTesting { exception.message shouldContain "location" } + @OptIn(ExperimentalSerializationApi::class) private fun generateContentResponseAsJsonString(text: String): String { return JSON.encodeToString( GenerateContentResponse.Internal( diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/APIControllerTests.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/APIControllerTests.kt index 463dbe773f7..29b52b81d1b 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/APIControllerTests.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/APIControllerTests.kt @@ -46,6 +46,7 @@ import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.delay import kotlinx.coroutines.withTimeout +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.encodeToString import kotlinx.serialization.json.JsonObject import org.junit.Test @@ -84,6 +85,7 @@ internal class APIControllerTests { } } +@OptIn(ExperimentalSerializationApi::class) internal class RequestFormatTests { @Test fun `using default endpoint`() = doBlocking { diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/StreamingSnapshotTests.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/StreamingSnapshotTests.kt index 6d14025b28c..4abf386765a 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/StreamingSnapshotTests.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/StreamingSnapshotTests.kt @@ -30,8 +30,10 @@ import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.toList import kotlinx.coroutines.withTimeout +import kotlinx.serialization.ExperimentalSerializationApi import org.junit.Test +@OptIn(ExperimentalSerializationApi::class) internal class StreamingSnapshotTests { private val testTimeout = 5.seconds