मॉडल को किए गए हर अनुरोध में, आपको एक प्रॉम्प्ट भेजना होता है. साथ ही, मॉडल के जवाब को कंट्रोल करने के लिए, स्कीमा और कॉन्फ़िगरेशन भी भेजे जा सकते हैं. Firebase AI Logic का इस्तेमाल करते समय, इस पूरी जानकारी को सीधे अपने क्लाइंट कोड से भेजा जा सकता है. इसके अलावा, सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करके, इस जानकारी को सर्वर साइड पर भी सेट किया जा सकता है.
सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करते समय, प्रॉम्प्ट, स्कीमा, और कॉन्फ़िगरेशन को सर्वर-साइड पर सेव किया जाता है. साथ ही, आपके ऐप्लिकेशन का कोडबेस, क्लाइंट से सर्वर को सिर्फ़ एक कुंजी (टेंप्लेट आईडी) पास करता है. यह कुंजी, किसी खास टेंप्लेट के साथ-साथ उस टेंप्लेट के लिए ज़रूरी इनपुट का रेफ़रंस देती है. इस तरीके के कुछ फ़ायदे यहां दिए गए हैं:
क्लाइंट-साइड पर अपने प्रॉम्प्ट को ज़ाहिर होने से बचाना
ऐप्लिकेशन का नया वर्शन रिलीज़ किए बिना, प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करना
इस गाइड में, सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल शुरू करने का तरीका बताया गया है.
खास जानकारी पर जाएं निर्देशों के बारे में ज़्यादा जानकारी पर जाएं
इस्तेमाल किए जा सकने वाले मॉडल और सुविधाएं
Gemini मॉडल के साथ सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करें. Firebase AI Logic मॉडल के साथ Gemini Live API मॉडल को छोड़कर सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल किया जा सकता है.
उन सुविधाओं की सूची देखें जिनके लिए फ़िलहाल यह सुविधा उपलब्ध नहीं है.
खास जानकारी
सर्वर प्रॉम्प्ट टेंप्लेट इस्तेमाल करने का बुनियादी वर्कफ़्लो यहां दिया गया है:
Firebase कंसोल में, निर्देशों के साथ दिए गए यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके टेंप्लेट बनाएं.
Firebase कंसोल में टेस्टिंग की सुविधा का इस्तेमाल करके, किसी असली अनुरोध में टेंप्लेट की जांच करें.
templateGenerativeModelका इस्तेमाल करके, अपने ऐप्लिकेशन के कोड से टेंप्लेट को ऐक्सेस करें.
सर्वर प्रॉम्प्ट टेंप्लेट का बेसिक फ़ॉर्मैट
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 API पर क्लिक करें. |
यहां दिए गए क्लाइंट कोड के उदाहरण में, अपने कोड में टेंप्लेट का इस्तेमाल करने का तरीका बताया गया है:
Swift
// ...
// Initialize the Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).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 Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).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 Gemini Developer 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 Gemini Developer API backend service.
const ai = getAI(app, { backend: new GoogleAIBackend() });
// 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 Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
var _model = FirebaseAI.googleAI().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 Gemini Developer API backend service.
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// 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}");
}
ज़्यादा जानकारी
इस सेक्शन में, सर्वर प्रॉम्प्ट टेंप्लेट बनाने, उनकी जांच करने, और उन्हें इस्तेमाल करने के बारे में पूरी जानकारी दी गई है.
शुरू करने से पहले
अगर आपने पहले से ही A/B टेस्टिंग नहीं बनाई है, तो शुरुआती गाइड में दिया गया तरीका अपनाएं. इसमें बताया गया है कि Firebase प्रोजेक्ट को कैसे सेट अप करें, अपने ऐप्लिकेशन को Firebase से कैसे कनेक्ट करें, एसडीके को कैसे जोड़ें, चुने गए Gemini API प्रोवाइडर के लिए बैकएंड सेवा को कैसे शुरू करें, और
GenerativeModelइंस्टेंस कैसे बनाएं.पक्का करें कि आपके पास सर्वर प्रॉम्प्ट टेंप्लेट बनाने और मैनेज करने के लिए, ज़रूरी अनुमतियां हों. डिफ़ॉल्ट रूप से, ये सभी अनुमतियां मालिक की भूमिका में शामिल होती हैं.
अगर आपने Agent Platform Gemini API (formerly Vertex AI) और इस्तेमाल के उदाहरण के लिए, जगह के हिसाब से पाबंदियां का इस्तेमाल किया है, तो हम टेंप्लेट के लिए बेहतर वर्कफ़्लो का समर्थन करते हैं.
पहला चरण: सर्वर प्रॉम्प्ट टेंप्लेट बनाना
ज़्यादातर इस्तेमाल के उदाहरणों के लिए, Firebase कंसोल में सर्वर प्रॉम्प्ट टेंप्लेट बनाए और मैनेज किए जाते हैं.
Firebase console में, एआई सेवाएं > एआई लॉजिक > प्रॉम्प्ट टेंप्लेट टैब पर जाएं.
नया टेंप्लेट बनाएं पर क्लिक करें. इसके बाद, स्टार्टर टेंप्लेट का कोई विकल्प चुनें.
इन स्टार्टर टेंप्लेट में, इस्तेमाल के कुछ सामान्य मामलों के लिए फ़ॉर्मैट और सिंटैक्स दिया गया है. हालांकि, कोई भी विकल्प चुनने के बाद, अपनी ज़रूरतों के हिसाब से टेंप्लेट में पूरी तरह से बदलाव किया जा सकता है.
इस गाइड में यह माना गया है कि आपने
Input + System Instructionsविकल्प चुना है.
टेंप्लेट के आइडेंटिफ़ायर डालें:
टेंप्लेट का नाम: यह टेंप्लेट का डिसप्ले नेम है. उदाहरण के लिए,
My First Template. यह सिर्फ़ Firebase इंटरफ़ेस में दिखता है. जैसे, Firebase कंसोल.टेंप्लेट आईडी: यह आपके Firebase प्रोजेक्ट में मौजूद टेंप्लेट के लिए यूनीक आईडी होना चाहिए. उदाहरण के लिए,
. आपको अपने ऐप्लिकेशन से किए गए अनुरोध में इस आईडी का रेफ़रंस देना होगा.my-first-template-v1-0-0हमारा सुझाव है कि आप अपने टेंप्लेट आईडी के लिए, वर्शनिंग सिस्टम का इस्तेमाल करें.
टेम्पलेट आईडी में ज़्यादा से ज़्यादा 63 वर्ण हो सकते हैं. इनमें अंग्रेज़ी के छोटे अक्षर, संख्याएं, और हाइफ़न शामिल हो सकते हैं.
ज़रूरत के मुताबिक, टेंप्लेट के कॉन्फ़िगरेशन (फ़्रंटमैटर) सेक्शन में बदलाव करें.
इस सेक्शन में कम से कम मॉडल का नाम शामिल होना चाहिए. जैसे:
--- model: 'gemini-3.8-flash' ---इसके अलावा, मॉडल के कॉन्फ़िगरेशन और इनपुट & आउटपुट कंट्रोल वगैरह के बारे में भी बताया जा सकता है. ज़्यादा जानकारी और विकल्पों के लिए, टेंप्लेट का फ़ॉर्मैट, सिंटैक्स, और उदाहरण देखें.
ज़रूरत के मुताबिक, टेंप्लेट के प्रॉम्प्ट और (लागू होने पर) सिस्टम के निर्देशों वाले सेक्शन में बदलाव करें.
इस सेक्शन में, मॉडल को भेजने के लिए कम से कम टेक्स्ट प्रॉम्प्ट शामिल होना चाहिए.
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 कंसोल में अपने टेंप्लेट की जांच करना
Firebase कंसोल में, टेंप्लेट को टेस्ट करने की सुविधा मिलती है. इस अनुभव से आपको यह पता चलता है कि आपके टेंप्लेट का इस्तेमाल करने पर क्या होगा. इसमें अनुरोध का फ़ॉर्मैट और किसी असल अनुरोध का आउटपुट, दोनों शामिल हैं.
टेम्प्लेट सेव करें पर क्लिक करें, ताकि अपने टेंप्लेट की जांच की जा सके.
आपके पास बाद में कभी भी, टेंप्लेट में बदलाव करने या उसे मिटाने का विकल्प होता है. सिर्फ़ टेंप्लेट आईडी को बाद में नहीं बदला जा सकता.
अगर आपके प्रॉम्प्ट में इनपुट वैरिएबल का इस्तेमाल किया गया है, तो टेस्ट इनपुट फ़ील्ड में टेस्ट वैल्यू शामिल करें. इस उदाहरण के लिए:
{ "customerName": "Jane" }अगर आपने अपने Firebase प्रोजेक्ट में एक से ज़्यादा Gemini API प्रोवाइडर चालू किए हैं, तो टेस्ट के अनुरोध के लिए किसी एक को चुना जा सकता है. अगर यह विकल्प कंसोल में दिखता है, तो
Gemini Developer APIयाAgent Platform Gemini API(पहले Vertex AI) में से कोई एक चुनें.ध्यान दें कि यह विकल्प सिर्फ़ उन अनुरोधों पर लागू होता है जिन्हें Firebase कंसोल टेस्टिंग की सुविधा के ज़रिए सबमिट किया गया है. आपके ऐप्लिकेशन से किए गए असली अनुरोध में, आपको अपनी चुनी गई Gemini API कंपनी के बारे में बताना होगा. यह ठीक उसी तरह से किया जाता है जैसे किसी भी अनुरोध के लिए किया जाता है.
फ़ॉर्मैट किया गया टेस्ट अनुरोध बनाएं बटन पर क्लिक करें.
स्क्रीन के दाईं ओर मौजूद, फ़ॉर्मैट किया गया टेस्ट अनुरोध देखें. साथ ही, अपने किसी भी टेंप्लेट फ़ील्ड में बदलाव करें.
टेस्ट के अनुरोध को फ़ॉर्मैट करने के बाद, प्रॉम्प्ट टेस्ट चलाएं बटन पर क्लिक करें.
स्क्रीन की दाईं ओर मौजूद टेस्ट रिस्पॉन्स की समीक्षा करें. इसके बाद, अपने किसी भी टेंप्लेट फ़ील्ड में बदलाव करें.
अगर आपको अपने ऐप्लिकेशन के कोड से टेंप्लेट को ऐक्सेस करना है, तो टेंप्लेट के सबसे ऊपर दाएं कोने में मौजूद,
लॉक करें आइकॉन पर क्लिक करके, टेंप्लेट को लॉक करें.बदलाव करने की सुविधा से बाहर निकलने के लिए, बंद करें पर क्लिक करें.
तीसरा चरण: कोड का इस्तेमाल करके अपने टेंप्लेट को ऐक्सेस करना
|
इस पेज पर, सेवा देने वाली कंपनी के हिसाब से कॉन्टेंट और कोड देखने के लिए, Gemini API पर क्लिक करें. |
सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करके किए गए अनुरोध, अन्य अनुरोधों की तरह ही दिखते हैं. हालांकि, इनमें ये बदलाव किए जाते हैं:
templateGenerativeModelका इस्तेमाल करें.- टेंप्लेट का आईडी दें.
- अपने टेंप्लेट के लिए ज़रूरी वैरिएबल इनपुट की वैल्यू दें.
ध्यान दें कि टेंप्लेट बनाने या अपडेट करने के बाद, आपको कुछ मिनट इंतज़ार करना पड़ सकता है. ऐसा इसलिए, ताकि टेंप्लेट को Firebase सर्वर पर अपडेट किया जा सके. इसके बाद ही, इसे अपने कोड से ऐक्सेस किया जा सकता है.
Swift
अपने अनुरोध में टेंप्लेट का इस्तेमाल करने के लिए, templateGenerativeModel इंस्टेंस बनाएं.
// ...
// Initialize the Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
let model = FirebaseAI.firebaseAI(backend: .googleAI()).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 इंस्टेंस बनाएं.
// ...
// Initialize the Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).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 इंस्टेंस बनाएं.
// ...
// Initialize the Gemini Developer 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 इंस्टेंस बनाएं.
// ...
// Initialize the Gemini Developer API backend service.
const ai = getAI(app, { backend: new GoogleAIBackend() });
// 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 इंस्टेंस बनाएं.
// ...
// Initialize the Gemini Developer API backend service.
// Create a `TemplateGenerativeModel` instance.
var _model = FirebaseAI.googleAI().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 इंस्टेंस बनाएं.
// ...
// Initialize the Gemini Developer API backend service.
var firebaseAI = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// 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}");
}
आगे क्या करना है?
सर्वर प्रॉम्प्ट टेंप्लेट इस्तेमाल करने के सबसे सही तरीकों और ज़रूरी बातों के बारे में जानें.
टेंप्लेट के फ़ॉर्मैट और सिंटैक्स के बारे में जानकारी पाएं. साथ ही, उदाहरण देखें.
टेंप्लेट मैनेज करने के बारे में जानें. इनमें बदलाव करना, लॉक करना, और वर्शन कंट्रोल करना शामिल है.
ऐडवांस वर्कफ़्लो के बारे में जानें. जैसे, हमारे REST API का इस्तेमाल करके, प्रोग्राम के हिसाब से टेंप्लेट के साथ काम करना या अपने टेंप्लेट को किसी खास जगह पर डिप्लॉय करना.