टेंप्लेट का फ़ॉर्मैट, सिंटैक्स, और उदाहरण


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 के मॉडल को छोड़कर, अन्य सभी मॉडल का इस्तेमाल किया जा सकता है.

नमस्ते दुनिया

यहां सर्वर प्रॉम्प्ट टेंप्लेट का एक छोटा सा उदाहरण दिया गया है:

कॉन्फ़िगरेशन (फ़्रंटमैटर)

---
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.


सिस्टम के निर्देश

मॉडल के व्यवहार को कंट्रोल करने के लिए, सिस्टम के निर्देश सेट करें. इन्हें प्रॉम्प्ट में शामिल किया जाता है:

  • {{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}}


इनपुट की पुष्टि करना और स्कीमा

अगर आपको क्लाइंट से डेटा मिल रहा है, तो हमारा सुझाव है कि आप इनपुट स्कीमा का इस्तेमाल करें. इससे प्रॉम्प्ट इंजेक्शन से बचने में मदद मिलती है. साथ ही, यह पक्का किया जा सकता है कि अनुरोध में पास किया गया डेटा आपकी उम्मीदों के मुताबिक हो.

  • अगर क्लाइंट कोई वैल्यू नहीं देता है, तो डिफ़ॉल्ट वैल्यू दी जा सकती हैं.

  • यह स्कीमा, स्केलर टाइप 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 मॉडल और सिर्फ़ टेक्स्ट वाले प्रॉम्प्ट का इस्तेमाल करके इमेज जनरेट करना. ज़्यादा मदद पाने के लिए, कुछ समय बाद फिर से देखें. इसमें 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
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}}.