जनरेटिव एआई मॉडल की उपलब्धता में अक्सर बदलाव होता रहता है. नए और बेहतर मॉडल रिलीज़ किए जाते हैं. वहीं, पुराने और कम क्षमता वाले मॉडल बंद कर दिए जाते हैं.
Firebase AI Logic का इस्तेमाल करके, मोबाइल या वेब ऐप्लिकेशन से सीधे जनरेटिव एआई मॉडल ऐक्सेस करने पर, यह ज़रूरी है कि आप अपने ऐप्लिकेशन को इन मॉडल में होने वाले लगातार बदलावों के हिसाब से कॉन्फ़िगर करें.Firebase AI Logic आपके सभी उपयोगकर्ता, उस मॉडल का इस्तेमाल करने के लिए अपने ऐप्लिकेशन को नए वर्शन में अपडेट नहीं करेंगे जिसका इस्तेमाल आप उनसे कराना चाहते हैं.
Firebase Remote Config की मदद से, अपने ऐप्लिकेशन में पैरामीटर वैल्यू (जैसे, मॉडल का नाम) को डाइनैमिक तौर पर और Firebase कंसोल से रिमोट तरीके से अपडेट किया जा सकता है. इसके लिए, आपको अपने ऐप्लिकेशन का नया वर्शन रिलीज़ करने की ज़रूरत नहीं होती.
ध्यान दें कि मॉडल का नाम बदलना, अहम तरीका है Remote Config को Firebase AI Logic के साथ इस्तेमाल करने का. हालांकि, Remote Config का इस्तेमाल करके, अपने ऐप्लिकेशन में पैरामीटर को डाइनैमिक तौर पर और यहां तक कि शर्तों के हिसाब से भी कंट्रोल किया जा सकता है. जैसे, मॉडल जनरेशन कॉन्फ़िगरेशन (ज़्यादा से ज़्यादा टोकन, तापमान वगैरह), सुरक्षा सेटिंग, सिस्टम के निर्देश, और प्रॉम्प्ट डेटा.
इस गाइड में बताया गया है कि अपने ऐप्लिकेशन में Remote Config को कैसे लागू करें, खास तौर पर, अपने ऐप्लिकेशन में इस्तेमाल किए गए मॉडल के नाम को कंट्रोल करने के लिए.
पहला चरण: Firebase कंसोल में पैरामीटर वैल्यू सेट करना
Remote Config क्लाइंट टेंप्लेट बनाएं. साथ ही, ऐप्लिकेशन में फ़ेच और इस्तेमाल करने के लिए, model_name
पैरामीटर और उसकी वैल्यू कॉन्फ़िगर करें.
Firebase कंसोल में अपना Firebase प्रोजेक्ट खोलें. इसके बाद, नेविगेशन मेन्यू में जाकर, चलाएं को बड़ा करें और Remote Config को चुनें.
पक्का करें कि पेज पर सबसे ऊपर मौजूद क्लाइंट/सर्वर सिलेक्टर में क्लाइंट चुना गया हो.
कॉन्फ़िगरेशन बनाएं पर क्लिक करके, क्लाइंट टेंप्लेट बनाएं. अगर आपने पहले क्लाइंट टेंप्लेट का इस्तेमाल किया है, तो पैरामीटर जोड़ें पर क्लिक करें.
model_nameपैरामीटर तय करें:पैरामीटर का नाम ब्यौरा टाइप डिफ़ॉल्ट वैल्यू model_nameमॉडल का नाम. उपलब्ध मॉडल के नाम देखें . स्ट्रिंग gemini-2.5-flashयह पैरामीटर जोड़ने के बाद, बदलाव पब्लिश करें पर क्लिक करें. अगर यह नया Remote Config टेंप्लेट नहीं है, तो बदलावों की समीक्षा करें और फिर से बदलाव पब्लिश करें पर क्लिक करें.
दूसरा चरण: अपने ऐप्लिकेशन में Remote Config जोड़ना और उसे शुरू करना
Remote Config लाइब्रेरी जोड़ें और अपने ऐप्लिकेशन में Remote Config सेट अप करें.
Swift
Firebase AI Logic सेटअप के तहत, आपने पहले ही अपने ऐप्लिकेशन में Firebase SDK टूल जोड़ लिया है. हालांकि, आपको Remote Config भी जोड़ना होगा.
Xcode में, प्रोजेक्ट खुला होने पर, फ़ाइल > पैकेज डिपेंडेंसी जोड़ें पर जाएं.
firebase-ios-sdk को चुनें. इसके बाद, पैकेज जोड़ें पर क्लिक करें.
प्रोजेक्ट नेविगेटर में जाकर, अपना ऐप्लिकेशन > टारगेट > अपना ऐप्लिकेशन चुनें.
सामान्य टैब में, फ़्रेमवर्क, लाइब्रेरी, और एम्बेड किया गया कॉन्टेंट पर स्क्रोल करें.
**+** पर क्लिक करें और **FirebaseRemoteConfig** को चुनें. इसके बाद, **जोड़ें** पर क्लिक करें.
अपने कोड में
FirebaseRemoteConfigइंपोर्ट जोड़ें:import FirebaseRemoteConfigअपने ऐप्लिकेशन के लिए सही क्लास में, Firebase को शुरू करें और अपने मुख्य ऐप्लिकेशन लॉजिक में Remote Config जोड़ें.
यहां, आपको Remote Config और Remote Config रीयल-टाइम लिसनर को इंपोर्ट के तौर पर शामिल करना होगा, ताकि ऐप्लिकेशन रीयल-टाइम में नई वैल्यू फ़ेच कर सके. साथ ही, फ़ेच करने के लिए कम से कम इंटरवल जोड़ना होगा:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
Kotlin
अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर,
app/build.gradle.ktsयाapp/build.gradle) में Remote Config डिपेंडेंसी जोड़ें:dependencies { implementation(platform("com.google.firebase:firebase-bom:34.12.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }अपने मुख्य ऐप्लिकेशन लॉजिक में Remote Config जोड़ें. यहां, आपको शुरू करना होगा और फ़ेच करने के लिए कम से कम इंटरवल जोड़ना होगा:Remote Config
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर,
app/build.gradle.ktsयाapp/build.gradle) में Remote Config डिपेंडेंसी जोड़ें:dependencies { implementation(platform("com.google.firebase:firebase-bom:34.12.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }अपने मुख्य ऐप्लिकेशन लॉजिक में Remote Config जोड़ें. यहां, आपको शुरू करना होगा और फ़ेच करने के लिए कम से कम इंटरवल जोड़ना होगा:Remote Config
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
टेक्स्ट एडिटर में अपना कोड खोलें और Remote Config इंपोर्ट करें:
import { getRemoteConfig } from 'firebase/remote-config';अपने प्राइमरी फ़ंक्शन में और Firebase ऐप्लिकेशन शुरू होने के बाद Firebase AI Logic SDK के लिए, Remote Config शुरू करें:
// Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);फ़ेच करने के लिए कम से कम इंटरवल सेट करें:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
अपने Flutter प्रोजेक्ट डायरेक्ट्री से, Remote Config इंस्टॉल करें और उसे जोड़ें. इसके लिए, यह कमांड इस्तेमाल करें:
flutter pub add firebase_remote_config./lib/main.dartखोलें और आपके द्वारा जोड़े गए अन्य इंपोर्ट के बाद, इंपोर्ट जोड़ें: Firebase AI Logicimport 'package:firebase_vertexai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart';अपने ऐप्लिकेशन में
_modelNameवैरिएबल जोड़ें, ताकि इसका इस्तेमाल बाद में किया जा सके:late final String _modelName; late final String _systemInstructions; late final String _prompt;Remote Config ऑब्जेक्ट इंस्टेंस पाएं और समय-समय पर रीफ़्रेश के लिए, फ़ेच करने का छोटे से छोटा इंटरवल सेट करें. पक्का करें कि इसे Firebase शुरू होने के बाद जोड़ा जाए.
final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 3600), minimumFetchInterval: const Duration(seconds: 3600), ));
Unity
इन निर्देशों का पालन करके, अपने Unity प्रोजेक्ट में Remote Config जोड़ें.
Remote Config ऑब्जेक्ट इंस्टेंस पाएं और समय-समय पर रीफ़्रेश के लिए, फ़ेच करने का छोटे से छोटा इंटरवल सेट करें. पक्का करें कि इसे Firebase शुरू होने के बाद जोड़ा जाए.
var remoteConfig = FirebaseRemoteConfig.DefaultInstance; const int MillisecondsPerSecond = 1000; await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() { FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond, MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond });
तीसरा चरण: ऐप्लिकेशन में पैरामीटर वैल्यू सेट करना
आपको ऐप्लिकेशन में पैरामीटर की डिफ़ॉल्ट वैल्यू Remote Config ऑब्जेक्ट में सेट करनी चाहिए. इससे यह पक्का होता है कि आपका ऐप्लिकेशन उम्मीद के मुताबिक काम करे. भले ही, वह Remote Config सेवा से वैल्यू फ़ेच न कर पाए.
Swift
Firebase कंसोल में, Remote Config खोलें.
पैरामीटर टैब में, मेन्यू खोलें और डिफ़ॉल्ट वैल्यू डाउनलोड करें को चुनें.
प्रॉम्प्ट मिलने पर, iOS के लिए .plist को चालू करें. इसके बाद, फ़ाइल डाउनलोड करें पर क्लिक करें.
फ़ाइल को अपने ऐप्लिकेशन की डायरेक्ट्री में सेव करें.
Xcode में, अपने ऐप्लिकेशन पर राइट क्लिक करें और फ़ाइलें जोड़ें को चुनें
remote_config_defaults.plist को चुनें. इसके बाद, जोड़ें पर क्लिक करें.
डिफ़ॉल्ट फ़ाइल को रेफ़र करने के लिए, अपने ऐप्लिकेशन का कोड अपडेट करें:
// Set default values for Remote Config parameters. remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
Firebase कंसोल में, Remote Config खोलें.
पैरामीटर टैब में, मेन्यू खोलें और डिफ़ॉल्ट वैल्यू डाउनलोड करें को चुनें.
प्रॉम्प्ट मिलने पर, Android के लिए .xml को चालू करें. इसके बाद, फ़ाइल डाउनलोड करें पर क्लिक करें.
फ़ाइल को अपने ऐप्लिकेशन की एक्सएमएल रिसॉर्स डायरेक्ट्री में सेव करें.
पहले जोड़े गए
configSettingsके बाद, डिफ़ॉल्ट वैल्यू जोड़ने के लिए, अपनी मुख्य गतिविधि वाली फ़ाइल अपडेट करें:// Set default values for Remote Config parameters. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
Firebase कंसोल में, Remote Config खोलें.
पैरामीटर टैब में, मेन्यू खोलें और डिफ़ॉल्ट वैल्यू डाउनलोड करें को चुनें.
प्रॉम्प्ट मिलने पर, Android के लिए .xml को चालू करें. इसके बाद, फ़ाइल डाउनलोड करें पर क्लिक करें.
फ़ाइल को अपने ऐप्लिकेशन की एक्सएमएल रिसॉर्स डायरेक्ट्री में सेव करें.
पहले जोड़े गए
configSettingsके बाद, डिफ़ॉल्ट वैल्यू जोड़ने के लिए, अपनी मुख्य गतिविधि वाली फ़ाइल अपडेट करें:// Set default values for Remote Config parameters. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
अपने कोड में सीधे मॉडल के नाम की डिफ़ॉल्ट वैल्यू सेट की जा सकती है:
// Set default values for Remote Config parameters.
remoteConfig.defaultConfig = {
model_name: 'gemini-2.5-flash',
};
Dart
अपने कोड में सीधे मॉडल के नाम की डिफ़ॉल्ट वैल्यू सेट की जा सकती है:
// Set default values for Remote Config parameters.
remoteConfig.setDefaults(const {
"model_name": "gemini-2.5-flash"
});
Unity
अपने कोड में सीधे मॉडल के नाम की डिफ़ॉल्ट वैल्यू सेट की जा सकती है:
// Set default values for Remote Config parameters.
await remoteConfig.SetDefaultsAsync(
new System.Collections.Generic.Dictionary<string, object>() {
{ "model_name", "gemini-2.5-flash" }
}
);
चौथा चरण: वैल्यू फ़ेच और ऐक्टिवेट करना
मॉडल के नाम की डिफ़ॉल्ट वैल्यू सेट करने के बाद, वैल्यू फ़ेच और ऐक्टिवेट करने के लिए, यह कोड जोड़ें.
Swift
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
if let error = error {
print("Error fetching Remote Config: \(error.localizedDescription)")
}
}
इससे, नया Remote Config टेंप्लेट पब्लिश होने पर, Remote Config ऑब्जेक्ट अपडेट हो जाना चाहिए.
Kotlin
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate()
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
val updated = task.result
Log.d(TAG, "Remote Config values fetched and activated: $updated")
} else {
Log.e(TAG, "Error fetching Remote Config", task.exception)
}
}
Java
// Fetch and activate Remote Config values
mFirebaseRemoteConfig.fetchAndActivate()
.addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
if (task.isSuccessful()) {
boolean updated = task.getResult();
Log.d(TAG, "Config params updated: " + updated);
} else {
Log.e(TAG, "Error fetching Remote Config", task.exception)
}
}
});
Web
अपने इंपोर्ट में
getValueऔरfetchAndActivateजोड़ें:import { getValue, fetchAndActivate } from 'firebase/remote-config';वह कोड ढूंढें जहां मॉडल के नाम की डिफ़ॉल्ट वैल्यू तय की गई हो. उस कोड ब्लॉक के ठीक बाद, कॉन्फ़िगरेशन फ़ेच और ऐक्टिवेट करने के लिए यह कोड जोड़ें. साथ ही, फ़ेच की गई वैल्यू को
modelNameकॉन्स्टैंट असाइन करें.// Fetch and activate Remote Config. try { await fetchAndActivate(remoteConfig); } catch(err) { console.error('Remote Config fetch failed', err); } console.log('Remote Config fetched.'); // Assign Remote Config values. const modelName = getValue(remoteConfig, 'model_name').asString();
Dart
// Fetch and activate Remote Config.
remoteConfig.fetchAndActivate();
// Assign Remote Config values.
String? _modelName = remoteConfig.getString("model_name");
Unity
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
पांचवां चरण: रीयल-टाइम Remote Config लिसनर जोड़ना
अपने ऐप्लिकेशन में रीयल-टाइम Remote Config लिसनर जोड़ें, ताकि Remote Config टेंप्लेट में किए गए बदलाव अपडेट होने के तुरंत बाद, क्लाइंट तक पहुंच जाएं.
पैरामीटर वैल्यू में बदलाव होने पर, यह कोड Remote Config ऑब्जेक्ट को अपडेट करता है.
Swift
// Add real-time Remote Config
remoteConfig.addOnConfigUpdateListener { configUpdate, error in
guard let configUpdate = configUpdate, error == nil else {
print("Error listening for config updates: \(error?.localizedDescription ?? "No error available")")
return
}
print("Updated keys: \(configUpdate.updatedKeys)")
remoteConfig.activate { changed, error in
guard error == nil else {
print("Error activating config: \(error?.localizedDescription ?? "No error available")")
return
}
print("Activated config successfully")
}
}
Kotlin
ज़रूरी नहीं है कि addOnCompleteListener ऐक्टिवेशन में कोई कार्रवाई भी कॉन्फ़िगर की जाए:
// Add a real-time Remote Config listener
remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
override fun onUpdate(configUpdate : ConfigUpdate) {
Log.d(ContentValues.TAG, "Updated keys: " + configUpdate.updatedKeys);
remoteConfig.activate().addOnCompleteListener {
// Optionally, add an action to perform on update here.
}
}
override fun onError(error : FirebaseRemoteConfigException) {
Log.w(ContentValues.TAG, "Config update error with code: " + error.code, error)
}
}
Java
ज़रूरी नहीं है कि addOnCompleteListener ऐक्टिवेशन में कोई कार्रवाई भी कॉन्फ़िगर की जाए:
// Add a real-time Remote Config listener
remoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
@Override
public void onUpdate(ConfigUpdate configUpdate) {
Log.d(ContentValues.TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
remoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
// Optionally, add an action to perform on update here.
}
});
}
@Override
public void onError(FirebaseRemoteConfigException error) {
Log.w(ContentValues.TAG, "Config update error with code: " + error.getCode(), error);
}
});
Web
// Add a real-time Remote Config listener
onConfigUpdate(remoteConfig, {
next: (configUpdate) => {
console.log("Updated keys:", configUpdate.getUpdatedKeys());
if (configUpdate.getUpdatedKeys().has("welcome_message")) {
activate(remoteConfig).then(() => {
showWelcomeMessage();
});
}
},
error: (error) => {
console.log("Config update error:", error);
},
complete: () => {
console.log("Listening stopped.");
}
});
Dart
// Add a real-time Remote Config listener
remoteConfig.onConfigUpdated.listen((event) async {
await remoteConfig.activate();
});
Unity
// Add a real-time Remote Config listener to automatically update whenever
// a new template is published.
// Note: the parameters can be anonymous as they are unused.
remoteConfig.OnConfigUpdateListener += (_, _) => {
remoteConfig.ActivateAsync();
};
छठा चरण: Gemini API अनुरोधों को इस्तेमाल करने के लिए, Remote Config वैल्यू अपडेट करना
|
इस पेज पर, प्रदाता के हिसाब से कॉन्टेंट और कोड देखने के लिए, अपने Gemini API प्रदाता पर क्लिक करें. |
अब Remote Config पूरी तरह से कॉन्फ़िगर हो गया है. इसलिए, अपने कोड को अपडेट करें, ताकि हार्ड-कोड की गई वैल्यू को Remote Config से ली गई वैल्यू से बदला जा सके.
Swift
import FirebaseAI
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
modelName: modelName
)
// ...
Kotlin
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
modelName = remoteConfig.getString("model_name")
)
// ...
Java
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
/* modelName */ remoteConfig.getString("model_name"),
/* generationConfig (optional) */ null,
/* safetySettings (optional) */ null,
/* requestOptions (optional) */ new RequestOptions(),
/* tools (optional) */ null,
/* toolsConfig (optional) */ null,
/* systemInstruction (optional) */ null,
);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// ...
Web
// ...
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
const model = getGenerativeModel(ai, {
model: modelName
});
// ...
Dart
// ...
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
final model = FirebaseAI.googleAI().generativeModel(
model: _modelName,
);
// ...
Unity
// ...
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// When creating a `GenerativeModel` instance, source the model name value from Remote Config
var modelName = remoteConfig.GetValue("model_name").StringValue;
var model = ai.GetGenerativeModel(
modelName: modelName
);
// ...
सातवां चरण: ऐप्लिकेशन चलाना
ऐप्लिकेशन बनाएं और चलाएं. साथ ही, पुष्टि करें कि यह काम कर रहा है. Firebase कंसोल में, Remote Config पेज से अपने कॉन्फ़िगरेशन में बदलाव करें, बदलाव पब्लिश करें, और नतीजे की पुष्टि करें.Firebase
अगले चरण
अन्य इस्तेमाल के बारे में ज़्यादा जानें Remote Config और Firebase AI Logic.
मोबाइल ऐप्लिकेशन और गेम के लिए:
Remote Config और A/B Testing की मदद से, मॉडल की अलग-अलग सेटिंग टेस्ट करें.
Remote Config रोलआउट (सिर्फ़ iOS+ और Android) का इस्तेमाल करके, मॉडल पैरामीटर में किए गए बदलावों को धीरे-धीरे रिलीज़ करें.
मशीन लर्निंग का इस्तेमाल करके, अलग-अलग उपयोगकर्ताओं के लिए सबसे अच्छी सेटिंग तय करने के लिए, Remote Config निजीकरण सुविधा का इस्तेमाल करें. यह सुविधा सिर्फ़ iOS+, Android, और Unity के लिए उपलब्ध है.