Skip to content

Commit 6731b55

Browse files
authored
Add missing FirstOrdinalSerializer to enum (#6301)
It's only necessary on enums we receive from the backend, not from the ones we send.
1 parent bd157db commit 6731b55

File tree

3 files changed

+4
-44
lines changed

3 files changed

+4
-44
lines changed

firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/server/Types.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ internal object BlockReasonSerializer :
3131
internal object HarmProbabilitySerializer :
3232
KSerializer<HarmProbability> by FirstOrdinalSerializer(HarmProbability::class)
3333

34+
internal object HarmSeveritySerializer :
35+
KSerializer<HarmSeverity> by FirstOrdinalSerializer(HarmSeverity::class)
36+
3437
internal object FinishReasonSerializer :
3538
KSerializer<FinishReason> by FirstOrdinalSerializer(FinishReason::class)
3639

@@ -117,7 +120,7 @@ internal enum class HarmProbability {
117120
HIGH
118121
}
119122

120-
@Serializable
123+
@Serializable(HarmSeveritySerializer::class)
121124
internal enum class HarmSeverity {
122125
UNKNOWN,
123126
@SerialName("HARM_SEVERITY_UNSPECIFIED") UNSPECIFIED,

firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/common/shared/Types.kt

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,6 @@ internal data class Content(@EncodeDefault val role: String? = "user", val parts
5858
@Serializable
5959
internal data class FunctionResponsePart(val functionResponse: FunctionResponse) : Part
6060

61-
@Serializable internal data class ExecutableCodePart(val executableCode: ExecutableCode) : Part
62-
63-
@Serializable
64-
internal data class CodeExecutionResultPart(val codeExecutionResult: CodeExecutionResult) : Part
65-
6661
@Serializable internal data class FunctionResponse(val name: String, val response: JsonObject)
6762

6863
@Serializable
@@ -80,18 +75,6 @@ internal data class FileData(
8075
@Serializable
8176
internal data class Blob(@SerialName("mime_type") val mimeType: String, val data: Base64)
8277

83-
@Serializable internal data class ExecutableCode(val language: String, val code: String)
84-
85-
@Serializable internal data class CodeExecutionResult(val outcome: Outcome, val output: String)
86-
87-
@Serializable
88-
internal enum class Outcome {
89-
@SerialName("OUTCOME_UNSPECIFIED") UNSPECIFIED,
90-
OUTCOME_OK,
91-
OUTCOME_FAILED,
92-
OUTCOME_DEADLINE_EXCEEDED,
93-
}
94-
9578
@Serializable
9679
internal data class SafetySetting(
9780
val category: HarmCategory,
@@ -124,8 +107,6 @@ internal object PartSerializer : JsonContentPolymorphicSerializer<Part>(Part::cl
124107
"functionResponse" in jsonObject -> FunctionResponsePart.serializer()
125108
"inlineData" in jsonObject -> BlobPart.serializer()
126109
"fileData" in jsonObject -> FileDataPart.serializer()
127-
"executableCode" in jsonObject -> ExecutableCodePart.serializer()
128-
"codeExecutionResult" in jsonObject -> CodeExecutionResultPart.serializer()
129110
else -> throw SerializationException("Unknown Part type")
130111
}
131112
}

firebase-vertexai/src/test/java/com/google/firebase/vertexai/common/UnarySnapshotTests.kt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,8 @@ import com.google.firebase.vertexai.common.server.BlockReason
2020
import com.google.firebase.vertexai.common.server.FinishReason
2121
import com.google.firebase.vertexai.common.server.HarmProbability
2222
import com.google.firebase.vertexai.common.server.HarmSeverity
23-
import com.google.firebase.vertexai.common.shared.CodeExecutionResult
24-
import com.google.firebase.vertexai.common.shared.CodeExecutionResultPart
25-
import com.google.firebase.vertexai.common.shared.ExecutableCode
26-
import com.google.firebase.vertexai.common.shared.ExecutableCodePart
2723
import com.google.firebase.vertexai.common.shared.FunctionCallPart
2824
import com.google.firebase.vertexai.common.shared.HarmCategory
29-
import com.google.firebase.vertexai.common.shared.Outcome
3025
import com.google.firebase.vertexai.common.shared.TextPart
3126
import com.google.firebase.vertexai.common.util.goldenUnaryFile
3227
import com.google.firebase.vertexai.common.util.shouldNotBeNullOrEmpty
@@ -352,23 +347,4 @@ internal class UnarySnapshotTests {
352347
callPart.functionCall.args shouldBe null
353348
}
354349
}
355-
356-
@Test
357-
fun `code execution parses correctly`() =
358-
goldenUnaryFile("success-code-execution.json") {
359-
withTimeout(testTimeout) {
360-
val response = apiController.generateContent(textGenerateContentRequest("prompt"))
361-
val content = response.candidates.shouldNotBeNullOrEmpty().first().content
362-
content.shouldNotBeNull()
363-
val executableCodePart = content.parts[0]
364-
val codeExecutionResult = content.parts[1]
365-
366-
executableCodePart.shouldBe(
367-
ExecutableCodePart(ExecutableCode("PYTHON", "print(\"Hello World\")"))
368-
)
369-
codeExecutionResult.shouldBe(
370-
CodeExecutionResultPart(CodeExecutionResult(Outcome.OUTCOME_OK, "Hello World"))
371-
)
372-
}
373-
}
374350
}

0 commit comments

Comments
 (0)