Skip to content

Commit 86b0553

Browse files
sararobcopybara-github
authored andcommitted
feat!: add enum support
PiperOrigin-RevId: 756374285
1 parent 442a865 commit 86b0553

File tree

78 files changed

+3887
-168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+3887
-168
lines changed

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ import com.google.genai.types.Content;
215215
import com.google.genai.types.GenerateContentConfig;
216216
import com.google.genai.types.GenerateContentResponse;
217217
import com.google.genai.types.GoogleSearch;
218+
import com.google.genai.types.HarmBlockThreshold;
219+
import com.google.genai.types.HarmCategory;
218220
import com.google.genai.types.Part;
219221
import com.google.genai.types.SafetySetting;
220222
import com.google.genai.types.Tool;
@@ -227,12 +229,12 @@ public class GenerateContentWithConfigs {
227229
ImmutableList<SafetySetting> safetySettings =
228230
ImmutableList.of(
229231
SafetySetting.builder()
230-
.category("HARM_CATEGORY_HATE_SPEECH")
231-
.threshold("BLOCK_ONLY_HIGH")
232+
.category(HarmCategory.Known.HARM_CATEGORY_HATE_SPEECH)
233+
.threshold(HarmBlockThreshold.Known.BLOCK_ONLY_HIGH)
232234
.build(),
233235
SafetySetting.builder()
234-
.category("HARM_CATEGORY_DANGEROUS_CONTENT")
235-
.threshold("BLOCK_LOW_AND_ABOVE")
236+
.category(HarmCategory.Known.HARM_CATEGORY_DANGEROUS_CONTENT)
237+
.threshold(HarmBlockThreshold.Known.BLOCK_LOW_AND_ABOVE)
236238
.build());
237239

238240
// Sets the system instruction in the config.
@@ -270,6 +272,7 @@ import com.google.genai.Client;
270272
import com.google.genai.types.GenerateContentConfig;
271273
import com.google.genai.types.GenerateContentResponse;
272274
import com.google.genai.types.Schema;
275+
import com.google.genai.types.Type;
273276

274277
public class GenerateContentWithSchema {
275278
public static void main(String[] args) {
@@ -280,7 +283,7 @@ public class GenerateContentWithSchema {
280283
.type("object")
281284
.properties(
282285
ImmutableMap.of(
283-
"name", Schema.builder().type("string").description("Your Name").build()))
286+
"name", Schema.builder().type(Type.Known.STRING).description("Your Name").build()))
284287
.build();
285288
GenerateContentConfig config =
286289
GenerateContentConfig.builder()

examples/src/main/java/com/google/genai/examples/EditImageAsync.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,13 @@
4040
import com.google.genai.Client;
4141
import com.google.genai.types.EditImageConfig;
4242
import com.google.genai.types.EditImageResponse;
43+
import com.google.genai.types.EditMode;
4344
import com.google.genai.types.GenerateImagesConfig;
4445
import com.google.genai.types.GenerateImagesResponse;
4546
import com.google.genai.types.Image;
4647
import com.google.genai.types.MaskReferenceConfig;
4748
import com.google.genai.types.MaskReferenceImage;
49+
import com.google.genai.types.MaskReferenceMode;
4850
import com.google.genai.types.RawReferenceImage;
4951
import com.google.genai.types.ReferenceImage;
5052
import java.io.IOException;
@@ -81,7 +83,7 @@ public static void main(String[] args) throws IOException, HttpException {
8183
// Edit image with a mask.
8284
EditImageConfig editImageConfig =
8385
EditImageConfig.builder()
84-
.editMode("EDIT_MODE_INPAINT_INSERTION")
86+
.editMode(EditMode.Known.EDIT_MODE_INPAINT_INSERTION)
8587
.numberOfImages(1)
8688
.outputMimeType("image/jpeg")
8789
.build();
@@ -96,7 +98,7 @@ public static void main(String[] args) throws IOException, HttpException {
9698
.referenceId(2)
9799
.config(
98100
MaskReferenceConfig.builder()
99-
.maskMode("MASK_MODE_BACKGROUND")
101+
.maskMode(MaskReferenceMode.Known.MASK_MODE_BACKGROUND)
100102
.maskDilation(0.0f)
101103
.build())
102104
.build();

examples/src/main/java/com/google/genai/examples/EditImageControlReference.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.google.genai.Client;
4242
import com.google.genai.types.ControlReferenceConfig;
4343
import com.google.genai.types.ControlReferenceImage;
44+
import com.google.genai.types.ControlReferenceType;
4445
import com.google.genai.types.EditImageConfig;
4546
import com.google.genai.types.EditImageResponse;
4647
import com.google.genai.types.GenerateImagesConfig;
@@ -83,7 +84,7 @@ public static void main(String[] args) {
8384
.referenceImage(generatedImage)
8485
.config(
8586
ControlReferenceConfig.builder()
86-
.controlType("CONTROL_TYPE_SCRIBBLE")
87+
.controlType(ControlReferenceType.Known.CONTROL_TYPE_SCRIBBLE)
8788
.enableControlImageComputation(true)
8889
.build())
8990
.build();

examples/src/main/java/com/google/genai/examples/EditImageMaskReference.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,13 @@
4040
import com.google.genai.Client;
4141
import com.google.genai.types.EditImageConfig;
4242
import com.google.genai.types.EditImageResponse;
43+
import com.google.genai.types.EditMode;
4344
import com.google.genai.types.GenerateImagesConfig;
4445
import com.google.genai.types.GenerateImagesResponse;
4546
import com.google.genai.types.Image;
4647
import com.google.genai.types.MaskReferenceConfig;
4748
import com.google.genai.types.MaskReferenceImage;
49+
import com.google.genai.types.MaskReferenceMode;
4850
import com.google.genai.types.RawReferenceImage;
4951
import com.google.genai.types.ReferenceImage;
5052
import java.util.ArrayList;
@@ -74,7 +76,7 @@ public static void main(String[] args) {
7476
// Edit image with a mask.
7577
EditImageConfig editImageConfig =
7678
EditImageConfig.builder()
77-
.editMode("EDIT_MODE_INPAINT_INSERTION")
79+
.editMode(EditMode.Known.EDIT_MODE_INPAINT_INSERTION)
7880
.numberOfImages(1)
7981
.outputMimeType("image/jpeg")
8082
.build();
@@ -89,7 +91,7 @@ public static void main(String[] args) {
8991
.referenceId(2)
9092
.config(
9193
MaskReferenceConfig.builder()
92-
.maskMode("MASK_MODE_BACKGROUND")
94+
.maskMode(MaskReferenceMode.Known.MASK_MODE_BACKGROUND)
9395
.maskDilation(0.0f)
9496
.build())
9597
.build();

examples/src/main/java/com/google/genai/examples/EditImageSubjectReference.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import com.google.genai.types.ReferenceImage;
4848
import com.google.genai.types.SubjectReferenceConfig;
4949
import com.google.genai.types.SubjectReferenceImage;
50+
import com.google.genai.types.SubjectReferenceType;
5051
import java.util.ArrayList;
5152

5253
/** An example of using the Unified Gen AI Java SDK to edit an image (Subject reference). */
@@ -82,7 +83,7 @@ public static void main(String[] args) {
8283
.referenceId(1)
8384
.config(
8485
SubjectReferenceConfig.builder()
85-
.subjectType("SUBJECT_TYPE_PRODUCT")
86+
.subjectType(SubjectReferenceType.Known.SUBJECT_TYPE_PRODUCT)
8687
.subjectDescription("Product logo")
8788
.build())
8889
.build();

examples/src/main/java/com/google/genai/examples/GenerateContentWithConfigs.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import com.google.genai.types.GenerateContentConfig;
4646
import com.google.genai.types.GenerateContentResponse;
4747
import com.google.genai.types.GoogleSearch;
48+
import com.google.genai.types.HarmBlockThreshold;
49+
import com.google.genai.types.HarmCategory;
4850
import com.google.genai.types.Part;
4951
import com.google.genai.types.SafetySetting;
5052
import com.google.genai.types.Tool;
@@ -59,12 +61,12 @@ public static void main(String[] args) {
5961
ImmutableList<SafetySetting> safetySettings =
6062
ImmutableList.of(
6163
SafetySetting.builder()
62-
.category("HARM_CATEGORY_HATE_SPEECH")
63-
.threshold("BLOCK_ONLY_HIGH")
64+
.category(HarmCategory.Known.HARM_CATEGORY_HATE_SPEECH)
65+
.threshold(HarmBlockThreshold.Known.BLOCK_ONLY_HIGH)
6466
.build(),
6567
SafetySetting.builder()
66-
.category("HARM_CATEGORY_DANGEROUS_CONTENT")
67-
.threshold("BLOCK_LOW_AND_ABOVE")
68+
.category(HarmCategory.Known.HARM_CATEGORY_DANGEROUS_CONTENT)
69+
.threshold(HarmBlockThreshold.Known.BLOCK_LOW_AND_ABOVE)
6870
.build());
6971

7072
// Sets the system instruction in the config.

examples/src/main/java/com/google/genai/examples/GenerateContentWithFunctionCall.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import com.google.genai.types.GenerateContentConfig;
4747
import com.google.genai.types.GenerateContentResponse;
4848
import com.google.genai.types.Schema;
49+
import com.google.genai.types.Type;
4950

5051
/** An example of using the Unified Gen AI Java SDK to generate content with function calling. */
5152
public class GenerateContentWithFunctionCall {
@@ -58,17 +59,17 @@ public static void main(String[] args) {
5859
.name("get_current_weather")
5960
.parameters(
6061
Schema.builder()
61-
.type("object")
62+
.type(Type.Known.OBJECT)
6263
.properties(
6364
ImmutableMap.of(
6465
"location",
6566
Schema.builder()
66-
.type("string")
67+
.type(Type.Known.STRING)
6768
.description("The location to get the weather for.")
6869
.build(),
6970
"unit",
7071
Schema.builder()
71-
.type("string")
72+
.type(Type.Known.STRING)
7273
.description("The unit to return the weather in, e.g. 'celsius'.")
7374
.build()))
7475
.required(ImmutableList.of("location", "unit"))

examples/src/main/java/com/google/genai/examples/GenerateContentWithResponseSchema.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@
3939
*/
4040
package com.google.genai.examples;
4141

42-
import com.google.common.collect.ImmutableMap;
4342
import com.google.common.collect.ImmutableList;
43+
import com.google.common.collect.ImmutableMap;
4444
import com.google.genai.Client;
4545
import com.google.genai.types.GenerateContentConfig;
4646
import com.google.genai.types.GenerateContentResponse;
4747
import com.google.genai.types.Schema;
48+
import com.google.genai.types.Type;
4849

4950
/**
5051
* GenerateContentWithResponseSchema generates a content and returns a json object by passing a
@@ -54,21 +55,21 @@ public class GenerateContentWithResponseSchema {
5455
public static void main(String[] args) {
5556
Client client = new Client();
5657

57-
Schema schema = Schema.builder()
58-
.type("ARRAY")
58+
Schema schema =
59+
Schema.builder()
60+
.type(Type.Known.ARRAY)
5961
.items(
6062
Schema.builder()
61-
.type("OBJECT")
63+
.type(Type.Known.OBJECT)
6264
.properties(
6365
ImmutableMap.of(
6466
"recipe_name",
65-
Schema.builder().type("STRING").build(),
67+
Schema.builder().type(Type.Known.STRING).build(),
6668
"ingredients",
6769
Schema.builder()
68-
.type("ARRAY")
69-
.items(Schema.builder().type("STRING").build())
70-
.build()
71-
))
70+
.type(Type.Known.ARRAY)
71+
.items(Schema.builder().type(Type.Known.STRING).build())
72+
.build()))
7273
.required(ImmutableList.of("recipe_name", "ingredients"))
7374
.build())
7475
.build();
@@ -80,7 +81,8 @@ public static void main(String[] args) {
8081
.build();
8182

8283
GenerateContentResponse response =
83-
client.models.generateContent("gemini-2.0-flash-001", "List a few popular cookie recipes.", config);
84+
client.models.generateContent(
85+
"gemini-2.0-flash-001", "List a few popular cookie recipes.", config);
8486

8587
System.out.println("Response: " + response.text());
8688
}

examples/src/main/java/com/google/genai/examples/LiveAudioConfigurableSpeechDetectionAsync.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
import javax.sound.sampled.LineUnavailableException;
6666
import javax.sound.sampled.SourceDataLine;
6767
import javax.sound.sampled.TargetDataLine;
68+
import com.google.genai.types.Modality;
6869

6970
/**
7071
* Example of using the live module for a streaming audio conversation with configurable speech
@@ -149,7 +150,7 @@ public static void main(String[] args) throws LineUnavailableException {
149150
// --- Live API Config for Audio ---
150151
LiveConnectConfig config =
151152
LiveConnectConfig.builder()
152-
.responseModalities(ImmutableList.of("AUDIO"))
153+
.responseModalitiesFromKnown(ImmutableList.of(Modality.Known.AUDIO))
153154
.realtimeInputConfig(
154155
RealtimeInputConfig.builder()
155156
.activityHandling("NO_INTERRUPTION")

examples/src/main/java/com/google/genai/examples/LiveAudioConversationAsync.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import com.google.genai.types.LiveConnectConfig;
5252
import com.google.genai.types.LiveSendRealtimeInputParameters;
5353
import com.google.genai.types.LiveServerMessage;
54+
import com.google.genai.types.Modality;
5455
import com.google.genai.types.PrebuiltVoiceConfig;
5556
import com.google.genai.types.SpeechConfig;
5657
import com.google.genai.types.VoiceConfig;
@@ -146,7 +147,7 @@ public static void main(String[] args) throws LineUnavailableException {
146147
String voiceName = "Aoede";
147148
LiveConnectConfig config =
148149
LiveConnectConfig.builder()
149-
.responseModalities(ImmutableList.of("AUDIO"))
150+
.responseModalitiesFromKnown(ImmutableList.of(Modality.Known.AUDIO))
150151
.speechConfig(
151152
SpeechConfig.builder()
152153
.voiceConfig(

0 commit comments

Comments
 (0)