Skip to content

Commit fadd4ce

Browse files
yinghsienwucopybara-github
authored andcommitted
fix: add deprecation warnings to Imagen generate_images, edit_images, generate_videos (if using prompt/text/image args), LiveConnectConfig.GenerationConfig which will be removed in the next major version
PiperOrigin-RevId: 951696435
1 parent 701d070 commit fadd4ce

2 files changed

Lines changed: 84 additions & 0 deletions

File tree

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
import java.util.ArrayList;
8181
import java.util.List;
8282
import java.util.concurrent.CompletableFuture;
83+
import java.util.concurrent.atomic.AtomicBoolean;
8384
import java.util.function.Function;
8485
import java.util.logging.Logger;
8586

@@ -568,6 +569,10 @@ CompletableFuture<GenerateVideosOperation> privateGenerateVideos(
568569
}
569570

570571
private static final Logger logger = Logger.getLogger(AsyncModels.class.getName());
572+
private static final AtomicBoolean loggedGenerateImagesWarning = new AtomicBoolean(false);
573+
private static final AtomicBoolean loggedEditImageWarning = new AtomicBoolean(false);
574+
private static final AtomicBoolean loggedGenerateVideosVideoWarning = new AtomicBoolean(false);
575+
private static final AtomicBoolean loggedGenerateVideosWarning = new AtomicBoolean(false);
571576

572577
/**
573578
* Asynchronously counts tokens given a GenAI model and a text string.
@@ -832,9 +837,19 @@ public CompletableFuture<ResponseStream<GenerateContentResponse>> generateConten
832837
* optional configurations
833838
* @return a {@link com.google.genai.types.GenerateImagesResponse} instance that contains the
834839
* generated images.
840+
* @deprecated Use {@link #generateContent(String, Content)} instead.
835841
*/
842+
@Deprecated
836843
public CompletableFuture<GenerateImagesResponse> generateImages(
837844
String model, String prompt, GenerateImagesConfig config) {
845+
if (loggedGenerateImagesWarning.compareAndSet(false, true)) {
846+
logger.warning(
847+
"The generateImages method is deprecated and will be removed in the next major release"
848+
+ " (not before Jan. 1 2027). Please use the generateContent method with image models"
849+
+ " instead. See https://ai.google.dev/gemini-api/docs/deprecations#imagen-models and"
850+
+ " https:/"
851+
+ "/docs.cloud.google.com/gemini-enterprise-agent-platform/models/capabilities/image-generation#generate-images");
852+
}
838853
return privateGenerateImages(model, prompt, config)
839854
.thenApply(models::postProcessGenerateImagesResponse);
840855
}
@@ -855,9 +870,18 @@ public CompletableFuture<GenerateImagesResponse> generateImages(
855870
* optional configurations
856871
* @return a {@link com.google.genai.types.EditImageResponse} instance that contains the edited
857872
* image.
873+
* @deprecated Use {@link #generateContent(String, Content)} instead.
858874
*/
875+
@Deprecated
859876
public CompletableFuture<EditImageResponse> editImage(
860877
String model, String prompt, List<ReferenceImage> referenceImages, EditImageConfig config) {
878+
if (loggedEditImageWarning.compareAndSet(false, true)) {
879+
logger.warning(
880+
"The editImage method is deprecated and will be removed in the next major release (not"
881+
+ " before Jan. 1 2027). Please use the generateContent method with image models"
882+
+ " instead. See https:/"
883+
+ "/docs.cloud.google.com/gemini-enterprise-agent-platform/models/capabilities/gemini-edit-images#edit-an-image");
884+
}
861885
List<ReferenceImageAPI> referenceImagesAPI = new ArrayList<>();
862886
for (ReferenceImage referenceImage : referenceImages) {
863887
referenceImagesAPI.add(referenceImage.toReferenceImageAPI());
@@ -917,9 +941,18 @@ public CompletableFuture<GenerateVideosOperation> generateVideos(
917941
* optional configurations
918942
* @return a {@link com.google.genai.types.GenerateVideosOperation} instance that contains the
919943
* generated videos.
944+
* @deprecated Use {@link #generateVideos(String, GenerateVideosSource, GenerateVideosConfig)}
945+
* instead.
920946
*/
947+
@Deprecated
921948
public CompletableFuture<GenerateVideosOperation> generateVideos(
922949
String model, String prompt, Image image, Video video, GenerateVideosConfig config) {
950+
if (loggedGenerateVideosVideoWarning.compareAndSet(false, true)) {
951+
logger.warning(
952+
"The generateVideos (with prompt, image, video) method is deprecated and will be removed"
953+
+ " in the next major release (not before 2026-07-31). Please use"
954+
+ " generateVideos(String, GenerateVideosSource, GenerateVideosConfig) instead.");
955+
}
923956
return privateGenerateVideos(model, prompt, image, models.preProcessVideo(video), null, config);
924957
}
925958

@@ -935,9 +968,18 @@ public CompletableFuture<GenerateVideosOperation> generateVideos(
935968
* optional configurations
936969
* @return a {@link com.google.genai.types.GenerateVideosOperation} instance that contains the
937970
* generated videos.
971+
* @deprecated Use {@link #generateVideos(String, GenerateVideosSource, GenerateVideosConfig)}
972+
* instead.
938973
*/
974+
@Deprecated
939975
public CompletableFuture<GenerateVideosOperation> generateVideos(
940976
String model, String prompt, Image image, GenerateVideosConfig config) {
977+
if (loggedGenerateVideosWarning.compareAndSet(false, true)) {
978+
logger.warning(
979+
"The generateVideos (with prompt, image) method is deprecated and will be removed in the"
980+
+ " next major release (not before 2026-07-31). Please use generateVideos(String,"
981+
+ " GenerateVideosSource, GenerateVideosConfig) instead.");
982+
}
941983
return generateVideos(model, prompt, image, null, config);
942984
}
943985

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
import java.util.List;
9191
import java.util.Map;
9292
import java.util.Optional;
93+
import java.util.concurrent.atomic.AtomicBoolean;
9394
import java.util.function.Function;
9495
import java.util.logging.Logger;
9596
import okhttp3.Headers;
@@ -7500,6 +7501,10 @@ GenerateVideosOperation privateGenerateVideos(
75007501
}
75017502

75027503
private static final Logger logger = Logger.getLogger(Models.class.getName());
7504+
private static final AtomicBoolean loggedGenerateImagesWarning = new AtomicBoolean(false);
7505+
private static final AtomicBoolean loggedEditImageWarning = new AtomicBoolean(false);
7506+
private static final AtomicBoolean loggedGenerateVideosVideoWarning = new AtomicBoolean(false);
7507+
private static final AtomicBoolean loggedGenerateVideosWarning = new AtomicBoolean(false);
75037508

75047509
/**
75057510
* Generates content given a GenAI model and a list of content.
@@ -7736,9 +7741,19 @@ GenerateImagesResponse postProcessGenerateImagesResponse(GenerateImagesResponse
77367741
* optional configurations
77377742
* @return a {@link com.google.genai.types.GenerateImagesResponse} instance that contains the
77387743
* generated images.
7744+
* @deprecated Use {@link #generateContent(String, Content)} instead.
77397745
*/
7746+
@Deprecated
77407747
public GenerateImagesResponse generateImages(
77417748
String model, String prompt, GenerateImagesConfig config) {
7749+
if (loggedGenerateImagesWarning.compareAndSet(false, true)) {
7750+
logger.warning(
7751+
"The generateImages method is deprecated and will be removed in the next major release"
7752+
+ " (not before Jan. 1 2027). Please use the generateContent method with image models"
7753+
+ " instead. See https://ai.google.dev/gemini-api/docs/deprecations#imagen-models and"
7754+
+ " https:/"
7755+
+ "/docs.cloud.google.com/gemini-enterprise-agent-platform/models/capabilities/image-generation#generate-images");
7756+
}
77427757
return postProcessGenerateImagesResponse(privateGenerateImages(model, prompt, config));
77437758
}
77447759

@@ -7759,9 +7774,18 @@ public GenerateImagesResponse generateImages(
77597774
* optional configurations
77607775
* @return a {@link com.google.genai.types.EditImageResponse} instance that contains the edited
77617776
* image.
7777+
* @deprecated Use {@link #generateContent(String, Content)} instead.
77627778
*/
7779+
@Deprecated
77637780
public EditImageResponse editImage(
77647781
String model, String prompt, List<ReferenceImage> referenceImages, EditImageConfig config) {
7782+
if (loggedEditImageWarning.compareAndSet(false, true)) {
7783+
logger.warning(
7784+
"The editImage method is deprecated and will be removed in the next major release (not"
7785+
+ " before Jan. 1 2027). Please use the generateContent method with image models"
7786+
+ " instead. See https:/"
7787+
+ "/docs.cloud.google.com/gemini-enterprise-agent-platform/models/capabilities/gemini-edit-images#edit-an-image");
7788+
}
77657789

77667790
List<ReferenceImageAPI> referenceImagesAPI = new ArrayList<>();
77677791
for (ReferenceImage referenceImage : referenceImages) {
@@ -7902,9 +7926,18 @@ Video preProcessVideo(Video video) {
79027926
* optional configurations
79037927
* @return a {@link com.google.genai.types.GenerateVideosOperation} instance that contains the
79047928
* generated videos.
7929+
* @deprecated Use {@link #generateVideos(String, GenerateVideosSource, GenerateVideosConfig)}
7930+
* instead.
79057931
*/
7932+
@Deprecated
79067933
public GenerateVideosOperation generateVideos(
79077934
String model, String prompt, Image image, Video video, GenerateVideosConfig config) {
7935+
if (loggedGenerateVideosVideoWarning.compareAndSet(false, true)) {
7936+
logger.warning(
7937+
"The generateVideos (with prompt, image, video) method is deprecated and will be removed"
7938+
+ " in the next major release (not before 2026-07-31). Please use"
7939+
+ " generateVideos(String, GenerateVideosSource, GenerateVideosConfig) instead.");
7940+
}
79087941
return privateGenerateVideos(model, prompt, image, preProcessVideo(video), null, config);
79097942
}
79107943

@@ -7920,9 +7953,18 @@ public GenerateVideosOperation generateVideos(
79207953
* optional configurations
79217954
* @return a {@link com.google.genai.types.GenerateVideosOperation} instance that contains the
79227955
* generated videos.
7956+
* @deprecated Use {@link #generateVideos(String, GenerateVideosSource, GenerateVideosConfig)}
7957+
* instead.
79237958
*/
7959+
@Deprecated
79247960
public GenerateVideosOperation generateVideos(
79257961
String model, String prompt, Image image, GenerateVideosConfig config) {
7962+
if (loggedGenerateVideosWarning.compareAndSet(false, true)) {
7963+
logger.warning(
7964+
"The generateVideos (with prompt, image) method is deprecated and will be removed in the"
7965+
+ " next major release (not before 2026-07-31). Please use generateVideos(String,"
7966+
+ " GenerateVideosSource, GenerateVideosConfig) instead.");
7967+
}
79267968
return generateVideos(model, prompt, image, null, config);
79277969
}
79287970

0 commit comments

Comments
 (0)