Skip to content

Commit 5f61a16

Browse files
MarkDaoustcopybara-github
authored andcommitted
feat: Add service tier to GenerateContent.
PiperOrigin-RevId: 890679445
1 parent fdedc74 commit 5f61a16

4 files changed

Lines changed: 174 additions & 0 deletions

File tree

src/main/java/com/google/genai/Batches.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,13 @@ ObjectNode generateContentConfigToMldev(
13021302
"modelArmorConfig parameter is not supported in Gemini API.");
13031303
}
13041304

1305+
if (Common.getValueByPath(fromObject, new String[] {"serviceTier"}) != null) {
1306+
Common.setValueByPath(
1307+
parentObject,
1308+
new String[] {"serviceTier"},
1309+
Common.getValueByPath(fromObject, new String[] {"serviceTier"}));
1310+
}
1311+
13051312
return toObject;
13061313
}
13071314

src/main/java/com/google/genai/Models.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1620,6 +1620,13 @@ ObjectNode generateContentConfigToMldev(
16201620
"modelArmorConfig parameter is not supported in Gemini API.");
16211621
}
16221622

1623+
if (Common.getValueByPath(fromObject, new String[] {"serviceTier"}) != null) {
1624+
Common.setValueByPath(
1625+
parentObject,
1626+
new String[] {"serviceTier"},
1627+
Common.getValueByPath(fromObject, new String[] {"serviceTier"}));
1628+
}
1629+
16231630
return toObject;
16241631
}
16251632

@@ -1864,6 +1871,10 @@ ObjectNode generateContentConfigToVertex(
18641871
Common.getValueByPath(fromObject, new String[] {"modelArmorConfig"}));
18651872
}
18661873

1874+
if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"serviceTier"}))) {
1875+
throw new IllegalArgumentException("serviceTier parameter is not supported in Vertex AI.");
1876+
}
1877+
18671878
return toObject;
18681879
}
18691880

src/main/java/com/google/genai/types/GenerateContentConfig.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,10 @@ public abstract class GenerateContentConfig extends JsonSerializable {
239239
@JsonProperty("modelArmorConfig")
240240
public abstract Optional<ModelArmorConfig> modelArmorConfig();
241241

242+
/** The service tier to use for the request. For example, SERVICE_TIER_FLEX. */
243+
@JsonProperty("serviceTier")
244+
public abstract Optional<ServiceTier> serviceTier();
245+
242246
/** Instantiates a builder for GenerateContentConfig. */
243247
@ExcludeFromGeneratedCoverageReport
244248
public static Builder builder() {
@@ -1103,6 +1107,44 @@ public Builder clearModelArmorConfig() {
11031107
return modelArmorConfig(Optional.empty());
11041108
}
11051109

1110+
/**
1111+
* Setter for serviceTier.
1112+
*
1113+
* <p>serviceTier: The service tier to use for the request. For example, SERVICE_TIER_FLEX.
1114+
*/
1115+
@JsonProperty("serviceTier")
1116+
public abstract Builder serviceTier(ServiceTier serviceTier);
1117+
1118+
@ExcludeFromGeneratedCoverageReport
1119+
abstract Builder serviceTier(Optional<ServiceTier> serviceTier);
1120+
1121+
/** Clears the value of serviceTier field. */
1122+
@ExcludeFromGeneratedCoverageReport
1123+
@CanIgnoreReturnValue
1124+
public Builder clearServiceTier() {
1125+
return serviceTier(Optional.empty());
1126+
}
1127+
1128+
/**
1129+
* Setter for serviceTier given a known enum.
1130+
*
1131+
* <p>serviceTier: The service tier to use for the request. For example, SERVICE_TIER_FLEX.
1132+
*/
1133+
@CanIgnoreReturnValue
1134+
public Builder serviceTier(ServiceTier.Known knownType) {
1135+
return serviceTier(new ServiceTier(knownType));
1136+
}
1137+
1138+
/**
1139+
* Setter for serviceTier given a string.
1140+
*
1141+
* <p>serviceTier: The service tier to use for the request. For example, SERVICE_TIER_FLEX.
1142+
*/
1143+
@CanIgnoreReturnValue
1144+
public Builder serviceTier(String serviceTier) {
1145+
return serviceTier(new ServiceTier(serviceTier));
1146+
}
1147+
11061148
public abstract GenerateContentConfig build();
11071149
}
11081150

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
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+
* https://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+
// Auto-generated code. Do not edit.
18+
19+
package com.google.genai.types;
20+
21+
import com.fasterxml.jackson.annotation.JsonCreator;
22+
import com.fasterxml.jackson.annotation.JsonValue;
23+
import com.google.common.base.Ascii;
24+
import java.util.Objects;
25+
26+
/** Pricing and performance service tier. */
27+
public class ServiceTier {
28+
29+
/** Enum representing the known values for ServiceTier. */
30+
public enum Known {
31+
/** Default service tier, which is standard. */
32+
SERVICE_TIER_UNSPECIFIED,
33+
34+
/** Flex service tier. */
35+
SERVICE_TIER_FLEX,
36+
37+
/** Standard service tier. */
38+
SERVICE_TIER_STANDARD,
39+
40+
/** Priority service tier. */
41+
SERVICE_TIER_PRIORITY
42+
}
43+
44+
private Known serviceTierEnum;
45+
private final String value;
46+
47+
@JsonCreator
48+
public ServiceTier(String value) {
49+
this.value = value;
50+
for (Known serviceTierEnum : Known.values()) {
51+
if (Ascii.equalsIgnoreCase(serviceTierEnum.toString(), value)) {
52+
this.serviceTierEnum = serviceTierEnum;
53+
break;
54+
}
55+
}
56+
if (this.serviceTierEnum == null) {
57+
this.serviceTierEnum = Known.SERVICE_TIER_UNSPECIFIED;
58+
}
59+
}
60+
61+
public ServiceTier(Known knownValue) {
62+
this.serviceTierEnum = knownValue;
63+
this.value = knownValue.toString();
64+
}
65+
66+
@ExcludeFromGeneratedCoverageReport
67+
@Override
68+
@JsonValue
69+
public String toString() {
70+
return this.value;
71+
}
72+
73+
@ExcludeFromGeneratedCoverageReport
74+
@SuppressWarnings("PatternMatchingInstanceof")
75+
@Override
76+
public boolean equals(Object o) {
77+
if (this == o) {
78+
return true;
79+
}
80+
if (o == null) {
81+
return false;
82+
}
83+
84+
if (!(o instanceof ServiceTier)) {
85+
return false;
86+
}
87+
88+
ServiceTier other = (ServiceTier) o;
89+
90+
if (this.serviceTierEnum != Known.SERVICE_TIER_UNSPECIFIED
91+
&& other.serviceTierEnum != Known.SERVICE_TIER_UNSPECIFIED) {
92+
return this.serviceTierEnum == other.serviceTierEnum;
93+
} else if (this.serviceTierEnum == Known.SERVICE_TIER_UNSPECIFIED
94+
&& other.serviceTierEnum == Known.SERVICE_TIER_UNSPECIFIED) {
95+
return this.value.equals(other.value);
96+
}
97+
return false;
98+
}
99+
100+
@ExcludeFromGeneratedCoverageReport
101+
@Override
102+
public int hashCode() {
103+
if (this.serviceTierEnum != Known.SERVICE_TIER_UNSPECIFIED) {
104+
return this.serviceTierEnum.hashCode();
105+
} else {
106+
return Objects.hashCode(this.value);
107+
}
108+
}
109+
110+
@ExcludeFromGeneratedCoverageReport
111+
public Known knownEnum() {
112+
return this.serviceTierEnum;
113+
}
114+
}

0 commit comments

Comments
 (0)