تتيح لك حِزم تطوير البرامج (SDK) من Firebase AI Logic الوصول إلى نماذج Imagen 3 (من خلال Imagen API) حتى تتمكّن من إنشاء صور من طلب نصي. باستخدام هذه الميزة، يمكنك تنفيذ إجراءات، مثل:
- إنشاء صور من طلبات مكتوبة بلغة طبيعية
- إنشاء صور بمجموعة كبيرة من التنسيقات والأنماط
- عرض النص في الصور
يُرجى العلم أنّ Firebase AI Logic لا يتيح بعد جميع الميزات المتوفّرة لطُرز Imagen. يمكنك الاطّلاع على مزيد من المعلومات في الميزات والإمكانات المتاحة في هذه ال صفحة.
الانتقال إلى الرمز البرمجي لإدخال نص فقط
قبل البدء
انقر على مزوّد Gemini API لعرض المحتوى الخاص بالمزوّد والرمز البرمجي في هذه الصفحة. |
أكمِل قراءة
دليل البدء، الذي يوضّح كيفية
إعداد مشروعك على Firebase وربط تطبيقك بـ Firebase وإضافة حزمة تطوير البرامج (SDK)
وبدء خدمة الخلفية لموفّر واجهة برمجة التطبيقات الذي اخترته،
وإنشاء مثيل ImagenModel
، إذا لم يسبق لك إجراء ذلك.
الطُرز التي تتيح هذه الميزة
تتيح نماذج Imagen 3 إنشاء الصور.
يُرجى العِلم أنّ Firebase AI Logic تتيح أيضًا إنشاء الصور باستخدام نماذج Gemini، وستتوفّر المستندات قريبًا.
إنشاء صور من نص
يمكنك أن تطلب من نموذج Imagen إنشاء صور من خلال تقديم طلب باستخدام نص. يمكنك إنشاء صورة واحدة أو صور متعددة.
إنشاء صورة واحدة من إدخال نصي فقط
قبل تجربة هذا العيّنة، عليك إكمال القسم
قبل البدء من هذا الدليل
لإعداد مشروعك وتطبيقك. في هذا القسم، عليك أيضًا النقر على زر Gemini API مقدّم الخدمة الذي اخترته حتى يظهر لك المحتوى الخاص بالمقدّم في هذه الصفحة. |
يمكنك أن تطلب من نموذج Imagen إنشاء صورة واحدة من خلال تقديم طلب باستخدام نص.
احرص على إنشاء مثيل ImagenModel
والاتصال برقم generateImages
.
Swift
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-3.0-generate-002")
// 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
// Using this SDK to access Imagen models is a Preview release and requires opt-in
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
// Initialize the Gemini Developer API backend service
// Create an `ImagenModel` instance with an Imagen model that supports your use case
val imagenModel = Firebase.googleAI.imagenModel("imagen-3.0-generate-002")
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate an image, call `generateImages` with the text prompt
val imageResponse = imagenModel.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-3.0-generate-002");
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 3 model that supports your use case
const imagenModel = getImagenModel(ai, { model: "imagen-3.0-generate-002" });
// 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 imagenModel.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
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model =
FirebaseAI.googleAI().imagenModel(model: 'imagen-3.0-generate-002');
// 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.');
}
Unity
لا يمكن استخدام Imagen مع Unity بعد، ولكن يمكنك التحقّق مرة أخرى قريبًا.
تعرَّف على كيفية اختيار نموذج مناسب لحالة الاستخدام والتطبيق.
إنشاء صور متعددة من إدخال نصي فقط
قبل تجربة هذا العيّنة، عليك إكمال القسم
قبل البدء من هذا الدليل
لإعداد مشروعك وتطبيقك. في هذا القسم، عليك أيضًا النقر على زر Gemini API مقدّم الخدمة الذي اخترته حتى يظهر لك المحتوى الخاص بالمقدّم في هذه الصفحة. |
بشكلٍ تلقائي، لا تنشئ نماذج Imagen 3 سوى صورة واحدة لكل طلب.
ومع ذلك، يمكنك أن تطلب من نموذج Imagen إنشاء صور متعددة
حسب الطلب من خلال تقديم
ImagenGenerationConfig
عند إنشاء مثيل ImagenModel
.
احرص على إنشاء مثيل ImagenModel
والاتصال برقم generateImages
.
Swift
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-3.0-generate-002",
// 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
// Using this SDK to access Imagen models is a Preview release and requires opt-in
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
// Initialize the Gemini Developer API backend service
// Create an `ImagenModel` instance with an Imagen model that supports your use case
val imagenModel = Firebase.googleAI.imagenModel(
modelName = "imagen-3.0-generate-002",
// 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 = imagenModel.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-3.0-generate-002",
/* 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 3 model that supports your use case
const imagenModel = getImagenModel(
ai,
{
model: "imagen-3.0-generate-002",
// 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 imagenModel.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
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model =
FirebaseAI.googleAI().imagenModel(
model: 'imagen-3.0-generate-002',
// 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.');
}
Unity
لا يمكن استخدام Imagen مع Unity بعد، ولكن يمكنك التحقّق مرة أخرى قريبًا.
تعرَّف على كيفية اختيار نموذج مناسب لحالة الاستخدام والتطبيق.
الميزات والمتطلبات المتوافقة
توفّر نماذج Imagen 3 العديد من الميزات ذات الصلة بإنشاء الصور. يصف هذا القسم الميزات المتاحة عند استخدام النماذج التي تتضمّن Firebase AI Logic.
الإمكانات والميزات المتاحة
تتيح Firebase AI Logic استخدام هذه الميزات في طُرز Imagen 3.
إنشاء أشخاص ووجوه (بعد حصول مشروعك على Firebase على موافقة من Google Cloud)
إنشاء نص داخل الصور التي يتم إنشاؤها
إضافة علامة مائية إلى الصور التي تم إنشاؤها
ضبط مَعلمات إنشاء الصور، مثل عدد الصور التي يتم إنشاؤها ونسبة العرض إلى الارتفاع ووضع العلامة المائية
ضبط إعدادات الأمان
Firebase AI Logic لا تتيح هذه الميزات المتقدّمة لطُرز Imagen 3.
يُرجى العِلم أنّ معظم هذه الميزات تتطلّب أن يكون المستخدم مُدرَجًا في قائمة مستخدمين موافَق عليها حتى عند استخدام نماذج Imagen من جهة الخادم.
ميزات تعديل الصور أو التلاعب بها، بما في ذلك زيادة كثافة بكسل الصور
تضمين الصور في الطلب المُرسَل إلى النموذج (مثلاً في حالة التعلّم ببضع فُرَص)
التحقّق من العلامات المائية الرقمية باستخدام حِزم تطوير البرامج (SDK)
إذا أردت التأكّد من أنّ الصورة تحتوي على علامة مائية، يمكنك تحميل الصورة إلى Vertex AI Studio باستخدام علامة التبويب الوسائط.إنشاء "صور حية" من نص (إنشاء ملفات MP4)
إنشاء صور باستخدام نمط محدّد مسبقًا
تفعيل
includeSafetyAttributes
، ما يعني أنّه لا يمكن إرجاعsafetyAttributes.categories
وsafetyAttributes.scores
إيقاف تحسين الطلب (المَعلمة
enhancePrompt
)، ما يعني أنّ أداة إعادة كتابة الطلبات المستندة إلى نموذج اللغة الكبيرة ستضيف تلقائيًا المزيد من التفاصيل إلى الطلب المقدَّم لتقديم صور ذات جودة أعلى تعكس الطلب المقدَّم بشكل أفضلكتابة صورة تم إنشاؤها مباشرةً في Google Cloud Storage كجزء من الاستجابة من النموذج (المَعلمة
storageUri
) بدلاً من ذلك، يتم عرض الصور دائمًا في الردّ على شكل وحدات بيانات صور مُرمّزة بترميز base64.
إذا أردت تحميل صورة تم إنشاؤها إلى Cloud Storage، يمكنك استخدام Cloud Storage for Firebase.
المواصفات والقيود
الحدود (لكل طلب) | Imagen 3 | Imagen 3 Fast |
---|---|---|
الحد الأقصى لعدد الرموز المميّزة للإدخال | 480 رمزًا مميزًا | 480 رمزًا مميزًا |
الحد الأقصى لعدد الصور التي يتم عرضها | 4 صور | 4 صور |
درجات دقة الصور المتوافقة للإخراج (بالبكسل) |
|
|
ما هي الإجراءات الأخرى التي يمكنك اتّخاذها؟
-
ابدأ التفكير في الاستعداد للإنتاج (اطّلِع على
قائمة التحقّق من الإنتاج)،
بما في ذلك:
- إعداد Firebase App Check بهدف حماية Gemini API من إساءة استخدام العملاء غير المصرّح لهم
- دمج Firebase Remote Config لتعديل القيم في تطبيقك (مثل اسم الطراز) بدون طرح إصدار جديد من التطبيق
التعرّف على كيفية التحكّم في إنشاء المحتوى
- التعرّف على تصميم الطلبات، بما في ذلك أفضل الممارسات والاستراتيجيات وأمثلة الطلبات
- ضبط Imagen مَعلمات النموذج مثل نسبة العرض إلى الارتفاع وإنشاء الأشخاص ووضع العلامة المائية
- استخدام إعدادات الأمان لضبط احتمالية تلقّي ردود قد تُعتبر ضارة
مزيد من المعلومات عن الطُرز المتوافقة
اطّلِع على مزيد من المعلومات عن النماذج المتاحة لحالات الاستخدام المختلفة واطلاعك على الحصص و الأسعار.تقديم ملاحظات حول تجربتك مع Firebase AI Logic