Firebase रिमोट कॉन्फ़िगरेशन की मदद से, Firebase ऐप्लिकेशन में Vertex AI को डाइनैमिक तौर पर अपडेट करें

Vertex AI in Firebase SDK टूल का इस्तेमाल करके, अपने ऐप्लिकेशन से Gemini API को कॉल करते समय, आपके अनुरोध में कई पैरामीटर होते हैं. ये पैरामीटर, जनरेटिव एआई के जवाबों को कंट्रोल करते हैं. आम तौर पर, इनमें मॉडल का नाम, मॉडल जनरेशन कॉन्फ़िगरेशन (ज़्यादा से ज़्यादा टोकन, तापमान वगैरह), सुरक्षा सेटिंग, सिस्टम के निर्देश, और प्रॉम्प्ट डेटा शामिल होता है.

ज़्यादातर मामलों में, आपको इन सेटिंग को मांग पर या ज़रूरत के हिसाब से बदलना होगा. ऐसा कई मामलों में करना पड़ सकता है:

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

Firebase Remote Config, इनके अलावा और भी काम करता है. इसकी मदद से, ज़रूरत के हिसाब से पैरामीटर वैल्यू अपडेट की जा सकती हैं. साथ ही, Firebase कंसोल में सेट की गई विशेषताओं से मैच करने वाले ऐप्लिकेशन इंस्टेंस के लिए, शर्त के मुताबिक पैरामीटर वैल्यू अपडेट की जा सकती हैं. इसके लिए, आपको अपने ऐप्लिकेशन का नया वर्शन रिलीज़ करने की ज़रूरत नहीं है.

इस समाधान गाइड में, इस्तेमाल के खास उदाहरणों के साथ-साथ, जनरेटिव एआई ऐप्लिकेशन में Remote Config जोड़ने का तरीका बताया गया है.

कोड लागू करने पर जाएं

अपने ऐप्लिकेशन के साथ Firebase Remote Config का इस्तेमाल क्यों करना चाहिए?

Firebase Remote Config की मदद से, ऐप्लिकेशन को अपडेट किए बिना, ऐप्लिकेशन के काम करने के तरीके में डाइनैमिक तरीके से बदलाव किया जा सकता है. यह सुविधा, जनरेटिव एआई का इस्तेमाल करने वाले ऐप्लिकेशन के लिए काफ़ी कारगर है. इन ऐप्लिकेशन में, तेज़ी से बदलाव करना और उन्हें बेहतर बनाना ज़रूरी होता है.

जनरेटिव एआई ऐप्लिकेशन के साथ Remote Config के इस्तेमाल के ज़रूरी उदाहरण

हमारा सुझाव है कि इस्तेमाल के इन ज़रूरी उदाहरणों के लिए, Remote Config के साथ Vertex AI in Firebase का इस्तेमाल करें:

  • ऐप्लिकेशन को अपडेट किए बिना, मॉडल के नए वर्शन पर अपग्रेड करना: ज़रूरत के हिसाब से मॉडल का नाम बदलने के लिए, Remote Config पैरामीटर का इस्तेमाल करें. इससे, अपने पसंदीदा Gemini मॉडल के नए वर्शन के उपलब्ध होने पर, उसे तुरंत अपग्रेड किया जा सकता है.
  • ऐप्लिकेशन अपडेट किए बिना, सिस्टम के निर्देशों और सुरक्षा सेटिंग को अपडेट करना: सिस्टम के निर्देशों और सुरक्षा सेटिंग को Remote Config पैरामीटर में सेव करें, ताकि डिप्लॉयमेंट के बाद समस्याएं मिलने पर, आप उन्हें ज़रूरत के हिसाब से बदल सकें.
  • जोखिम कम करना और एआई की सुरक्षा को लागू करना: अपने iOS और Android उपयोगकर्ताओं के लिए, जनरेटिव एआई से जुड़े बदलावों को सुरक्षित और धीरे-धीरे रिलीज़ करने के लिए, Remote Config रोल आउट का इस्तेमाल करें.

जनरेटिव एआई ऐप्लिकेशन की मदद से, Remote Config के लिए बेहतर और सुझाए गए इस्तेमाल के उदाहरण

Remote Config और Google Analytics की मदद से अपने ऐप्लिकेशन को इंस्ट्रूमेंट करने के बाद, ऐप्लिकेशन के इस्तेमाल के बेहतर उदाहरणों को एक्सप्लोर किया जा सकता है:

Firebase Remote Config की मदद से, अपने जनरेटिव एआई ऐप्लिकेशन को इंस्ट्रूमेंट करके, एआई की मदद से काम करने वाले ऐसे ऐप्लिकेशन बनाए जा सकते हैं जो उपयोगकर्ताओं के लिए बेहतर अनुभव देते हों. साथ ही, ये ऐप्लिकेशन आसानी से इस्तेमाल किए जा सकते हों, सुरक्षित हों, और कम खर्च में उपलब्ध हों.

अपने ऐप्लिकेशन में Firebase Remote Config जोड़ना

इस समाधान गाइड में, आपको Firebase Remote Config का इस्तेमाल करके, अपने Android ऐप्लिकेशन में पैरामीटर को डाइनैमिक तौर पर अपडेट करना होगा. यह ऐप्लिकेशन, Vertex AI in Firebase SDK टूल का इस्तेमाल करता है. आपको इनके बारे में जानकारी मिलेगी:

  • Firebase Remote Config से मॉडल के नाम और सिस्टम के निर्देश जैसे पैरामीटर फ़ेच और चालू करें.
  • डाइनैमिक तौर पर वापस पाए गए पैरामीटर का इस्तेमाल करने के लिए, अपने Gemini API कॉल अपडेट करें. इससे, ऐप्लिकेशन अपडेट किए बिना, अलग-अलग मॉडल के बीच स्विच किया जा सकता है या सिस्टम के निर्देशों में बदलाव किया जा सकता है.
  • ज़रूरत के मुताबिक मॉडल के व्यवहार और क्षमताओं में बदलाव करके, पैरामीटर को रिमोट से कंट्रोल करें.

ज़रूरी शर्तें

इस गाइड में यह माना गया है कि आपने iOS जैसे Apple प्लैटफ़ॉर्म के लिए ऐप्लिकेशन बनाने के लिए, Xcode का इस्तेमाल किया है. शुरू करने से पहले, पक्का करें कि आपने ये काम पूरे कर लिए हों:

  • Vertex AI in Firebase एसडीके टूल के लिए शुरुआती निर्देश देखें. पक्का करें कि आपने ये सभी काम कर लिए हैं:

    1. नया या मौजूदा Firebase प्रोजेक्ट सेट अप करें. इसमें, ब्लेज़ कीमत वाले प्लान का इस्तेमाल करना और ज़रूरी एपीआई चालू करना शामिल है.
    2. अपने ऐप्लिकेशन को Firebase से कनेक्ट करें. इसमें, अपने ऐप्लिकेशन को रजिस्टर करना और अपने ऐप्लिकेशन में Firebase कॉन्फ़िगरेशन जोड़ना शामिल है.
    3. SDK टूल जोड़ें और अपने ऐप्लिकेशन में Vertex AI सेवा और जनरेटिव मॉडल को शुरू करें.
  • अपने प्रोजेक्ट में Google Analytics चालू करें और उसका एसडीके अपने ऐप्लिकेशन में जोड़ें. यह ज़रूरी है, ताकि क्लाइंट डिवाइस की जगह की जानकारी के आधार पर, सेवा और मॉडल की जगह की जानकारी सेट करने जैसी शर्तों के हिसाब से टारगेटिंग की जा सके.

पहला चरण: Firebase कंसोल में पैरामीटर वैल्यू सेट करना

क्लाइंट Remote Config टेंप्लेट बनाएं और ऐप्लिकेशन में फ़ेच करने और इस्तेमाल करने के लिए, पैरामीटर और वैल्यू कॉन्फ़िगर करें.

  1. Firebase कंसोल में अपना Firebase प्रोजेक्ट खोलें. इसके बाद, नेविगेशन मेन्यू में जाकर, चालू करें को बड़ा करें और Remote Config को चुनें.
  2. पक्का करें कि Remote Config पेज पर सबसे ऊपर मौजूद, क्लाइंट/सर्वर सिलेक्टर में क्लाइंट चुना गया हो.
    • अगर Remote Config क्लाइंट टेंप्लेट का इस्तेमाल पहली बार किया जा रहा है, तो कॉन्फ़िगरेशन बनाएं पर क्लिक करें. अपना पहला पैरामीटर बनाएं पैनल दिखता है.
    • अगर आपने पहले भी Remote Config टेंप्लेट का इस्तेमाल किया है, तो पैरामीटर जोड़ें पर क्लिक करें.
  3. इन Remote Config पैरामीटर को तय करें:

    पैरामीटर का नाम जानकारी टाइप डिफ़ॉल्ट वैल्यू
    model_name मॉडल का नाम. अपने कोड में इस्तेमाल करने के लिए, मॉडल के नामों की अप-टू-डेट सूचियां देखने के लिए, मॉडल के उपलब्ध नाम देखें. स्ट्रिंग gemini-2.0-flash
    system_instructions सिस्टम के निर्देश, "प्रीऐबलम" की तरह होते हैं. इन्हें मॉडल के लिए, असली उपयोगकर्ता से मिलने वाले अन्य निर्देशों से पहले जोड़ा जाता है. इससे मॉडल के व्यवहार पर असर पड़ता है. यह असर, खास ज़रूरतों और इस्तेमाल के उदाहरणों के आधार पर तय होता है. स्ट्रिंग You are a helpful assistant who knows everything there is to know about Firebase!
    prompt जनरेटिव एआई की सुविधा के साथ इस्तेमाल करने के लिए डिफ़ॉल्ट प्रॉम्प्ट. स्ट्रिंग I am a developer who wants to know more about Firebase!
    vertex_location Vertex AI सेवा को चलाने और किसी मॉडल को ऐक्सेस करने के लिए, जगह की जानकारी को कंट्रोल करें. हालांकि, ऐसा करना ज़रूरी नहीं है. Google Analytics की मदद से पता लगाई गई क्लाइंट की जगह के आधार पर, इस विकल्प को कॉन्फ़िगर करने के लिए शर्तें सेट की जा सकती हैं. स्ट्रिंग us-central1
  4. पैरामीटर जोड़ने के बाद, बदलाव पब्लिश करें पर क्लिक करें. अगर यह नया Remote Config टेंप्लेट नहीं है, तो बदलावों की समीक्षा करें और बदलावों को पब्लिश करें पर फिर से क्लिक करें.

दूसरा चरण: अपने ऐप्लिकेशन में Remote Config जोड़ना और उसे शुरू करना

अपने ऐप्लिकेशन में Remote Config डिपेंडेंसी जोड़ें और Remote Config को सेट अप करें. Vertex AI in Firebase सेट अप के हिस्से के तौर पर, आपने अपने ऐप्लिकेशन में Firebase SDK टूल पहले ही जोड़ दिया है. हालांकि, आपको Remote Config को भी जोड़ना होगा.

  1. Xcode में, प्रोजेक्ट खोलकर फ़ाइल > पैकेज की डिपेंडेंसी जोड़ें पर जाएं.
  2. firebase-ios-sdk चुनें. इसके बाद, पैकेज जोड़ें पर क्लिक करें.
  3. प्रोजेक्ट नेविगेटर से, अपना ऐप्लिकेशन > टारगेट > अपना ऐप्लिकेशन चुनें.
  4. सामान्य टैब में, स्क्रोल करके फ़्रेमवर्क, लाइब्रेरी, और एम्बेड किया गया कॉन्टेंट पर जाएं.
  5. + पर क्लिक करें और FirebaseRemoteConfig चुनें. इसके बाद, जोड़ें पर क्लिक करें.
  6. अपने कोड में FirebaseRemoteConfig इंपोर्ट जोड़ें:

    import FirebaseRemoteConfig
    
  7. अपने ऐप्लिकेशन के लिए सही क्लास में, Firebase को शुरू करें और अपने मुख्य ऐप्लिकेशन लॉजिक में Remote Config जोड़ें. सैंपल ऐप्लिकेशन में, यह AppDelegate क्लास में VertexAISampleApp के अंदर होगा.

    यहां आपको Remote Config और Remote Config रीयल-टाइम लिसनर को इंपोर्ट के तौर पर शामिल करना होगा, ताकि ऐप्लिकेशन रीयल-टाइम में नई वैल्यू फ़ेच कर सके और फ़ेच करने के लिए कम से कम इंटरवल जोड़ सके:

    let remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 3600
    remoteConfig.configSettings = settings
    

इस उदाहरण में, फ़ेच करने के लिए डिफ़ॉल्ट इंटरवल 3600 सेकंड है. हालांकि, हमारा सुझाव है कि डेवलपमेंट के दौरान, अपने कोड में फ़ेच करने के लिए कम से कम इंटरवल सेट करें.

तीसरा चरण: इन-ऐप्लिकेशन पैरामीटर वैल्यू सेट करना

आपको Remote Config ऑब्जेक्ट में, ऐप्लिकेशन में मौजूद डिफ़ॉल्ट पैरामीटर वैल्यू सेट करनी चाहिए, ताकि क्लाइंट नेटवर्क के ऐक्सेस में रुकावट आने पर और/या बैकएंड पर कोई वैल्यू कॉन्फ़िगर न होने पर, Remote Config बैकएंड से कनेक्ट होने से पहले आपका ऐप्लिकेशन काम कर सके.

  1. Firebase कंसोल में जाकर, Remote Config खोलें.
  2. पैरामीटर टैब में, मेन्यू खोलें और डिफ़ॉल्ट वैल्यू डाउनलोड करें को चुनें.
  3. जब कहा जाए, तब iOS के लिए .plist चालू करें. इसके बाद, फ़ाइल डाउनलोड करें पर क्लिक करें.
  4. फ़ाइल को अपनी ऐप्लिकेशन डायरेक्ट्री में सेव करें. अगर सैंपल ऐप्लिकेशन का इस्तेमाल किया जा रहा है, तो FirebaseVertexAI/Sample/VertexAISample में सेव करें.
  5. Xcode में, अपने ऐप्लिकेशन पर राइट क्लिक करें और फ़ाइलें जोड़ें को चुनें. अगर सैंपल का इस्तेमाल किया जा रहा है, तो VertexAISample पर राइट क्लिक करें और "VertexAISample" में फ़ाइलें जोड़ें को चुनें.
  6. remote_config_defaults.plist चुनें. इसके बाद, जोड़ें पर क्लिक करें.
  7. डिफ़ॉल्ट फ़ाइल का रेफ़रंस देने के लिए, अपने ऐप्लिकेशन कोड को अपडेट करें:

    // Set default values
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

चौथा चरण: वैल्यू फ़ेच करना और उन्हें चालू करना

डिफ़ॉल्ट वैल्यू सेट करने के बाद, वैल्यू फ़ेच और चालू करने के लिए यह जोड़ें:

// 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 ऑब्जेक्ट अपडेट हो जाएगा.

पांचवां चरण: रीयल-टाइम Remote Config लिसनर जोड़ना

रीयल-टाइम Remote Config लिसनर जोड़ें, ताकि यह पक्का किया जा सके कि Remote Config टेंप्लेट में किए गए बदलाव, अपडेट होने के तुरंत बाद क्लाइंट पर लागू हो जाएं.

जब भी किसी पैरामीटर की वैल्यू बदलती है, तो नीचे दिया गया कोड Remote Config ऑब्जेक्ट को अपडेट करता है.

// 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")
  }
}

जब भी कोई नया Remote Config टेंप्लेट पब्लिश किया जाएगा, तो इससे Remote Config ऑब्जेक्ट अपडेट हो जाएगा.

छठा चरण: Vertex AI वैरिएबल को Remote Config वैल्यू असाइन करना

अब Remote Config पूरी तरह से कॉन्फ़िगर हो गया है. इसलिए, अपने कोड को अपडेट करें, ताकि हार्ड कोड की गई वैल्यू को Remote Config से ली गई वैल्यू से बदला जा सके.

अपने मॉडल और सिस्टम प्रॉम्प्ट की वैल्यू सेव करने के लिए वैल्यू बनाएं. यहां दिए गए कोड में, Remote Config से जगह की जानकारी, मॉडल का नाम, सिस्टम के निर्देश, उपयोगकर्ता के प्रॉम्प्ट, और Vertex AI की जगह की जानकारी पाने का तरीका बताया गया है:

// Initialize the Vertex AI service
// Optionally specify a location in which to run the service and access the model
let vertexLocation = remoteConfig.configValue(forKey: "vertex_location").stringValue
let vertex = VertexAI.vertexAI(location: vertexLocation)

// Initialize the generative model with a model that supports your use case
// Specify a model that supports system instructions, like a Gemini 1.5 model
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let systemInstructions = remoteConfig.configValue(forKey: "system_instructions").stringValue

let model = vertex.generativeModel(
  modelName: modelName,
  systemInstruction: ModelContent(role: "system", parts: systemInstructions)
)

// Provide a prompt that contains text
let userPrompt = remoteConfig.configValue(forKey: "prompt").stringValue

// To generate text output, call generateContent with the text input
let response = try await model.generateContent(userPrompt)
if let text = response.text {
  print(text)
}

सातवां चरण: ऐप्लिकेशन चलाना

अपना ऐप्लिकेशन बनाएं और चलाएं. साथ ही, यह पुष्टि करें कि वह काम कर रहा है. Firebase कंसोल में Remote Config पेज पर जाकर, अपने कॉन्फ़िगरेशन में बदलाव करें. इसके बाद, बदलावों को पब्लिश करें और नतीजे की पुष्टि करें.

अगले चरण

  • Remote Config के बारे में और जानें.
  • टारगेटिंग की सुविधा चालू करने के लिए, अपने क्लाइंट कोड में Google Analytics जोड़ें.
  • Remote Config और A/B जांच की मदद से, अलग-अलग मॉडल सेटिंग की जांच करें.
  • Remote Config रोल आउट का इस्तेमाल करके, मॉडल पैरामीटर में किए गए बदलावों को धीरे-धीरे रिलीज़ करें.
  • मशीन लर्निंग का इस्तेमाल करके, हर उपयोगकर्ता के लिए सबसे सही सेटिंग तय करने के लिए, Remote Config पसंद के मुताबिक़ बनाने का इस्तेमाल करें.