Firebase AI Logic के लिए, Firebase कंसोल में आपको एक गाइडेड यूज़र इंटरफ़ेस (यूआई) मिलता है. इसकी मदद से, टेंप्लेट का कॉन्टेंट तय किया जा सकता है.
सर्वर प्रॉम्प्ट टेंप्लेट, Dotprompt पर आधारित सिंटैक्स और फ़ॉर्मैट का इस्तेमाल करते हैं. इस पेज पर, आपको टेंप्लेट के फ़ॉर्मैट और सिंटैक्स के बारे में पूरी जानकारी मिलेगी. साथ ही, Gemini और Imagen, दोनों के उदाहरण भी मिलेंगे.
Gemini मॉडल से अनुरोध करने के उदाहरण के लिए, यहां सबसे ज़रूरी कॉम्पोनेंट दिए गए हैं:
---
model: 'gemini-2.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}}.
तीन डैश वाले सेक्शन में सबसे ऊपर, मॉडल का नाम होता है. साथ ही, इसमें मॉडल कॉन्फ़िगरेशन, इनपुट की पुष्टि या स्कीमा भी शामिल हो सकता है. यह जानकारी, अनुरोध में भेजी जाती है. इसे की-वैल्यू पेयर के तौर पर लिखा जाता है. इसे आम तौर पर YAML फ्रंटमैटर कहा जाता है.
टेंप्लेट के मुख्य हिस्से में प्रॉम्प्ट होता है. इसमें सिस्टम के निर्देश और इनपुट वैल्यू भी शामिल की जा सकती हैं. हालांकि, ऐसा करना ज़रूरी नहीं है. इसके लिए, Handlebars सिंटैक्स का इस्तेमाल किया जाता है.
इस पेज पर, टेंप्लेट के फ़ॉर्मैट और सिंटैक्स के बारे में पूरी जानकारी दी गई है. साथ ही, यहां इनके उदाहरण भी दिए गए हैं:
Gemini
इस सेक्शन में दिए गए सभी उदाहरणों में, gemini-2.5-flash का इस्तेमाल करने वाले टेंप्लेट दिखाए गए हैं. हालाँकि, Firebase AI Logic के साथ काम करने वाले किसी भी Gemini मॉडल का इस्तेमाल किया जा सकता है. Gemini Live मॉडल को छोड़कर, Firebase AI Logic के साथ काम करने वाले किसी भी Gemini मॉडल का इस्तेमाल किया जा सकता है.
नमस्ते दुनिया
यहां सर्वर प्रॉम्प्ट टेंप्लेट का एक छोटा सा उदाहरण दिया गया है:
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-2.5-flash'
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Write a story about a magic backpack.
जवाब जनरेट करने की सुविधा को कंट्रोल करना
अपने इस्तेमाल के उदाहरण और कंट्रोल के लेवल के आधार पर, जवाब जनरेट करने की सुविधा को कई तरीकों से कंट्रोल किया जा सकता है.
मॉडल कॉन्फ़िगरेशन
मॉडल कॉन्फ़िगरेशन सेट करें, ताकि यह कंट्रोल किया जा सके कि मॉडल जवाब कैसे जनरेट करता है. जैसे, ज़्यादा से ज़्यादा आउटपुट टोकन, तापमान, टॉप-के, और टॉप-पी.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-2.5-flash'
config:
candidateCount: 1
temperature: 0.9
topP: 0.1
topK: 16
maxOutputTokens: 200
stopSequences: ["red"]
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Write a story about a magic backpack.
सोचने का कॉन्फ़िगरेशन
ऐसे मॉडल के लिए सोचने से जुड़ा कॉन्फ़िगरेशन तय करें जिनमें सोचने की सुविधा काम करती है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-2.5-flash'
config:
thinkingConfig:
thinkingBudget: 1024
includeThoughts: true
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Solve x^2 + 4x + 4 = 0
सुरक्षा सेटिंग
सुरक्षा सेटिंग का इस्तेमाल करके, ऐसे जवाब मिलने की संभावना को कम करें जिन्हें नुकसान पहुंचाने वाला माना जा सकता है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
सुरक्षा सेटिंग का एक उदाहरण:
---
model: 'gemini-2.5-flash'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
---
एक से ज़्यादा सुरक्षा सेटिंग वाला उदाहरण:
---
model: 'gemini-2.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"}}सिंटैक्स का इस्तेमाल करके, टेक्स्ट प्रॉम्प्ट की जानकारी दें.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-2.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}}.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-2.5-flash'
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Create an example customer invoice for a customer named {{customerName}}.
टेंप्लेट में डिफ़ॉल्ट वैल्यू दी जा सकती है. हालांकि, इनपुट वैरिएबल की वैल्यू आम तौर पर क्लाइंट, अनुरोध के हिस्से के तौर पर देता है.
कंट्रोल फ़्लो (लूप और कंडीशनल)
ज़्यादा जटिल प्रॉम्प्ट लिखने के लिए, शर्त वाले ब्लॉक (जैसे कि #if ,
else, और #unless) और इटरेशन (#each) का इस्तेमाल किया जा सकता है.
आपके पास वैरिएबल के तौर पर, कॉन्टेक्स्ट के हिसाब से अतिरिक्त जानकारी देने का विकल्प होता है. इसके लिए, आपको @ प्रीफ़िक्स का इस्तेमाल करना होगा:
@first:#eachब्लॉक के पहले आइटम को दोहराते समय, यह वैल्यू true होती है.@last:#eachब्लॉक के आखिरी आइटम को दोहराते समय, यह वैल्यू true होती है.@index: इससे मौजूदा एलिमेंट की इंडेक्स पोज़िशन (शून्य से शुरू होने वाली) मिलती है.
पहले से मौजूद सभी लॉजिकल हेल्पर के बारे में जानने के लिए, Handlebars का दस्तावेज़ देखें.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-2.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}}
अगर वैरिएबल एक बूलियन है, तो शर्त आपकी उम्मीद के मुताबिक काम करती है. अगर वैरिएबल, बूलियन नहीं है, तो शर्त के तौर पर "शून्य नहीं है" की जांच की जाती है. यह वैकल्पिक इनपुट को मैनेज करने के लिए फ़ायदेमंद हो सकता है. उदाहरण के लिए:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
इनपुट की पुष्टि करना और स्कीमा
अगर आपको क्लाइंट से डेटा मिल रहा है, तो हमारा सुझाव है कि आप input schema का इस्तेमाल करें. इससे प्रॉम्प्ट इंजेक्शन से बचने में मदद मिलती है. साथ ही, यह पक्का किया जा सकता है कि अनुरोध में पास किया गया डेटा आपकी उम्मीदों के मुताबिक हो.
अगर क्लाइंट कोई वैल्यू नहीं देता है, तो डिफ़ॉल्ट वैल्यू दी जा सकती हैं.
यह स्कीमा, स्केलर टाइप
string,integer,number,boolean, औरobjectके साथ काम करता है. ऑब्जेक्ट, ऐरे, और enum को फ़ील्ड के नाम के बाद ब्रैकेट में दिखाया जाता है.सभी प्रॉपर्टी को ज़रूरी माना जाता है. हालांकि,
?का इस्तेमाल करके, किसी प्रॉपर्टी को 'ज़रूरी नहीं है' के तौर पर मार्क किया जा सकता है. जब किसी प्रॉपर्टी को 'ज़रूरी नहीं है' के तौर पर मार्क किया जाता है, तो उसे 'शून्य हो सकता है' के तौर पर भी मार्क किया जाता है. इससे एलएलएम को फ़ील्ड को हटाने के बजाय, शून्य वैल्यू दिखाने में आसानी होती है.
यहां इनपुट स्कीमा देने का बुनियादी उदाहरण दिया गया है. आपको यहां ज़्यादा बेहतर स्कीमा मिलेगा.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-2.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के साथ काम करता है. ऑब्जेक्ट, ऐरे, और enum को फ़ील्ड के नाम के बाद ब्रैकेट में दिखाया जाता है.सभी प्रॉपर्टी को ज़रूरी माना जाता है. हालांकि,
?का इस्तेमाल करके, किसी प्रॉपर्टी को 'ज़रूरी नहीं है' के तौर पर मार्क किया जा सकता है. जब किसी प्रॉपर्टी को 'ज़रूरी नहीं है' के तौर पर मार्क किया जाता है, तो उसे 'शून्य हो सकता है' के तौर पर भी मार्क किया जाता है. इससे एलएलएम को फ़ील्ड को हटाने के बजाय, शून्य वैल्यू दिखाने में आसानी होती है.
यहां स्ट्रक्चर्ड JSON आउटपुट जनरेट करने का सामान्य उदाहरण दिया गया है. आपको यहां ज़्यादा बेहतर स्कीमा मिल सकता है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: gemini-2.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, टेक्स्ट फ़ाइलें, ऑडियो, और वीडियो).
{{media url}}सिंटैक्स का इस्तेमाल करके, फ़ाइल का यूआरएल दें.{{media type="mime_type" data="contents"}}सिंटैक्स के साथ, इनलाइन फ़ाइल उपलब्ध कराएं.
यहां मल्टीमॉडल इनपुट देने का सामान्य उदाहरण दिया गया है. यहां नीचे एक ज़्यादा जटिल उदाहरण दिया गया है.
कॉन्फ़िगरेशन (फ़्रंटमैटर)
---
model: 'gemini-2.5-flash'
---
प्रॉम्प्ट और (अगर लागू हो) सिस्टम के निर्देश
Describe this image
{{media type="mimeType" data="imageData"}}
Imagen (इमेज जनरेट करने की सुविधा)
शुरुआती रिलीज़ के साथ, सर्वर प्रॉम्प्ट टेंप्लेट इन कामों के लिए उपलब्ध हैं: Imagen मॉडल और सिर्फ़ टेक्स्ट वाले प्रॉम्प्ट का इस्तेमाल करके इमेज जनरेट करना. ज़्यादा मदद पाने के लिए, कुछ समय बाद फिर से देखें. इसमें ये शामिल हैं: Imagen की मदद से इमेज में बदलाव करना (Vertex AI Gemini API का इस्तेमाल करते समय).
सामान्य भूमिकाएं
इस उदाहरण में, 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}}.