ב-Firebase AI Logic, מסוף Firebase מספק ממשק משתמש מודרך שבו אפשר לציין את התוכן של תבנית.
תבניות של הנחיות לשרת משתמשות בתחביר ובפורמט שמבוססים על Dotprompt. בדף הזה אפשר למצוא תיאורים מפורטים של פורמט התבנית והתחביר, וגם דוגמאות.
אלה הרכיבים הכי חשובים בדוגמה לבקשה למודל Gemini:
---
model: 'gemini-3.8-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-3.8-flash, אבל אפשר להשתמש בכל מודל Gemini שנתמך על ידי Firebase AI Logic (חוץ ממודלים של Gemini Live).
שלום עולם
דוגמה מינימלית לתבנית פרומפט לשרת:
הגדרה (frontmatter)
---
model: 'gemini-3.8-flash'
---
הפרומפט וההוראות למערכת (אם רלוונטי)
Write a story about a magic backpack.
שליטה ביצירת תשובות
יש כמה דרכים לשלוט ביצירת התשובות, בהתאם לתרחיש השימוש ולרמת השליטה שאתם צריכים.
הגדרת המודל
הגדרת תצורת מודל כדי לקבוע איך המודל יוצר תשובה, למשל מספר הווריאציות של התשובה (candidateCount), מספר הטוקנים המקסימלי בפלט וכו'.
הגדרה (frontmatter)
---
model: 'gemini-3.8-flash'
config:
candidateCount: 1
maxOutputTokens: 200
stopSequences: ["red"]
---
הפרומפט וההוראות למערכת (אם רלוונטי)
Write a story about a magic backpack.
הגדרות החשיבה
מציינים הגדרה שקשורה לחשיבה למודלים שתומכים בחשיבה.
הגדרה (frontmatter)
Gemini 3.x ומודלים חדשים יותר (רמות חשיבה)
--- model: 'gemini-3.8-flash' config: thinkingConfig: thinkingLevel: medium includeThoughts: true ---Gemini 2.5 מודלים (תקציבי חשיבה)
--- model: 'gemini-2.5-flash' config: thinkingConfig: thinkingBudget: 1024 includeThoughts: true ---
הפרומפט ו (אם רלוונטי) הוראות המערכת
Solve x^2 + 4x + 4 = 0
הגדרות הבטיחות
אתם יכולים להשתמש בהגדרות הבטיחות כדי לשנות את הסיכוי לקבל תשובות שעלולות להיחשב כמזיקות.
הגדרה (frontmatter)
דוגמה עם הגדרת בטיחות אחת:
---
model: 'gemini-3.8-flash'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
---
דוגמה עם כמה הגדרות בטיחות:
---
model: 'gemini-3.8-flash'
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.8-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-3.8-flash'
---
הפרומפט וההוראות למערכת (אם רלוונטי)
Create an example customer invoice for a customer named {{customerName}}.
אפשר לספק ערך ברירת מחדל בתבנית, אבל בדרך כלל הלקוח מספק את הערך של משתנה קלט כחלק מהבקשה.
תהליכי יצירת קשר (לולאות ותנאים)
כדי לכתוב פרומפטים מורכבים יותר, אפשר להשתמש בבלוקים מותנים (כמו #if ,
else ו-#unless) ובאיטרציה (#each).
אפשר לספק מידע נוסף על ההקשר כמשתנים עם הקידומת המיוחדת @:
-
@first: הערך הוא true כשמבצעים איטרציה על הפריט הראשון בבלוק#each. -
@last: הערך הוא true כשמבצעים איטרציה על הפריט האחרון בבלוק#each. -
@index: מחזירה את מיקום האינדקס (מבוסס על אפס) של הרכיב הנוכחי.
במסמכי התיעוד של Handlebars מופיע מידע על כל העוזרים הלוגיים המובנים.
הגדרה (frontmatter)
---
model: 'gemini-3.8-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}}
אם המשתנה הוא בוליאני, התנאי פועל כמו שציפיתם. אם המשתנה לא בוליאני, התנאי הוא למעשה בדיקה של 'לא אפס'. האפשרות הזו יכולה להיות שימושית לטיפול בקלטים אופציונליים, לדוגמה:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
אימות קלט וסכימה
אם יש לכם נתונים שמגיעים מהלקוח, מומלץ מאוד להשתמש בסכימת קלט כדי להגן מפני הזרקת הנחיות וגם כדי לוודא שהנתונים שמועברים בבקשה תואמים לציפיות שלכם.
אתם יכולים לספק ערכי ברירת מחדל למקרה שהלקוח לא יספק ערך.
הסכימה תומכת בסוגים סקלריים
string,integer,number,booleanו-object. אובייקטים, מערכים וסוגי נתונים מנומְרים מסומנים בסוגריים אחרי שם השדה.כל המאפיינים נחשבים כמאפייני חובה, אלא אם מציינים שהם אופציונליים באמצעות התג
?. כשמאפיין מסומן כאופציונלי, הוא גם מוגדר כמאפשר ערך null כדי לאפשר למודלים של LLM להחזיר ערך null במקום להשמיט שדה.
בדוגמה הבסיסית הבאה אפשר לראות איך מספקים סכימת קלט. בהמשך מופיעה סכימה מתקדמת יותר.
הגדרה (frontmatter)
---
model: 'gemini-3.8-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. אובייקטים, מערכים וסוגי נתונים מנומְרים מסומנים בסוגריים אחרי שם השדה.כל המאפיינים נחשבים כמאפייני חובה, אלא אם מציינים שהם אופציונליים באמצעות התג
?. כשמאפיין מסומן כאופציונלי, הוא גם מוגדר כמאפשר ערך null כדי לאפשר למודלים של LLM להחזיר ערך null במקום להשמיט שדה.
הנה דוגמה בסיסית ליצירת פלט JSON מובנה. בהמשך מופיעה סכימה מתקדמת יותר.
הגדרה (frontmatter)
---
model: gemini-3.8-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-3.8-flash'
---
הפרומפט וההוראות למערכת (אם רלוונטי)
Describe this image
{{media type="mimeType" data="imageData"}}
דוגמה מורכבת (קלט רב-אופני)
הנה דוגמה מורכבת יותר לאספקת קלט רב-אופני.
הגדרה (frontmatter)
---
model: gemini-3.8-flash
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.8-flash'
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 context
הכלי URL context מאפשר לספק למודל הקשר נוסף בצורה של כתובות URL. בדוגמה הזו אפשר לראות גם איך אפשר לציין אימות של כתובות URL אם הן מסופקות על ידי המשתמש.
הגדרה (frontmatter)
---
model: 'gemini-3.8-flash'
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
הכלי Grounding with
הגדרה (frontmatter)
---
model: 'gemini-3.8-flash'
tools:
- googleSearch
---
הפרומפט וההוראות למערכת (אם רלוונטי)
Who won the Euro 2024?
עיגון באמצעות Google Maps
הכלי Grounding with
כדי להשתמש בכלי googleMaps, צריך לציין אותו באובייקט tools של frontmatter בתבנית. בדוגמה הבאה מוצגות כמה הגדרות אופציונליות נוספות:
לאפשר משתני קלט מקוד בצד הלקוח, ולבצע אימות קלט וסכימה של הקלט הזה (בדוגמה הזו,
question).מגדירים את הכלי
googleMapsעל ידי ציון קואורדינטות של מיקום או קוד שפה בקוד בצד הלקוח באמצעותTemplateToolConfig.
מתחת לתבנית לדוגמה, יש אפשרות להרחבה שבה מוצגות דוגמאות קוד בצד הלקוח לעבודה עם ההגדרות האופציונליות האלה.
הגדרה (frontmatter)
---
model: 'gemini-3.8-flash'
tools:
- googleMaps
input:
schema:
question: string
---
הפרומפט וההוראות למערכת (אם רלוונטי)
{{role "system"}}
You are a helpful tour guide. Use the Google Maps tool with the provided coordinates to answer the user's question based on their location.
{{role "user"}}
{{question}}