From a53bffe91cda06ce69a9d2142b12e73d92bdcaf4 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Sat, 21 Sep 2024 01:11:48 -0400 Subject: [PATCH 1/3] Several small changes to enums API The changes restricted to enum values and names are: - Remove `UNSPECIFIED` from `FinishReason` - Renamed `BlockThreshold` to `HarmBlockThreshold` - Rename UNSPECIFIED to UNKNOWN in `HarmBlockThreshold` - Remove `UNSPECIFIED` from `HarmProbability` - Remove `UNSPECIFIED` from `HarmSeverity` - Remove `UNSPECIFIED` from `BlockReason` Additionally, additional changes to non-enum values include - Make `totalBillableCharacters` nullable and optional --- .../vertexai/internal/util/conversions.kt | 30 ++++++++----------- .../firebase/vertexai/type/Candidate.kt | 3 -- .../vertexai/type/CountTokensResponse.kt | 4 +-- ...lockThreshold.kt => HarmBlockThreshold.kt} | 4 +-- .../firebase/vertexai/type/HarmProbability.kt | 3 -- .../firebase/vertexai/type/HarmSeverity.kt | 3 -- .../firebase/vertexai/type/PromptFeedback.kt | 3 -- .../firebase/vertexai/type/SafetySetting.kt | 4 +-- 8 files changed, 18 insertions(+), 36 deletions(-) rename firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/{BlockThreshold.kt => HarmBlockThreshold.kt} (96%) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/internal/util/conversions.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/internal/util/conversions.kt index 2710501dded..9a488113a6d 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/internal/util/conversions.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/internal/util/conversions.kt @@ -26,10 +26,9 @@ import com.google.firebase.vertexai.common.shared.FunctionCall import com.google.firebase.vertexai.common.shared.FunctionCallPart import com.google.firebase.vertexai.common.shared.FunctionResponse import com.google.firebase.vertexai.common.shared.FunctionResponsePart -import com.google.firebase.vertexai.common.shared.HarmBlockThreshold import com.google.firebase.vertexai.type.BlobPart import com.google.firebase.vertexai.type.BlockReason -import com.google.firebase.vertexai.type.BlockThreshold +import com.google.firebase.vertexai.type.HarmBlockThreshold import com.google.firebase.vertexai.type.Candidate import com.google.firebase.vertexai.type.Citation import com.google.firebase.vertexai.type.CitationMetadata @@ -142,13 +141,13 @@ internal fun ToolConfig.toInternal() = ) ) -internal fun BlockThreshold.toInternal() = +internal fun HarmBlockThreshold.toInternal() = when (this) { - BlockThreshold.NONE -> HarmBlockThreshold.BLOCK_NONE - BlockThreshold.ONLY_HIGH -> HarmBlockThreshold.BLOCK_ONLY_HIGH - BlockThreshold.MEDIUM_AND_ABOVE -> HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE - BlockThreshold.LOW_AND_ABOVE -> HarmBlockThreshold.BLOCK_LOW_AND_ABOVE - BlockThreshold.UNSPECIFIED -> HarmBlockThreshold.UNSPECIFIED + HarmBlockThreshold.NONE -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_NONE + HarmBlockThreshold.ONLY_HIGH -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_ONLY_HIGH + HarmBlockThreshold.MEDIUM_AND_ABOVE -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE + HarmBlockThreshold.LOW_AND_ABOVE -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE + HarmBlockThreshold.UNKNOWN -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.UNSPECIFIED } internal fun Tool.toInternal() = @@ -262,8 +261,7 @@ internal fun com.google.firebase.vertexai.common.server.FinishReason?.toPublic() com.google.firebase.vertexai.common.server.FinishReason.SAFETY -> FinishReason.SAFETY com.google.firebase.vertexai.common.server.FinishReason.STOP -> FinishReason.STOP com.google.firebase.vertexai.common.server.FinishReason.OTHER -> FinishReason.OTHER - com.google.firebase.vertexai.common.server.FinishReason.UNSPECIFIED -> FinishReason.UNSPECIFIED - com.google.firebase.vertexai.common.server.FinishReason.UNKNOWN -> FinishReason.UNKNOWN + else -> FinishReason.UNKNOWN } internal fun com.google.firebase.vertexai.common.shared.HarmCategory.toPublic() = @@ -274,7 +272,7 @@ internal fun com.google.firebase.vertexai.common.shared.HarmCategory.toPublic() HarmCategory.SEXUALLY_EXPLICIT com.google.firebase.vertexai.common.shared.HarmCategory.DANGEROUS_CONTENT -> HarmCategory.DANGEROUS_CONTENT - com.google.firebase.vertexai.common.shared.HarmCategory.UNKNOWN -> HarmCategory.UNKNOWN + else -> HarmCategory.UNKNOWN } internal fun com.google.firebase.vertexai.common.server.HarmProbability.toPublic() = @@ -284,9 +282,7 @@ internal fun com.google.firebase.vertexai.common.server.HarmProbability.toPublic com.google.firebase.vertexai.common.server.HarmProbability.LOW -> HarmProbability.LOW com.google.firebase.vertexai.common.server.HarmProbability.NEGLIGIBLE -> HarmProbability.NEGLIGIBLE - com.google.firebase.vertexai.common.server.HarmProbability.UNSPECIFIED -> - HarmProbability.UNSPECIFIED - com.google.firebase.vertexai.common.server.HarmProbability.UNKNOWN -> HarmProbability.UNKNOWN + else -> HarmProbability.UNKNOWN } internal fun com.google.firebase.vertexai.common.server.HarmSeverity.toPublic() = @@ -295,16 +291,14 @@ internal fun com.google.firebase.vertexai.common.server.HarmSeverity.toPublic() com.google.firebase.vertexai.common.server.HarmSeverity.MEDIUM -> HarmSeverity.MEDIUM com.google.firebase.vertexai.common.server.HarmSeverity.LOW -> HarmSeverity.LOW com.google.firebase.vertexai.common.server.HarmSeverity.NEGLIGIBLE -> HarmSeverity.NEGLIGIBLE - com.google.firebase.vertexai.common.server.HarmSeverity.UNSPECIFIED -> HarmSeverity.UNSPECIFIED - com.google.firebase.vertexai.common.server.HarmSeverity.UNKNOWN -> HarmSeverity.UNKNOWN + else -> HarmSeverity.UNKNOWN } internal fun com.google.firebase.vertexai.common.server.BlockReason.toPublic() = when (this) { - com.google.firebase.vertexai.common.server.BlockReason.UNSPECIFIED -> BlockReason.UNSPECIFIED com.google.firebase.vertexai.common.server.BlockReason.SAFETY -> BlockReason.SAFETY com.google.firebase.vertexai.common.server.BlockReason.OTHER -> BlockReason.OTHER - com.google.firebase.vertexai.common.server.BlockReason.UNKNOWN -> BlockReason.UNKNOWN + else -> BlockReason.UNKNOWN } internal fun com.google.firebase.vertexai.common.GenerateContentResponse.toPublic(): 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 1a23885cbe0..68eba03f4c0 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 @@ -68,9 +68,6 @@ enum class FinishReason { /** A new and not yet supported value. */ UNKNOWN, - /** Reason is unspecified. */ - UNSPECIFIED, - /** Model finished successfully and stopped. */ STOP, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/CountTokensResponse.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/CountTokensResponse.kt index 95eac64958f..ca6da46595f 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/CountTokensResponse.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/CountTokensResponse.kt @@ -20,9 +20,9 @@ package com.google.firebase.vertexai.type * Represents a response measuring model input. * * @property totalTokens A count of the tokens in the input - * @property totalBillableCharacters A count of the characters that are billable in the input + * @property totalBillableCharacters A count of the characters that are billable in the input, if available. */ -class CountTokensResponse(val totalTokens: Int, val totalBillableCharacters: Int) { +class CountTokensResponse(val totalTokens: Int, val totalBillableCharacters: Int? = null) { operator fun component1() = totalTokens operator fun component2() = totalBillableCharacters diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/BlockThreshold.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmBlockThreshold.kt similarity index 96% rename from firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/BlockThreshold.kt rename to firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmBlockThreshold.kt index 4d22d03981d..5c26aebb39e 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/BlockThreshold.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmBlockThreshold.kt @@ -19,9 +19,9 @@ package com.google.firebase.vertexai.type /** * Represents the threshold for some [HarmCategory] that is allowed and blocked by [SafetySetting]. */ -enum class BlockThreshold { +enum class HarmBlockThreshold { /** The threshold was not specified. */ - UNSPECIFIED, + UNKNOWN, /** Content with negligible harm is allowed. */ LOW_AND_ABOVE, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmProbability.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmProbability.kt index 1a08c2ec39e..56ab86e4707 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmProbability.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmProbability.kt @@ -21,9 +21,6 @@ enum class HarmProbability { /** A new and not yet supported value. */ UNKNOWN, - /** Probability for harm is unspecified. */ - UNSPECIFIED, - /** Probability for harm is negligible. */ NEGLIGIBLE, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmSeverity.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmSeverity.kt index a5ae583b357..8e3f0d37c9a 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmSeverity.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmSeverity.kt @@ -21,9 +21,6 @@ enum class HarmSeverity { /** A new and not yet supported value. */ UNKNOWN, - /** Severity for harm is unspecified. */ - UNSPECIFIED, - /** Severity for harm is negligible. */ NEGLIGIBLE, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PromptFeedback.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PromptFeedback.kt index f9d2a134628..3043dd01632 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PromptFeedback.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/PromptFeedback.kt @@ -34,9 +34,6 @@ enum class BlockReason { /** A new and not yet supported value. */ UNKNOWN, - /** Content was blocked for an unspecified reason. */ - UNSPECIFIED, - /** Content was blocked for violating provided [SafetySetting]. */ SAFETY, diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/SafetySetting.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/SafetySetting.kt index 2ca039c46bf..32867be1df9 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/SafetySetting.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/SafetySetting.kt @@ -17,9 +17,9 @@ package com.google.firebase.vertexai.type /** - * A configuration for a [BlockThreshold] of some [HarmCategory] allowed and blocked in responses. + * A configuration for a [HarmBlockThreshold] of some [HarmCategory] allowed and blocked in responses. * * @param harmCategory The relevant [HarmCategory]. * @param threshold The threshold form harm allowable. */ -class SafetySetting(val harmCategory: HarmCategory, val threshold: BlockThreshold) {} +class SafetySetting(val harmCategory: HarmCategory, val threshold: HarmBlockThreshold) {} From 089c90ab0722c074156b7c9b49bdf70a00399861 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Mon, 23 Sep 2024 12:07:47 -0400 Subject: [PATCH 2/3] Remove unnecessary `Unknown` option for `HarmBlockThreshold` The value is always specified by the developer and sent to the backend (not read back), so we don't need to include that option in the enum. --- .../com/google/firebase/vertexai/type/HarmBlockThreshold.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmBlockThreshold.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmBlockThreshold.kt index 5c26aebb39e..ade2d1a9513 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmBlockThreshold.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/HarmBlockThreshold.kt @@ -20,9 +20,6 @@ package com.google.firebase.vertexai.type * Represents the threshold for some [HarmCategory] that is allowed and blocked by [SafetySetting]. */ enum class HarmBlockThreshold { - /** The threshold was not specified. */ - UNKNOWN, - /** Content with negligible harm is allowed. */ LOW_AND_ABOVE, From 753279823c19a9e0afc61772cf0f331452ef04b5 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Mon, 23 Sep 2024 17:45:59 -0400 Subject: [PATCH 3/3] Adjust format --- .../vertexai/internal/util/conversions.kt | 15 +++++++++------ .../firebase/vertexai/type/CountTokensResponse.kt | 3 ++- .../firebase/vertexai/type/SafetySetting.kt | 3 ++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/internal/util/conversions.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/internal/util/conversions.kt index 21f40c309f4..506570d96e1 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/internal/util/conversions.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/internal/util/conversions.kt @@ -28,7 +28,6 @@ import com.google.firebase.vertexai.common.shared.FunctionResponse import com.google.firebase.vertexai.common.shared.FunctionResponsePart import com.google.firebase.vertexai.type.BlobPart import com.google.firebase.vertexai.type.BlockReason -import com.google.firebase.vertexai.type.HarmBlockThreshold import com.google.firebase.vertexai.type.Candidate import com.google.firebase.vertexai.type.Citation import com.google.firebase.vertexai.type.CitationMetadata @@ -40,6 +39,7 @@ import com.google.firebase.vertexai.type.FunctionCallingConfig import com.google.firebase.vertexai.type.FunctionDeclaration import com.google.firebase.vertexai.type.GenerateContentResponse import com.google.firebase.vertexai.type.GenerationConfig +import com.google.firebase.vertexai.type.HarmBlockThreshold import com.google.firebase.vertexai.type.HarmCategory import com.google.firebase.vertexai.type.HarmProbability import com.google.firebase.vertexai.type.HarmSeverity @@ -139,11 +139,14 @@ internal fun ToolConfig.toInternal() = internal fun HarmBlockThreshold.toInternal() = when (this) { - HarmBlockThreshold.NONE -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_NONE - HarmBlockThreshold.ONLY_HIGH -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_ONLY_HIGH - HarmBlockThreshold.MEDIUM_AND_ABOVE -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE - HarmBlockThreshold.LOW_AND_ABOVE -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE - HarmBlockThreshold.UNKNOWN -> com.google.firebase.vertexai.common.shared.HarmBlockThreshold.UNSPECIFIED + HarmBlockThreshold.NONE -> + com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_NONE + HarmBlockThreshold.ONLY_HIGH -> + com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_ONLY_HIGH + HarmBlockThreshold.MEDIUM_AND_ABOVE -> + com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE + HarmBlockThreshold.LOW_AND_ABOVE -> + com.google.firebase.vertexai.common.shared.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE } internal fun Tool.toInternal() = diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/CountTokensResponse.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/CountTokensResponse.kt index ca6da46595f..ac4ee804715 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/CountTokensResponse.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/CountTokensResponse.kt @@ -20,7 +20,8 @@ package com.google.firebase.vertexai.type * Represents a response measuring model input. * * @property totalTokens A count of the tokens in the input - * @property totalBillableCharacters A count of the characters that are billable in the input, if available. + * @property totalBillableCharacters A count of the characters that are billable in the input, if + * available. */ class CountTokensResponse(val totalTokens: Int, val totalBillableCharacters: Int? = null) { operator fun component1() = totalTokens diff --git a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/SafetySetting.kt b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/SafetySetting.kt index 32867be1df9..afc881cd033 100644 --- a/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/SafetySetting.kt +++ b/firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/SafetySetting.kt @@ -17,7 +17,8 @@ package com.google.firebase.vertexai.type /** - * A configuration for a [HarmBlockThreshold] of some [HarmCategory] allowed and blocked in responses. + * A configuration for a [HarmBlockThreshold] of some [HarmCategory] allowed and blocked in + * responses. * * @param harmCategory The relevant [HarmCategory]. * @param threshold The threshold form harm allowable.