Все модели Imagen устарели и будут отключены 24 июня 2026 года . Это устаревание и отключение распространяется на все сервисы Google, а также на API Gemini Developer и Vertex AI Gemini .
До указанной даты отключения, во избежание сбоев в работе сервиса, вам следует перевести ваши приложения с использования моделей Imagen на использование моделей Gemini Image (модели "Nano Banana"), как описано в этом руководстве.
Если у вас возникла срочная проблема, связанная с прекращением поддержки и завершением работы этой функции, обратитесь в службу поддержки Firebase .
Запасные модели Gemini Image
Ознакомьтесь с приведенной ниже таблицей, чтобы выбрать подходящую модель изображения Gemini для вашего приложения.
| Модель изображения | Модели Gemini Image ("Нано-банан") |
|---|---|
imagen-4.0-fast-generate-001 | gemini-2.5-flash-image (GA)gemini-3.1-flash-image-preview (с MINIMAL уровнем осмысления) |
imagen-4.0-generate-001 | gemini-2.5-flash-image (GA)gemini-3.1-flash-image-preview (с уровнем осмысления HIGH ) |
imagen-4.0-ultra-generate-001 | gemini-2.5-flash-image (GA)gemini-3-pro-image-preview |
imagen-3.0-capability-001 | gemini-2.5-flash-image (GA)gemini-3.1-flash-image-preview |
Перенесите ваше приложение
В этом разделе представлены примеры «до» и «после» миграции с модели Imagen на модель Gemini Image.
Создать изображение из текста
Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него. |
Чтобы создать изображение из текста, перенесите ваше приложение:
Используйте подходящую модель изображения Gemini Image в качестве замены (например,
gemini-2.5-flash-image).Создайте экземпляр
GenerativeModel(вместо экземпляраImagenModel).Обновите параметры конфигурации модели , чтобы они соответствовали моделям Gemini Image.
- В рамках этой настройки установите режим ответа
IMAGE.
Обратите внимание, что модели Gemini Image можно настроить таким образом, чтобы они возвращали как изображения , так и текст.
- В рамках этой настройки установите режим ответа
(Только для API Vertex AI Gemini ) Обновите местоположение, откуда вы получаете доступ к модели , на поддерживаемое местоположение для моделей Gemini Image. Мы рекомендуем использовать
global.
Быстрый
До
import FirebaseAILogic
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create an `ImagenModel` instance with a model that supports your use case
let model = ai.imagenModel(modelName: "IMAGEN_MODEL_NAME")
// Provide an image generation prompt
let prompt = "An astronaut riding a horse"
// To generate an image, call `generateImages` with the text prompt
let response = try await model.generateImages(prompt: prompt)
// Handle the generated image
guard let image = response.images.first else {
fatalError("No image in the response.")
}
let uiImage = UIImage(data: image.data)
После
import FirebaseAILogic
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a Gemini model that supports image output
let model = ai.generativeModel(
modelName: "GEMINI_IMAGE_MODEL_NAME",
generationConfig: GenerationConfig(
responseModalities: [.image],
imageConfig: ImageConfig(aspectRatio: .landscape4x3)
)
)
// Provide an image generation prompt
let prompt = "An astronaut riding a horse"
// To generate an image, call `generateContent` with the text prompt
let response = try await model.generateContent(prompt)
// Handle the case where no images were generated
guard let inlineDataPart = response.inlineDataParts.first else {
fatalError("No image in the response.")
}
// Process the image
guard let uiImage = UIImage(data: inlineDataPart.data) else {
fatalError("Failed to convert data to UIImage.")
}
Kotlin
До
// Initialize the Gemini Developer API backend service
val ai = Firebase.ai(backend = GenerativeBackend.googleAI())
// Create an `ImagenModel` instance with an Imagen model that supports your use case
val model = ai.imagenModel("IMAGEN_MODEL_NAME")
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate an image, call `generateImages` with the text prompt
val imageResponse = model.generateImages(prompt)
// Handle the generated image
val image = imageResponse.images.first()
val bitmapImage = image.asBitmap()
После
// Initialize the Gemini Developer API backend service
val ai = Firebase.ai(backend = GenerativeBackend.googleAI())
// Create a `GenerativeModel` instance with a Gemini model that supports image output
val model = ai.generativeModel(
modelName = "GEMINI_IMAGE_MODEL_NAME",
generationConfig = generationConfig {
responseModalities = listOf(ResponseModality.IMAGE),
imageConfig = imageConfig {
aspectRatio = AspectRatio.LANDSCAPE_4x3
}
}
)
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate an image, call `generateContent` with the text prompt
val imageResponse = model.generateContent(prompt)
if (imageResponse.finishReason == FinishReason.NO_IMAGE) {
// Handle the case where no images were generated
} else {
// Handle the generated image
val bitmapImage = imageResponse.candidates.first().content.parts.filterIsInstance().firstOrNull()?.image
}
Java
До
// Initialize the Gemini Developer API backend service
// Create an `ImagenModel` instance with an Imagen model that supports your use case
ImagenModel imagenModel = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.imagenModel(
/* modelName */ "IMAGEN_MODEL_NAME");
ImagenModelFutures model = ImagenModelFutures.from(imagenModel);
// Provide an image generation prompt
String prompt = "An astronaut riding a horse";
// To generate an image, call `generateImages` with the text prompt
Futures.addCallback(model.generateImages(prompt), new FutureCallback<ImagenGenerationResponse>() {
@Override
public void onSuccess(ImagenGenerationResponse result) {
if (result.getImages().isEmpty()) {
Log.d("TAG", "No images generated");
}
Bitmap bitmap = result.getImages().get(0).asBitmap();
// Use the bitmap to display the image in your UI
}
@Override
public void onFailure(Throwable t) {
// ...
}
}, Executors.newSingleThreadExecutor());
После
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a Gemini model that supports image output
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI()).generativeModel(
"GEMINI_IMAGE_MODEL_NAME",
new GenerationConfig.Builder()
.setResponseModalities(Arrays.asList(ResponseModality.IMAGE))
.setImageConfig(new ImageConfig(AspectRatio.LANDSCAPE_4x3, null))
.build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// Provide a text prompt instructing the model to generate an image
Content prompt = new Content.Builder()
.addText("An astronaut riding a horse")
.build();
// To generate an image, call `generateContent` with the text input
Executor executor = Executors.newSingleThreadExecutor();
ListenableFuture response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback() {
@Override
public void onSuccess(GenerateContentResponse result) {
if (result.finishReason == FinishReason.NO_IMAGE) {
// handle the case where no images were generated
return;
}
// iterate over all the parts in the first candidate in the result object
for (Part part : result.getCandidates().get(0).getContent().getParts()) {
if (part instanceof ImagePart) {
ImagePart imagePart = (ImagePart) part;
// The returned image as a bitmap
Bitmap generatedImageAsBitmap = imagePart.getImage();
break;
}
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
До
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, getImagenModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create an `ImagenModel` instance with an Imagen model that supports your use case
const model = getImagenModel(ai, { model: "IMAGEN_MODEL_NAME" });
// Provide an image generation prompt
const prompt = "An astronaut riding a horse.";
// To generate an image, call `generateImages` with the text prompt
const response = await model.generateImages(prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (response.filteredReason) {
console.log(response.filteredReason);
}
if (response.images.length == 0) {
throw new Error("No images in the response.")
}
const image = response.images[0];
После
import { initializeApp } from "firebase/app";
import {
getAI,
getGenerativeModel,
GoogleAIBackend,
ResponseModality,
ImageConfigAspectRatio,
FinishReason
} from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, {
model: "GEMINI_IMAGE_MODEL_NAME",
generationConfig: {
responseModalities: [ResponseModality.IMAGE],
imageConfig: {
aspectRatio: ImageConfigAspectRatio.LANDSCAPE_4x3
}
},
});
// Provide an image generation prompt
const prompt = "An astronaut riding a horse.";
// To generate an image, call `generateContent` with the text prompt
const result = await model.generateContent(prompt);
// Handle the generated image
try {
const response = result.response;
if (response.candidates?.[0].finishReason == FinishReason.NO_IMAGE) {
// Handle the case where no images were generated
}
const inlineDataParts = response.inlineDataParts();
if (inlineDataParts?.[0]) {
const image = inlineDataParts[0].inlineData;
// Use this mimeType and base64 data to display the image using
// your preferred tooling
console.log(image.mimeType, image.data);
}
} catch (err) {
console.error('Prompt or candidate was blocked:', err);
}
Dart
До
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
final ai = FirebaseAI.googleAI();
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model = ai.imagenModel(model: 'IMAGEN_MODEL_NAME');
// Provide an image generation prompt
const prompt = 'An astronaut riding a horse.';
// To generate an image, call `generateImages` with the text prompt
final response = await model.generateImages(prompt);
if (response.images.isNotEmpty) {
final image = response.images[0];
// Process the image
} else {
// Handle the case where no images were generated
print('Error: No images were generated.');
}
После
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
final ai = FirebaseAI.googleAI();
// Create a `GenerativeModel` instance with a Gemini model that supports image output
final model = ai.generativeModel(
model: 'GEMINI_IMAGE_MODEL_NAME',
generationConfig: GenerationConfig(
responseModalities: [ResponseModalities.image],
imageConfig: ImageConfig(aspectRatio: ImageAspectRatio.landscape4x3)
),
);
// Provide a text prompt instructing the model to generate an image
final prompt = [Content.text('An astronaut riding a horse.')];
// To generate an image, call `generateContent` with the text prompt
final response = await model.generateContent(prompt);
if (response.inlineDataParts.isNotEmpty) {
final imageBytes = response.inlineDataParts.first.bytes;
// Process the image
} else {
// Handle the case where no images were generated
print('Error: No images were generated.');
}
Единство
До
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create an `ImagenModel` instance with a model that supports your use case
var model = ai.GetImagenModel(modelName: "IMAGEN_MODEL_NAME");
// Provide an image generation prompt
var prompt = "An astronaut riding a horse";
// To generate an image, call `generateImages` with the text prompt
var response = await model.GenerateImagesAsync(prompt: prompt);
// Handle the generated image
if (response.Images.Count == 0) {
throw new Exception("No image in the response.");
}
var image = response.Images[0].AsTexture2D();
После
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a Gemini model that supports image output
var model = ai.GetGenerativeModel(
modelName: "GEMINI_IMAGE_MODEL_NAME",
generationConfig: new GenerationConfig(
responseModalities: new[] { ResponseModality.Image },
imageConfig: new ImageConfig(aspectRatio: ImageConfig.AspectRatio.Landscape4x3)
)
);
// Provide an image generation prompt
var prompt = "An astronaut riding a horse";
// To generate an image, call `GenerateContentAsync` with the text prompt
var response = await model.GenerateContentAsync(prompt);
if (response.Candidates.First().FinishReason == FinishReason.NoImage) {
// Handle the case where no images were generated
}
// Handle the generated image
var imageParts = response.Candidates.First().Content.Parts
.OfType<ModelContent.InlineDataPart>()
.Where(part => part.MimeType == "image/png");
foreach (var imagePart in imageParts) {
// Load the Image into a Unity Texture2D object
UnityEngine.Texture2D texture2D = new(2, 2);
if (texture2D.LoadImage(imagePart.Data.ToArray())) {
// Do something with the image
}
}
Варианты замены конфигурации
В этом разделе описаны варианты замены различных параметров конфигурации модели, которые помогут контролировать реакцию модели.
Настройки безопасности
Для моделей Imagen параметры безопасности настраиваются с помощью ImagenSafetySettings . Однако для моделей Gemini Image необходимо перейти на использование SafetySetting .
Параметры конфигурации модели
Модели Imagen настраиваются с помощью ImagenGenerationConfig . Однако для моделей Gemini Image необходимо перейти на использование GenerationConfig и, при необходимости, вложенного ImageConfig (это доступно начиная с версий SDK, выпущенных в начале мая 2026 года).
В разделе GenerationConfig установите режим ответа IMAGE (как показано в примерах кода "после" ранее в этом руководстве). Обратите внимание, что вы можете дополнительно настроить модели Gemini Image для возврата как IMAGE так и TEXT .
Ознакомьтесь со следующей таблицей, чтобы понять, как перенести параметры конфигурации вашей модели из Imagen в модели Gemini Image:
| Модели изображений | Модели Gemini Image ("Нано-банан") |
|---|---|
addWatermark | Не поддерживается Модели Gemini Image всегда возвращают сгенерированные изображения с водяным знаком SynthID. |
aspectRatio | Используйте Примеры кода и поддерживаемые значения см. в разделе «Настройка генерации изображений» в руководстве по моделям изображений Gemini . |
imageFormat | Не поддерживается Модели Gemini Image всегда возвращают сгенерированные изображения в формате PNG. |
negativePrompt | Не поддерживается Обратите внимание, что отрицательные подсказки — это устаревшая функция, и её поддержка прекращена с тех пор. |
numberOfImages | Не поддерживается Модели Gemini Image всегда возвращают одно сгенерированное изображение. |
personGeneration | Не поддерживается По умолчанию модели Gemini Image позволяют создавать изображения людей. |