สำหรับ Firebase AI Logic คอนโซล Firebase มี UI ที่แนะนำให้คุณ ระบุเนื้อหาของเทมเพลต
เทมเพลตพรอมต์ของเซิร์ฟเวอร์ใช้ไวยากรณ์และรูปแบบที่อิงตาม Dotprompt ในหน้านี้ คุณจะเห็นคำอธิบายโดยละเอียดเกี่ยวกับรูปแบบและไวยากรณ์ของเทมเพลต พร้อมด้วย ตัวอย่างสำหรับทั้ง Gemini และ Imagen
ต่อไปนี้คือคอมโพเนนต์ที่สำคัญที่สุดสำหรับคำขอตัวอย่างไปยังโมเดล Gemini
---
model: 'gemini-3-flash-preview'
---
{{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) ด้วย
หน้านี้จะอธิบายรูปแบบและไวยากรณ์ของเทมเพลตโดยละเอียด พร้อมตัวอย่างสำหรับรายการต่อไปนี้
Imagen (เลิกใช้งานแล้ว)
Gemini
ตัวอย่างทั้งหมดในส่วนนี้แสดงเทมเพลตที่ใช้ gemini-3-flash-preview แต่คุณสามารถใช้โมเดล Gemini ใดก็ได้ที่ Firebase AI Logic รองรับ (ยกเว้นโมเดล Gemini Live)
สวัสดีชาวโลก
ต่อไปนี้คือตัวอย่างเทมเพลตพรอมต์ของเซิร์ฟเวอร์แบบเรียบง่ายที่สุด
การกำหนดค่า (Frontmatter)
---
model: 'gemini-3-flash-preview'
---
พรอมต์และคำสั่งของระบบ (หากมี)
Write a story about a magic backpack.
ควบคุมการสร้างคำตอบ
คุณควบคุมการสร้างคำตอบได้หลายวิธีโดยขึ้นอยู่กับ กรณีการใช้งานและระดับการควบคุมที่ต้องการ
การกำหนดค่าโมเดล
ตั้งค่าการกำหนดค่าโมเดลเพื่อควบคุมวิธีที่โมเดลสร้างคำตอบ เช่น โทเค็นเอาต์พุตสูงสุด อุณหภูมิ Top-K และ Top-P
การกำหนดค่า (Frontmatter)
---
model: 'gemini-3-flash-preview'
config:
candidateCount: 1
temperature: 0.9
topP: 0.1
topK: 16
maxOutputTokens: 200
stopSequences: ["red"]
---
พรอมต์และคำสั่งของระบบ (หากมี)
Write a story about a magic backpack.
การกำหนดค่าการคิด
ระบุการกำหนดค่าที่เกี่ยวข้องกับการคิดสำหรับโมเดล ที่รองรับการคิด
การกำหนดค่า (Frontmatter)
Gemini 3 และรุ่นที่ใหม่กว่า (ระดับการคิด)
--- model: 'gemini-3-flash-preview' config: thinkingConfig: thinkingLevel: medium includeThoughts: true ---Gemini 2.5 โมเดล (งบประมาณการคิด)
--- model: 'gemini-3-flash-preview' config: thinkingConfig: thinkingBudget: 1024 includeThoughts: true ---
พรอมต์และคำสั่งของระบบ (หากมี)
Solve x^2 + 4x + 4 = 0
การตั้งค่าความปลอดภัย
ใช้การตั้งค่าความปลอดภัยเพื่อปรับความน่าจะเป็น ในการได้รับคำตอบที่อาจถือว่าเป็นอันตราย
การกำหนดค่า (Frontmatter)
ตัวอย่างที่มีการตั้งค่าความปลอดภัย 1 รายการ
---
model: 'gemini-3-flash-preview'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
---
ตัวอย่างที่มีการตั้งค่าความปลอดภัยหลายรายการ
---
model: 'gemini-3-flash-preview'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
- category: HARM_CATEGORY_HATE_SPEECH
threshold: BLOCK_MEDIUM_AND_ABOVE
---
พรอมต์และคำสั่งของระบบ (หากมี)
Write a story about a magic backpack.
คำสั่งของระบบ
ตั้งค่าคำสั่งของระบบเพื่อกำหนดลักษณะการทำงานของโมเดล คุณจะรวมไว้เป็นส่วนหนึ่งของพรอมต์ได้โดยทำดังนี้
ระบุวิธีการของระบบโดยใช้ไวยากรณ์
{{role "system"}}ระบุพรอมต์ข้อความโดยใช้ไวยากรณ์
{{role "user"}}
การกำหนดค่า (Frontmatter)
---
model: 'gemini-3-flash-preview'
---
พรอมต์และคำสั่งของระบบ (หากมี)
{{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-3-flash-preview'
---
พรอมต์และคำสั่งของระบบ (หากมี)
Create an example customer invoice for a customer named {{customerName}}.
คุณระบุค่าเริ่มต้นในเทมเพลตได้ แต่โดยปกติแล้วไคลเอ็นต์จะเป็นผู้ระบุค่าของตัวแปรอินพุต ซึ่งเป็นส่วนหนึ่งของคำขอ
โฟลว์การควบคุม (ลูปและเงื่อนไข)
หากต้องการเขียนพรอมต์ที่ซับซ้อนมากขึ้น คุณสามารถใช้บล็อกแบบมีเงื่อนไข (เช่น #if ,
else และ #unless) และการวนซ้ำ (#each)
คุณสามารถให้ข้อมูลเชิงบริบทเพิ่มเติมเป็นตัวแปรที่มีคำนำหน้าพิเศษ
@ ดังนี้
@first: เป็นจริงเมื่อทำซ้ำรายการแรกของบล็อก#each@last: จริงเมื่อวนซ้ำรายการสุดท้ายของบล็อก#each@index: แสดงตำแหน่งดัชนี (อิงตาม 0) ขององค์ประกอบปัจจุบัน
ดูข้อมูลเกี่ยวกับตัวช่วยเชิงตรรกะในตัวทั้งหมดได้ที่ เอกสารประกอบของ Handlebars
การกำหนดค่า (Frontmatter)
---
model: 'gemini-3-flash-preview'
---
พรอมต์และคำสั่งของระบบ (หากมี)
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-3-flash-preview'
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-3-flash-preview
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-3-flash-preview'
---
พรอมต์และคำสั่งของระบบ (หากมี)
Describe this image
{{media type="mimeType" data="imageData"}}
ตัวอย่างที่ซับซ้อน (อินพุตหลายรูปแบบ)
ต่อไปนี้คือตัวอย่างที่ซับซ้อนมากขึ้นสำหรับการป้อนข้อมูลหลายรูปแบบ
การกำหนดค่า (Frontmatter)
---
model: gemini-3-flash-preview
input:
schema:
image_urls?(array, urls of external images): string
inline_images?(array, inline image data):
type: object
properties:
mime_type: string
contents: string # inline data must be base64-encoded
---
พรอมต์และคำสั่งของระบบ (หากมี)
{{role "system"}}
Use the following image as the basis for comparisons
{{media url="http://example.com/reference_img.bmp"}}
{{role "user"}}
What do the following images have in common?
{{#each image_urls}}
{{media url="this"}}
{{/each}}
{{#each inline_images}}
{{media type="mime_type" data="contents"}}
{{/each}}
การใช้เครื่องมือ
เทมเพลตพรอมต์ของเซิร์ฟเวอร์รองรับเครื่องมือต่อไปนี้ ระบบยังไม่รองรับการเรียกใช้ฟังก์ชัน แต่จะรองรับเร็วๆ นี้
หากต้องการให้ผู้ใช้ระบุข้อมูลเพิ่มเติมสำหรับคำขอไปยังโมเดล ให้ใช้ตัวแปรอินพุตภายในเทมเพลตพรอมต์ฝั่งเซิร์ฟเวอร์ พร้อมกับการตรวจสอบอินพุต
การดำเนินการโค้ด
เครื่องมือการเรียกใช้โค้ดช่วยให้โมเดลสามารถสร้างและเรียกใช้โค้ด Python ได้
การกำหนดค่า (Frontmatter)
---
model: 'gemini-3-flash-preview'
tools:
- codeExecution
---
พรอมต์และคำสั่งของระบบ (หากมี)
What is the sum of the first 50 prime numbers?
Generate and run code for the calculation, and make sure you get all 50.
บริบท URL
เครื่องมือบริบท URL ช่วยให้คุณระบุบริบทเพิ่มเติมให้กับโมเดลในรูปแบบของ URL ได้ ตัวอย่างนี้ยังแสดงวิธีระบุการตรวจสอบอินพุตสำหรับ URL หากผู้ใช้เป็นผู้ระบุ
การกำหนดค่า (Frontmatter)
---
model: 'gemini-3-flash-preview'
input:
schema:
url1:
type: string
pattern: '^https?://[\w.-]+\.[a-z]{2,}\S*$'
maxLength: 100
url2:
type: string
pattern: '^https?://[\w.-]+\.[a-z]{2,}\S*$'
maxLength: 100
tools:
- urlContext
---
พรอมต์และคำสั่งของระบบ (หากมี)
Compare the ingredients and cooking times from the recipes at {{url1}} and {{url2}}
การเชื่อมต่อแหล่งข้อมูลกับ Google Search
เครื่องมือการเชื่อมต่อแหล่งข้อมูลด้วย Google Search เชื่อมต่อโมเดลกับเนื้อหาบนเว็บแบบเรียลไทม์ที่เผยแพร่ต่อสาธารณะ
การกำหนดค่า (Frontmatter)
---
model: 'gemini-3-flash-preview'
tools:
- googleSearch
---
พรอมต์และคำสั่งของระบบ (หากมี)
Who won the Euro 2024?
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
safetySetting: block_medium_and_above
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}}.