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


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}}.
  • तीन डैश वाले सबसे ऊपर के सेक्शन में, मॉडल का नाम होता है. साथ ही, इसमें मॉडल का कोई कॉन्फ़िगरेशन, इनपुट की पुष्टि या स्कीमा भी शामिल हो सकता है. हालांकि, यह ज़रूरी नहीं है. इसे की-वैल्यू पेयर के तौर पर लिखा जाता है. इसे आम तौर पर YAML फ्रंटमैटर कहा जाता है.

  • टेंप्लेट के मुख्य हिस्से में प्रॉम्प्ट होता है. इसमें सिस्टम के निर्देश और इनपुट वैल्यू भी शामिल की जा सकती हैं. इसके लिए, Handlebars सिंटैक्स का इस्तेमाल करें.


इस पेज पर, टेंप्लेट के फ़ॉर्मैट और सिंटैक्स के बारे में पूरी जानकारी दी गई है. साथ ही, यहां इनके उदाहरण भी दिए गए हैं:

इस पेज पर दिए गए सभी उदाहरणों में, gemini-3.8-flash का इस्तेमाल करने वाले टेंप्लेट दिखाए गए हैं. हालांकि, Firebase AI Logic के साथ काम करने वाले किसी भी Gemini मॉडल का इस्तेमाल किया जा सकता है. Gemini Live API मॉडल का इस्तेमाल नहीं किया जा सकता.

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

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

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

---
model: 'gemini-3.8-flash'
---

प्रॉम्प्ट और सिस्टम से जुड़े निर्देश (अगर लागू हों)

Write a story about a magic backpack.



जवाब जनरेट करने की प्रोसेस को कंट्रोल करना

आपके पास जवाब जनरेट करने की प्रोसेस को कंट्रोल करने के कई तरीके हैं. यह आपके इस्तेमाल के उदाहरण और कंट्रोल के लेवल पर निर्भर करता है.

मॉडल कॉन्फ़िगरेशन

मॉडल कॉन्फ़िगरेशन सेट करें, ताकि यह कंट्रोल किया जा सके कि मॉडल जवाब कैसे जनरेट करे. जैसे, आउटपुट टोकन की ज़्यादा से ज़्यादा संख्या, स्टॉप सीक्वेंस वगैरह.

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

---
model: 'gemini-3.8-flash'
config:
  maxOutputTokens: 200
  stopSequences: ["red"]
---

प्रॉम्प्ट और (लागू होने पर) सिस्टम के निर्देश

Write a story about a magic backpack.


सोचने का कॉन्फ़िगरेशन

ऐसे मॉडल के लिए सोचने से जुड़ा कॉन्फ़िगरेशन तय करें जिनमें सोचने की सुविधा काम करती है.

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

  • 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"}} सिंटैक्स का इस्तेमाल करके, टेक्स्ट प्रॉम्प्ट की जानकारी दें.

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

---
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}}) के फ़ॉर्मैट में मौजूद होते हैं.

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

---
model: 'gemini-3.8-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-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 का इस्तेमाल किया जा सकता है. ऑब्जेक्ट, कलेक्शन, और एनम को फ़ील्ड के नाम के बाद ब्रैकेट में दिखाया जाता है.

  • सभी प्रॉपर्टी को ज़रूरी माना जाता है. हालांकि, ? का इस्तेमाल करके, किसी प्रॉपर्टी को 'ज़रूरी नहीं' के तौर पर मार्क किया जा सकता है. जब किसी प्रॉपर्टी को 'ज़रूरी नहीं है' के तौर पर मार्क किया जाता है, तो उसे 'शून्य हो सकता है' के तौर पर भी मार्क किया जाता है. इससे एलएलएम को किसी फ़ील्ड को छोड़ने के बजाय, शून्य वैल्यू दिखाने की अनुमति मिलती है.

इनपुट स्कीमा उपलब्ध कराने का बुनियादी उदाहरण यहां दिया गया है. यहां आपको ज़्यादा बेहतर स्कीमा मिलेगा.

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

---
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 को फ़ील्ड के नाम के बाद ब्रैकेट में दिखाया जाता है.

  • सभी प्रॉपर्टी को ज़रूरी माना जाता है. हालांकि, ? का इस्तेमाल करके, किसी प्रॉपर्टी को 'ज़रूरी नहीं' के तौर पर मार्क किया जा सकता है. जब किसी प्रॉपर्टी को वैकल्पिक के तौर पर मार्क किया जाता है, तो उसे शून्य भी बनाया जाता है. इससे एलएलएम को किसी फ़ील्ड को छोड़ने के बजाय, शून्य वैल्यू दिखाने की ज़्यादा छूट मिलती है.

स्ट्रक्चर्ड JSON आउटपुट जनरेट करने का बुनियादी उदाहरण यहां दिया गया है. यहां नीचे, आपको ज़्यादा बेहतर स्कीमा मिलेगा.

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

---
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, सादे टेक्स्ट वाली फ़ाइलें, ऑडियो, और वीडियो).

  • {{media url}} सिंटैक्स वाले यूआरएल का इस्तेमाल करके, फ़ाइल सबमिट करें.

  • {{media type="mime_type" data="contents"}} सिंटैक्स का इस्तेमाल करके, इनलाइन फ़ाइल उपलब्ध कराएं.

बुनियादी उदाहरण (मल्टीमॉडल इनपुट)

मल्टीमोडल इनपुट देने का एक बुनियादी उदाहरण यहां दिया गया है. यहां आपको एक और जटिल उदाहरण मिलेगा.

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

---
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 कोड जनरेट और रन कर सकता है.

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

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

यूआरएल कॉन्टेक्स्ट

यूआरएल कॉन्टेक्स्ट टूल की मदद से, मॉडल को यूआरएल के तौर पर अतिरिक्त कॉन्टेक्स्ट दिया जा सकता है. इस उदाहरण में यह भी दिखाया गया है कि अगर यूआरएल उपयोगकर्ता ने दिए हैं, तो उनके लिए इनपुट की पुष्टि करने की सुविधा कैसे चालू की जा सकती है.

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

---
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 के साथ ग्राउंडिंग करने की सुविधा, मॉडल को रीयल-टाइम में सार्वजनिक तौर पर उपलब्ध वेब कॉन्टेंट से कनेक्ट करती है.

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

---
model: 'gemini-3.8-flash'
tools:
  - googleSearch
---

प्रॉम्प्ट और सिस्टम से जुड़े निर्देश (अगर लागू हों)

Who won the Euro 2024?

Google Maps से भरोसेमंद जानकारी लेना

Google Maps की मदद से जानकारी ढूंढने की सुविधा देने वाले टूल से, मॉडल को जियोस्पेशल डेटा मिलता है. इससे, मॉडल को जगह की जानकारी के हिसाब से काम करने में मदद मिलती है.

googleMaps टूल का इस्तेमाल करने के लिए, इसे टेंप्लेट के फ़्रंटमैटर के tools ऑब्जेक्ट में शामिल करें. यहां दिए गए उदाहरण में, कुछ अतिरिक्त वैकल्पिक कॉन्फ़िगरेशन दिखाए गए हैं:

  • क्लाइंट-साइड कोड से इनपुट वैरिएबल को अनुमति दें. साथ ही, उस इनपुट का इनपुट की पुष्टि और स्कीमा करें. इस उदाहरण में, यह question है.

  • googleMaps टूल को कॉन्फ़िगर करें. इसके लिए, TemplateToolConfig का इस्तेमाल करके, अपने क्लाइंट-साइड कोड में किसी जगह के निर्देशांक और/या भाषा का कोड डालें.

उदाहरण के तौर पर दिए गए टेंप्लेट के नीचे, बड़ा किया जा सकने वाला सेक्शन देखें. इसमें इन वैकल्पिक कॉन्फ़िगरेशन के साथ काम करने के लिए, क्लाइंट-साइड कोड सैंपल दिखाए गए हैं.

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

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