Vertex AI in Firebase SDK จะช่วยให้คุณเข้าถึงโมเดล Imagen 3 (ผ่าน Imagen API) เพื่อให้คุณสร้างรูปภาพจากพรอมต์ข้อความได้ ความสามารถนี้ช่วยให้คุณทำสิ่งต่างๆ ได้ เช่น
- สร้างรูปภาพจากพรอมต์ที่เขียนด้วยภาษาที่เป็นธรรมชาติ
- สร้างรูปภาพในหลากหลายรูปแบบและสไตล์
- แสดงผลข้อความในรูปภาพ
โปรดทราบว่า Vertex AI in Firebase ยังไม่รองรับฟีเจอร์บางอย่างที่พร้อมใช้งานสำหรับรุ่น Imagen ดูข้อมูลเพิ่มเติมในความสามารถและฟีเจอร์ที่รองรับในหน้านี้
ข้ามไปยังโค้ดสําหรับการป้อนข้อความเท่านั้น
ก่อนเริ่มต้น
หากยังไม่ได้ดำเนินการ ให้ทําตามคู่มือเริ่มต้นใช้งาน ซึ่งอธิบายวิธีตั้งค่าโปรเจ็กต์ Firebase, เชื่อมต่อแอปกับ Firebase, เพิ่ม SDK, เริ่มต้นบริการ Vertex AI และสร้างอินสแตนซ์ ImagenModel
ตรวจสอบว่าคุณใช้ไลบรารี Firebase เวอร์ชันเป็นอย่างน้อย
iOS+: v11.9.0+ |
Android: v16.2.0+ (BoM: v33.10.0+) |
เว็บ: v11.4.1+ |
Flutter: v1.4.0+ (BoM: v3.8.0+)
รุ่นที่รองรับความสามารถนี้
โมเดล Imagen 3 รองรับการสร้างรูปภาพ เราจะรองรับการสร้างรูปภาพตามรุ่น Gemini 2.0 ในเร็วๆ นี้
สร้างรูปภาพจากอินพุตที่เป็นข้อความเท่านั้น
คุณขอให้โมเดล Imagen สร้างรูปภาพได้โดยป้อนพรอมต์เป็นข้อความ คุณสามารถสร้างรูปภาพเดียวหรือรูปภาพหลายรูปก็ได้
สร้างรูปภาพ 1 รูปจากอินพุตที่เป็นข้อความเท่านั้น
โปรดอ่านส่วนก่อนเริ่มต้นของคู่มือนี้ให้เสร็จสิ้นก่อนลองใช้ตัวอย่างนี้
คุณสามารถขอให้โมเดล Imagen สร้างรูปภาพเดียวโดยป้อนพรอมต์เป็นข้อความ
อย่าลืมสร้างอินสแตนซ์ ImagenModel
และเรียกใช้ generateImages
Swift
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
let model = vertex.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 Imagen with Vertex AI in Firebase is in public preview
// It requires opt-in to use the API
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
// Initialize the Vertex AI service and create an `ImagenModel` instance
// Specify an Imagen 3 model that supports your use case
val imagenModel = Firebase.vertexAI.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 Vertex AI service and create an `ImagenModel` instance
// Specify an Imagen 3 model that supports your use case
ImagenModel imagenModel = FirebaseVertexAI.getInstance().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 { getVertexAI, getImagenModel } from "firebase/vertexai";
// 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 Vertex AI service
const vertexAI = getVertexAI(firebaseApp);
// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
const imagenModel = getImagenModel(
vertexAI,
{
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_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI service and create an `ImagenModel` instance
// Specify an Imagen 3 model that supports your use case
final model =
FirebaseVertexAI.instance.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.');
}
ดูวิธีเลือกโมเดลและตำแหน่ง (ไม่บังคับ) ที่เหมาะสมกับกรณีการใช้งานและแอป
สร้างรูปภาพหลายรูปจากอินพุตที่เป็นข้อความเท่านั้น
โปรดอ่านส่วนก่อนเริ่มต้นของคู่มือนี้ให้เสร็จสิ้นก่อนลองใช้ตัวอย่างนี้
โดยค่าเริ่มต้น โมเดล Imagen 3 จะสร้างรูปภาพเพียง 1 รูปต่อคำขอ
อย่างไรก็ตาม คุณสามารถขอให้โมเดล Imagen สร้างรูปภาพหลายรูปต่อคำขอได้โดยระบุ ImagenGenerationConfig
เมื่อสร้างอินสแตนซ์ ImagenModel
อย่าลืมสร้างอินสแตนซ์ ImagenModel
และเรียกใช้ generateImages
Swift
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
let model = vertex.imagenModel(
modelName: "imagen-3.0-generate-002",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/vertex-ai/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 Imagen with Vertex AI in Firebase is in public preview
// It requires opt-in to use the API
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
// Initialize the Vertex AI service and create an `ImagenModel` instance
// Specify an Imagen 3 model that supports your use case
val imagenModel = Firebase.vertexAI.imagenModel(
modelName = "imagen-3.0-generate-002",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/vertex-ai/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/vertex-ai/model-parameters
ImagenGenerationConfig imagenGenerationConfig = new ImagenGenerationConfig.Builder()
.setNumberOfImages(4)
.build();
// Initialize the Vertex AI service and create an `ImagenModel` instance
// Specify an Imagen 3 model that supports your use case
ImagenModel imagenModel = FirebaseVertexAI.getInstance().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 { getVertexAI, getImagenModel } from "firebase/vertexai";
// 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 Vertex AI service
const vertexAI = getVertexAI(firebaseApp);
// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
const imagenModel = getImagenModel(
vertexAI,
{
model: "imagen-3.0-generate-002",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/vertex-ai/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_vertexai/firebase_vertexai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Vertex AI service and create an `ImagenModel` instance
// Specify an Imagen 3 model that supports your use case
final model = FirebaseVertexAI.instance.imagenModel(
model: 'imagen-3.0-generate-002',
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/vertex-ai/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.');
}
ดูวิธีเลือกโมเดลและตำแหน่ง (ไม่บังคับ) ที่เหมาะสมกับกรณีการใช้งานและแอป
ฟีเจอร์และข้อกำหนดที่รองรับ
โมเดล Imagen 3 มีฟีเจอร์มากมายที่เกี่ยวข้องกับการสร้างรูปภาพ ส่วนนี้จะอธิบายสิ่งที่รองรับเมื่อใช้โมเดลกับ Vertex AI in Firebase
ความสามารถและฟีเจอร์ที่รองรับ
Vertex AI in Firebase รองรับฟีเจอร์เหล่านี้ของรุ่น Imagen 3
การสร้างผู้คนและใบหน้า (ในกรณีที่โปรเจ็กต์ Firebase ของคุณได้รับการอนุมัติจาก Google Cloud)
การสร้างข้อความภายในรูปภาพที่สร้างขึ้น
การเพิ่มลายน้ำลงในรูปภาพที่สร้างขึ้น
การกำหนดค่าพารามิเตอร์การสร้างรูปภาพ เช่น จำนวนรูปภาพที่สร้างขึ้น สัดส่วนภาพ และการใส่ลายน้ำ
การกำหนดค่าการตั้งค่าความปลอดภัย
Vertex AI in Firebaseไม่รองรับฟีเจอร์ขั้นสูงเหล่านี้ของรุ่น Imagen 3
โปรดทราบว่าฟีเจอร์ส่วนใหญ่เหล่านี้กำหนดให้ต้องอยู่ในรายชื่อผู้ใช้ที่ได้รับอนุมัติแม้ว่าจะใช้โมเดล Imagen ฝั่งเซิร์ฟเวอร์ก็ตาม
ฟีเจอร์แต่งภาพหรือดัดแปลงรูปภาพ ซึ่งรวมถึงการเพิ่มขนาดรูปภาพ
การรวมรูปภาพในคำขอไปยังโมเดล (เช่น สําหรับการเรียนรู้แบบตัวอย่างน้อย)
การยืนยันลายน้ำดิจิทัลโดยใช้ SDK
หากต้องการยืนยันว่ารูปภาพมีลายน้ำ คุณสามารถอัปโหลดรูปภาพนั้นลงใน Vertex AI Studio โดยใช้แท็บสื่อการสร้าง"รูปภาพแบบสด" จากข้อความ (การสร้าง MP4)
การสร้างรูปภาพโดยใช้สไตล์ที่กำหนดไว้ล่วงหน้า
การเปิดใช้
includeSafetyAttributes
ซึ่งหมายความว่าระบบจะแสดงผลsafetyAttributes.categories
และsafetyAttributes.scores
ไม่ได้การปิดใช้การเพิ่มประสิทธิภาพพรอมต์ (พารามิเตอร์
enhancePrompt
) ซึ่งหมายความว่าเครื่องมือการเขียนพรอมต์ใหม่ตาม LLM จะเพิ่มรายละเอียดเพิ่มเติมลงในพรอมต์ที่ระบุโดยอัตโนมัติเสมอเพื่อให้ได้รูปภาพที่มีคุณภาพสูงขึ้นซึ่งสะท้อนถึงพรอมต์ที่ระบุได้ดีขึ้นการเขียนรูปภาพที่สร้างขึ้นลงใน Google Cloud Storage โดยตรงโดยเป็นส่วนหนึ่งของคําตอบจากโมเดล (พารามิเตอร์
storageUri
) แต่ระบบจะแสดงผลรูปภาพเป็นไบต์รูปภาพที่เข้ารหัสฐาน 64 ในการตอบกลับเสมอ
หากต้องการอัปโหลดรูปภาพที่สร้างขึ้นไปยัง Cloud Storage ให้ใช้ Cloud Storage for Firebase
ข้อกำหนดและข้อจำกัด
ขีดจํากัด (ต่อคําขอ) | Imagen 3 | Imagen 3 Fast |
---|---|---|
จำนวนโทเค็นอินพุตสูงสุด | โทเค็น 480 รายการ | โทเค็น 480 รายการ |
จํานวนรูปภาพเอาต์พุตสูงสุด | รูปภาพ 4 รูป | รูปภาพ 4 รูป |
ความละเอียดรูปภาพเอาต์พุตที่รองรับ (พิกเซล) |
|
|
คุณยังทำอะไรได้อีกบ้าง
- เริ่มคิดเกี่ยวกับการเตรียมความพร้อมสําหรับเวอร์ชันที่ใช้งานจริง ซึ่งรวมถึงการตั้งค่า Firebase App Check เพื่อปกป้อง API ที่คุณใช้ในแอปจากการละเมิดโดยไคลเอ็นต์ที่ไม่ได้รับอนุญาต นอกจากนี้ โปรดอ่านรายการตรวจสอบเวอร์ชันที่ใช้งานจริง
ดูวิธีควบคุมการสร้างเนื้อหา
- ทำความเข้าใจการออกแบบพรอมต์ ซึ่งรวมถึงแนวทางปฏิบัติแนะนำ กลยุทธ์ และตัวอย่างพรอมต์
- กำหนดค่าพารามิเตอร์ของโมเดล Imagen เช่น สัดส่วนภาพ การสร้างบุคคล และการใส่ลายน้ำ
- ใช้การตั้งค่าความปลอดภัยเพื่อปรับความเป็นไปได้ที่จะได้รับคำตอบที่อาจถือว่าอันตราย
ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบที่รองรับ
ดูข้อมูลเกี่ยวกับรูปแบบที่ใช้ได้กับกรณีการใช้งานต่างๆ รวมถึงโควต้าและราคาแสดงความคิดเห็นเกี่ยวกับประสบการณ์การใช้งาน Vertex AI in Firebase