ב-Firebase AI Logic, מסוף Firebase מספק ממשק משתמש מודרך שבו אפשר לציין את התוכן של תבנית.
תבניות של הנחיות לשרת משתמשות בתחביר ובפורמט שמבוססים על Dotprompt. בדף הזה אפשר למצוא תיאורים מפורטים של פורמט התבנית והתחביר שלה, וגם דוגמאות.
אלה הרכיבים הכי חשובים בדוגמה לבקשה למודל Gemini:
---
model: 'gemini-3.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-3.5-flash, אבל אתם יכולים להשתמש בכל מודל Gemini שנתמך על ידי Firebase AI Logic (חוץ ממודלים של Gemini Live).
שלום עולם
דוגמה מינימלית לתבנית הנחיה לשרת:
הגדרה (frontmatter)
---
model: 'gemini-3.5-flash'
---
הנחיה והוראות מערכת (אם רלוונטי)
Write a story about a magic backpack.
שליטה ביצירת תשובות
יש כמה דרכים לשלוט ביצירת התשובות, בהתאם לתרחיש השימוש ולרמת השליטה שאתם צריכים.
הגדרת המודל
מגדירים תצורת מודל כדי לקבוע איך המודל יוצר תשובה, למשל מספר וריאציות התשובה (candidateCount), מספר הטוקנים המקסימלי של הפלט וכו'.
הגדרה (frontmatter)
---
model: 'gemini-3.5-flash'
config:
candidateCount: 1
maxOutputTokens: 200
stopSequences: ["red"]
---
הנחיה והוראות מערכת (אם רלוונטי)
Write a story about a magic backpack.
הגדרות של תכונת החשיבה
מציינים הגדרה שקשורה לחשיבה עבור מודלים שתומכים בחשיבה.
הגדרה (frontmatter)
Gemini 3.x ומודלים חדשים יותר (רמות חשיבה)
--- model: 'gemini-3.5-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.5-flash'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
---
דוגמה עם כמה הגדרות בטיחות:
---
model: 'gemini-3.5-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.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-3.5-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.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}}
אם המשתנה הוא בוליאני, התנאי פועל כצפוי. אם המשתנה לא בוליאני, התנאי הוא למעשה בדיקה של 'לא null'. האפשרות הזו יכולה להיות שימושית לטיפול בקלטים אופציונליים, לדוגמה:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
אימות קלט וסכימה
אם יש לכם נתונים שמגיעים מהלקוח, מומלץ מאוד להשתמש בסכימת קלט כדי להגן מפני הזרקת הנחיות וגם כדי לוודא שהנתונים שמועברים בבקשה תואמים לציפיות שלכם.
אפשר לספק ערכי ברירת מחדל למקרה שהלקוח לא מספק ערך.
הסכימה תומכת בסוגים סקלריים
string,integer,number,booleanו-object. אובייקטים, מערכים וסוגי נתונים מונים מסומנים בסוגריים אחרי שם השדה.כל המאפיינים נחשבים לחובה, אלא אם מציינים שהם אופציונליים באמצעות התג
?. כשמאפיין מסומן כאופציונלי, הוא גם הופך ל-nullable כדי לספק למודלים של שפה גדולה (LLM) יותר גמישות בהחזרת ערך null במקום השמטה של שדה.
דוגמה בסיסית לאספקת סכימת קלט בהמשך מופיעה סכימה מתקדמת יותר.
הגדרה (frontmatter)
---
model: 'gemini-3.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. אובייקטים, מערכים וסוגי נתונים מונים מסומנים בסוגריים אחרי שם השדה.כל המאפיינים נחשבים לחובה, אלא אם מציינים שהם אופציונליים באמצעות התג
?. כשמאפיין מסומן כאופציונלי, הוא גם הופך ל-nullable כדי לספק למודלים של שפה גדולה (LLM) יותר גמישות בהחזרת ערך null במקום השמטה של שדה.
דוגמה בסיסית ליצירת פלט JSON מובנה. בהמשך מופיעה סכימה מתקדמת יותר.
הגדרה (frontmatter)
---
model: gemini-3.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-3.5-flash'
---
הנחיה והוראות מערכת (אם רלוונטי)
Describe this image
{{media type="mimeType" data="imageData"}}
דוגמה מורכבת (קלט מרובה מצבים)
הנה דוגמה מורכבת יותר לאספקת קלט רב-אופני.
הגדרה (frontmatter)
---
model: gemini-3.5-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}}
שימוש בכלים
תבניות של הנחיות לשרת תומכות בכלים הבאים.
אם רוצים שהמשתמשים יספקו מידע נוסף לבקשה למודל, צריך להשתמש במשתני קלט בתבנית ההנחיה של השרת, יחד עם אימות קלט.
.בקשה להפעלת פונקציה
כאן אפשר לעיין במדריך המלא לשימוש בתבניות של הנחיות בשרת כדי להפעיל פונקציות.
הרצת קוד
הכלי code execution מאפשר למודל ליצור ולהריץ קוד Python.
הגדרה (frontmatter)
---
model: 'gemini-3.5-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 context מאפשר לספק למודל הקשר נוסף בצורה של כתובות URL. בדוגמה הזו מוצג גם איך אפשר לציין אימות קלט של כתובות URL אם הן מסופקות על ידי המשתמש.
הגדרה (frontmatter)
---
model: 'gemini-3.5-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
הכלי עיגון באמצעות
הגדרה (frontmatter)
---
model: 'gemini-3.5-flash'
tools:
- googleSearch
---
ההנחיה וההוראות למערכת (אם רלוונטי)
Who won the Euro 2024?
התבססות על Google Maps
הכלי Grounding with
כדי להשתמש בכלי googleMaps, צריך לציין אותו באובייקט tools של החלק הקדמי של התבנית. בדוגמה הבאה מוצגות כמה הגדרות אופציונליות נוספות:
לאפשר משתני קלט מקוד בצד הלקוח, ולבצע אימות קלט וסכימה של הקלט הזה (בדוגמה הזו,
question).מגדירים את הכלי
googleMapsעל ידי ציון קואורדינטות של מיקום או קוד שפה בקוד בצד הלקוח באמצעותTemplateToolConfig.
מתחת לתבנית לדוגמה, יש אזור שניתן להרחבה עם דוגמאות קוד בצד הלקוח לעבודה עם ההגדרות האופציונליות האלה.
הגדרה (frontmatter)
---
model: 'gemini-3.5-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}}
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}}.