किसी मॉडल को हर अनुरोध में, एक प्रॉम्प्ट और ज़रूरत के हिसाब से स्कीमा और कॉन्फ़िगरेशन भेजे जाते हैं. इससे मॉडल के जवाब को कंट्रोल किया जा सकता है. Firebase AI Logic का इस्तेमाल करते समय, यह सारी जानकारी सीधे अपने क्लाइंट कोड से भेजी जा सकती है. इसके अलावा, सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करके, सर्वर-साइड पर यह जानकारी दी जा सकती है.
सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करते समय, प्रॉम्प्ट, स्कीमा, और कॉन्फ़िगरेशन को सर्वर-साइड पर सेव किया जाता है. इसके बाद, आपका ऐप्लिकेशन, क्लाइंट से सर्वर पर सिर्फ़ कुंजी (टेंप्लेट आईडी) पास करता है. यह कुंजी, किसी खास टेंप्लेट के साथ-साथ उस टेंप्लेट के लिए ज़रूरी इनपुट को भी रेफ़र करती है.
सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करते समय, प्रॉम्प्ट और कॉन्फ़िगरेशन को सर्वर-साइड पर सेव किया जाता है. इसके बाद, आपके ऐप्लिकेशन के कोडबेस में सिर्फ़ एक कुंजी (टेंप्लेट आईडी) दी जाती है. इस तरीके के कुछ फ़ायदे यहां दिए गए हैं:
क्लाइंट-साइड पर अपना प्रॉम्प्ट दिखाने से बचें
ऐप्लिकेशन का नया वर्शन रिलीज़ किए बिना, अपना प्रॉम्प्ट और कॉन्फ़िगरेशन अपडेट करें
इस गाइड में, सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल शुरू करने का तरीका बताया गया है.
खास जानकारी पर जाएं ज़्यादा जानकारी पर जाएं
इस्तेमाल किए जा सकने वाले मॉडल और सुविधाएं
Firebase AI Logic के साथ काम करने वाले Gemini और Imagen मॉडल के साथ, सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करें Firebase AI Logic. हालांकि, Gemini Live मॉडल के साथ इसका इस्तेमाल नहीं किया जा सकता.
फ़िलहाल, जिन सुविधाओं के लिए सहायता उपलब्ध नहीं है उनकी सूची देखें.
खास जानकारी
सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करने का बुनियादी तरीका यहां बताया गया है:
Firebase console में, गाइड किए गए यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके टेंप्लेट बनाएं.
Firebase console में, जांच की सुविधा का इस्तेमाल करके, असली अनुरोध में टेंप्लेट की जांच करें.
templateGenerativeModelका इस्तेमाल करके, अपने ऐप्लिकेशन के कोड से टेंप्लेट ऐक्सेस करें.
सर्वर प्रॉम्प्ट टेंप्लेट का बुनियादी फ़ॉर्मैट
Firebase AI Logic के लिए, Firebase console में गाइड किया गया यूज़र इंटरफ़ेस (यूआई) उपलब्ध है. इसकी मदद से, टेंप्लेट का फ़्रंटमैटर और कॉन्टेंट तय किया जा सकता है.
सर्वर प्रॉम्प्ट टेंप्लेट, Dotprompt पर आधारित सिंटैक्स और फ़ॉर्मैट का इस्तेमाल करते हैं. ज़्यादा जानकारी के लिए, टेंप्लेट का फ़ॉर्मैट, सिंटैक्स, और उदाहरण देखें.
नीचे दिए गए उदाहरण टेंप्लेट में, Gemini मॉडल को भेजे जाने वाले अनुरोध के लिए, टेंप्लेट के सबसे ज़रूरी कॉम्पोनेंट दिखाए गए हैं:
---
model: 'gemini-3.6-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}");
}
ज़्यादा जानकारी
इस सेक्शन में, सर्वर प्रॉम्प्ट टेंप्लेट बनाने, उनकी जांच करने, और उनका इस्तेमाल करने के बारे में ज़्यादा जानकारी दी गई है.
शुरू करने से पहले
अगर आपने पहले से ही ऐसा नहीं किया है, तो शुरू करने के लिए बनी गाइड को पूरा करें. इसमें, Firebase प्रोजेक्ट सेट अप करने, अपने ऐप्लिकेशन को Firebase से कनेक्ट करने, SDK टूल जोड़ने, चुने गए Gemini API प्रोवाइडर के लिए बैकएंड सेवा शुरू करने, और
GenerativeModelइंस्टेंस बनाने का तरीका बताया गया है.पक्का करें कि आपके पास सर्वर प्रॉम्प्ट टेंप्लेट बनाने और उन्हें मैनेज करने के लिए ज़रूरी अनुमतियां हों. डिफ़ॉल्ट रूप से, ये सभी अनुमतियां, मालिक की भूमिका में शामिल होती हैं.
अगर Agent Platform Gemini API (formerly Vertex AI) का इस्तेमाल किया जाता है और अगर आपके इस्तेमाल के उदाहरण के लिए, जगह के हिसाब से पाबंदियां ज़रूरी हैं, तो हम टेंप्लेट के लिए बेहतर वर्कफ़्लो की सुविधा देते हैं.
पहला चरण: सर्वर प्रॉम्प्ट टेंप्लेट बनाना
ज़्यादातर इस्तेमाल के उदाहरणों के लिए, Firebase console में सर्वर प्रॉम्प्ट टेंप्लेट बनाए और मैनेज किए जाते हैं.
Firebase console में, एआई सेवाएं > एआई लॉजिक > प्रॉम्प्ट टेंप्लेट टैब पर जाएं.
**नया टेंप्लेट बनाएं** पर क्लिक करें. इसके बाद, शुरुआती टेंप्लेट का कोई विकल्प चुनें.
शुरुआती टेंप्लेट में, इस्तेमाल के कुछ सामान्य उदाहरणों के लिए फ़ॉर्मैट और सिंटैक्स दिया जाता है. हालांकि, कोई भी विकल्प चुनने पर, अपनी ज़रूरत के हिसाब से टेंप्लेट में पूरी तरह से बदलाव किया जा सकता है.
शुरू करने के लिए बनी इस गाइड में, यह माना गया है कि आपने
Input + System Instructionsविकल्प चुना है.
टेंप्लेट के आइडेंटिफ़ायर डालें:
टेंप्लेट का नाम: यह टेंप्लेट का डिसप्ले नेम है. उदाहरण के लिए,
My First Template. यह सिर्फ़ Firebase console जैसे Firebase इंटरफ़ेस में दिखता है.Firebaseटेंप्लेट आईडी: यह आपके Firebase प्रोजेक्ट में टेंप्लेट के लिए यूनीक आईडी होना चाहिए. उदाहरण के लिए,
. अपने ऐप्लिकेशन से भेजे जाने वाले अनुरोध में, इस आईडी को रेफ़र किया जाएगा.my-first-template-v1-0-0हमारा सुझाव है कि टेंप्लेट आईडी के लिए वर्शनिंग सिस्टम का इस्तेमाल करें.
टेंप्लेट आईडी में ज़्यादा से ज़्यादा 63 वर्ण हो सकते हैं. साथ ही, इनमें अंग्रेज़ी के छोटे अक्षर, संख्याएं, और हाइफ़न शामिल किए जा सकते हैं.
ज़रूरत के हिसाब से, टेंप्लेट के कॉन्फ़िगरेशन (फ़्रंटमैटर) सेक्शन में बदलाव करें.
इस सेक्शन में कम से कम मॉडल का नाम शामिल होना चाहिए. जैसे:
--- model: 'gemini-3.6-flash' ---इसके अलावा, ज़रूरत के हिसाब से मॉडल का कॉन्फ़िगरेशन और इनपुट और & आउटपुट कंट्रोल वगैरह भी तय किए जा सकते हैं. ज़्यादा जानकारी और विकल्पों के लिए, टेंप्लेट का फ़ॉर्मैट, सिंटैक्स, और उदाहरण देखें.
ज़रूरत के हिसाब से, टेंप्लेट के प्रॉम्प्ट और (लागू होने पर) सिस्टम के निर्देश सेक्शन में बदलाव करें.
इस सेक्शन में कम से कम, मॉडल को भेजे जाने वाला टेक्स्ट प्रॉम्प्ट शामिल होना चाहिए.
Write a story about a magic backpack.इसके अलावा, ज़्यादा मुश्किल प्रॉम्प्ट भी बनाए जा सकते हैं. जैसे, ये विकल्प. ज़्यादा जानकारी और विकल्पों के लिए, टेंप्लेट का फ़ॉर्मैट, सिंटैक्स, और उदाहरण देखें.
(ज़रूरत के हिसाब से और वैकल्पिक)
{{role "system"}}सिंटैक्स का इस्तेमाल करके, सिस्टम के निर्देश तय करें. साथ ही,{{role "user"}}सिंटैक्स का इस्तेमाल करके, टेक्स्ट प्रॉम्प्ट तय करें.
{{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 में, टेंप्लेट की जांच करने की सुविधा उपलब्ध है. इस सुविधा की मदद से, यह देखा जा सकता है कि टेंप्लेट का इस्तेमाल करने पर क्या होगा. इसमें, अनुरोध का फ़ॉर्मैट और असली अनुरोध का आउटपुट, दोनों शामिल हैं.
टेंप्लेट सेव करें पर क्लिक करें, ताकि अपने टेंप्लेट की जांच की जा सके.
टेंप्लेट में बाद में बदलाव किया जा सकता है या उसे मिटाया भी जा सकता है. सिर्फ़ टेंप्लेट आईडी की वैल्यू को बाद में नहीं बदला जा सकता.
अगर आपके प्रॉम्प्ट में इनपुट वैरिएबल का इस्तेमाल किया गया है, तो इनपुट की जांच करें फ़ील्ड में जांच की वैल्यू शामिल करें. इस उदाहरण के लिए:
{ "customerName": "Jane" }अगर आपके Firebase प्रोजेक्ट में Gemini API के एक से ज़्यादा प्रोवाइडर चालू हैं, तो जांच के अनुरोध के लिए, यह चुना जा सकता है कि कौनसा प्रोवाइडर इस्तेमाल करना है. अगर कंसोल में यह विकल्प दिखता है, तो
Gemini Developer APIयाAgent Platform Gemini API(पहले Vertex AI) में से कोई एक विकल्प चुनें.ध्यान दें कि यह विकल्प सिर्फ़ Firebase console में, जांच की सुविधा के ज़रिए सबमिट किए गए अनुरोधों पर लागू होता है. अपने ऐप्लिकेशन से भेजे जाने वाले असली अनुरोध में, चुने गए Gemini API प्रोवाइडर को ठीक उसी तरह तय किया जाता है जैसे किसी भी अनुरोध के लिए किया जाता है.
फ़ॉर्मैट किया गया जांच का अनुरोध बनाएं बटन पर क्लिक करें.
स्क्रीन के दाईं ओर, फ़ॉर्मैट किया गया जांच का अनुरोध देखें. इसके बाद, अपने टेंप्लेट के किसी भी फ़ील्ड में बदलाव करें.
फ़ॉर्मैट किए गए जांच के अनुरोध से संतुष्ट होने पर, प्रॉम्प्ट की जांच करें बटन पर क्लिक करें.
स्क्रीन के दाईं ओर, जांच का जवाब देखें. इसके बाद, अपने टेंप्लेट के किसी भी फ़ील्ड में बदलाव करें.
अगर अपने ऐप्लिकेशन के कोड से टेंप्लेट को ऐक्सेस करना है, टेंप्लेट को लॉक करें तो टेंप्लेट के सबसे ऊपर दाएं कोने में मौजूद,
लॉक आइकॉन पर क्लिक करें.बदलाव करने की सुविधा से बाहर निकलने के लिए, बंद करें पर क्लिक करें.
तीसरा चरण: अपने कोड से टेंप्लेट को ऐक्सेस करना
|
इस पेज पर, Gemini API प्रोवाइडर के हिसाब से कॉन्टेंट और कोड देखने के लिए, उस पर क्लिक करें. |
सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करके भेजा गया अनुरोध, अन्य अनुरोधों की तरह ही दिखता है. हालांकि, इसमें ये बदलाव किए जाते हैं:
templateGenerativeModel(या ज़रूरत के हिसाब सेtemplateImagenModel) का इस्तेमाल करें.- टेंप्लेट आईडी दें.
- अपने टेंप्लेट के लिए ज़रूरी वैरिएबल इनपुट की वैल्यू दें.
ध्यान दें कि टेंप्लेट बनाने या अपडेट करने के बाद, अपने कोड से उसे ऐक्सेस करने से पहले, आपको कुछ मिनट इंतज़ार करना पड़ सकता है. ऐसा इसलिए, क्योंकि टेंप्लेट को Firebase के सभी सर्वर पर दिखने में थोड़ा समय लगता है.
Swift
अपने अनुरोध में टेंप्लेट का इस्तेमाल करने के लिए, templateGenerativeModel इंस्टेंस (या templateImagenModel) बनाएं.
// ...
// 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 इंस्टेंस (या templateImagenModel) बनाएं.
// ...
// 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 इंस्टेंस (या templateImagenModel) बनाएं.
// ...
// 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 इंस्टेंस (या templateImagenModel) बनाएं.
// ...
// 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 इंस्टेंस (या templateImagenModel) बनाएं.
// ...
// 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 इंस्टेंस (या templateImagenModel) बनाएं.
// ...
// 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}");
}
आगे क्या करना है?
सर्वर प्रॉम्प्ट टेंप्लेट का इस्तेमाल करने के सबसे सही तरीकों और ज़रूरी बातों के बारे में जानें.
टेंप्लेट के फ़ॉर्मैट और सिंटैक्स के बारे में ज़्यादा जानकारी और उदाहरण देखें .
टेंप्लेट मैनेज करने के बारे में जानें. इसमें, टेंप्लेट में बदलाव करना, उन्हें लॉक करना, और वर्शन कंट्रोल करना शामिल है.