تمام مدلهای Imagen منسوخ شدهاند و تا 30 ژوئن 2026 از رده خارج خواهند شد. این منسوخ شدن و از رده خارج شدن در سراسر گوگل و هم برای Gemini Developer API و هم برای Agent Platform Gemini API (که قبلاً Vertex AI نام داشت) قابل اجرا است.
قبل از این تاریخ خاموشی، برای جلوگیری از اختلال در سرویس، باید برنامههای خود را از استفاده از مدلهای Imagen به استفاده از مدلهای Gemini 3.x Image (مدلهای "نانو موز") منتقل کنید، همانطور که در این راهنما توضیح داده شده است.
اگر در مورد این منسوخ شدن و خاموش شدن با مشکل فوری مواجه شدید، با پشتیبانی Firebase تماس بگیرید .
مدلهای جایگزین Gemini Image
برای انتخاب مدل جایگزین Gemini 3.x Image برای برنامه خود، جدول زیر را بررسی کنید.
| مدل ایمیجن | مدلهای تصویر Gemini 3.x ("نانو موز") |
|---|---|
imagen-4.0-fast-generate-001 | gemini-3.1-flash-image (با MINIMAL سطح تفکر) |
imagen-4.0-generate-001 | gemini-3.1-flash-image (با سطح تفکر HIGH ) |
imagen-4.0-ultra-generate-001 | gemini-3-pro-image |
imagen-3.0-capability-001 | gemini-3.1-flash-image |
برنامه خود را منتقل کنید
این بخش نمونههای قبل و بعد از مهاجرت از مدل Imagen به مدل Gemini Image را نشان میدهد.
تولید تصویر از متن
برای مشاهده محتوا و کد مخصوص ارائهدهنده در این صفحه، روی ارائهدهنده API Gemini خود کلیک کنید. |
برای تولید تصویر از متن، برنامه خود را با ایجاد تغییرات زیر منتقل کنید:
از یک مدل جایگزین مناسب Gemini Image (مانند
gemini-3.1-flash-image) استفاده کنید.یک نمونه
GenerativeModelایجاد کنید (به جای یک نمونهImagenModel).گزینههای پیکربندی مدل را برای تطبیق با مدلهای Gemini Image بهروزرسانی کنید.
- به عنوان بخشی از این پیکربندی، یک روش پاسخ
IMAGEتنظیم کنید.
توجه داشته باشید که مدلهای تصویر Gemini را میتوان طوری پیکربندی کرد که هم تصویر و هم متن را برگردانند.
- به عنوان بخشی از این پیکربندی، یک روش پاسخ
سویفت
قبل از
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های مه ۲۰۲۶ در دسترس است).
به عنوان بخشی از GenerationConfig ، یک روش پاسخ IMAGE تنظیم کنید (همانطور که در نمونههای کد "بعد" در این راهنما نشان داده شده است). توجه داشته باشید که میتوانید به صورت اختیاری مدلهای تصویر Gemini را طوری پیکربندی کنید که هم IMAGE و هم TEXT برگردانند.
برای درک نحوه انتقال پارامترهای پیکربندی مدل خود از Imagen به مدلهای Gemini Image، جدول زیر را مرور کنید:
| مدلهای ایمیجن | مدلهای تصویر Gemini 3.x ("نانو موز") |
|---|---|
addWatermark | پشتیبانی نمیشود مدلهای تصویر Gemini همیشه تصاویر تولید شده را با واترمارک SynthID برمیگردانند. |
aspectRatio | استفاده از برای نمونههای کد و مقادیر پشتیبانیشده، به بخش «پیکربندی تولید تصویر» در راهنمای مدلهای تصویر Gemini مراجعه کنید. |
imageFormat | پشتیبانی نمیشود مدلهای تصویر Gemini همیشه تصاویر تولید شده را با فرمت PNG برمیگردانند. |
negativePrompt | پشتیبانی نمیشود توجه داشته باشید که اعلانهای منفی یک ویژگی قدیمی هستند و از آن زمان پشتیبانی نمیشوند. |
numberOfImages | پشتیبانی نمیشود مدلهای تصویر Gemini همیشه یک تصویر تولید شده واحد را برمیگردانند. |
personGeneration | پشتیبانی نمیشود به طور پیشفرض، مدلهای تصویر Gemini امکان تولید تصاویر افراد را فراهم میکنند. |