Skip to content

Commit 0427017

Browse files
committed
add response modality
1 parent 0ca205f commit 0427017

File tree

3 files changed

+83
-5
lines changed

3 files changed

+83
-5
lines changed

firebase-vertexai/api.txt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,7 @@ package com.google.firebase.vertexai.type {
600600
method public com.google.firebase.vertexai.type.LiveGenerationConfig.Builder setFrequencyPenalty(Float? frequencyPenalty);
601601
method public com.google.firebase.vertexai.type.LiveGenerationConfig.Builder setMaxOutputTokens(Integer? maxOutputTokens);
602602
method public com.google.firebase.vertexai.type.LiveGenerationConfig.Builder setPresencePenalty(Float? presencePenalty);
603-
method public com.google.firebase.vertexai.type.LiveGenerationConfig.Builder setResponseModalities(com.google.firebase.vertexai.type.ContentModality? responseModalities);
603+
method public com.google.firebase.vertexai.type.LiveGenerationConfig.Builder setResponseModalities(com.google.firebase.vertexai.type.ResponseModality? responseModalities);
604604
method public com.google.firebase.vertexai.type.LiveGenerationConfig.Builder setSpeechConfig(com.google.firebase.vertexai.type.SpeechConfig? speechConfig);
605605
method public com.google.firebase.vertexai.type.LiveGenerationConfig.Builder setTemperature(Float? temperature);
606606
method public com.google.firebase.vertexai.type.LiveGenerationConfig.Builder setTopK(Integer? topK);
@@ -609,7 +609,7 @@ package com.google.firebase.vertexai.type {
609609
field public Float? frequencyPenalty;
610610
field public Integer? maxOutputTokens;
611611
field public Float? presencePenalty;
612-
field public com.google.firebase.vertexai.type.ContentModality? responseModality;
612+
field public com.google.firebase.vertexai.type.ResponseModality? responseModality;
613613
field public com.google.firebase.vertexai.type.SpeechConfig? speechConfig;
614614
field public Float? temperature;
615615
field public Integer? topK;
@@ -692,6 +692,19 @@ package com.google.firebase.vertexai.type {
692692
public final class RequestTimeoutException extends com.google.firebase.vertexai.type.FirebaseVertexAIException {
693693
}
694694

695+
public final class ResponseModality {
696+
method public int getOrdinal();
697+
property public final int ordinal;
698+
field public static final com.google.firebase.vertexai.type.ResponseModality AUDIO;
699+
field public static final com.google.firebase.vertexai.type.ResponseModality.Companion Companion;
700+
field public static final com.google.firebase.vertexai.type.ResponseModality IMAGE;
701+
field public static final com.google.firebase.vertexai.type.ResponseModality TEXT;
702+
field public static final com.google.firebase.vertexai.type.ResponseModality UNSPECIFIED;
703+
}
704+
705+
public static final class ResponseModality.Companion {
706+
}
707+
695708
public final class ResponseStoppedException extends com.google.firebase.vertexai.type.FirebaseVertexAIException {
696709
method public com.google.firebase.vertexai.type.GenerateContentResponse getResponse();
697710
property public final com.google.firebase.vertexai.type.GenerateContentResponse response;

firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/LiveGenerationConfig.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private constructor(
7373
internal val maxOutputTokens: Int?,
7474
internal val presencePenalty: Float?,
7575
internal val frequencyPenalty: Float?,
76-
internal val responseModality: ContentModality?,
76+
internal val responseModality: ResponseModality?,
7777
internal val speechConfig: SpeechConfig?
7878
) {
7979

@@ -109,7 +109,7 @@ private constructor(
109109
@JvmField public var maxOutputTokens: Int? = null
110110
@JvmField public var presencePenalty: Float? = null
111111
@JvmField public var frequencyPenalty: Float? = null
112-
@JvmField public var responseModality: ContentModality? = null
112+
@JvmField public var responseModality: ResponseModality? = null
113113
@JvmField public var speechConfig: SpeechConfig? = null
114114

115115
public fun setTemperature(temperature: Float?): Builder = apply {
@@ -129,7 +129,7 @@ private constructor(
129129
public fun setFrequencyPenalty(frequencyPenalty: Float?): Builder = apply {
130130
this.frequencyPenalty = frequencyPenalty
131131
}
132-
public fun setResponseModalities(responseModalities: ContentModality?): Builder = apply {
132+
public fun setResponseModalities(responseModalities: ResponseModality?): Builder = apply {
133133
this.responseModality = responseModalities
134134
}
135135
public fun setSpeechConfig(speechConfig: SpeechConfig?): Builder = apply {
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* Copyright 2025 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.google.firebase.vertexai.type
18+
19+
import com.google.firebase.vertexai.common.util.FirstOrdinalSerializer
20+
import kotlinx.serialization.KSerializer
21+
import kotlinx.serialization.SerialName
22+
import kotlinx.serialization.Serializable
23+
24+
/** Modality for bidirectional streaming. */
25+
public class ResponseModality private constructor(public val ordinal: Int) {
26+
27+
@Serializable(Internal.Serializer::class)
28+
internal enum class Internal {
29+
@SerialName("MODALITY_UNSPECIFIED") UNSPECIFIED,
30+
TEXT,
31+
IMAGE,
32+
AUDIO;
33+
34+
internal object Serializer : KSerializer<Internal> by FirstOrdinalSerializer(Internal::class)
35+
36+
internal fun toPublic() =
37+
when (this) {
38+
TEXT -> ResponseModality.TEXT
39+
IMAGE -> ResponseModality.IMAGE
40+
AUDIO -> ResponseModality.AUDIO
41+
else -> ResponseModality.UNSPECIFIED
42+
}
43+
}
44+
45+
internal fun toInternal() =
46+
when (this) {
47+
TEXT -> "TEXT"
48+
IMAGE -> "IMAGE"
49+
AUDIO -> "AUDIO"
50+
else -> "UNSPECIFIED"
51+
}
52+
public companion object {
53+
/** Unspecified modality. */
54+
@JvmField public val UNSPECIFIED: ResponseModality = ResponseModality(0)
55+
56+
/** Plain text. */
57+
@JvmField public val TEXT: ResponseModality = ResponseModality(1)
58+
59+
/** Image. */
60+
@JvmField public val IMAGE: ResponseModality = ResponseModality(2)
61+
62+
/** Audio. */
63+
@JvmField public val AUDIO: ResponseModality = ResponseModality(4)
64+
}
65+
}

0 commit comments

Comments
 (0)