Firebase AI Logic SDK टूल की मदद से, Imagen मॉडल का ऐक्सेस मिलता है Imagen API) इससे टेक्स्ट प्रॉम्प्ट की मदद से इमेज जनरेट की जा सकती हैं. इस सुविधा की मदद से, ये काम किए जा सकते हैं:
- नैचुरल लैंग्वेज में लिखे गए प्रॉम्प्ट से इमेज जनरेट करना
- अलग-अलग फ़ॉर्मैट और स्टाइल में इमेज जनरेट करना
- इमेज में टेक्स्ट रेंडर करना
इस गाइड में, सिर्फ़ टेक्स्ट प्रॉम्प्ट देकर Imagen का इस्तेमाल करके इमेज जनरेट करने का तरीका बताया गया है.
हालांकि, ध्यान दें कि Imagen रेफ़रंस इमेज के आधार पर भी इमेज जनरेट कर सकता है. इसके लिए, यह अपनी कस्टमाइज़ेशन की सुविधा का इस्तेमाल करता है. फ़िलहाल, यह सुविधा सिर्फ़ Android और Flutter के लिए उपलब्ध है. अनुरोध में, एक टेक्स्ट प्रॉम्प्ट और रेफ़रंस के लिए इमेज दी जाती है. इससे मॉडल को, तय की गई स्टाइल, विषय (जैसे, कोई प्रॉडक्ट, व्यक्ति या जानवर) या कंट्रोल के आधार पर नई इमेज जनरेट करने में मदद मिलती है. उदाहरण के लिए, बिल्ली की फ़ोटो या रॉकेट और चांद की ड्रॉइंग से नई इमेज जनरेट की जा सकती है.
सिर्फ़ टेक्स्ट वाले इनपुट के लिए कोड पर जाएं
शुरू करने से पहले
|
इस पेज पर, Gemini API प्रोवाइडर के हिसाब से कॉन्टेंट और कोड देखने के लिए, उस पर क्लिक करें. |
अगर आपने अब तक, शुरुआती निर्देश वाली गाइड नहीं पढ़ी है, तो उसे पूरा करें. इसमें Firebase प्रोजेक्ट सेट अप करने, अपने ऐप्लिकेशन को Firebase से कनेक्ट करने, SDK टूल जोड़ने, चुने गए API प्रोवाइडर के लिए बैकएंड सेवा शुरू करने, और ImagenModel इंस्टेंस बनाने का तरीका बताया गया है.
ऐसे मॉडल जिनमें यह सुविधा उपलब्ध है
Gemini Developer API में, सबसे नए और स्टेबल Imagen मॉडल की मदद से इमेज जनरेट की जा सकती हैं. जिन मॉडल का इस्तेमाल किया जा सकता है उन पर लागू होने वाली यह पाबंदी, Imagen को ऐक्सेस करने के तरीके पर निर्भर नहीं करती. Gemini Developer API
imagen-4.0-generate-001imagen-4.0-fast-generate-001imagen-4.0-ultra-generate-001imagen-3.0-generate-002
सिर्फ़ टेक्स्ट वाले इनपुट से इमेज जनरेट करना
Imagen मॉडल से, सिर्फ़ टेक्स्ट प्रॉम्प्ट देकर इमेज जनरेट करने के लिए कहा जा सकता है. आप एक इमेज या एक से ज़्यादा इमेज जनरेट कर सकते हैं.
इमेज जनरेट करने के लिए, कई अलग-अलग कॉन्फ़िगरेशन विकल्प भी सेट किए जा सकते हैं, जैसे, आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) और इमेज का फ़ॉर्मैट.
सिर्फ़ टेक्स्ट वाले इनपुट से एक इमेज जनरेट करना
|
इस सैंपल को आज़माने से पहले, अपने प्रोजेक्ट और ऐप्लिकेशन को सेट अप करने के लिए, इस गाइड का
'शुरू करने से पहले' सेक्शन पूरा करें. उस सेक्शन में, आपको चुने गए Gemini API प्रोवाइडर के लिए एक बटन पर भी क्लिक करना होगा, ताकि इस पेज पर आपको प्रोवाइडर के हिसाब से कॉन्टेंट दिखे. |
Imagen मॉडल से, सिर्फ़ टेक्स्ट प्रॉम्प्ट देकर एक इमेज जनरेट करने के लिए कहा जा सकता है.
ImagenModel इंस्टेंस बनाना और generateImages को कॉल करना न भूलें.
Swift
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-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.');
}
Unity
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();
अपने इस्तेमाल के उदाहरण और ऐप्लिकेशन के हिसाब से मॉडल चुनने का तरीका जानें. मॉडल की जगह की जानकारी देना ज़रूरी नहीं है.
सिर्फ़ टेक्स्ट वाले इनपुट से एक से ज़्यादा इमेज जनरेट करना
|
इस सैंपल को आज़माने से पहले, अपने प्रोजेक्ट और ऐप्लिकेशन को सेट अप करने के लिए, इस गाइड का
'शुरू करने से पहले' सेक्शन पूरा करें. उस सेक्शन में, आपको चुने गए Gemini API प्रोवाइडर के लिए एक बटन पर भी क्लिक करना होगा, ताकि इस पेज पर आपको प्रोवाइडर के हिसाब से कॉन्टेंट दिखे. |
डिफ़ॉल्ट रूप से, Imagen मॉडल हर अनुरोध के लिए सिर्फ़ एक इमेज जनरेट करते हैं.
हालांकि, Imagen मॉडल से हर अनुरोध के लिए एक से ज़्यादा इमेज
जनरेट करने के लिए कहा जा सकता है, इसके लिए
ImagenGenerationConfig
इंस्टेंस बनाते समय ImagenModel दिया जा सकता है.
ImagenModel इंस्टेंस बनाना और generateImages को कॉल करना न भूलें.
Swift
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-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.');
}
Unity
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उपलब्ध सुविधाओं के बारे में बताया गया है.
इस्तेमाल की जा सकने वाली सुविधाएं और फ़ीचर
Firebase AI Logic में, Imagen मॉडल की ये सुविधाएं उपलब्ध हैं:
जनरेट की गई इमेज में लोगों, चेहरों, और टेक्स्ट को शामिल करना
अनुरोध में इमेज में बदलाव करना या इमेज शामिल करना Agent Platform Gemini API (formerly Vertex AI)का इस्तेमाल करते समय. फ़िलहाल, यह सुविधा सिर्फ़ Android और Flutter के लिए उपलब्ध है
जनरेट की गई इमेज में वॉटरमार्क जोड़ना
डिजिटल वॉटरमार्क की पुष्टि करना Agent Platform Gemini API (formerly Vertex AI)
का इस्तेमाल करते समय अगर आपको यह पुष्टि करनी है कि किसी इमेज में वॉटरमार्क है या नहीं, तो Agent Studio के मीडिया टैब का इस्तेमाल करके, उस इमेज को अपलोड किया जा सकता है.इमेज जनरेट करने के पैरामीटर कॉन्फ़िगर करना. जैसे, जनरेट की गई इमेज की संख्या, आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात), और वॉटरमार्किंग
सुरक्षा सेटिंग कॉन्फ़िगर करना
Firebase AI Logic में, Imagen मॉडल की ये ऐडवांस सुविधाएं उपलब्ध नहीं हैं:
प्रॉम्प्ट रीराइटर (
enhancePromptपैरामीटर) को बंद करना. इसका मतलब है कि एलएलएम पर आधारित प्रॉम्प्ट रीराइटिंग टूल, दिए गए प्रॉम्प्ट में हमेशा ज़्यादा जानकारी अपने-आप जोड़ देगा. इससे बेहतर क्वालिटी की इमेज मिलेंगी, जो दिए गए प्रॉम्प्ट को बेहतर तरीके से दिखाती हैं.जनरेट की गई इमेज को सीधे Google Cloud Storage में लिखना, जो मॉडल से मिले जवाब का हिस्सा है (
storageUriपैरामीटर). इसके बजाय, इमेज हमेशा जवाब में base64-encoded इमेज बाइट के तौर पर दिखती हैं.
अगर आपको जनरेट की गई इमेज को Cloud Storage पर अपलोड करना है, तो Cloud Storage for Firebase का इस्तेमाल किया जा सकता है.
खास जानकारी और सीमाएं
| प्रॉपर्टी (हर अनुरोध के लिए) | मान |
|---|---|
| इनपुट टोकन की ज़्यादा से ज़्यादा संख्या | 480 टोकन |
| आउटपुट इमेज की ज़्यादा से ज़्यादा संख्या | 4 इमेज |
| आउटपुट इमेज के लिए इस्तेमाल किए जा सकने वाले रिज़ॉल्यूशन (पिक्सेल) |
|
तुम और क्या कर सकती हो?
-
प्रोडक्शन के लिए तैयारी करने के बारे में सोचना शुरू करें (देखें
प्रोडक्शन चेकलिस्ट):
- अनधिकृत क्लाइंट के गलत इस्तेमाल से बचाने के लिए, Firebase App Check Gemini API को जितनी जल्दी हो सके सेट अप करें.
- अपने ऐप्लिकेशन में वैल्यू (जैसे, मॉडल का नाम) अपडेट करने के लिए, Firebase Remote Config को इंटिग्रेट करें. इसके लिए, ऐप्लिकेशन का नया वर्शन रिलीज़ करने की ज़रूरत नहीं होती.
कॉन्टेंट जनरेट करने की प्रोसेस को कंट्रोल करने का तरीका जानें
- प्रॉम्प्ट डिज़ाइन के बारे में जानें. इसमें सबसे सही तरीके, रणनीतियां, और प्रॉम्प्ट के उदाहरण शामिल हैं.
- Imagen Imagenमॉडल के पैरामीटर कॉन्फ़िगर करें जैसे, आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात), लोगों को जनरेट करना, और वॉटरमार्किंग.
- सुरक्षा सेटिंग का इस्तेमाल करके, ऐसे जवाब मिलने की संभावना को कम करें जिन्हें नुकसान पहुंचाने वाला माना जा सकता है.
इस्तेमाल किए जा सकने वाले मॉडल के बारे में ज़्यादा जानें
अलग-अलग इस्तेमाल के उदाहरणों के लिए उपलब्ध मॉडल , उनके कोटा और कीमत के बारे में जानें.सुझाव/राय देना या शिकायत करना के बारे में अपने अनुभव के साथ Firebase AI Logic