ב-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 API).
שלום עולם
דוגמה בסיסית לתבנית לפרומפט בצד השרת:
הגדרה (frontmatter)
---
model: 'gemini-3.8-flash'
---
הנחיה והוראות מערכת (אם רלוונטי)
Write a story about a magic backpack.
שליטה ביצירת התשובות
אתם יכולים לשלוט ביצירת התשובות במגוון דרכים, בהתאם לתרחיש לדוגמה ולרמת השליטה שאתם צריכים.
הגדרת המודל
מגדירים תצורת מודל כדי לקבוע איך המודל ייצור תשובה, למשל מספר מקסימלי של טוקנים בפלט, רצפי עצירה וכו'.
הגדרה (frontmatter)
---
model: 'gemini-3.8-flash'
config:
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}}
אם המשתנה הוא בוליאני, התנאי פועל כצפוי. אם המשתנה הוא לא בוליאני, התנאי הוא למעשה בדיקה של "is-not-null". זה יכול להיות שימושי לטיפול בקלט אופציונלי, לדוגמה:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
אימות קלט וסכימה
אם יש לכם נתונים שמגיעים מהלקוח, מומלץ מאוד להשתמש בסכימת קלט כדי להגן מפני החדרת פרומפטים ולוודא שהנתונים שמועברים בבקשה תואמים לציפיות שלכם.
אתם יכולים לספק ערכי ברירת מחדל למקרה שהלקוח לא מספק ערך.
הסכימה תומכת בסוגים הסקלריים
string,integer,number,booleanו-object. אובייקטים, מערכים וערכי enum מסומנים בסוגריים אחרי שם השדה.כל המאפיינים נחשבים כמאפייני חובה, אלא אם מציינים שהם אופציונליים באמצעות
?. כשמאפיין מסומן כאופציונלי, הוא גם מקבל ערך 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. אובייקטים, מערכים וערכי enum מסומנים בסוגריים אחרי שם השדה.כל המאפיינים נחשבים כמאפייני חובה, אלא אם מציינים שהם אופציונליים באמצעות
?. כשמאפיין מסומן כאופציונלי, הוא גם מקבל ערך 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
הכלי הקשר של כתובת URL מאפשר לספק למודל הקשר נוסף בצורת כתובות 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
הכלי ביסוס באמצעות
כדי להשתמש בכלי 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}}