تتيح لك حِزم تطوير البرامج (SDK) الوصول إلى نماذج Imagen (من خلال Imagen API) حتى تتمكّن من إنشاء صور من طلب نصي.Firebase AI Logic باستخدام هذه الإمكانية، يمكنك تنفيذ إجراءات مثل:
- إنشاء صور من طلبات مكتوبة بلغة طبيعية
- إنشاء صور بتنسيقات وأنماط متنوعة
- عرض النص في الصور
يُرجى العِلم أنّ Firebase AI Logic لا يتيح بعد كل الميزات المتوفرة في طُرز Imagen. يمكنك الاطّلاع على مزيد من المعلومات في قسم الميزات والإمكانات المتوافقة أدناه.
الانتقال إلى رمز الإدخال النصي فقط
الاختيار بين طرازَي Gemini وImagen
تتيح حِزم تطوير البرامج (SDK) التي تحمل الرقم Firebase AI Logic إنشاء الصور باستخدام نموذج Gemini أو نموذج Imagen. في معظم حالات الاستخدام، ابدأ بـ Gemini، ثم اختَر Imagen للمهام المتخصصة التي تكون فيها جودة الصورة مهمة.
يُرجى العِلم أنّ حِزم تطوير البرامج (SDK) Firebase AI Logic لا تتيح بعد إدخال الصور (كما هو الحال عند التعديل) باستخدام نماذج Imagen. لذا، إذا كنت تريد العمل مع صور إدخال، يمكنك استخدام نموذج Gemini بدلاً من ذلك.
اختَر Gemini عندما تريد:
- استخدام المعرفة العالمية والاستدلال لإنشاء صور ذات صلة بالسياق
- لدمج النصوص والصور بسلاسة
- لدمج صور دقيقة ضمن تسلسلات نصية طويلة
- لتعديل الصور بشكل حواري مع الحفاظ على السياق
اختَر Imagen عندما تريد:
- لإعطاء الأولوية لجودة الصورة أو الواقعية أو التفاصيل الفنية أو الأنماط المحددة (مثل الانطباعية أو الأنمي)
- لتحديد نسبة العرض إلى الارتفاع أو تنسيق الصور التي يتم إنشاؤها بشكل صريح
قبل البدء
انقر على مزوّد Gemini API لعرض المحتوى والرمز الخاصين بالمزوّد على هذه الصفحة. |
إذا لم يسبق لك إجراء ذلك، أكمل دليل بدء الاستخدام الذي يوضّح كيفية إعداد مشروعك على Firebase، وربط تطبيقك بـ Firebase، وإضافة حزمة تطوير البرامج (SDK)، وتهيئة خدمة الخلفية لمزوّد واجهة برمجة التطبيقات الذي اخترته، وإنشاء مثيل ImagenModel
.
الطُرز التي تتيح هذه الإمكانية
لا يتيح Gemini Developer API إنشاء الصور إلا باستخدام أحدث إصدار ثابت من نموذج Imagen 3، وليس باستخدام نماذج Imagen الأخرى. تنطبق Imagenمحدودية النموذج هذه بغض النظر عن طريقة وصولك إلى Gemini Developer API.
imagen-3.0-generate-002
إنشاء صور من إدخالات نصية فقط
يمكنك أن تطلب من نموذج 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.ai(backend = GenerativeBackend.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 صورة واحدة فقط لكل طلب بشكلٍ تلقائي.
ومع ذلك، يمكنك أن تطلب من نموذج 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.ai(backend = GenerativeBackend.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 العديد من الميزات المتعلّقة بإنشاء الصور. يوضّح هذا القسم ما هو متاح عند استخدام النماذج مع Firebase AI Logic.
الميزات والإمكانيات المتوافقة
يتوافق Firebase AI Logic مع الميزات التالية في نماذج Imagen.
إنشاء صور للأشخاص والوجوه (بشرط أن يكون مشروعك على Firebase قد حصل على موافقة من Google Cloud)
إنشاء نص ضمن الصور التي تم إنشاؤها
إضافة علامة مائية إلى الصور من إنشاء الذكاء الاصطناعي
ضبط مَعلمات إنشاء الصور، مثل عدد الصور التي تم إنشاؤها ونسبة العرض إلى الارتفاع والعلامة المائية
ضبط إعدادات الأمان
لا يتيح Firebase AI Logic استخدام الميزات المتقدّمة لطُرز Imagen.
يُرجى العِلم أنّ معظم هذه الميزات تتطلّب أن يكون المستخدم ضمن قائمة معتمَدة من المستخدمين حتى عند استخدام نماذج Imagen من جهة الخادم.
ميزات تعديل الصور أو التلاعب بها، بما في ذلك زيادة كثافة بكسل الصور
تضمين صور في الطلب المُرسَل إلى النموذج (مثل التعلّم ببضع فُرَص)
التحقّق من العلامات المائية الرقمية باستخدام حِزم تطوير البرامج (SDK)
إذا أردت التحقّق من أنّ الصورة تتضمّن علامة مائية، يمكنك تحميلها إلى Vertex AI Studio باستخدام علامة التبويب الوسائط.إنشاء "صور حية" من نص (إنشاء ملفات MP4)
إنشاء صور باستخدام نمط محدّد مسبقًا
تفعيل
includeSafetyAttributes
، ما يعني أنّه لا يمكن إرجاعsafetyAttributes.categories
وsafetyAttributes.scores
إيقاف تحسين الطلبات (المَعلمة
enhancePrompt
)، ما يعني أنّ أداة إعادة كتابة الطلبات المستندة إلى نماذج اللغات الكبيرة ستضيف تلقائيًا المزيد من التفاصيل إلى الطلب المقدَّم لتقديم صور أعلى جودة تعكس الطلب المقدَّم بشكل أفضلكتابة صورة تم إنشاؤها مباشرةً في Google Cloud Storage كجزء من الرد الذي يقدّمه النموذج (المَعلمة
storageUri
) بدلاً من ذلك، يتم دائمًا عرض الصور كبايتات صور مرمّزة بـ Base64 في الردّ.
إذا أردت تحميل صورة من إنشاء الذكاء الاصطناعي التوليدي إلى Cloud Storage، يمكنك استخدام Cloud Storage for Firebase.
المواصفات والقيود
الموقع (لكل طلب) | القيمة |
---|---|
الحدّ الأقصى لعدد الرموز المميزة للإدخال | 480 رمزًا مميزًا |
الحد الأقصى لعدد الصور الناتجة | 4 صور |
درجات دقة الصور الناتجة المتوافقة (بالبكسل) |
|
ما هي الإجراءات الأخرى التي يمكنك تنفيذها؟
-
ابدأ التفكير في الاستعداد للإنتاج (راجِع قائمة المهام لعملية الإنتاج)، بما في ذلك:
- إعداد Firebase App Check لحماية Gemini API من إساءة الاستخدام من قِبل العملاء غير المصرَّح لهم
- دمج Firebase Remote Config لتعديل القيم في تطبيقك (مثل اسم النموذج) بدون طرح إصدار جديد من التطبيق.
كيفية التحكّم في إنشاء المحتوى
- التعرّف على تصميم الطلبات، بما في ذلك أفضل الممارسات والاستراتيجيات وأمثلة على الطلبات
- اضبط Imagen مَعلمات النموذج مثل نسبة العرض إلى الارتفاع وإنشاء الأشخاص ووضع العلامات المائية.
- استخدام إعدادات الأمان لتعديل احتمالية تلقّي ردود قد تُعتبر ضارة
مزيد من المعلومات عن النماذج المتاحة
يمكنك الاطّلاع على النماذج المتاحة لمختلف حالات الاستخدام والحصص والأسعار الخاصة بها.تقديم ملاحظات حول تجربتك مع Firebase AI Logic