คุณขอให้Geminiโมเดลสร้างข้อความจากพรอมต์ข้อความเท่านั้นหรือ พรอมต์มัลติโมดัลได้ เมื่อใช้ Firebase AI Logic คุณจะส่งคำขอนี้จากแอปได้โดยตรง
พรอมต์มัลติโมดัลสามารถรวมอินพุตได้หลายประเภท (เช่น ข้อความพร้อมกับรูปภาพ, PDF, ไฟล์ข้อความธรรมดา, เสียง และวิดีโอ)
คู่มือนี้แสดงวิธีสร้างข้อความจากพรอมต์ข้อความเท่านั้นและจากพรอมต์มัลติโมดัลพื้นฐานที่มีไฟล์
ไปที่ตัวอย่างโค้ดสำหรับอินพุตที่เป็นข้อความเท่านั้น ไปที่ตัวอย่างโค้ดสำหรับอินพุตแบบมัลติโมดัล
ดูคำแนะนำอื่นๆ สำหรับตัวเลือกเพิ่มเติมในการทำงานกับข้อความ สร้างเอาต์พุตที่มีโครงสร้าง แชทแบบหลายรอบ การสตรีมแบบ 2 ทาง สร้างข้อความในอุปกรณ์ สร้างรูปภาพจากข้อความ |
ก่อนเริ่มต้น
คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาและโค้ดของผู้ให้บริการนั้นๆ ในหน้านี้ |
หากยังไม่ได้ดำเนินการ ให้ทำตามคู่มือเริ่มต้นใช้งาน ซึ่งอธิบายวิธี
ตั้งค่าโปรเจ็กต์ Firebase, เชื่อมต่อแอปกับ Firebase, เพิ่ม SDK,
เริ่มต้นบริการแบ็กเอนด์สำหรับผู้ให้บริการ Gemini API ที่เลือก และ
สร้างอินสแตนซ์ GenerativeModel
สําหรับการทดสอบและทําซ้ำพรอมต์ รวมถึง การรับข้อมูลโค้ดที่สร้างขึ้น เราขอแนะนําให้ใช้ Google AI Studio
สร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
ก่อนที่จะลองใช้ตัวอย่างนี้ ให้ทำตามส่วน
ก่อนที่จะเริ่มของคู่มือนี้
เพื่อตั้งค่าโปรเจ็กต์และแอป ในส่วนนั้น คุณจะคลิกปุ่มสำหรับ ผู้ให้บริการ Gemini API ที่เลือกเพื่อให้เห็นเนื้อหาเฉพาะของผู้ให้บริการ ในหน้านี้ด้วย |
คุณขอให้Geminiโมเดลสร้างข้อความได้โดยการป้อนพรอมต์ด้วยข้อความเท่านั้น
Swift
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
import FirebaseAI
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(modelName: "gemini-2.5-flash")
// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."
// To generate text output, call generateContent with the text input
let response = try await model.generateContent(prompt)
print(response.text ?? "No text in response.")
Kotlin
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-2.5-flash")
// Provide a prompt that contains text
val prompt = "Write a story about a magic backpack."
// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(prompt)
print(response.text)
Java
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
ListenableFuture
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-2.5-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// Provide a prompt that contains text
Content prompt = new Content.Builder()
.addText("Write a story about a magic backpack.")
.build();
// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
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 a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, { model: "gemini-2.5-flash" });
// Wrap in an async function so you can use await
async function run() {
// Provide a prompt that contains text
const prompt = "Write a story about a magic backpack."
// To generate text output, call generateContent with the text input
const result = await model.generateContent(prompt);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
Dart
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
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 a `GenerativeModel` instance with a model that supports your use case
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash');
// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];
// To generate text output, call generateContent with the text input
final response = await model.generateContent(prompt);
print(response.text);
Unity
คุณสามารถเรียกใช้
GenerateContentAsync()
เพื่อสร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports your use case
var model = ai.GetGenerativeModel(modelName: "gemini-2.5-flash");
// Provide a prompt that contains text
var prompt = "Write a story about a magic backpack.";
// To generate text output, call GenerateContentAsync with the text input
var response = await model.GenerateContentAsync(prompt);
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
ดูวิธีเลือกโมเดล ที่เหมาะสมกับกรณีการใช้งานและแอปของคุณ
สร้างข้อความจากอินพุตข้อความและไฟล์ (มัลติโมดัล)
ก่อนที่จะลองใช้ตัวอย่างนี้ ให้ทำตามส่วน
ก่อนที่จะเริ่มของคู่มือนี้
เพื่อตั้งค่าโปรเจ็กต์และแอป ในส่วนนั้น คุณจะคลิกปุ่มสำหรับ ผู้ให้บริการ Gemini API ที่เลือกเพื่อให้เห็นเนื้อหาเฉพาะของผู้ให้บริการ ในหน้านี้ด้วย |
คุณขอให้Geminiโมเดล
สร้างข้อความได้โดยการป้อนพรอมต์ด้วยข้อความและไฟล์ ซึ่งจะระบุmimeType
ของไฟล์อินพุตแต่ละไฟล์และตัวไฟล์เอง ดูข้อกำหนดและคำแนะนำสำหรับไฟล์อินพุต
ได้ในส่วนท้ายของหน้านี้
ตัวอย่างต่อไปนี้แสดงพื้นฐานของวิธีสร้างข้อความจากอินพุตไฟล์ โดยการวิเคราะห์ไฟล์วิดีโอเดียวที่ระบุเป็นข้อมูลแบบอินไลน์ (ไฟล์ที่เข้ารหัส Base64)
โปรดทราบว่าตัวอย่างนี้แสดงการระบุไฟล์แบบอินไลน์ แต่ SDK ยังรองรับการระบุ URL ของ YouTube ด้วย
Swift
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตข้อความและไฟล์วิดีโอแบบมัลติโมดัล
import FirebaseAI
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(modelName: "gemini-2.5-flash")
// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")
Kotlin
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตข้อความและไฟล์วิดีโอแบบมัลติโมดัล
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-2.5-flash")
val contentResolver = applicationContext.contentResolver
contentResolver.openInputStream(videoUri).use { stream ->
stream?.let {
val bytes = stream.readBytes()
// Provide a prompt that includes the video specified above and text
val prompt = content {
inlineData(bytes, "video/mp4")
text("What is in the video?")
}
// To generate text output, call generateContent with the prompt
val response = generativeModel.generateContent(prompt)
Log.d(TAG, response.text ?: "")
}
}
Java
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตข้อความและไฟล์วิดีโอแบบมัลติโมดัล
ListenableFuture
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-2.5-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
ContentResolver resolver = getApplicationContext().getContentResolver();
try (InputStream stream = resolver.openInputStream(videoUri)) {
File videoFile = new File(new URI(videoUri.toString()));
int videoSize = (int) videoFile.length();
byte[] videoBytes = new byte[videoSize];
if (stream != null) {
stream.read(videoBytes, 0, videoBytes.length);
stream.close();
// Provide a prompt that includes the video specified above and text
Content prompt = new Content.Builder()
.addInlineData(videoBytes, "video/mp4")
.addText("What is in the video?")
.build();
// To generate text output, call generateContent with the prompt
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
}
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
Web
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตข้อความและไฟล์วิดีโอแบบมัลติโมดัล
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 a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, { model: "gemini-2.5-flash" });
// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result.split(',')[1]);
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
async function run() {
// Provide a text prompt to include with the video
const prompt = "What do you see?";
const fileInputEl = document.querySelector("input[type=file]");
const videoPart = await fileToGenerativePart(fileInputEl.files[0]);
// To generate text output, call generateContent with the text and video
const result = await model.generateContent([prompt, videoPart]);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
Dart
คุณสามารถเรียกใช้
generateContent()
เพื่อสร้างข้อความจากอินพุตข้อความและไฟล์วิดีโอแบบมัลติโมดัล
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 a `GenerativeModel` instance with a model that supports your use case
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-2.5-flash');
// Provide a text prompt to include with the video
final prompt = TextPart("What's in the video?");
// Prepare video for input
final video = await File('video0.mp4').readAsBytes();
// Provide the video as `Data` with the appropriate mimetype
final videoPart = InlineDataPart('video/mp4', video);
// To generate text output, call generateContent with the text and images
final response = await model.generateContent([
Content.multi([prompt, ...videoPart])
]);
print(response.text);
Unity
คุณสามารถเรียกใช้
GenerateContentAsync()
เพื่อสร้างข้อความจากอินพุตข้อความและไฟล์วิดีโอแบบมัลติโมดัล
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports your use case
var model = ai.GetGenerativeModel(modelName: "gemini-2.5-flash");
// Provide the video as `data` with the appropriate MIME type.
var video = ModelContent.InlineData("video/mp4",
System.IO.File.ReadAllBytes(System.IO.Path.Combine(
UnityEngine.Application.streamingAssetsPath, "yourVideo.mp4")));
// Provide a text prompt to include with the video
var prompt = ModelContent.Text("What is in the video?");
// To generate text output, call GenerateContentAsync with the text and video
var response = await model.GenerateContentAsync(new [] { video, prompt });
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
ดูวิธีเลือกโมเดล ที่เหมาะสมกับกรณีการใช้งานและแอปของคุณ
สตรีมคำตอบ
ก่อนที่จะลองใช้ตัวอย่างนี้ ให้ทำตามส่วน
ก่อนที่จะเริ่มของคู่มือนี้
เพื่อตั้งค่าโปรเจ็กต์และแอป ในส่วนนั้น คุณจะคลิกปุ่มสำหรับ ผู้ให้บริการ Gemini API ที่เลือกเพื่อให้เห็นเนื้อหาเฉพาะของผู้ให้บริการ ในหน้านี้ด้วย |
คุณจะโต้ตอบได้เร็วขึ้นโดยไม่ต้องรอผลลัพธ์ทั้งหมดจากการสร้างโมเดล และใช้การสตรีมเพื่อจัดการผลลัพธ์บางส่วนแทน
หากต้องการสตรีมคำตอบ ให้เรียกใช้ generateContentStream
ข้อกำหนดและคำแนะนำสำหรับไฟล์รูปภาพอินพุต
โปรดทราบว่าไฟล์ที่ระบุเป็นข้อมูลแบบอินไลน์จะได้รับการเข้ารหัสเป็น Base64 ระหว่างการรับส่ง ซึ่งจะเพิ่มขนาดของคำขอ คุณจะได้รับข้อผิดพลาด HTTP 413 หากคำขอมีขนาดใหญ่เกินไป
ดูข้อมูลโดยละเอียดเกี่ยวกับสิ่งต่อไปนี้ได้ที่ ไฟล์อินพุตที่รองรับและข้อกำหนดสำหรับ Vertex AI Gemini API
- ตัวเลือกต่างๆ สำหรับการระบุไฟล์ในคำขอ (ทั้งแบบอินไลน์หรือใช้ URL หรือ URI ของไฟล์)
- ประเภทไฟล์ที่รองรับ
- ประเภท MIME ที่รองรับและวิธีระบุ
- ข้อกำหนดและแนวทางปฏิบัติแนะนำสำหรับไฟล์และคำขอแบบมัลติโมดัล
คุณทำอะไรได้อีกบ้าง
- ดูวิธีนับโทเค็น ก่อนส่งพรอมต์ยาวๆ ไปยังโมเดล
- ตั้งค่า Cloud Storage for Firebase เพื่อให้คุณรวมไฟล์ขนาดใหญ่ในคำขอแบบมัลติโมดัลและมี โซลูชันที่มีการจัดการมากขึ้นสำหรับการระบุไฟล์ในพรอมต์ ไฟล์อาจมีรูปภาพ, PDF, วิดีโอ และเสียง
-
เริ่มคิดถึงการเตรียมพร้อมสำหรับเวอร์ชันที่ใช้งานจริง (ดูรายการตรวจสอบการผลิต)
ซึ่งรวมถึง
- ตั้งค่า Firebase App Check เพื่อปกป้อง Gemini API จากการละเมิดโดยไคลเอ็นต์ที่ไม่ได้รับอนุญาต
- การผสานรวม Firebase Remote Config เพื่ออัปเดตค่าในแอป (เช่น ชื่อโมเดล) โดยไม่ต้องเผยแพร่แอปเวอร์ชันใหม่
ลองใช้ความสามารถอื่นๆ
- สร้างการสนทนาแบบหลายรอบ (แชท)
- สร้างข้อความจาก พรอมต์ข้อความเท่านั้น
- สร้างเอาต์พุตที่มีโครงสร้าง (เช่น JSON) จากทั้งข้อความและพรอมต์มัลติโมดัล
- สร้างรูปภาพจากพรอมต์ข้อความ (Gemini หรือ Imagen)
- ใช้การเรียกใช้ฟังก์ชันเพื่อเชื่อมต่อ โมเดล Generative AI กับระบบและข้อมูลภายนอก
ดูวิธีควบคุมการสร้างเนื้อหา
- ทำความเข้าใจการออกแบบพรอมต์ รวมถึง แนวทางปฏิบัติแนะนำ กลยุทธ์ และพรอมต์ตัวอย่าง
- กำหนดค่าพารามิเตอร์ของโมเดล เช่น อุณหภูมิและโทเค็นเอาต์พุตสูงสุด (สำหรับ Gemini) หรือสัดส่วนภาพ และการสร้างบุคคล (สำหรับ Imagen)
- ใช้การตั้งค่าความปลอดภัยเพื่อปรับ ความเป็นไปได้ที่จะได้รับคำตอบที่อาจถือว่าไม่เหมาะสม
ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่รองรับ
ดูข้อมูลเกี่ยวกับ โมเดลที่พร้อมใช้งานสำหรับกรณีการใช้งานต่างๆ รวมถึง โควต้าและ ราคาแสดงความคิดเห็น เกี่ยวกับประสบการณ์การใช้งาน Firebase AI Logic