สำหรับ Firebase AI Logic คอนโซล Firebase มี UI ที่แนะนำให้คุณ ระบุเนื้อหาของเทมเพลต
เทมเพลตพรอมต์ของเซิร์ฟเวอร์ใช้ไวยากรณ์และรูปแบบที่อิงตาม Dotprompt ในหน้านี้ คุณจะเห็นคำอธิบายโดยละเอียดเกี่ยวกับรูปแบบและไวยากรณ์ของเทมเพลต พร้อมด้วย ตัวอย่างสำหรับทั้ง Gemini และ Imagen
ต่อไปนี้คือคอมโพเนนต์ที่สำคัญที่สุดสำหรับคำขอตัวอย่างไปยังโมเดล 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
ตัวอย่างทั้งหมดในส่วนนี้แสดงเทมเพลตที่ใช้ gemini-2.5-flash แต่คุณสามารถใช้โมเดล Gemini ใดก็ได้ที่ Firebase AI Logic รองรับ
(ยกเว้นโมเดล Gemini Live)
Hello world
ตัวอย่างเทมเพลตพรอมต์ของเซิร์ฟเวอร์แบบเรียบง่ายมีดังนี้
การกำหนดค่า (Frontmatter)
---
model: 'gemini-2.5-flash'
---
พรอมต์และคำสั่งของระบบ (หากมี)
Write a story about a magic backpack.
การกำหนดค่าโมเดล
ตั้งค่าการกำหนดค่าโมเดลเพื่อควบคุมวิธีที่โมเดลสร้างคำตอบ เช่น โทเค็นเอาต์พุตสูงสุด อุณหภูมิ Top-K และ Top-P
การกำหนดค่า (Frontmatter)
---
model: 'gemini-2.5-flash'
config:
candidateCount: 1
temperature: 0.9
topP: 0.1
topK: 16
maxOutputTokens: 200
stopSequences: ["red"]
---
พรอมต์และคำสั่งของระบบ (หากมี)
Write a story about a magic backpack.
คำสั่งของระบบ
ตั้งค่าคำสั่งของระบบเพื่อกำหนดลักษณะการทำงานของโมเดล คุณจะรวมไว้เป็นส่วนหนึ่งของพรอมต์ได้โดยทำดังนี้
ระบุวิธีการของระบบโดยใช้ไวยากรณ์
{{role "system"}}ระบุพรอมต์ข้อความโดยใช้ไวยากรณ์
{{role "user"}}
การกำหนดค่า (Frontmatter)
---
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.
ตัวแปรอินพุต
พรอมต์บางรายการเป็นแบบคงที่ แต่คุณมักจะต้องใส่ข้อมูลบางอย่างจากผู้ใช้ เป็นส่วนหนึ่งของพรอมต์
คุณสามารถรวมตัวแปรอินพุตแบบไดนามิกลงในพรอมต์ได้โดยใช้
นิพจน์ Handlebars ซึ่ง
อยู่ในแท็ก {{ }} ในรูปแบบ
{{variableName}} หรือ
{{object.propertyName}} (เช่น
Hello, {{name}} from {{address.city}})
การกำหนดค่า (Frontmatter)
---
model: 'gemini-2.5-flash'
---
พรอมต์และคำสั่งของระบบ (หากมี)
Create an example customer invoice for a customer named {{customerName}}.
คุณระบุค่าเริ่มต้นในเทมเพลตได้ แต่โดยปกติแล้วไคลเอ็นต์จะเป็นผู้ระบุค่าของตัวแปรอินพุต ซึ่งเป็นส่วนหนึ่งของคำขอ
โฟลว์การควบคุม (ลูปและเงื่อนไข)
หากต้องการเขียนพรอมต์ที่ซับซ้อนมากขึ้น คุณสามารถใช้บล็อกแบบมีเงื่อนไข (เช่น #if ,
else และ #unless) และการวนซ้ำ (#each)
คุณสามารถให้ข้อมูลบริบทเพิ่มเติมเป็นตัวแปรที่มีคำนำหน้าพิเศษ
@ ได้ดังนี้
@first: จริงเมื่อทำซ้ำรายการแรกของบล็อก#each@last: จริงเมื่อวนซ้ำรายการสุดท้ายของบล็อก#each@index: แสดงตำแหน่งดัชนี (อิงตาม 0) ขององค์ประกอบปัจจุบัน
ดูข้อมูลเกี่ยวกับตัวช่วยเชิงตรรกะในตัวทั้งหมดได้ที่ เอกสารประกอบของ Handlebars
การกำหนดค่า (Frontmatter)
---
model: 'gemini-2.5-flash'
---
พรอมต์และคำสั่งของระบบ (หากมี)
Create an example customer invoice for a customer named {{customerName}}.
Include entries for each of the following products
{{#each productNames}}
{{#if @first}}
Include line items for the following purchases
{{/if}}
- {{this}}
{{/each}}
{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}
โปรดทราบว่าเงื่อนไขยอมรับเฉพาะการอ้างอิงตัวแปร ไม่ยอมรับนิพจน์ประเภทใดก็ตาม เช่น
- โดยทำดังนี้
{{#if isVipCustomer}} ... {{/if}} {{#if customer.type == 'vip'}} ... {{/if}}ไม่ได้ผล
หากตัวแปรเป็นบูลีน เงื่อนไขจะทำงานตามที่คุณคาดไว้ หากตัวแปรไม่ใช่บูลีน เงื่อนไขจะกลายเป็นการตรวจสอบ "is-not-null" ซึ่งอาจมีประโยชน์ในการจัดการอินพุตที่ไม่บังคับ เช่น
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
การตรวจสอบอินพุตและสคีมา
หากคุณมีข้อมูลที่มาจากไคลเอ็นต์ เราขอแนะนำอย่างยิ่งให้ใช้สคีมาอินพุต เพื่อช่วยป้องกันการแทรกพรอมต์ รวมถึงตรวจสอบว่าข้อมูล ที่ส่งในคำขอตรงกับที่คุณคาดหวัง
คุณระบุมูลค่าเริ่มต้นได้ในกรณีที่ไคลเอ็นต์ไม่ได้ระบุมูลค่า
สคีมารองรับประเภทสเกลาร์
string,integer,number,booleanและobjectระบบจะระบุออบเจ็กต์ อาร์เรย์ และ Enum ด้วยวงเล็บหลังชื่อฟิลด์ระบบจะถือว่าพร็อพเพอร์ตี้ทั้งหมดเป็นพร็อพเพอร์ตี้ที่ต้องระบุ เว้นแต่คุณจะระบุว่าเป็นพร็อพเพอร์ตี้ที่ไม่บังคับด้วย
?เมื่อทำเครื่องหมายพร็อพเพอร์ตี้เป็นไม่บังคับ ระบบจะทำให้พร็อพเพอร์ตี้เป็น Null ได้ด้วยเพื่อให้ LLM มีความยืดหยุ่นมากขึ้นในการแสดงผลเป็น Null แทนที่จะละเว้นฟิลด์
ต่อไปนี้คือตัวอย่างพื้นฐานสำหรับการระบุสคีมาอินพุต ดูสคีมา ขั้นสูงเพิ่มเติมได้ที่ด้านล่าง
การกำหนดค่า (Frontmatter)
---
model: 'gemini-2.5-flash'
input:
default:
isVipCustomer: false
schema:
customerName: string, the customers name # string, number, and boolean types are defined like this
productNames?(array, list of products to include in the invoice): string # optional fields are marked with a ?
isVipCustomer?: boolean, whether or not the customer is a VIP
---
พรอมต์และคำสั่งของระบบ (หากมี)
Create an example customer invoice for a customer named {{customerName}}.
Include entries for each of the following products
{{#each productNames}}
{{#if @first}}
Include line items for the following purchases
{{/if}}
- {{this}}
{{/each}}
{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}
สคีมาเอาต์พุต
หากต้องการให้โมเดลสร้างเอาต์พุต JSON ที่มีโครงสร้าง
คุณก็ระบุสคีมาเอาต์พุตได้ การระบุ format: json จะเป็นการ
จำกัดโมเดลให้แสดงผลการตอบกลับเป็น JSON ที่เป็นไปตาม
สคีมาที่ระบุเสมอ
สคีมารองรับประเภทสเกลาร์
string,integer,number,booleanและobjectระบบจะระบุออบเจ็กต์ อาร์เรย์ และ Enum ด้วยวงเล็บหลังชื่อฟิลด์ระบบจะถือว่าพร็อพเพอร์ตี้ทั้งหมดเป็นพร็อพเพอร์ตี้ที่ต้องระบุ เว้นแต่คุณจะระบุว่าเป็นพร็อพเพอร์ตี้ที่ไม่บังคับด้วย
?เมื่อทำเครื่องหมายพร็อพเพอร์ตี้เป็นไม่บังคับ ระบบจะทำให้พร็อพเพอร์ตี้เป็น Null ได้ด้วยเพื่อให้ LLM มีความยืดหยุ่นมากขึ้นในการแสดงผลเป็น Null แทนที่จะละเว้นฟิลด์
ต่อไปนี้คือตัวอย่างพื้นฐานสำหรับการสร้างเอาต์พุต JSON ที่มีโครงสร้าง คุณดูสคีมาขั้นสูงเพิ่มเติมได้ที่ด้านล่าง
การกำหนดค่า (Frontmatter)
---
model: gemini-2.5-flash
output:
format: json
schema:
invoiceId: string
invoiceFile(object, an invoice file):
url?: string
contents: string
mimeType: string
---
พรอมต์และคำสั่งของระบบ (หากมี)
Create an example customer invoice.
อินพุตหลายรูปแบบ
พรอมต์หลายรูปแบบที่ส่งไปยังโมเดล Gemini สามารถมีอินพุตได้หลายประเภท ซึ่งรวมถึงไฟล์ (เช่น ข้อความพร้อมกับรูปภาพ, PDF, ไฟล์ข้อความธรรมดา, เสียง และวิดีโอ)
ระบุไฟล์โดยใช้ URL ของไฟล์ที่มี
{{media url}}ไวยากรณ์ระบุไฟล์ในบรรทัดด้วยไวยากรณ์
{{media type="mime_type" data="contents"}}
ต่อไปนี้คือตัวอย่างพื้นฐานสำหรับการป้อนข้อมูลแบบมัลติโมดัล ดูตัวอย่างที่ซับซ้อนกว่านี้ได้ที่ด้านล่าง
การกำหนดค่า (Frontmatter)
---
model: 'gemini-2.5-flash'
---
พรอมต์และคำสั่งของระบบ (หากมี)
Describe this image
{{media type="mimeType" data="imageData"}}
Imagen (การสร้างรูปภาพ)
ในการเปิดตัวครั้งแรก เทมเพลตพรอมต์ของเซิร์ฟเวอร์รองรับการสร้างรูปภาพโดยใช้โมเดล Imagen และพรอมต์ที่เป็นข้อความเท่านั้น โปรดกลับมาดูการสนับสนุนเพิ่มเติมในเร็วๆ นี้ ซึ่งรวมถึง การแก้ไขรูปภาพด้วย Imagen (เมื่อใช้ Vertex AI Gemini API)
พื้นฐาน
ตัวอย่างนี้แสดงเทมเพลตพื้นฐานสำหรับการสร้างรูปภาพด้วย Imagen โดยมีตัวแปรอินพุตและ การตรวจสอบอินพุตที่คล้ายกับ Gemini
การกำหนดค่า (Frontmatter)
---
model: 'imagen-4.0-generate-001'
input:
schema:
prompt: 'string'
---
พรอมต์และคำสั่งของระบบ (หากมี)
Create an image containing {{prompt}}
ขั้นสูง
ตัวอย่างนี้แสดงวิธีเพิ่มการกำหนดค่าโมเดลและใช้ฟีเจอร์ขั้นสูงเพิ่มเติมในพรอมต์ เช่น ตัวแปรอินพุต การตรวจสอบอินพุต และโฟลว์การควบคุมที่คล้ายกับ Gemini
การกำหนดค่า (Frontmatter)
---
model: 'imagen-4.0-fast-generate-001'
config:
sampleCount: 1
aspectRatio: "16:9"
personGeneration: dont_allow
includeRaiReason: true
input:
schema:
style(enum, The style of image): [photo, sketch, painting]
subject: string, The object or animal or scenery to generate.
context?: string, Optional background or context description.
default:
style: photo
---
พรอมต์และคำสั่งของระบบ (หากมี)
A {{style}} of {{subject}}{{#if context}}{{context}}{{/if}}.