Firebase AI Logic SDK'ları, metin isteminden resim oluşturabilmeniz için Imagen 3 modellerine (Imagen API aracılığıyla) erişim sağlar. Bu özellik sayesinde şunları yapabilirsiniz:
- Doğal dilde yazılmış istemlerden resim oluşturma
- Çeşitli biçim ve stillerde resimler oluşturun
- Resimlerdeki metni oluşturma
Firebase AI Logic'ün henüz Imagen modellerinde kullanılabilen tüm özellikleri desteklemediğini unutmayın. Bu sayfanın ilerleyen bölümlerinde yer alan Desteklenen özellikler ve özellikler bölümünden daha fazla bilgi edinebilirsiniz.
Yalnızca metin girişi için koda atlama
Başlamadan önce
Bu sayfada sağlayıcıya özgü içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Henüz yapmadıysanız Firebase projenizi oluşturma, uygulamanızı Firebase'e bağlama, SDK'yı ekleme, seçtiğiniz API sağlayıcısı için arka uç hizmetini başlatma ve ImagenModel
örneği oluşturma hakkında bilgi veren başlangıç kılavuzunu tamamlayın.
Bu özelliği destekleyen modeller
Resim oluşturma, Imagen 3 modelleri tarafından desteklenir.
Firebase AI Logic, Gemini modelleri tarafından resim oluşturmayı da destekler. Yakında dokümanlar yayınlanacaktır.
Yalnızca metin girişinden resim oluşturma
Imagen modelinden metin isteğinde bulunarak görüntü oluşturmasını isteyebilirsiniz. Tek bir resim veya birden fazla resim oluşturabilirsiniz.
Yalnızca metin içeren girişten bir resim oluşturma
Bu örneği denemeden önce, projenizi ve uygulamanızı oluşturmak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu sayfada sağlayıcıya özel içerikleri görmek için seçtiğiniz Gemini API sağlayıcının düğmesini de bu bölümde tıklayacaksınız. |
Metin istemi vererek Imagen modelinden tek bir resim oluşturmasını isteyebilirsiniz.
ImagenModel
örneği oluşturduğunuzdan ve generateImages
işlevini çağırdığınızdan emin olun.
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 henüz Unity için desteklenmemektedir. Kısa süre sonra tekrar kontrol edin.
Kullanım alanınıza ve uygulamanıza uygun bir model nasıl seçeceğinizi öğrenin.
Yalnızca metin içeren girişten birden fazla resim oluşturma
Bu örneği denemeden önce, projenizi ve uygulamanızı oluşturmak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu sayfada sağlayıcıya özel içerikleri görmek için seçtiğiniz Gemini API sağlayıcının düğmesini de bu bölümde tıklayacaksınız. |
Varsayılan olarak Imagen 3 modelleri istek başına yalnızca bir resim oluşturur.
Ancak ImagenModel
örneğini oluştururken ImagenGenerationConfig
sağlayarak Imagen modelinden istek başına birden fazla resim oluşturmasını isteyebilirsiniz.
ImagenModel
örneği oluşturduğunuzdan ve generateImages
işlevini çağırdığınızdan emin olun.
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 henüz Unity için desteklenmemektedir. Kısa süre sonra tekrar kontrol edin.
Kullanım alanınıza ve uygulamanıza uygun bir model nasıl seçeceğinizi öğrenin.
Desteklenen özellikler ve gereksinimler
Imagen 3 modelleri, resim oluşturmayla ilgili birçok özellik sunar. Bu bölümde, Firebase AI Logic ile modelleri kullanırken desteklenenler açıklanmaktadır.
Desteklenen özellikler ve özellikler
Firebase AI Logic, Imagen 3 modellerinin bu özelliklerini destekler.
Kişi ve yüz oluşturma (Firebase projenizin Google Cloud'den onay almış olması gerekir)
Oluşturulan resimlerde metin oluşturma
Oluşturulan resimlere filigran ekleme
Oluşturulan resim sayısı, en boy oranı ve filigran gibi resim oluşturma parametrelerini yapılandırma
Güvenlik ayarlarını yapılandırma
Firebase AI Logic, Imagen 3 modellerinin bu ileri seviye özelliklerini desteklemez.
Bu özelliklerin çoğunun, Imagen modellerini sunucu tarafında kullanırken bile onaylanmış bir kullanıcı listesinde yer almayı gerektirdiğini unutmayın.
Resim düzenleme veya değiştirme özellikleri (resimleri büyütme dahil)
Modele gönderilen isteğe resim ekleme (ör. az sayıda örnekle öğrenme için)
SDK'ları kullanarak dijital filigranları doğrulama
Bir görüntünün filigran içerdiğini doğrulamak istiyorsanız görüntüyü Medya sekmesini kullanarak Vertex AI Studio'ya yükleyebilirsiniz.Metinden "canlı resimler" oluşturma (MP4 oluşturma)
Önceden tanımlanmış bir stili kullanarak resim oluşturma
includeSafetyAttributes
etkinleştirildiğindesafetyAttributes.categories
vesafetyAttributes.scores
iade edilemez.İstem geliştirme'yi (
enhancePrompt
parametresi) devre dışı bırakmak. Bu durumda, LLM tabanlı bir istem yeniden yazma aracı, sağlanan istemi daha iyi yansıtan daha yüksek kaliteli resimler sunmak için her zaman sağlanan istemin üzerine otomatik olarak daha fazla ayrıntı ekler.Oluşturulan resmi, modelden gelen yanıtın (
storageUri
parametresi) bir parçası olarak doğrudan Google Cloud Storage içine yazma. Bunun yerine, resimler yanıtta her zaman base64 kodlu resim baytları olarak döndürülür.
Oluşturulan bir resmi Cloud Storage'a yüklemek istiyorsanız Cloud Storage for Firebase'ı kullanabilirsiniz.
Özellikler ve sınırlamalar
Sınırlar (istek başına) | Imagen 3 | Imagen 3 Fast |
---|---|---|
Maksimum giriş jetonu sayısı | 480 jeton | 480 jeton |
Maksimum çıkış resmi sayısı | 4 resim | 4 resim |
Desteklenen çıkış resim çözünürlükleri (piksel) |
|
|
Başka neler yapabilirsiniz?
-
Üretime hazırlanmaya başlayın (üretim yapılacaklar listesine bakın). Örneğin:
- Gemini API'ı yetkisiz istemciler tarafından kötüye kullanıma karşı korumak için Firebase App Check'yi ayarlama
- Yeni bir uygulama sürümü yayınlamadan uygulamanızdaki değerleri (ör. model adı) güncellemek için Firebase Remote Config entegrasyonu
İçerik oluşturmayı nasıl kontrol edeceğinizi öğrenin
- En iyi uygulamalar, stratejiler ve örnek istemler dahil olmak üzere istem tasarımını anlama
- En boy oranı, kişi oluşturma ve filigran gibi Imagen model parametrelerini yapılandırın.
- Zararlı olarak değerlendirilebilecek yanıtlar alma olasılığını ayarlamak için güvenlik ayarlarını kullanın.
Desteklenen modeller hakkında daha fazla bilgi
Çeşitli kullanım alanları için kullanılabilen modeller, bunların kotaları ve fiyatlandırması hakkında bilgi edinin.Firebase AI Logic ile ilgili deneyiminiz hakkında geri bildirim verme