diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/server/Types.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/server/Types.kt index 16f96796bbf..cf5f98593e8 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/server/Types.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/server/Types.kt @@ -31,6 +31,9 @@ internal object BlockReasonSerializer : internal object HarmProbabilitySerializer : KSerializer by FirstOrdinalSerializer(HarmProbability::class) +internal object HarmSeveritySerializer : + KSerializer by FirstOrdinalSerializer(HarmSeverity::class) + internal object FinishReasonSerializer : KSerializer by FirstOrdinalSerializer(FinishReason::class) @@ -117,7 +120,7 @@ internal enum class HarmProbability { HIGH } -@Serializable +@Serializable(HarmSeveritySerializer::class) internal enum class HarmSeverity { UNKNOWN, @SerialName("HARM_SEVERITY_UNSPECIFIED") UNSPECIFIED, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/shared/Types.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/shared/Types.kt index ee630cb69ce..ffc077b5d50 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/shared/Types.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/shared/Types.kt @@ -58,11 +58,6 @@ internal data class Content(@EncodeDefault val role: String? = "user", val parts @Serializable internal data class FunctionResponsePart(val functionResponse: FunctionResponse) : Part -@Serializable internal data class ExecutableCodePart(val executableCode: ExecutableCode) : Part - -@Serializable -internal data class CodeExecutionResultPart(val codeExecutionResult: CodeExecutionResult) : Part - @Serializable internal data class FunctionResponse(val name: String, val response: JsonObject) @Serializable @@ -80,18 +75,6 @@ internal data class FileData( @Serializable internal data class Blob(@SerialName("mime_type") val mimeType: String, val data: Base64) -@Serializable internal data class ExecutableCode(val language: String, val code: String) - -@Serializable internal data class CodeExecutionResult(val outcome: Outcome, val output: String) - -@Serializable -internal enum class Outcome { - @SerialName("OUTCOME_UNSPECIFIED") UNSPECIFIED, - OUTCOME_OK, - OUTCOME_FAILED, - OUTCOME_DEADLINE_EXCEEDED, -} - @Serializable internal data class SafetySetting( val category: HarmCategory, @@ -124,8 +107,6 @@ internal object PartSerializer : JsonContentPolymorphicSerializer(Part::cl "functionResponse" in jsonObject -> FunctionResponsePart.serializer() "inlineData" in jsonObject -> BlobPart.serializer() "fileData" in jsonObject -> FileDataPart.serializer() - "executableCode" in jsonObject -> ExecutableCodePart.serializer() - "codeExecutionResult" in jsonObject -> CodeExecutionResultPart.serializer() else -> throw SerializationException("Unknown Part type") } } diff --git a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/UnarySnapshotTests.kt b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/UnarySnapshotTests.kt index 77d41bba957..b08eb104248 100644 --- a/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/UnarySnapshotTests.kt +++ b/firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/UnarySnapshotTests.kt @@ -20,13 +20,8 @@ import com.google.firebase.vertexai.common.server.BlockReason import com.google.firebase.vertexai.common.server.FinishReason import com.google.firebase.vertexai.common.server.HarmProbability import com.google.firebase.vertexai.common.server.HarmSeverity -import com.google.firebase.vertexai.common.shared.CodeExecutionResult -import com.google.firebase.vertexai.common.shared.CodeExecutionResultPart -import com.google.firebase.vertexai.common.shared.ExecutableCode -import com.google.firebase.vertexai.common.shared.ExecutableCodePart import com.google.firebase.vertexai.common.shared.FunctionCallPart import com.google.firebase.vertexai.common.shared.HarmCategory -import com.google.firebase.vertexai.common.shared.Outcome import com.google.firebase.vertexai.common.shared.TextPart import com.google.firebase.vertexai.common.util.goldenUnaryFile import com.google.firebase.vertexai.common.util.shouldNotBeNullOrEmpty @@ -352,23 +347,4 @@ internal class UnarySnapshotTests { callPart.functionCall.args shouldBe null } } - - @Test - fun `code execution parses correctly`() = - goldenUnaryFile("success-code-execution.json") { - withTimeout(testTimeout) { - val response = apiController.generateContent(textGenerateContentRequest("prompt")) - val content = response.candidates.shouldNotBeNullOrEmpty().first().content - content.shouldNotBeNull() - val executableCodePart = content.parts[0] - val codeExecutionResult = content.parts[1] - - executableCodePart.shouldBe( - ExecutableCodePart(ExecutableCode("PYTHON", "print(\"Hello World\")")) - ) - codeExecutionResult.shouldBe( - CodeExecutionResultPart(CodeExecutionResult(Outcome.OUTCOME_OK, "Hello World")) - ) - } - } }