เมื่อใช้ Gemini API คุณจะสร้างการสนทนาแบบอิสระได้หลายรอบ Firebase AI Logic SDK ลดความซับซ้อนของกระบวนการนี้ด้วยการจัดการสถานะการสนทนา คุณจึงไม่ต้องจัดเก็บประวัติการสนทนาด้วยตนเองเหมือนที่ใช้ generateContent()
(หรือ generateContentStream()
)
ก่อนเริ่มต้น
คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาและโค้ดเฉพาะผู้ให้บริการในหน้านี้ |
หากยังไม่ได้ดำเนินการ ให้ทำตามคู่มือเริ่มต้นใช้งาน ซึ่งอธิบายวิธีตั้งค่าโปรเจ็กต์ Firebase, เชื่อมต่อแอปกับ Firebase, เพิ่ม SDK, เริ่มต้นบริการแบ็กเอนด์สําหรับผู้ให้บริการ Gemini API ที่เลือก และสร้างอินสแตนซ์ GenerativeModel
เราขอแนะนําให้ใช้ Google AI Studio ในการทดสอบและปรับปรุงพรอมต์ รวมถึงรับข้อมูลโค้ดที่สร้างขึ้น
ส่งคำขอพรอมต์แชท
ก่อนลองใช้ตัวอย่างนี้ ให้อ่านก่อนเริ่มต้นในส่วนแรกของคู่มือนี้ให้เสร็จสิ้นเพื่อตั้งค่าโปรเจ็กต์และแอป ในส่วนนั้น คุณจะต้องคลิกปุ่มของGemini APIผู้ให้บริการที่เลือกด้วย เพื่อดูเนื้อหาเฉพาะผู้ให้บริการในหน้านี้ |
หากต้องการสร้างการสนทนาแบบหลายรอบ (เช่น แชท) ให้เริ่มต้นด้วยการจัดเตรียมแชทโดยเรียกใช้ startChat()
จากนั้นใช้ sendMessage()
เพื่อส่งข้อความใหม่สำหรับผู้ใช้ ซึ่งจะเพิ่มข้อความและการตอบกลับไปยังประวัติการแชทด้วย
role
ที่เชื่อมโยงกับเนื้อหาในการสนทนามี 2 ตัวเลือกดังนี้
user
: บทบาทที่ให้พรอมต์ ค่านี้เป็นค่าเริ่มต้นสําหรับการเรียกsendMessage()
และฟังก์ชันจะแสดงข้อยกเว้นหากมีการส่งบทบาทอื่นmodel
: บทบาทที่ให้คำตอบ บทบาทนี้ใช้ได้เมื่อเรียกใช้startChat()
ที่มีhistory
อยู่แล้ว
Swift
คุณสามารถโทรไปที่ startChat()
และ sendMessage()
เพื่อส่งข้อความถึงผู้ใช้ใหม่ได้
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.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")
Kotlin
คุณสามารถโทรหา startChat()
และ
sendMessage()
เพื่อส่งข้อความถึงผู้ใช้ใหม่ได้
// 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.0-flash")
// Initialize the chat
val chat = generativeModel.startChat(
history = listOf(
content(role = "user") { text("Hello, I have 2 dogs in my house.") },
content(role = "model") { text("Great to meet you. What would you like to know?") }
)
)
val response = chat.sendMessage("How many paws are in my house?")
print(response.text)
Java
คุณสามารถโทรไปที่ startChat()
และ sendMessage()
เพื่อส่งข้อความถึงผู้ใช้ใหม่ได้
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.0-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// (optional) Create previous chat history for context
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();
Content.Builder modelContentBuilder = new Content.Builder();
modelContentBuilder.setRole("model");
modelContentBuilder.addText("Great to meet you. What would you like to know?");
Content modelContent = userContentBuilder.build();
List<Content> history = Arrays.asList(userContent, modelContent);
// Initialize the chat
ChatFutures chat = model.startChat(history);
// Create a new user message
Content.Builder messageBuilder = new Content.Builder();
messageBuilder.setRole("user");
messageBuilder.addText("How many paws are in my house?");
Content message = messageBuilder.build();
// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(message);
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
คุณสามารถโทรไปที่ startChat()
และ sendMessage()
เพื่อส่งข้อความถึงผู้ใช้ใหม่ได้
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.0-flash" });
async function run() {
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ text: "Hello, I have 2 dogs in my house." }],
},
{
role: "model",
parts: [{ text: "Great to meet you. What would you like to know?" }],
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "How many paws are in my house?";
const result = await chat.sendMessage(msg);
const response = await result.response;
const text = response.text();
console.log(text);
}
run();
Dart
คุณสามารถโทรไปที่ startChat()
และ sendMessage()
เพื่อส่งข้อความถึงผู้ใช้ใหม่ได้
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.0-flash');
final chat = model.startChat();
// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];
final response = await chat.sendMessage(prompt);
print(response.text);
Unity
คุณสามารถโทรไปที่ StartChat()
และ SendMessageAsync()
เพื่อส่งข้อความถึงผู้ใช้ใหม่ได้
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.0-flash");
// Optionally specify existing chat history
var history = new [] {
ModelContent.Text("Hello, I have 2 dogs in my house."),
new ModelContent("model", new ModelContent.TextPart("Great to meet you. What would you like to know?")),
};
// Initialize the chat with optional chat history
var chat = model.StartChat(history);
// To generate text output, call SendMessageAsync and pass in the message
var response = await chat.SendMessageAsync("How many paws are in my house?");
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
ดูวิธีเลือกรูปแบบที่เหมาะกับกรณีการใช้งานและแอปของคุณ
สตรีมคำตอบ
ก่อนลองใช้ตัวอย่างนี้ ให้อ่านก่อนเริ่มต้นในส่วนแรกของคู่มือนี้ให้เสร็จสิ้นเพื่อตั้งค่าโปรเจ็กต์และแอป ในส่วนนั้น คุณจะต้องคลิกปุ่มของGemini APIผู้ให้บริการที่เลือกด้วย เพื่อดูเนื้อหาเฉพาะผู้ให้บริการในหน้านี้ |
คุณสามารถโต้ตอบได้เร็วขึ้นโดยไม่ต้องรอผลลัพธ์ทั้งหมดจากการสร้างโมเดล และใช้การสตรีมเพื่อจัดการผลลัพธ์บางส่วนแทน
หากต้องการสตรีมคำตอบ ให้โทรหา sendMessageStream()
คุณทำอะไรได้อีกบ้าง
- ดูวิธีนับโทเค็นก่อนส่งพรอมต์แบบยาวไปยังโมเดล
- ตั้งค่า Cloud Storage for Firebase เพื่อให้คุณรวมไฟล์ขนาดใหญ่ในคำขอแบบหลายรูปแบบได้ และมีโซลูชันที่มีการจัดการมากขึ้นสำหรับส่งไฟล์ในพรอมต์ ไฟล์อาจรวมถึงรูปภาพ, PDF, วิดีโอ และเสียง
-
เริ่มคิดเกี่ยวกับการเตรียมพร้อมสำหรับเวอร์ชันที่ใช้งานจริง (ดูรายการตรวจสอบเวอร์ชันที่ใช้งานจริง) ซึ่งรวมถึงการดำเนินการต่อไปนี้
- การตั้งค่า Firebase App Check เพื่อปกป้อง Gemini API จากการละเมิดโดยไคลเอ็นต์ที่ไม่ได้รับอนุญาต
- การผสานรวม Firebase Remote Config เพื่ออัปเดตค่าในแอป (เช่น ชื่อรุ่น) โดยไม่ต้องเผยแพร่แอปเวอร์ชันใหม่
ลองใช้ความสามารถอื่นๆ
- สร้างข้อความจากพรอมต์แบบข้อความเท่านั้น
- สร้างข้อความโดยแจ้งให้ทราบด้วยไฟล์ประเภทต่างๆ เช่น รูปภาพ PDF วิดีโอ และ เสียง
- สร้างเอาต์พุตที่มีโครงสร้าง (เช่น JSON) จากทั้งพรอมต์แบบข้อความและแบบมัลติโมเดล
- สร้างรูปภาพจากพรอมต์ข้อความ
- ใช้การเรียกฟังก์ชันเพื่อเชื่อมต่อโมเดล Generative กับระบบและข้อมูลภายนอก
ดูวิธีควบคุมการสร้างเนื้อหา
- ทำความเข้าใจการออกแบบพรอมต์ ซึ่งรวมถึงแนวทางปฏิบัติแนะนำ กลยุทธ์ และตัวอย่างพรอมต์
- กำหนดค่าพารามิเตอร์ของโมเดล เช่น อุณหภูมิและโทเค็นเอาต์พุตสูงสุด (สำหรับ Gemini) หรือสัดส่วนภาพและการสร้างบุคคล (สำหรับ Imagen)
- ใช้การตั้งค่าความปลอดภัยเพื่อปรับความเป็นไปได้ที่จะได้รับคำตอบที่อาจถือว่าอันตราย
ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบที่รองรับ
ดูข้อมูลเกี่ยวกับรูปแบบที่ใช้ได้กับกรณีการใช้งานต่างๆ รวมถึงโควต้าและราคาแสดงความคิดเห็นเกี่ยวกับประสบการณ์การใช้งาน Firebase AI Logic