ในแต่ละคำขอที่ส่งไปยังโมเดล คุณจะส่งพรอมต์และอาจส่งสคีมาและการกำหนดค่าเพื่อควบคุมการตอบกลับของโมเดล เมื่อใช้ Firebase AI Logic คุณจะส่งข้อมูลทั้งหมดนี้ได้โดยตรงจากโค้ดฝั่งไคลเอ็นต์ หรือจะระบุข้อมูลนี้ฝั่งเซิร์ฟเวอร์โดยใช้เทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์ก็ได้
เมื่อใช้เทมเพลตพรอมต์ของเซิร์ฟเวอร์ คุณจะจัดเก็บพรอมต์ สคีมา และ การกำหนดค่าฝั่งเซิร์ฟเวอร์ และแอปจะส่งจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์ เฉพาะคีย์ (รหัสเทมเพลต) ที่อ้างอิงเทมเพลตที่เฉพาะเจาะจง รวมถึง อินพุตที่จำเป็นสำหรับเทมเพลตนั้น
เมื่อใช้เทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์ คุณจะจัดเก็บพรอมต์และการกำหนดค่าไว้ฝั่งเซิร์ฟเวอร์ และระบุเฉพาะคีย์ (รหัสเทมเพลต) ในโค้ดเบสของแอป ข้อดีของแนวทางนี้มีดังนี้
ป้องกันการเปิดเผยไคลเอ็นต์ฝั่งไคลเอ็นต์
อัปเดตพรอมต์และการกำหนดค่าโดยไม่ต้องเผยแพร่แอปเวอร์ชันใหม่
คำแนะนำนี้จะอธิบายวิธีเริ่มต้นใช้งานเทมเพลตพรอมต์ของเซิร์ฟเวอร์
ข้ามไปที่ภาพรวมระดับสูง ข้ามไปที่วิธีการโดยละเอียด
โมเดลและความสามารถที่รองรับ
ใช้เทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์กับโมเดล Gemini และ Imagen ที่ Firebase AI Logic รองรับ ยกเว้นโมเดล Gemini Live
ภาพรวมระดับสูง
เวิร์กโฟลว์พื้นฐานสำหรับการใช้เทมเพลตพรอมต์ของเซิร์ฟเวอร์มีดังนี้
สร้างเทมเพลตโดยใช้ UI ที่มีคำแนะนำในคอนโซล Firebase
ทดสอบเทมเพลตในคำขอจริงโดยใช้ประสบการณ์การทดสอบของFirebaseคอนโซล
เข้าถึงเทมเพลตจากแอป
รูปแบบพื้นฐานของเทมเพลตพรอมต์ของเซิร์ฟเวอร์
สำหรับ Firebase AI Logic คอนโซล Firebase มี UI ที่แนะนำเพื่อให้คุณระบุเนื้อหาของเทมเพลต
เทมเพลตพรอมต์ของเซิร์ฟเวอร์ใช้ไวยากรณ์และรูปแบบที่อิงตาม Dotprompt ดูรายละเอียดเพิ่มเติมได้ที่ รูปแบบ ไวยากรณ์ และตัวอย่างของเทมเพลต
ต่อไปนี้คือคอมโพเนนต์ที่สำคัญที่สุดสำหรับคำขอตัวอย่างไปยังโมเดล Gemini
---
model: 'gemini-2.5-flash'
---
{{role "system"}}
All output must be a clearly structured invoice document.
Use a tabular or clearly delineated list format for line items.
{{role "user"}}
Create an example customer invoice for a customer named {{customerName}}.
ส่วนบนภายในขีดสามขีดประกอบด้วยชื่อโมเดล รวมถึง การกำหนดค่าโมเดล การตรวจสอบอินพุต หรือสคีมาที่คุณต้องการ ส่งในคำขอ (ไม่บังคับ) โดยจะเขียนเป็นคู่คีย์-ค่า และมักเรียกว่า frontmatter ของ YAML
เนื้อหาของเทมเพลตมีข้อความแจ้ง นอกจากนี้ คุณยังใส่ คำสั่งของระบบและค่าอินพุต (โดยใช้ไวยากรณ์ Handlebars) ได้ด้วย (ไม่บังคับ)
ใช้เทมเพลตในโค้ด
|
คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาและโค้ดเฉพาะของผู้ให้บริการ ในหน้านี้ |
วิธีใช้เทมเพลตในโค้ดมีดังนี้
Swift
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()
let customerName = "Jane"
do {
let response = try await model.generateContent(
// Specify your template ID
templateID: "my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
inputs: [
"customerName": customerName
]
)
if let text = response.text {
print("Response Text: \(text)")
}
} catch {
print("An error occurred: \(error)")
}
print("\n")
Kotlin
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.googleAI.templateGenerativeModel()
val customerName = "Jane"
val response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf(
"customerName" to customerName
)
)
val text = response.text
println(text)
Java
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();
TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);
String customerName = "Jane";
Future response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf("customerName", customerName)
);
addCallback(response,
new FutureCallback() {
public void onSuccess(GenerateContentResponse result) {
System.out.println(result.getText());
}
public void onFailure(Throwable t) {
reportError(t);
}
}
executor);
Web
// ...
// Initialize the Gemini Developer API backend service
const ai = getAI(app, { backend: new GoogleAIBackend() });
// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);
const customerName = 'Jane';
const result = await model.generateContent(
// Specify your template ID
'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template
{
customerName: customerName,
}
);
const response = response.result;
const text = response.text();
Dart
ปลั๊กอิน Flutter จะรองรับเทมเพลตพรอมต์ของเซิร์ฟเวอร์ในเร็วๆ นี้
Unity
แพ็กเกจ Unity จะรองรับเทมเพลตพรอมต์ของเซิร์ฟเวอร์ในเร็วๆ นี้
วิธีการโดยละเอียด
ส่วนนี้จะแสดงวิธีการโดยละเอียดในการสร้าง ทดสอบ และใช้ เทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์
ก่อนเริ่มต้น
หากยังไม่ได้ดำเนินการ ให้ทําตามคู่มือเริ่มต้นใช้งาน ซึ่งอธิบายวิธีตั้งค่าโปรเจ็กต์ Firebase, เชื่อมต่อแอปกับ Firebase, เพิ่ม SDK, เริ่มต้นบริการแบ็กเอนด์สําหรับGemini APIผู้ให้บริการที่คุณเลือก และสร้างอินสแตนซ์
GenerativeModelโปรดตรวจสอบว่าคุณมีสิทธิ์ที่จำเป็นในการสร้างและจัดการ เทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์ โดยค่าเริ่มต้น สิทธิ์เหล่านี้ทั้งหมดจะรวมอยู่ใน บทบาทเจ้าของ
หากคุณใช้ Vertex AI Gemini API และ หาก Use Case ของคุณต้องมี การจำกัดตามสถานที่ตั้ง เราจะรองรับเวิร์กโฟลว์ขั้นสูงสำหรับเทมเพลต
ขั้นตอนที่ 1: สร้างเทมเพลตพรอมต์ของเซิร์ฟเวอร์
สำหรับกรณีการใช้งานส่วนใหญ่ คุณจะสร้างและจัดการเทมเพลตพรอมต์ของเซิร์ฟเวอร์ในFirebaseคอนโซล
ในคอนโซล Firebase ให้ไปที่แท็บFirebase AI Logic เทมเพลตพรอมต์
คลิกสร้างเทมเพลตใหม่ แล้วเลือกตัวเลือกเทมเพลตเริ่มต้น
เทมเพลตเริ่มต้นเหล่านี้มีรูปแบบและไวยากรณ์สำหรับกรณีการใช้งานทั่วไปบางอย่าง ไม่ว่าคุณจะเลือกตัวเลือกใด คุณก็สามารถเปลี่ยนเทมเพลตได้อย่างสมบูรณ์ เพื่อให้ตรงกับความต้องการของคุณ
คู่มือการเริ่มต้นใช้งานนี้ถือว่าคุณได้เลือกตัวเลือก
Input + System Instructionsแล้ว
ป้อนตัวระบุของเทมเพลต
ชื่อเทมเพลต: นี่คือชื่อที่แสดงของเทมเพลต (เช่น
My First Template) ซึ่งจะแสดงในอินเทอร์เฟซ Firebase เท่านั้น เช่น คอนโซล Firebaseรหัสเทมเพลต: รหัสนี้ต้องเป็นรหัสที่ไม่ซ้ำกันสำหรับเทมเพลตภายในโปรเจ็กต์ Firebase (เช่น
) คุณจะอ้างอิงรหัสนี้ในคำขอจากแอปmy-first-template-v1-0-0เราขอแนะนำให้ใช้ระบบการควบคุมเวอร์ชันสำหรับรหัสเทมเพลต
รหัสเทมเพลตมีความยาวได้สูงสุด 63 อักขระ และมีตัวอักษรพิมพ์เล็ก ตัวเลข และขีดกลางได้
แก้ไขส่วนการกำหนดค่า (Frontmatter) ของเทมเพลตตามที่จำเป็น
ส่วนนี้ต้องมีชื่อโมเดลอย่างน้อย เช่น
--- model: 'gemini-2.5-flash' ---นอกจากนี้ คุณยังระบุการกำหนดค่าของโมเดล รวมถึงการควบคุมอินพุตและเอาต์พุต ฯลฯ ได้ด้วย ดูรายละเอียดและตัวเลือกเพิ่มเติมได้ที่ รูปแบบ ไวยากรณ์ และตัวอย่างของเทมเพลต
แก้ไขส่วนพรอมต์และ (หากมี) คำสั่งของระบบของเทมเพลตตามต้องการ
ส่วนนี้ต้องมีพรอมต์ข้อความอย่างน้อยที่สุดเพื่อส่งไปยังโมเดล
Write a story about a magic backpack.นอกจากนี้ คุณยังสร้างพรอมต์ที่ซับซ้อนมากขึ้นได้ เช่น ตัวเลือกต่อไปนี้ ดูรายละเอียดและตัวเลือกเพิ่มเติมได้ที่ รูปแบบ ไวยากรณ์ และตัวอย่างของเทมเพลต
(ไม่บังคับและตามความเหมาะสม) ระบุวิธีการของระบบโดยใช้ไวยากรณ์
{{role "system"}}และข้อความ พรอมต์โดยใช้ไวยากรณ์{{role "user"}}(ไม่บังคับ) ระบุตัวแปรอินพุตโดยใช้ไวยากรณ์ Handlebars (เช่น
{{customerName}}) คุณระบุค่าเริ่มต้นในเทมเพลตได้ แต่โดยปกติแล้วค่าของตัวแปรอินพุตนี้จะส่งในคำขอ
{{role "system"}} All output must be a clearly structured invoice document. Use a tabular or clearly delineated list format for line items. {{role "user"}} Create an example customer invoice for a customer named {{customerName}}.
ขั้นตอนที่ 2: ทดสอบเทมเพลตในคอนโซล Firebase
Firebase คอนโซลมีประสบการณ์การทดสอบเทมเพลต ประสบการณ์นี้ช่วยให้คุณเห็นสิ่งที่เกิดขึ้นเมื่อมีการใช้เทมเพลต ทั้งรูปแบบของคำขอและเอาต์พุตของคำขอจริง
คลิกบันทึกเทมเพลตเพื่อให้คุณทดสอบเทมเพลตได้
คุณสามารถแก้ไขหรือลบเทมเพลตได้ทุกเมื่อในภายหลัง ค่าเดียวที่คุณ เปลี่ยนในภายหลังไม่ได้คือรหัสเทมเพลต
หากพรอมต์ใช้ตัวแปรอินพุต ให้ระบุค่าทดสอบในช่องอินพุต การทดสอบ ในตัวอย่างนี้
{ "customerName": "Jane" }หากเปิดใช้ผู้ให้บริการหลายรายในโปรเจ็กต์ Firebase คุณจะเลือกผู้ให้บริการที่จะใช้สำหรับคำขอทดสอบได้Gemini API หากตัวเลือกนี้ แสดงในคอนโซล ให้เลือก
Gemini Developer APIหรือVertex AI Gemini APIโปรดทราบว่าการเลือกนี้ใช้ได้กับคำขอที่ส่งผ่าน Firebase ประสบการณ์การทดสอบคอนโซลเท่านั้น ในคำขอจริงจากแอป คุณระบุGemini APIผู้ให้บริการที่เลือกเช่นเดียวกับคำขออื่นๆ
คลิกปุ่มสร้างคำขอทดสอบที่จัดรูปแบบ
ตรวจสอบคำขอทดสอบที่จัดรูปแบบแล้วที่ได้ทางด้านขวาของหน้าจอ และทำซ้ำในช่องใดก็ได้ของเทมเพลต
เมื่อพอใจกับคำขอทดสอบที่จัดรูปแบบแล้ว ให้คลิกปุ่มเรียกใช้ การทดสอบพรอมต์
ตรวจสอบคำตอบการทดสอบที่ได้ทางด้านขวาของหน้าจอ และ ทำซ้ำในช่องใดก็ได้ของเทมเพลต
หากพร้อมเข้าถึงเทมเพลตจากโค้ดของแอปแล้ว ให้ล็อกเทมเพลตโดยคลิกไอคอน
ล็อก ที่มุมขวาบนของเทมเพลตคลิกปิดเพื่อออกจากการแก้ไข
ขั้นตอนที่ 3: เข้าถึงเทมเพลตจากโค้ด
|
คลิกผู้ให้บริการ Gemini API เพื่อดูเนื้อหาและโค้ดเฉพาะของผู้ให้บริการ ในหน้านี้ |
คำขอที่ใช้เทมเพลตพรอมต์ของเซิร์ฟเวอร์จะมีลักษณะคล้ายกับคำขออื่นๆ โดยมีการปรับเปลี่ยนดังนี้
- ใช้
templateGenerativeModel(หรือtemplateImagenModelตามต้องการ) - ระบุรหัสเทมเพลต
- ระบุค่าของอินพุตตัวแปรที่เทมเพลตต้องการ
โปรดทราบว่าหลังจากสร้างหรืออัปเดตเทมเพลตแล้ว คุณอาจต้องรอสักครู่เพื่อให้เทมเพลตเผยแพร่ในเซิร์ฟเวอร์ Firebase ก่อนจึงจะเข้าถึงได้จากโค้ด
Swift
สร้างtemplateGenerativeModelอินสแตนซ์ (หรือ templateImagenModel) เพื่อใช้
เทมเพลตในคำขอ
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()
let customerName = "Jane"
do {
let response = try await model.generateContent(
// Specify your template ID
templateID: "my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
inputs: [
"customerName": customerName
]
)
if let text = response.text {
print("Response Text: \(text)")
}
} catch {
print("An error occurred: \(error)")
}
print("\n")
Kotlin
สร้างtemplateGenerativeModelอินสแตนซ์ (หรือ templateImagenModel) เพื่อใช้
เทมเพลตในคำขอ
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.googleAI.templateGenerativeModel()
val customerName = "Jane"
val response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf(
"customerName" to customerName
)
)
val text = response.text
println(text)
Java
สร้างtemplateGenerativeModelอินสแตนซ์ (หรือ templateImagenModel) เพื่อใช้
เทมเพลตในคำขอ
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();
TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);
String customerName = "Jane";
Future response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf("customerName", customerName)
);
addCallback(response,
new FutureCallback() {
public void onSuccess(GenerateContentResponse result) {
System.out.println(result.getText());
}
public void onFailure(Throwable t) {
reportError(t);
}
}
executor);
Web
สร้างtemplateGenerativeModelอินสแตนซ์ (หรือ templateImagenModel) เพื่อใช้
เทมเพลตในคำขอ
// ...
// Initialize the Gemini Developer API backend service
const ai = getAI(app, { backend: new GoogleAIBackend() });
// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);
const customerName = 'Jane';
const result = await model.generateContent(
// Specify your template ID
'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template
{
customerName: customerName,
}
);
const response = response.result;
const text = response.text();
Dart
ปลั๊กอิน Flutter จะรองรับเทมเพลตพรอมต์ของเซิร์ฟเวอร์ในเร็วๆ นี้
Unity
แพ็กเกจ Unity จะรองรับเทมเพลตพรอมต์ของเซิร์ฟเวอร์ในเร็วๆ นี้
ขั้นตอนต่อไปคืออะไร
ดูข้อมูลเกี่ยวกับ แนวทางปฏิบัติแนะนำและข้อควรพิจารณา ในการใช้เทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์
ดูรายละเอียดเกี่ยวกับรูปแบบและไวยากรณ์ของเทมเพลต พร้อมตัวอย่าง
จัดการเทมเพลต รวมถึงการแก้ไข การล็อก และการควบคุมเวอร์ชัน