From 672f0a44e678a891c447baf2de04db1d22fef901 Mon Sep 17 00:00:00 2001 From: Daymon <17409137+daymxn@users.noreply.github.com> Date: Fri, 22 Mar 2024 14:54:58 -0500 Subject: [PATCH] Add support for FileData (#92) Per [b/330773378](https://b.corp.google.com/issues/330773378), This adds support for the new `FileData` part type for referencing storage files. This also adds "support" from the genai side, as a means of catching future api discrepancies between common and genai. --- .changes/crowd-birthday-drink-circle.json | 1 + .../ai/client/generativeai/common/shared/Types.kt | 11 ++++++++++- .../client/generativeai/internal/util/conversions.kt | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changes/crowd-birthday-drink-circle.json diff --git a/.changes/crowd-birthday-drink-circle.json b/.changes/crowd-birthday-drink-circle.json new file mode 100644 index 00000000..a78ade04 --- /dev/null +++ b/.changes/crowd-birthday-drink-circle.json @@ -0,0 +1 @@ +{"type":"PATCH","changes":["Implement error catching for unsupported Part types."]} diff --git a/common/src/main/kotlin/com/google/ai/client/generativeai/common/shared/Types.kt b/common/src/main/kotlin/com/google/ai/client/generativeai/common/shared/Types.kt index 8fc641be..b14b8985 100644 --- a/common/src/main/kotlin/com/google/ai/client/generativeai/common/shared/Types.kt +++ b/common/src/main/kotlin/com/google/ai/client/generativeai/common/shared/Types.kt @@ -52,6 +52,14 @@ data class Content(@EncodeDefault val role: String? = "user", val parts: List(Part::class) { val jsonObject = element.jsonObject return when { "text" in jsonObject -> TextPart.serializer() - "inlineData" in jsonObject -> BlobPart.serializer() + "inline_data" in jsonObject -> BlobPart.serializer() + "file_data" in jsonObject -> FileDataPart.serializer() else -> throw SerializationException("Unknown Part type") } } diff --git a/generativeai/src/main/java/com/google/ai/client/generativeai/internal/util/conversions.kt b/generativeai/src/main/java/com/google/ai/client/generativeai/internal/util/conversions.kt index e4b236b7..5abf8509 100644 --- a/generativeai/src/main/java/com/google/ai/client/generativeai/internal/util/conversions.kt +++ b/generativeai/src/main/java/com/google/ai/client/generativeai/internal/util/conversions.kt @@ -126,6 +126,10 @@ internal fun Part.toPublic(): com.google.ai.client.generativeai.type.Part { com.google.ai.client.generativeai.type.BlobPart(inlineData.mimeType, data) } } + else -> + throw SerializationException( + "Unsupported part type \"${javaClass.simpleName}\" provided. This model may not be supported by this SDK." + ) } }