เริ่มต้นใช้งานเทมเพลตพรอมต์ของเซิร์ฟเวอร์


ในแต่ละคำขอที่ส่งไปยังโมเดล คุณจะส่งพรอมต์และอาจส่งสคีมาและการกำหนดค่าเพื่อควบคุมการตอบกลับของโมเดล เมื่อใช้ Firebase AI Logic คุณจะส่งข้อมูลทั้งหมดนี้ได้โดยตรงจากโค้ดฝั่งไคลเอ็นต์ หรือจะระบุข้อมูลนี้ฝั่งเซิร์ฟเวอร์โดยใช้เทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์ก็ได้

เมื่อใช้เทมเพลตพรอมต์ของเซิร์ฟเวอร์ คุณจะจัดเก็บพรอมต์ สคีมา และ การกำหนดค่าฝั่งเซิร์ฟเวอร์ และแอปจะส่งจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์ เฉพาะคีย์ (รหัสเทมเพลต) ที่อ้างอิงเทมเพลตที่เฉพาะเจาะจง รวมถึง อินพุตที่จำเป็นสำหรับเทมเพลตนั้น

เมื่อใช้เทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์ คุณจะจัดเก็บพรอมต์และการกำหนดค่าไว้ฝั่งเซิร์ฟเวอร์ และระบุเฉพาะคีย์ (รหัสเทมเพลต) ในโค้ดเบสของแอป ข้อดีของแนวทางนี้มีดังนี้

  • ป้องกันการเปิดเผยไคลเอ็นต์ฝั่งไคลเอ็นต์

  • อัปเดตพรอมต์และการกำหนดค่าโดยไม่ต้องเผยแพร่แอปเวอร์ชันใหม่

คำแนะนำนี้จะอธิบายวิธีเริ่มต้นใช้งานเทมเพลตพรอมต์ของเซิร์ฟเวอร์

ข้ามไปที่ภาพรวมระดับสูง ข้ามไปที่วิธีการโดยละเอียด

โมเดลและความสามารถที่รองรับ



ภาพรวมระดับสูง

เวิร์กโฟลว์พื้นฐานสำหรับการใช้เทมเพลตพรอมต์ของเซิร์ฟเวอร์มีดังนี้

  1. สร้างเทมเพลตโดยใช้ UI ที่มีคำแนะนำในคอนโซล Firebase

  2. ทดสอบเทมเพลตในคำขอจริงโดยใช้ประสบการณ์การทดสอบของFirebaseคอนโซล

  3. เข้าถึงเทมเพลตจากแอป

รูปแบบพื้นฐานของเทมเพลตพรอมต์ของเซิร์ฟเวอร์

สำหรับ 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คอนโซล

  1. ในคอนโซล Firebase ให้ไปที่แท็บFirebase AI Logic เทมเพลตพรอมต์

  2. คลิกสร้างเทมเพลตใหม่ แล้วเลือกตัวเลือกเทมเพลตเริ่มต้น

    • เทมเพลตเริ่มต้นเหล่านี้มีรูปแบบและไวยากรณ์สำหรับกรณีการใช้งานทั่วไปบางอย่าง ไม่ว่าคุณจะเลือกตัวเลือกใด คุณก็สามารถเปลี่ยนเทมเพลตได้อย่างสมบูรณ์ เพื่อให้ตรงกับความต้องการของคุณ

    • คู่มือการเริ่มต้นใช้งานนี้ถือว่าคุณได้เลือกตัวเลือก Input + System Instructions แล้ว

  3. ป้อนตัวระบุของเทมเพลต

    • ชื่อเทมเพลต: นี่คือชื่อที่แสดงของเทมเพลต (เช่น My First Template) ซึ่งจะแสดงในอินเทอร์เฟซ Firebase เท่านั้น เช่น คอนโซล Firebase

    • รหัสเทมเพลต: รหัสนี้ต้องเป็นรหัสที่ไม่ซ้ำกันสำหรับเทมเพลตภายในโปรเจ็กต์ Firebase (เช่น my-first-template-v1-0-0) คุณจะอ้างอิงรหัสนี้ในคำขอจากแอป

      • เราขอแนะนำให้ใช้ระบบการควบคุมเวอร์ชันสำหรับรหัสเทมเพลต

      • รหัสเทมเพลตมีความยาวได้สูงสุด 63 อักขระ และมีตัวอักษรพิมพ์เล็ก ตัวเลข และขีดกลางได้

  4. แก้ไขส่วนการกำหนดค่า (Frontmatter) ของเทมเพลตตามที่จำเป็น

    • ส่วนนี้ต้องมีชื่อโมเดลอย่างน้อย เช่น

      ---
      model: 'gemini-2.5-flash'
      ---
      
    • นอกจากนี้ คุณยังระบุการกำหนดค่าของโมเดล รวมถึงการควบคุมอินพุตและเอาต์พุต ฯลฯ ได้ด้วย ดูรายละเอียดและตัวเลือกเพิ่มเติมได้ที่ รูปแบบ ไวยากรณ์ และตัวอย่างของเทมเพลต

  5. แก้ไขส่วนพรอมต์และ (หากมี) คำสั่งของระบบของเทมเพลตตามต้องการ

    • ส่วนนี้ต้องมีพรอมต์ข้อความอย่างน้อยที่สุดเพื่อส่งไปยังโมเดล

      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 คอนโซลมีประสบการณ์การทดสอบเทมเพลต ประสบการณ์นี้ช่วยให้คุณเห็นสิ่งที่เกิดขึ้นเมื่อมีการใช้เทมเพลต ทั้งรูปแบบของคำขอและเอาต์พุตของคำขอจริง

  1. คลิกบันทึกเทมเพลตเพื่อให้คุณทดสอบเทมเพลตได้

    คุณสามารถแก้ไขหรือลบเทมเพลตได้ทุกเมื่อในภายหลัง ค่าเดียวที่คุณ เปลี่ยนในภายหลังไม่ได้คือรหัสเทมเพลต

  2. หากพรอมต์ใช้ตัวแปรอินพุต ให้ระบุค่าทดสอบในช่องอินพุต การทดสอบ ในตัวอย่างนี้

      {
        "customerName": "Jane"
      }
    
  3. หากเปิดใช้ผู้ให้บริการหลายรายในโปรเจ็กต์ Firebase คุณจะเลือกผู้ให้บริการที่จะใช้สำหรับคำขอทดสอบได้Gemini API หากตัวเลือกนี้ แสดงในคอนโซล ให้เลือก Gemini Developer API หรือ Vertex AI Gemini API

    โปรดทราบว่าการเลือกนี้ใช้ได้กับคำขอที่ส่งผ่าน Firebase ประสบการณ์การทดสอบคอนโซลเท่านั้น ในคำขอจริงจากแอป คุณระบุGemini APIผู้ให้บริการที่เลือกเช่นเดียวกับคำขออื่นๆ

  4. คลิกปุ่มสร้างคำขอทดสอบที่จัดรูปแบบ

    ตรวจสอบคำขอทดสอบที่จัดรูปแบบแล้วที่ได้ทางด้านขวาของหน้าจอ และทำซ้ำในช่องใดก็ได้ของเทมเพลต

  5. เมื่อพอใจกับคำขอทดสอบที่จัดรูปแบบแล้ว ให้คลิกปุ่มเรียกใช้ การทดสอบพรอมต์

    ตรวจสอบคำตอบการทดสอบที่ได้ทางด้านขวาของหน้าจอ และ ทำซ้ำในช่องใดก็ได้ของเทมเพลต

  6. หากพร้อมเข้าถึงเทมเพลตจากโค้ดของแอปแล้ว ให้ล็อกเทมเพลตโดยคลิกไอคอนล็อกที่มุมขวาบนของเทมเพลต

  7. คลิกปิดเพื่อออกจากการแก้ไข

ขั้นตอนที่ 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 จะรองรับเทมเพลตพรอมต์ของเซิร์ฟเวอร์ในเร็วๆ นี้



ขั้นตอนต่อไปคืออะไร