Firebase AI Logic के लिए, Firebase कंसोल में आपको एक गाइडेड यूज़र इंटरफ़ेस (यूआई) मिलता है. इसकी मदद से, टेंप्लेट का कॉन्टेंट तय किया जा सकता है.
सर्वर प्रॉम्ट टेंप्लेट, 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}}.
तीन डैश वाले सेक्शन में सबसे ऊपर, मॉडल का नाम होता है. साथ ही, इसमें मॉडल कॉन्फ़िगरेशन, इनपुट की पुष्टि या स्कीमा भी शामिल हो सकता है. यह जानकारी, अनुरोध में भेजी जाती है. इसे की-वैल्यू पेयर के तौर पर लिखा जाता है. इसे आम तौर पर YAML फ्रंटमैटर कहा जाता है.
टेंप्लेट के मुख्य हिस्से में प्रॉम्प्ट होता है. इसमें सिस्टम के निर्देश और इनपुट वैल्यू भी शामिल की जा सकती हैं. इसके लिए, Handlebars सिंटैक्स का इस्तेमाल किया जाता है.
इस पेज पर, टेंप्लेट के फ़ॉर्मैट और सिंटैक्स के बारे में पूरी जानकारी दी गई है. साथ ही, यहां इनके उदाहरण भी दिए गए हैं:
Imagen (अब काम नहीं करता)
Gemini
इस सेक्शन में दिए गए सभी उदाहरणों में, gemini-3-flash-preview का इस्तेमाल करने वाले टेंप्लेट दिखाए गए हैं. हालाँकि, Firebase AI Logic के साथ काम करने वाले किसी भी Gemini मॉडल का इस्तेमाल किया जा सकता है. Gemini Live के मॉडल को छोड़कर.
नमस्ते दुनिया
यहां सर्वर प्रॉम्प्ट टेंप्लेट का एक छोटा सा उदाहरण दिया गया है:
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-3-flash-preview'
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Write a story about a magic backpack.
जवाब जनरेट करने की सुविधा को कंट्रोल करना
अपने इस्तेमाल के उदाहरण और आपको किस लेवल का कंट्रोल चाहिए, इसके आधार पर जवाब जनरेट करने की सुविधा को कई तरीकों से कंट्रोल किया जा सकता है.
मॉडल कॉन्फ़िगरेशन
मॉडल कॉन्फ़िगरेशन सेट करें, ताकि यह कंट्रोल किया जा सके कि मॉडल जवाब कैसे जनरेट करता है. जैसे, ज़्यादा से ज़्यादा आउटपुट टोकन, तापमान, टॉप-के, और टॉप-पी.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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.
सोचने का कॉन्फ़िगरेशन
ऐसे मॉडल के लिए सोचने से जुड़ा कॉन्फ़िगरेशन तय करें जिनमें सोचने की सुविधा काम करती है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
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
सुरक्षा सेटिंग
सुरक्षा सेटिंग का इस्तेमाल करके, ऐसे जवाब मिलने की संभावना को कम करें जिन्हें नुकसान पहुंचाने वाला माना जा सकता है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
सुरक्षा सेटिंग का एक उदाहरण:
---
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"}}सिंटैक्स का इस्तेमाल करके, टेक्स्ट प्रॉम्प्ट की जानकारी दें.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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}}.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-3-flash-preview'
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Create an example customer invoice for a customer named {{customerName}}.
टेंप्लेट में डिफ़ॉल्ट वैल्यू दी जा सकती है. हालांकि, इनपुट वैरिएबल की वैल्यू आम तौर पर क्लाइंट, अनुरोध के हिस्से के तौर पर देता है.
कंट्रोल फ़्लो (लूप और कंडीशनल)
ज़्यादा जटिल प्रॉम्प्ट लिखने के लिए, शर्त वाले ब्लॉक (जैसे कि #if ,
else, और #unless) और इटरेशन (#each) का इस्तेमाल किया जा सकता है.
खास @ प्रीफ़िक्स के साथ वैरिएबल के तौर पर, कॉन्टेक्स्ट के बारे में अतिरिक्त जानकारी दी जा सकती है:
@first:#eachब्लॉक के पहले आइटम को दोहराते समय, यह वैल्यू true होती है.@last:#eachब्लॉक के आखिरी आइटम को दोहराते समय, यह वैल्यू true होती है.@index: इससे मौजूदा एलिमेंट की इंडेक्स पोज़िशन (शून्य पर आधारित) मिलती है.
सभी बिल्ट-इन लॉजिकल हेल्पर के बारे में जानकारी पाने के लिए, Handlebars का दस्तावेज़ देखें.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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}}
अगर वैरिएबल एक बूलियन है, तो शर्त आपकी उम्मीद के मुताबिक काम करती है. अगर वैरिएबल बूलियन नहीं है, तो शर्त "शून्य नहीं है" की जांच करती है. यह वैकल्पिक इनपुट को मैनेज करने के लिए फ़ायदेमंद हो सकता है. उदाहरण के लिए:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
इनपुट की पुष्टि करना और स्कीमा
अगर आपको क्लाइंट से डेटा मिल रहा है, तो हमारा सुझाव है कि आप input schema का इस्तेमाल करें. इससे प्रॉम्प्ट इंजेक्शन से बचने में मदद मिलती है. साथ ही, यह पक्का किया जा सकता है कि अनुरोध में पास किया गया डेटा आपकी उम्मीदों के मुताबिक हो.
अगर क्लाइंट कोई वैल्यू नहीं देता है, तो डिफ़ॉल्ट वैल्यू दी जा सकती हैं.
यह स्कीमा, स्केलर टाइप
string,integer,number,boolean, औरobjectके साथ काम करता है. ऑब्जेक्ट, ऐरे, और enum को फ़ील्ड के नाम के बाद ब्रैकेट में दिखाया जाता है.सभी प्रॉपर्टी को ज़रूरी माना जाता है. हालांकि,
?का इस्तेमाल करके, किसी प्रॉपर्टी को 'ज़रूरी नहीं है' के तौर पर मार्क किया जा सकता है. जब किसी प्रॉपर्टी को 'ज़रूरी नहीं' के तौर पर मार्क किया जाता है, तो उसे नल वैल्यू के तौर पर भी मार्क किया जाता है. इससे एलएलएम को फ़ील्ड को छोड़ने के बजाय, नल वैल्यू दिखाने में आसानी होती है.
इनपुट स्कीमा देने का सामान्य उदाहरण यहां दिया गया है. आपको यहां ज़्यादा बेहतर स्कीमा मिलेगा.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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 को फ़ील्ड के नाम के बाद ब्रैकेट में दिखाया जाता है.सभी प्रॉपर्टी को ज़रूरी माना जाता है. हालांकि,
?का इस्तेमाल करके, किसी प्रॉपर्टी को 'ज़रूरी नहीं है' के तौर पर मार्क किया जा सकता है. जब किसी प्रॉपर्टी को 'ज़रूरी नहीं' के तौर पर मार्क किया जाता है, तो उसे नल वैल्यू के तौर पर भी मार्क किया जाता है. इससे एलएलएम को फ़ील्ड को छोड़ने के बजाय, नल वैल्यू दिखाने में आसानी होती है.
यहां स्ट्रक्चर्ड JSON आउटपुट जनरेट करने का सामान्य उदाहरण दिया गया है. यहां नीचे, आपको ज़्यादा बेहतर स्कीमा मिल सकता है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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, सादे टेक्स्ट वाली फ़ाइलें, ऑडियो, और वीडियो).
{{media url}}सिंटैक्स का इस्तेमाल करके, फ़ाइल का यूआरएल दें.{{media type="mime_type" data="contents"}}सिंटैक्स के साथ, इनलाइन फ़ाइल उपलब्ध कराएं.
बुनियादी उदाहरण (मल्टीमोडल इनपुट)
यहां मल्टीमॉडल इनपुट देने का सामान्य उदाहरण दिया गया है. यहां नीचे एक ज़्यादा जटिल उदाहरण दिया गया है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-3-flash-preview'
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Describe this image
{{media type="mimeType" data="imageData"}}
मुश्किल उदाहरण (मल्टीमोडल इनपुट)
यहां मल्टीमॉडल इनपुट देने का एक ज़्यादा जटिल उदाहरण दिया गया है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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 कोड जनरेट और रन कर सकता है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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.
यूआरएल का कॉन्टेक्स्ट
यूआरएल कॉन्टेक्स्ट टूल की मदद से, मॉडल को यूआरएल के तौर पर अतिरिक्त कॉन्टेक्स्ट दिया जा सकता है. इस उदाहरण में यह भी दिखाया गया है कि अगर यूआरएल उपयोगकर्ता ने दिए हैं, तो उनके लिए इनपुट की पुष्टि करने की सुविधा कैसे तय की जा सकती है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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 से जानकारी पाने की सुविधा, मॉडल को रीयल-टाइम में सार्वजनिक तौर पर उपलब्ध वेब कॉन्टेंट से कनेक्ट करती है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-3-flash-preview'
tools:
- googleSearch
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Who won the Euro 2024?
Imagen (इमेज जनरेट करने की सुविधा) (बंद कर दी गई है)
शुरुआती रिलीज़ के साथ, सर्वर प्रॉम्प्ट टेंप्लेट इन सुविधाओं के साथ काम करते हैं: Imagen मॉडल और सिर्फ़ टेक्स्ट वाले प्रॉम्प्ट का इस्तेमाल करके इमेज जनरेट करना. ज़्यादा मदद पाने के लिए, कुछ समय बाद फिर से देखें. इसमें Vertex AI Gemini API का इस्तेमाल करते समय, Imagen की मदद से इमेज में बदलाव करना भी शामिल है.
सामान्य भूमिकाएं
इस उदाहरण में, Imagen की मदद से इमेज जनरेट करने के लिए एक बुनियादी टेंप्लेट दिखाया गया है. इसमें Gemini की तरह ही, इनपुट वैरिएबल और इनपुट की पुष्टि की सुविधा दी गई है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'imagen-4.0-generate-001'
input:
schema:
prompt: 'string'
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Create an image containing {{prompt}}
बेहतर
इस उदाहरण में बताया गया है कि मॉडल कॉन्फ़िगरेशन कैसे जोड़ा जाए, सुरक्षा सेटिंग कैसे तय की जाए, और प्रॉम्प्ट में Gemini जैसी ज़्यादा बेहतर सुविधाओं का इस्तेमाल कैसे किया जाए. जैसे, इनपुट वैरिएबल, इनपुट की पुष्टि, और कंट्रोल फ़्लो.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
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}}.