کیتهای توسعه نرمافزار (SDK) فایربیس هوش مصنوعی لاجیک (Firebase AI Logic) به شما امکان دسترسی به مدلهای ایمیجِن (Imagen) را میدهند (از طریق Imagen API ) تا بتوانید تصاویر را از یک اعلان متنی تولید کنید. با این قابلیت، میتوانید کارهایی مانند موارد زیر را انجام دهید:
- تولید تصاویر از دستورالعملهای نوشته شده به زبان طبیعی
- تولید تصاویر در طیف گستردهای از فرمتها و سبکها
- نمایش متن در تصاویر
این راهنما نحوه تولید تصاویر با استفاده از Imagen را تنها با ارائه یک متن توضیح میدهد.
البته توجه داشته باشید که Imagen میتواند با استفاده از قابلیت سفارشیسازی خود (در حال حاضر فقط برای اندروید و فلاتر) تصاویر را بر اساس یک تصویر مرجع نیز تولید کند. در درخواست، شما یک متن و یک تصویر مرجع ارائه میدهید که مدل را برای تولید یک تصویر جدید بر اساس سبک، موضوع (مانند یک محصول، شخص یا حیوان) یا یک کنترل مشخص شده راهنمایی میکند. به عنوان مثال، میتوانید یک تصویر جدید از عکس یک گربه یا نقاشی یک موشک و ماه تولید کنید.
انتخاب بین مدلهای Gemini و Imagen
کیتهای توسعه نرمافزار (SDK) فایربیس آی لاجیک (Firebase AI Logic) از تولید و ویرایش تصویر با استفاده از مدل جمینی (Gemini) یا مدل ایمیجن (Imagen) پشتیبانی میکنند.
برای اکثر موارد استفاده، با Gemini شروع کنید و سپس Imagen را فقط برای کارهای تخصصی که کیفیت تصویر بسیار مهم است انتخاب کنید.
وقتی میخواهید، جمینی را انتخاب کنید:
- استفاده از دانش و استدلال جهانی برای تولید تصاویر مرتبط با متن.
- برای ترکیب یکپارچه متن و تصاویر یا قرار دادن متن و تصویر در خروجی.
- برای جاسازی تصاویر دقیق در توالیهای متنی طولانی.
- برای ویرایش تصاویر به صورت محاورهای و در عین حال حفظ زمینه.
وقتی میخواهید Imagen را انتخاب کنید:
- اولویتبندی کیفیت تصویر، واقعگرایی نوری، جزئیات هنری یا سبکهای خاص (مثلاً امپرسیونیسم یا انیمه).
- برای القای برندسازی، سبک یا تولید لوگو و طرحهای محصول.
- برای مشخص کردن صریح نسبت ابعاد یا قالب تصاویر تولید شده.
قبل از اینکه شروع کنی
برای مشاهده محتوا و کد مخصوص ارائهدهنده در این صفحه، روی ارائهدهنده API Gemini خود کلیک کنید. |
اگر هنوز این کار را نکردهاید، راهنمای شروع به کار را تکمیل کنید، که نحوه راهاندازی پروژه Firebase، اتصال برنامه به Firebase، افزودن SDK، راهاندازی سرویس backend برای ارائهدهنده API انتخابی شما و ایجاد یک نمونه ImagenModel
شرح میدهد.
مدلهایی که از این قابلیت پشتیبانی میکنند
رابط برنامهنویسی نرمافزار Gemini Developer از تولید تصویر توسط جدیدترین مدلهای پایدار Imagen پشتیبانی میکند. این محدودیت مدلهای Imagen پشتیبانیشده صرفنظر از نحوه دسترسی شما به رابط برنامهنویسی نرمافزار Gemini Developer اعمال میشود.
-
imagen-4.0-generate-001
-
imagen-4.0-fast-generate-001
-
imagen-4.0-ultra-generate-001
-
imagen-3.0-generate-002
تولید تصاویر از ورودی فقط متنی
شما میتوانید از یک مدل Imagen بخواهید که تنها با ارسال متن، تصاویر را تولید کند. میتوانید یک تصویر یا چندین تصویر تولید کنید.
همچنین میتوانید گزینههای پیکربندی مختلفی را برای تولید تصویر ، مانند نسبت ابعاد و فرمت تصویر، تنظیم کنید.
تولید یک تصویر از ورودی فقط متنی
قبل از امتحان کردن این نمونه، بخش «قبل از شروع» این راهنما را برای راهاندازی پروژه و برنامه خود تکمیل کنید. در آن بخش، شما همچنین میتوانید روی دکمهای برای ارائهدهندهی API Gemini انتخابی خود کلیک کنید تا محتوای خاص ارائهدهنده را در این صفحه مشاهده کنید . |
شما میتوانید از یک مدل Imagen بخواهید که تنها با ارسال متن، یک تصویر واحد تولید کند.
حتماً یک نمونه ImagenModel
ایجاد کنید و generateImages
فراخوانی کنید.
سویفت
import FirebaseAI
// 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-4.0-generate-001")
// 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)
Kotlin
suspend fun generateImage() {
// 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-4.0-generate-001")
// 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()
}
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-4.0-generate-001");
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<ImagenInlineImage>>() {
@Override
public void onSuccess(ImagenGenerationResponse<ImagenInlineImage> 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());
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
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-4.0-generate-001" });
// 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];
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 model = FirebaseAI.googleAI();
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model = ai.imagenModel(model: 'imagen-4.0-generate-001');
// 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.');
}
وحدت
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-4.0-generate-001");
// 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();
یاد بگیرید که چگونه یک مدل را انتخاب کنیدمناسب برای مورد استفاده و برنامه شما.
تولید چندین تصویر از ورودی فقط متنی
قبل از امتحان کردن این نمونه، بخش «قبل از شروع» این راهنما را برای راهاندازی پروژه و برنامه خود تکمیل کنید. در آن بخش، شما همچنین میتوانید روی دکمهای برای ارائهدهندهی API Gemini انتخابی خود کلیک کنید تا محتوای خاص ارائهدهنده را در این صفحه مشاهده کنید . |
به طور پیشفرض، مدلهای Imagen فقط یک تصویر در هر درخواست تولید میکنند. با این حال، میتوانید با ارائه ImagenGenerationConfig
هنگام ایجاد نمونه ImagenModel
، از یک مدل Imagen بخواهید که در هر درخواست چندین تصویر تولید کند.
حتماً یک نمونه ImagenModel
ایجاد کنید و generateImages
فراخوانی کنید.
سویفت
import FirebaseAI
// 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-4.0-generate-001",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig: ImagenGenerationConfig(numberOfImages: 4)
)
// Provide an image generation prompt
let prompt = "An astronaut riding a horse"
// To generate images, call `generateImages` with the text prompt
let response = try await model.generateImages(prompt: prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if let filteredReason = response.filteredReason {
print(filteredReason)
}
// Handle the generated images
let uiImages = response.images.compactMap { UIImage(data: $0.data) }
Kotlin
suspend fun generateImage() {
// 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(
modelName = "imagen-4.0-generate-001",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig = ImagenGenerationConfig(numberOfImages = 4)
)
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate images, call `generateImages` with the text prompt
val imageResponse = model.generateImages(prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (imageResponse.filteredReason != null) {
Log.d(TAG, "FilteredReason: ${imageResponse.filteredReason}")
}
for (image in imageResponse.images) {
val bitmap = image.asBitmap()
// Use the bitmap to display the image in your UI
}
}
Java
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
ImagenGenerationConfig imagenGenerationConfig = new ImagenGenerationConfig.Builder()
.setNumberOfImages(4)
.build();
// 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-4.0-generate-001",
/* imageGenerationConfig */ imagenGenerationConfig);
ImagenModelFutures model = ImagenModelFutures.from(imagenModel);
// Provide an image generation prompt
String prompt = "An astronaut riding a horse";
// To generate images, call `generateImages` with the text prompt
Futures.addCallback(model.generateImages(prompt), new FutureCallback<ImagenGenerationResponse<ImagenInlineImage>>() {
@Override
public void onSuccess(ImagenGenerationResponse<ImagenInlineImage> result) {
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (result.getFilteredReason() != null){
Log.d("TAG", "FilteredReason: " + result.getFilteredReason());
}
// Handle the generated images
List<ImagenInlineImage> images = result.getImages();
for (ImagenInlineImage image : images) {
Bitmap bitmap = image.asBitmap();
// Use the bitmap to display the image in your UI
}
}
@Override
public void onFailure(Throwable t) {
// ...
}
}, Executors.newSingleThreadExecutor());
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
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-4.0-generate-001",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig: {
numberOfImages: 4
}
}
);
// Provide an image generation prompt
const prompt = "An astronaut riding a horse.";
// To generate images, 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 images = response.images[0];
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-4.0-generate-001',
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig: ImagenGenerationConfig(numberOfImages: 4),
);
// Provide an image generation prompt
const prompt = 'An astronaut riding a horse.';
// To generate images, call `generateImages` with the text prompt
final 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 != null) {
print(response.filteredReason);
}
if (response.images.isNotEmpty) {
final images = response.images;
for(var image in images) {
// 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-4.0-generate-001",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig: new ImagenGenerationConfig(numberOfImages: 4)
);
// 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);
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (!string.IsNullOrEmpty(response.FilteredReason)) {
UnityEngine.Debug.Log("Filtered reason: " + response.FilteredReason);
}
// Handle the generated images
var images = response.Images.Select(image => image.AsTexture2D());
یاد بگیرید که چگونه یک مدل را انتخاب کنیدمناسب برای مورد استفاده و برنامه شما.
ویژگیها و الزامات پشتیبانیشده
مدلهای Imagen ویژگیهای زیادی در رابطه با تولید تصویر ارائه میدهند. این بخش مواردی را که هنگام استفاده از مدلها با Firebase AI Logic پشتیبانی میشوند، شرح میدهد.
قابلیتها و ویژگیهای پشتیبانیشده
منطق هوش مصنوعی فایربیس از این ویژگیهای مدلهای ایمیجِن پشتیبانی میکند:
تولید افراد، چهرهها و متن در تصاویر تولید شده
ویرایش تصاویر یا گنجاندن تصاویر در درخواست هنگام استفاده از Vertex AI Gemini API (در حال حاضر فقط برای اندروید و فلاتر)
اضافه کردن واترمارک به تصاویر تولید شده
تأیید واترمارکهای دیجیتال هنگام استفاده از Vertex AI Gemini API
اگر میخواهید تأیید کنید که یک تصویر دارای واترمارک است، میتوانید تصویر را با استفاده از تب رسانه در Vertex AI Studio آپلود کنید.پیکربندی پارامترهای تولید تصویر ، مانند تعداد تصاویر تولید شده، نسبت ابعاد و واترمارک
پیکربندی تنظیمات ایمنی
Firebase AI Logic از این ویژگیهای پیشرفته مدلهای Imagen پشتیبانی نمیکند :
غیرفعال کردن بازنویسی اعلان (پارامتر
enhancePrompt
). این بدان معناست که یک ابزار بازنویسی اعلان مبتنی بر LLM همیشه به طور خودکار جزئیات بیشتری را به اعلان ارائه شده اضافه میکند تا تصاویر با کیفیت بالاتری را ارائه دهد که بهتر منعکس کننده اعلان ارائه شده باشند.نوشتن یک تصویر تولید شده مستقیماً در Google Cloud Storage به عنوان بخشی از پاسخ مدل (پارامتر
storageUri
). در عوض، تصاویر همیشه به صورت بایتهای تصویر کدگذاری شده با base64 در پاسخ بازگردانده میشوند.
اگر میخواهید تصویر تولید شده را در Cloud Storage آپلود کنید، میتوانید از Cloud Storage for Firebase استفاده کنید.
مشخصات و محدودیتها
ملک (به ازای هر درخواست) | ارزش |
---|---|
حداکثر تعداد توکنهای ورودی | ۴۸۰ توکن |
حداکثر تعداد تصاویر خروجی | ۴ تصویر |
وضوح تصویر خروجی پشتیبانی شده (پیکسل) |
|
چه کار دیگری میتوانید انجام دهید؟
- شروع به فکر کردن در مورد آمادهسازی برای تولید کنید (به چک لیست تولید مراجعه کنید)، از جمله:
- راهاندازی Firebase App Check برای محافظت از API Gemini در برابر سوءاستفاده توسط کلاینتهای غیرمجاز.
- ادغام Firebase Remote Config برای بهروزرسانی مقادیر در برنامه شما (مانند نام مدل) بدون انتشار نسخه جدید برنامه.
آموزش کنترل تولید محتوا
- طراحی سریع، شامل بهترین شیوهها، استراتژیها و نمونههای سریع را درک کنید .
- پارامترهای مدل Imagen مانند نسبت ابعاد، تولید شخص و واترمارک را پیکربندی کنید .
- از تنظیمات ایمنی برای تنظیم احتمال دریافت پاسخهایی که ممکن است مضر تلقی شوند، استفاده کنید .
درباره مدلهای پشتیبانیشده بیشتر بدانید
درباره مدلهای موجود برای موارد استفاده مختلف و سهمیهها و قیمتگذاری آنها اطلاعات کسب کنید.درباره تجربه خود با Firebase AI Logic بازخورد دهید