सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल शुरू करना


किसी मॉडल को हर अनुरोध में, एक प्रॉम्प्ट और ज़रूरत के हिसाब से स्कीमा और कॉन्फ़िगरेशन भेजा जाता है. इससे मॉडल के जवाब को कंट्रोल किया जा सकता है. Firebase AI Logic का इस्तेमाल करते समय, यह सारी जानकारी सीधे अपने क्लाइंट कोड से भेजी जा सकती है. इसके अलावा, सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करके, सर्वर-साइड पर यह जानकारी दी जा सकती है.

सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करते समय, प्रॉम्प्ट, स्कीमा, और कॉन्फ़िगरेशन को सर्वर-साइड पर सेव किया जाता है. इसके बाद, आपका ऐप्लिकेशन, क्लाइंट से सर्वर पर सिर्फ़ कुंजी (टेंप्लेट आईडी) पास करता है. यह कुंजी, किसी खास टेंप्लेट के साथ-साथ उस टेंप्लेट के लिए ज़रूरी इनपुट को भी रेफ़र करती है.

सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करते समय, प्रॉम्प्ट और कॉन्फ़िगरेशन को सर्वर-साइड पर सेव किया जाता है. साथ ही, आपके ऐप्लिकेशन के कोडबेस में सिर्फ़ एक कुंजी (टेंप्लेट आईडी) दी जाती है. इस तरीके के कुछ फ़ायदे यहां दिए गए हैं:

  • क्लाइंट-साइड पर प्रॉम्प्ट को दिखाने से बचना

  • ऐप्लिकेशन का नया वर्शन रिलीज़ किए बिना, प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करना

इस गाइड में, सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल शुरू करने का तरीका बताया गया है.

खास जानकारी पर जाएं ज़्यादा जानकारी पर जाएं

इस्तेमाल किए जा सकने वाले मॉडल और उनकी क्षमताएं

  • Firebase AI Logic के साथ काम करने वाले Gemini और Imagen मॉडल के साथ, सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल किया जा सकता है Firebase AI Logic. हालांकि, Gemini के लाइव मॉडल के साथ ऐसा नहीं किया जा सकता.

  • जिन सुविधाओं के लिए, फ़िलहाल सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल नहीं किया जा सकता उनकी सूची देखें .



खास जानकारी

सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करने का बुनियादी तरीका यहां बताया गया है:

  1. Firebase console में, गाइड की मदद से यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके टेंप्लेट बनाएं.

  2. consoleFirebase में, टेस्टिंग की सुविधा का इस्तेमाल करके, असली अनुरोध में टेंप्लेट की जांच करें.

  3. templateGenerativeModel का इस्तेमाल करके, अपने ऐप्लिकेशन के कोड से टेंप्लेट ऐक्सेस करें.

सर्वर प्रॉम्प्ट टेंप्लेट का बुनियादी फ़ॉर्मैट

Firebase AI Logic के लिए, Firebase console में गाइड की मदद से यूज़र इंटरफ़ेस (यूआई) उपलब्ध है. इसकी मदद से, टेंप्लेट का फ़्रंटमैटर और कॉन्टेंट तय किया जा सकता है.

सर्वर प्रॉम्प्ट टेंप्लेट, Dotprompt पर आधारित सिंटैक्स और फ़ॉर्मैट का इस्तेमाल करते हैं. ज़्यादा जानकारी के लिए, टेंप्लेट का फ़ॉर्मैट, सिंटैक्स, और उदाहरण देखें.

नीचे दिए गए उदाहरण टेंप्लेट में, 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 सिंटैक्स का इस्तेमाल किया जाता है.

कोड में अपने टेंप्लेट का इस्तेमाल करना

इस पेज पर, Gemini API प्रोवाइडर के हिसाब से कॉन्टेंट और कोड देखने के लिए, उस पर क्लिक करें.

नीचे दिए गए उदाहरण क्लाइंट कोड में, अपने कोड में टेंप्लेट का इस्तेमाल करने का तरीका दिखाया गया है:

Swift


// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .vertexAI()).templateGenerativeModel()

let customerName = "Jane"

do {
    let response = try await model.generateContent(
        // Specify your template ID
        templateID: "my-first-template-v1-0-0",
        // Provide the values for any input variables required by your template.
        inputs: [
            "customerName": customerName
        ]
    )
    if let text = response.text {
        print("Response Text: \(text)")
    }
} catch {
    print("An error occurred: \(error)")
}
print("\n")

Kotlin


// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.vertexAI()).templateGenerativeModel()

val customerName = "Jane"

val response = model.generateContent(
    // Specify your template ID
    "my-first-template-v1-0-0",
    // Provide the values for any input variables required by your template.
    mapOf(
        "customerName" to customerName
    )
)

val text = response.text
println(text)

Java


// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();

TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);

String customerName = "Jane";

Future response = model.generateContent(
    // Specify your template ID
    "my-first-template-v1-0-0",
    // Provide the values for any input variables required by your template.
    mapOf("customerName", customerName)
);
addCallback(response,
       new FutureCallback() {
           public void onSuccess(GenerateContentResponse result) {
             System.out.println(result.getText());
           }
           public void onFailure(Throwable t) {
             reportError(t);
           }
    }
executor);

Web


// ...

// Initialize the Vertex AI Gemini API backend service
const ai = getAI(app, { backend: new VertexAIBackend() });

// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);

const customerName = 'Jane';

const result = await model.generateContent(
  // Specify your template ID
  'my-first-template-v1-0-0',
  // Provide the values for any input variables required by your template
  {
    customerName: customerName,
  }
);

const response = result.response;
const text = response.text();

Dart


// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
var _model = FirebaseAI.vertexAI().templateGenerativeModel()

var customerName = 'Jane';

var response = await _model.generateContent(
        // Specify your template ID
        'my-first-template-v1-0-0',
        // Provide the values for any input variables required by your template
        inputs: {
           'customerName': customerName,
        },
      );

var text = response?.text;
print(text);

Unity


// ...

// Initialize the Vertex AI Gemini API backend service
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.VertexAI());

// Create a `TemplateGenerativeModel` instance
var model = firebaseAI.GetTemplateGenerativeModel();

var customerName = "Jane";

try
{
   var response = await model.GenerateContentAsync(
      // Specify your template ID
      "my-first-template-v1-0-0",
      // Provide the values for any input variables required by your template
      new Dictionary<string, object> {
         { "customerName", customerName },
      }
   );
   Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e) {
  Debug.LogError($"An error occurred: {e.Message}");
}



ज़्यादा जानकारी

इस सेक्शन में, सर्वर प्रॉम्प्ट टेंप्लेट बनाने, उनकी जांच करने, और उनका इस्तेमाल करने के बारे में ज़्यादा जानकारी दी गई है.

शुरू करने से पहले

  • अगर आपने पहले से ही ऐसा नहीं किया है, तो शुरू करने के लिए बनी गाइड को पूरा करें. इसमें, Firebase प्रोजेक्ट सेट अप करने, अपने ऐप्लिकेशन को Firebase से कनेक्ट करने, SDK टूल जोड़ने, चुने गए Gemini API प्रोवाइडर के लिए बैकएंड सेवा शुरू करने, और GenerativeModel इंस्टेंस बनाने का तरीका बताया गया है.

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

  • अगर Vertex AI Gemini API का इस्तेमाल किया जाता है और आपके इस्तेमाल के उदाहरण के लिए, जगह के हिसाब से पाबंदियां ज़रूरी हैं, तो हम टेंप्लेट के लिए, बेहतर वर्कफ़्लो की सुविधा देते हैं.

पहला चरण: सर्वर प्रॉम्प्ट टेंप्लेट बनाना

ज़्यादातर इस्तेमाल के उदाहरणों के लिए, Firebase console में सर्वर प्रॉम्प्ट टेंप्लेट बनाए और मैनेज किए जाते हैं.

  1. Firebase console में, एआई सेवाएं > एआई लॉजिक > प्रॉम्प्ट टेंप्लेट टैब पर जाएं.

  2. **नया टेंप्लेट बनाएं** पर क्लिक करें. इसके बाद, शुरुआती टेंप्लेट का कोई विकल्प चुनें.

    • शुरुआती टेंप्लेट में, इस्तेमाल के कुछ सामान्य उदाहरणों के लिए फ़ॉर्मैट और सिंटैक्स दिया जाता है. हालांकि, कोई भी विकल्प चुनने पर, अपनी ज़रूरत के हिसाब से टेंप्लेट में पूरी तरह से बदलाव किया जा सकता है.

    • शुरू करने के लिए बनी इस गाइड में, यह माना गया है कि आपने Input + System Instructions विकल्प चुना है.

  3. टेंप्लेट के आइडेंटिफ़ायर डालें:

    • टेंप्लेट का नाम: यह टेंप्लेट का डिसप्ले नेम है. उदाहरण के लिए, My First Template. यह सिर्फ़ Firebase इंटरफ़ेस में दिखता है. जैसे, the Firebase console.

    • टेंप्लेट आईडी: यह आपके Firebase प्रोजेक्ट में टेंप्लेट के लिए यूनीक आईडी होना चाहिए. उदाहरण के लिए, my-first-template-v1-0-0. आपके ऐप्लिकेशन से किए गए अनुरोध में, इस आईडी को रेफ़र किया जाएगा.

      • हमारा सुझाव है कि टेंप्लेट आईडी के लिए, वर्शनिंग सिस्टम का इस्तेमाल करें.

      • टेंप्लेट आईडी में ज़्यादा से ज़्यादा 63 वर्ण हो सकते हैं. साथ ही, इनमें अंग्रेज़ी के छोटे अक्षर, संख्याएं, और हाइफ़न शामिल किए जा सकते हैं.

  4. ज़रूरत के हिसाब से, टेंप्लेट के कॉन्फ़िगरेशन (फ़्रंटमैटर) सेक्शन में बदलाव करें.

    • इस सेक्शन में कम से कम मॉडल का नाम शामिल होना चाहिए. जैसे:

      ---
      model: 'gemini-3-flash-preview'
      ---
      
    • इसके अलावा, ज़रूरत के हिसाब से मॉडल का कॉन्फ़िगरेशन और इनपुट और आउटपुट कंट्रोल वगैरह तय किए जा सकते हैं. ज़्यादा जानकारी और विकल्पों के लिए, टेंप्लेट का फ़ॉर्मैट, सिंटैक्स, और उदाहरण देखें.

  5. ज़रूरत के हिसाब से, टेंप्लेट के प्रॉम्प्ट और (लागू होने पर) सिस्टम के निर्देश सेक्शन में बदलाव करें.

    • इस सेक्शन में कम से कम, मॉडल को भेजने के लिए टेक्स्ट प्रॉम्प्ट शामिल होना चाहिए.

      Write a story about a magic backpack.
      
    • इसके अलावा, ज़्यादा मुश्किल प्रॉम्प्ट भी बनाए जा सकते हैं. जैसे, ये विकल्प. ज़्यादा जानकारी और विकल्पों के लिए, टेंप्लेट का फ़ॉर्मैट, सिंटैक्स, और उदाहरण देखें.

      • (ज़रूरत के हिसाब से और लागू होने पर) {{role "system"}} सिंटैक्स का इस्तेमाल करके, सिस्टम के निर्देश तय करें. साथ ही, प्रॉम्प्ट तय करने के लिए {{role "user"}} सिंटैक्स का इस्तेमाल करें.

      • (ज़रूरत के हिसाब से) इनपुट वैरिएबल तय करने के लिए Handlebars सिंटैक्स (जैसे {{customerName}}) का इस्तेमाल करें. टेंप्लेट में डिफ़ॉल्ट वैल्यू दी जा सकती है, लेकिन इस इनपुट वैरिएबल की वैल्यू आम तौर पर अनुरोध में पास की जाती है.

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

दूसरा चरण: अपने टेंप्लेट की जांच Firebase console में करना

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

  1. टेंप्लेट सेव करें पर क्लिक करें, ताकि टेंप्लेट की जांच की जा सके.

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

  2. अगर आपके प्रॉम्प्ट में इनपुट वैरिएबल का इस्तेमाल किया गया है, तो इनपुट की जांच करें फ़ील्ड में, जांच के लिए वैल्यू शामिल करें. इस उदाहरण के लिए:

      {
        "customerName": "Jane"
      }
    
  3. अगर आपके Firebase प्रोजेक्ट में, Gemini API के एक से ज़्यादा प्रोवाइडर चालू हैं, तो जांच के अनुरोध के लिए, यह चुना जा सकता है कि कौनसा प्रोवाइडर इस्तेमाल करना है. अगर यह विकल्प कंसोल में दिखता है, तो Gemini Developer API या Vertex AI Gemini API में से कोई एक विकल्प चुनें.

    ध्यान दें कि यह विकल्प सिर्फ़ Firebase console में, जांच की सुविधा के ज़रिए सबमिट किए गए अनुरोधों पर लागू होता है. अपने ऐप्लिकेशन से किए गए असली अनुरोध में, चुने गए Gemini API प्रोवाइडर को ठीक उसी तरह तय किया जाता है जैसे किसी भी अनुरोध के लिए किया जाता है.

  4. फ़ॉर्मैट किया गया जांच का अनुरोध बनाएं बटन पर क्लिक करें.

    स्क्रीन के दाईं ओर, फ़ॉर्मैट किया गया जांच का अनुरोध देखें. इसके बाद, अपने टेंप्लेट के किसी भी फ़ील्ड में बदलाव करें.

  5. फ़ॉर्मैट किए गए जांच के अनुरोध से संतुष्ट होने पर, प्रॉम्प्ट की जांच करें बटन पर क्लिक करें.

    स्क्रीन के दाईं ओर, जांच का जवाब देखें. इसके बाद, अपने टेंप्लेट के किसी भी फ़ील्ड में बदलाव करें.

    Gemini API

  6. अगर आपको अपने ऐप्लिकेशन के कोड से टेंप्लेट ऐक्सेस करना है, टेंप्लेट को लॉक करें टेंप्लेट के सबसे ऊपर दाएं कोने में मौजूद, लॉक आइकॉन पर क्लिक करके.

  7. बदलाव करने की सुविधा से बाहर निकलने के लिए, बंद करें पर क्लिक करें.

तीसरा चरण: अपने कोड से टेंप्लेट ऐक्सेस करना

इस पेज पर, Gemini API प्रोवाइडर के हिसाब से कॉन्टेंट और कोड देखने के लिए, उस पर क्लिक करें.

सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करके किया गया अनुरोध, अन्य अनुरोधों जैसा ही दिखता है. हालांकि, इसमें ये बदलाव किए जाते हैं:

  • templateGenerativeModel (या ज़रूरत के हिसाब से templateImagenModel) का इस्तेमाल करें.
  • टेंप्लेट आईडी दें.
  • अपने टेंप्लेट के लिए ज़रूरी वैरिएबल इनपुट की वैल्यू दें.

ध्यान दें कि टेंप्लेट बनाने या अपडेट करने के बाद, आपको अपने कोड से टेंप्लेट ऐक्सेस करने से पहले, कुछ मिनट इंतज़ार करना पड़ सकता है. ऐसा इसलिए, क्योंकि Firebase के सभी सर्वर पर टेंप्लेट को अपडेट होने में कुछ समय लगता है.

Swift

अपने अनुरोध में टेंप्लेट का इस्तेमाल करने के लिए, templateGenerativeModel इंस्टेंस (या templateImagenModel) बनाएं.


// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .vertexAI()).templateGenerativeModel()

let customerName = "Jane"

do {
    let response = try await model.generateContent(
        // Specify your template ID
        templateID: "my-first-template-v1-0-0",
        // Provide the values for any input variables required by your template.
        inputs: [
            "customerName": customerName
        ]
    )
    if let text = response.text {
        print("Response Text: \(text)")
    }
} catch {
    print("An error occurred: \(error)")
}
print("\n")

Kotlin

अपने अनुरोध में टेंप्लेट का इस्तेमाल करने के लिए, templateGenerativeModel इंस्टेंस (या templateImagenModel) बनाएं.


// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.vertexAI()).templateGenerativeModel()

val customerName = "Jane"

val response = model.generateContent(
    // Specify your template ID
    "my-first-template-v1-0-0",
    // Provide the values for any input variables required by your template.
    mapOf(
        "customerName" to customerName
    )
)

val text = response.text
println(text)

Java

अपने अनुरोध में टेंप्लेट का इस्तेमाल करने के लिए, templateGenerativeModel इंस्टेंस (या templateImagenModel) बनाएं.


// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();

TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);

String customerName = "Jane";

Future response = model.generateContent(
    // Specify your template ID
    "my-first-template-v1-0-0",
    // Provide the values for any input variables required by your template.
    mapOf("customerName", customerName)
);
addCallback(response,
       new FutureCallback() {
           public void onSuccess(GenerateContentResponse result) {
             System.out.println(result.getText());
           }
           public void onFailure(Throwable t) {
             reportError(t);
           }
    }
executor);

Web

अपने अनुरोध में टेंप्लेट का इस्तेमाल करने के लिए, templateGenerativeModel इंस्टेंस (या templateImagenModel) बनाएं.


// ...

// Initialize the Vertex AI Gemini API backend service
const ai = getAI(app, { backend: new VertexAIBackend() });

// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);

const customerName = 'Jane';

const result = await model.generateContent(
  // Specify your template ID
  'my-first-template-v1-0-0',
  // Provide the values for any input variables required by your template
  {
    customerName: customerName,
  }
);

const response = result.response;
const text = response.text();

Dart

Flutter प्लग-इन, सर्वर प्रॉम्प्ट टेंप्लेट के साथ जल्द ही काम करेगा!

अपने अनुरोध में टेंप्लेट का इस्तेमाल करने के लिए, templateGenerativeModel इंस्टेंस (या templateImagenModel) बनाएं.


// ...

// Initialize the Vertex AI Gemini API backend service
// Create a `TemplateGenerativeModel` instance
var _model = FirebaseAI.vertexAI().templateGenerativeModel()

var customerName = 'Jane';

var response = await _model.generateContent(
        // Specify your template ID
        'my-first-template-v1-0-0',
        // Provide the values for any input variables required by your template
        inputs: {
           'customerName': customerName,
        },
      );

var text = response?.text;
print(text);

Unity

अपने अनुरोध में टेंप्लेट का इस्तेमाल करने के लिए, templateGenerativeModel इंस्टेंस (या templateImagenModel) बनाएं.


// ...

// Initialize the Vertex AI Gemini API backend service
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.VertexAI());

// Create a `TemplateGenerativeModel` instance
var model = firebaseAI.GetTemplateGenerativeModel();

var customerName = "Jane";

try
{
   var response = await model.GenerateContentAsync(
      // Specify your template ID
      "my-first-template-v1-0-0",
      // Provide the values for any input variables required by your template
      new Dictionary<string, object> {
         { "customerName", customerName },
      }
   );
   Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e) {
  Debug.LogError($"An error occurred: {e.Message}");
}



आगे क्या करना है?