به صورت پویا Vertex AI خود را در برنامه Firebase با Firebase Remote Config به روز کنید

هنگام فراخوانی Gemini API از برنامه خود با استفاده از Vertex AI در Firebase SDK، درخواست شما حاوی تعدادی پارامتر است که پاسخ‌های هوش مصنوعی تولیدی را کنترل می‌کنند. اینها معمولاً شامل نام مدل، پیکربندی تولید مدل (حداکثر نشانه‌ها، دما، و غیره)، تنظیمات ایمنی، دستورالعمل‌های سیستم و داده‌های سریع است.

در بیشتر موارد، شما می خواهید این موارد را به صورت درخواستی یا در صورت نیاز برای تعدادی از سناریوها تغییر دهید:

  • مدل هوش مصنوعی مولد خود را بدون انتشار اپلیکیشن جدید به روز کنید. می‌توانید قبل از از کار انداختن نسخه‌های قبلی، به نسخه‌های مدل جدیدتر و پایدار ارتقا دهید، بر اساس نیازها و ویژگی‌های کاربرانتان به مدل‌های کم‌هزینه یا با کارایی بالاتر رها شوید، یا به‌طور مشروط جدیدترین و بهترین مدل‌ها را در بخش‌های خاص کاربر (مانند آزمایش‌کنندگان بتا) مستقر کنید.
  • مکان دسترسی به مدل را طوری تنظیم کنید که به کاربران شما نزدیکتر باشد.
  • A/B دستورالعمل‌ها و درخواست‌های مختلف سیستم را آزمایش کنید، سپس به آرامی مقادیر آزمایشی برنده را در اختیار کاربران خود قرار دهید.
  • از پرچم‌های ویژگی برای افشای سریع یا پنهان کردن سریع ویژگی‌های هوش مصنوعی در برنامه خود استفاده کنید.

Firebase Remote Config همه اینها و موارد دیگر را انجام می دهد و به شما امکان می دهد مقادیر پارامترها را در صورت نیاز و به صورت مشروط برای نمونه های برنامه ای که با ویژگی هایی که در کنسول Firebase تنظیم کرده اید مطابقت دارد، بدون انتشار نسخه جدیدی از برنامه خود، به روز کنید.

این راهنمای راه حل موارد استفاده توصیه شده خاص را ارائه می دهد و نحوه اضافه کردن Remote Config به برنامه هوش مصنوعی مولد خود توضیح می دهد.

پرش به اجرای کد

چرا از Firebase Remote Config با برنامه خود استفاده کنید؟

Firebase Remote Config به شما امکان می دهد به صورت پویا رفتار برنامه خود را بدون نیاز به به روز رسانی برنامه تنظیم کنید. این به ویژه برای برنامه‌هایی که از هوش مصنوعی مولد استفاده می‌کنند قدرتمند است، جایی که تکرار سریع و تنظیم دقیق بسیار مهم است.

موارد استفاده ضروری برای Remote Config با برنامه های هوش مصنوعی مولد

توصیه می کنیم از Remote Config با Vertex AI در Firebase برای موارد استفاده ضروری زیر استفاده کنید:

  • ارتقاء به آخرین نسخه مدل بدون به‌روزرسانی برنامه: از پارامترهای Remote Config برای تغییر نام مدل در صورت نیاز استفاده کنید، تا بتوانید به‌محض در دسترس شدن، آن را به آخرین نسخه مدل دلخواه Gemini خود ارتقا دهید.
  • دستورالعمل‌های سیستم و تنظیمات ایمنی را بدون به‌روزرسانی برنامه به‌روزرسانی کنید: دستورالعمل‌های سیستم و تنظیمات ایمنی را در پارامترهای Remote Config ذخیره کنید تا اطمینان حاصل کنید که اگر بعد از استقرار مشکلی پیدا کردید، می‌توانید آن‌ها را بر اساس درخواست تغییر دهید.
  • کاهش خطر و تقویت ایمنی هوش مصنوعی: از Remote Config Rollouts استفاده کنید تا به طور ایمن و تدریجی تغییرات مولد هوش مصنوعی را برای کاربران iOS و Android خود منتشر کنید.

موارد استفاده پیشرفته و توصیه شده برای Remote Config با برنامه‌های هوش مصنوعی مولد

پس از تنظیم برنامه خود با Remote Config و Google Analytics ، می توانید موارد استفاده پیشرفته را کاوش کنید:

  • تنظیم مکان بر اساس مکان مشتری: از شرایط Remote Config برای تنظیم مکان مدل بر اساس مکان شناسایی شده مشتری استفاده کنید.
  • مدل‌های مختلف را آزمایش کنید : به سرعت بین مدل‌های هوش مصنوعی مولد مختلف آزمایش کنید و جابه‌جا شوید، یا حتی مدل‌های مختلف را در بخش‌های مختلف کاربر مستقر کنید تا بهترین مناسب را برای مورد خاص خود پیدا کنید.
  • بهینه‌سازی عملکرد مدل : پارامترهای مدل، مانند اعلان سیستم، حداکثر نشانه‌های خروجی، دما و تنظیمات دیگر را دقیق تنظیم کنید.
  • استفاده از دستورالعمل‌های مختلف سیستم، درخواست‌ها و پیکربندی مدل بر اساس ویژگی‌های مشتری: هنگام استفاده از Remote Config با Google Analytics ، می‌توانید شرایطی را بر اساس ویژگی‌های مشتری یا مخاطبان سفارشی ایجاد کنید و پارامترهای مختلفی را بر اساس این ویژگی‌ها تنظیم کنید.

    برای مثال، اگر از هوش مصنوعی مولد برای ارائه پشتیبانی فنی در برنامه خود استفاده می‌کنید، ممکن است بخواهید دستورالعمل‌های سیستم را مختص پلتفرم برنامه تنظیم کنید تا اطمینان حاصل کنید که دستورالعمل‌های دقیق به کاربران Android، iOS و پلت فرم وب شما ارائه می‌شود.

  • شخصی سازی تجربیات برای هر کاربر: از شخصی سازی Remote Config برای تعیین خودکار تنظیمات بهینه هوش مصنوعی مولد برای هر کاربر استفاده کنید.

  • کنترل هزینه ها: از راه دور تنظیم کنید که کدام مدل های هوش مصنوعی مولد نامیده می شوند، تعداد دفعات استفاده از آنها و پیکربندی پویا حداکثر مقادیر نشانه خروجی بر اساس مخاطبان کاربر برای کاهش هزینه های غیر ضروری.

  • تجربه و نتایج برنامه را بهینه کنید: از A/B Testing با Remote Config با برنامه‌های iOS، Android و Flutter خود استفاده کنید تا تغییرات پارامترهای هوش مصنوعی را در بخش‌های مختلف کاربر آزمایش کنید تا ببینید چگونه بر معیارهای کلیدی مانند حفظ و درآمد تأثیر می‌گذارد.

با استفاده از برنامه هوش مصنوعی مولد خود با Firebase Remote Config ، می توانید برنامه های کاربردی مبتنی بر هوش مصنوعی انعطاف پذیر، ایمن و مقرون به صرفه بسازید و در عین حال تجربیات لذت بخشی را برای کاربران خود ایجاد کنید.

Firebase Remote Config به برنامه خود اضافه کنید

در این راهنمای راه‌حل، از Firebase Remote Config برای به‌روزرسانی پویا پارامترهای برنامه Android خود که از Vertex AI در Firebase SDK استفاده می‌کنند، استفاده می‌کنید. شما یاد خواهید گرفت که چگونه:

  • پارامترهایی مانند نام مدل ها و دستورالعمل های سیستم را از Firebase Remote Config واکشی و فعال کنید.
  • تماس‌های Gemini API خود را به‌روزرسانی کنید تا از پارامترهای بازیابی شده به صورت پویا استفاده کنید و به شما امکان می‌دهد بین مدل‌های مختلف جابجا شوید یا دستورالعمل‌های سیستم را بدون به‌روزرسانی برنامه تغییر دهید.
  • کنترل پارامترها از راه دور، تنظیم رفتار و قابلیت های مدل در صورت نیاز.

پیش نیازها

این راهنما فرض می‌کند که شما با استفاده از Android Studio برای توسعه برنامه‌ها برای پلتفرم‌های Android آشنا هستید. قبل از شروع، مطمئن شوید که موارد زیر را انجام داده اید:

  • راهنمای شروع برای Vertex AI در Firebase SDK را کامل کنید. مطمئن شوید که تمام کارهای زیر را انجام داده اید:

    1. یک پروژه Firebase جدید یا موجود راه اندازی کنید، از جمله استفاده از طرح قیمت گذاری Blaze و فعال کردن API های مورد نیاز.
    2. برنامه خود را به Firebase وصل کنید، از جمله ثبت برنامه خود و افزودن پیکربندی Firebase به برنامه خود.
    3. SDK را اضافه کنید و سرویس Vertex AI و مدل تولیدی را در برنامه خود راه اندازی کنید.
  • Google Analytics را در پروژه خود فعال کنید و SDK آن را به برنامه خود اضافه کنید (برای هدف گیری مشروط، مانند تنظیم مکان سرویس و مدل بر اساس مکان دستگاه مشتری، لازم است).

مرحله 1 : مقادیر پارامتر را در کنسول Firebase تنظیم کنید

یک الگوی Remote Config مشتری ایجاد کنید و پارامترها و مقادیر را برای واکشی و استفاده در برنامه پیکربندی کنید.

  1. پروژه Firebase خود را در کنسول Firebase باز کنید و از منوی پیمایش، Run را باز کرده و Remote Config انتخاب کنید.
  2. اطمینان حاصل کنید که Client از انتخابگر Client/Server در بالای صفحه Remote Config انتخاب شده است.
    • اگر این اولین باری است که از الگوهای سرویس گیرنده Remote Config استفاده می کنید، روی ایجاد پیکربندی کلیک کنید. پنجره Create your first parameter ظاهر می شود.
    • اگر این اولین بار نیست که از الگوهای 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 جدید نیست، تغییرات را مرور کنید و دوباره روی انتشار تغییرات کلیک کنید.

مرحله 2 : Remote Config SDK را در برنامه خود اضافه و مقداردهی اولیه کنید

وابستگی های Remote Config را اضافه کنید و Remote Config در برنامه خود تنظیم کنید.

  1. وابستگی Remote Config را به فایل Gradle ماژول (سطح برنامه) خود اضافه کنید (معمولا app/build.gradle.kts یا app/build.gradle ):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.12.0"))
        implementation("com.google.firebase:firebase-vertexai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Remote Config به منطق برنامه اصلی خود اضافه کنید. در اینجا، Remote Config را مقداردهی اولیه می‌کنید و حداقل فاصله واکشی را اضافه می‌کنید:

    KotlinJava
    val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
    
    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    

در این مثال، فاصله واکشی پیش‌فرض 3600 ثانیه است، اما توصیه می‌کنیم در طول توسعه، حداقل فاصله واکشی نسبتاً کم را در داخل کد خود تنظیم کنید.

مرحله 3 : مقادیر پارامترهای درون برنامه را تنظیم کنید

شما باید مقادیر پارامترهای پیش فرض درون برنامه را در شی Remote Config تنظیم کنید. این تضمین می کند که برنامه شما همانطور که انتظار می رود رفتار کند حتی اگر نتواند مقادیر را از سرویس Remote Config واکشی کند.

  1. از کنسول Firebase ، Remote Config باز کنید.
  2. در برگه پارامترها ، منو را باز کنید و مقادیر پیش فرض را دانلود کنید .
  3. وقتی از شما خواسته شد، xml. را برای Android فعال کنید، سپس روی دانلود فایل کلیک کنید.
  4. فایل را در فهرست منابع XML برنامه خود ذخیره کنید.
  5. فایل اکتیویتی اصلی خود را به‌روزرسانی کنید تا پس از configSettings قبلاً اضافه کرده‌اید، پیش‌فرض‌ها را اضافه کنید:

    KotlinJava
    // Set default values.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    
    // Set default values.
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    

مرحله 4 : مقادیر را واکشی و فعال کنید

پس از تنظیم پیش فرض ها، موارد زیر را برای واکشی و فعال کردن مقادیر اضافه کنید:

KotlinJava
// 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)
          }
  // 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)
            }
          }
    });

مرحله 5: یک شنونده Remote Config بیدرنگ اضافه کنید

یک شنونده بیدرنگ Remote Config به برنامه خود اضافه کنید تا مطمئن شوید که تغییراتی که در الگوی Remote Config ایجاد می کنید به محض به روز رسانی به مشتری منتشر می شود.

کد زیر هر زمان که مقدار پارامتر تغییر کند، شی Remote Config به روز می کند. به صورت اختیاری، می توانید یک عمل را در داخل فعال سازی addOnCompleteListener نیز پیکربندی کنید:

KotlinJava
      // 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)
          }
      }
  // 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);
      }
  });

مرحله 6 : مقادیر Remote Config را به متغیرهای Vertex AI اختصاص دهید

اکنون که Remote Config به طور کامل پیکربندی شده است، کد خود را به‌روزرسانی کنید تا مقادیر سخت‌کد شده را با مقادیر منبع‌شده از Remote Config جایگزین کنید.

مقادیر کدگذاری‌شده را برای مکان، نام مدل، دستورالعمل‌های سیستم و درخواست کاربر با مقادیر منبع Remote Config جایگزین کنید.

KotlinJava
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
val vertexAI = Firebase.vertexAI(location = remoteConfig.getString("vertex_location"))

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
val generativeModel = Firebase.vertexAI.generativeModel(
  modelName = remoteConfig.getString("model_name"),
  systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(remoteConfig.getString("prompt"))
print(response.text)
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
FirebaseVertexAI vertexAI = FirebaseVertexAI.getInstance(remoteConfig.getString("vertex_location"));

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
  /* modelName */ remoteConfig.getString("model_name"),
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText(remoteConfig.getString("system_instructions")).build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
Content userPrompt = new Content.Builder()
 addText(remoteConfig.getString("prompt"))
 build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(userPrompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
  @Override
  public void onSuccess(GenerateContentResponse result) {
    String resultText = result.getText();
    System.out.println(resultText);
  }

  @Override
  public void onFailure(Throwable t) {
    t.printStackTrace();
  }
}, executor);

مرحله 7 : برنامه را اجرا کنید

برنامه را بسازید و اجرا کنید و بررسی کنید که کار می کند. از صفحه Remote Config در کنسول Firebase تغییراتی را در پیکربندی خود ایجاد کنید، تغییرات را منتشر کنید و نتیجه را تأیید کنید.

مراحل بعدی

،

هنگام فراخوانی Gemini API از برنامه خود با استفاده از Vertex AI در Firebase SDK، درخواست شما حاوی تعدادی پارامتر است که پاسخ‌های هوش مصنوعی تولیدی را کنترل می‌کنند. اینها معمولاً شامل نام مدل، پیکربندی تولید مدل (حداکثر نشانه‌ها، دما، و غیره)، تنظیمات ایمنی، دستورالعمل‌های سیستم و داده‌های سریع است.

در بیشتر موارد، شما می خواهید این موارد را به صورت درخواستی یا در صورت نیاز برای تعدادی از سناریوها تغییر دهید:

  • مدل هوش مصنوعی مولد خود را بدون انتشار اپلیکیشن جدید به روز کنید. می‌توانید قبل از از کار انداختن نسخه‌های قبلی، به نسخه‌های مدل جدیدتر و پایدار ارتقا دهید، بر اساس نیازها و ویژگی‌های کاربرانتان به مدل‌های کم‌هزینه یا با کارایی بالاتر رها شوید، یا به‌طور مشروط جدیدترین و بهترین مدل‌ها را در بخش‌های خاص کاربر (مانند آزمایش‌کنندگان بتا) مستقر کنید.
  • مکان دسترسی به مدل را طوری تنظیم کنید که به کاربران شما نزدیکتر باشد.
  • A/B دستورالعمل‌ها و درخواست‌های مختلف سیستم را آزمایش کنید، سپس به آرامی مقادیر آزمایشی برنده را در اختیار کاربران خود قرار دهید.
  • از پرچم‌های ویژگی برای افشای سریع یا پنهان کردن سریع ویژگی‌های هوش مصنوعی در برنامه خود استفاده کنید.

Firebase Remote Config همه اینها و موارد دیگر را انجام می دهد و به شما امکان می دهد مقادیر پارامترها را در صورت نیاز و به صورت مشروط برای نمونه های برنامه ای که با ویژگی هایی که در کنسول Firebase تنظیم کرده اید مطابقت دارد، بدون انتشار نسخه جدیدی از برنامه خود، به روز کنید.

این راهنمای راه حل موارد استفاده توصیه شده خاص را ارائه می دهد و نحوه اضافه کردن Remote Config به برنامه هوش مصنوعی مولد خود توضیح می دهد.

پرش به اجرای کد

چرا از Firebase Remote Config با برنامه خود استفاده کنید؟

Firebase Remote Config به شما امکان می دهد به صورت پویا رفتار برنامه خود را بدون نیاز به به روز رسانی برنامه تنظیم کنید. این به ویژه برای برنامه‌هایی که از هوش مصنوعی مولد استفاده می‌کنند قدرتمند است، جایی که تکرار سریع و تنظیم دقیق بسیار مهم است.

موارد استفاده ضروری برای Remote Config با برنامه های هوش مصنوعی مولد

توصیه می کنیم از Remote Config با Vertex AI در Firebase برای موارد استفاده ضروری زیر استفاده کنید:

  • ارتقاء به آخرین نسخه مدل بدون به‌روزرسانی برنامه: از پارامترهای Remote Config برای تغییر نام مدل در صورت نیاز استفاده کنید، تا بتوانید به‌محض در دسترس شدن، آن را به آخرین نسخه مدل دلخواه Gemini خود ارتقا دهید.
  • دستورالعمل‌های سیستم و تنظیمات ایمنی را بدون به‌روزرسانی برنامه به‌روزرسانی کنید: دستورالعمل‌های سیستم و تنظیمات ایمنی را در پارامترهای Remote Config ذخیره کنید تا اطمینان حاصل کنید که اگر بعد از استقرار مشکلی پیدا کردید، می‌توانید آن‌ها را بر اساس درخواست تغییر دهید.
  • کاهش خطر و تقویت ایمنی هوش مصنوعی: از Remote Config Rollouts استفاده کنید تا به طور ایمن و تدریجی تغییرات مولد هوش مصنوعی را برای کاربران iOS و Android خود منتشر کنید.

موارد استفاده پیشرفته و توصیه شده برای Remote Config با برنامه‌های هوش مصنوعی مولد

پس از تنظیم برنامه خود با Remote Config و Google Analytics ، می توانید موارد استفاده پیشرفته را کاوش کنید:

  • تنظیم مکان بر اساس مکان مشتری: از شرایط Remote Config برای تنظیم مکان مدل بر اساس مکان شناسایی شده مشتری استفاده کنید.
  • مدل‌های مختلف را آزمایش کنید : به سرعت بین مدل‌های هوش مصنوعی مولد مختلف آزمایش کنید و جابه‌جا شوید، یا حتی مدل‌های مختلف را در بخش‌های مختلف کاربر مستقر کنید تا بهترین مناسب را برای مورد خاص خود پیدا کنید.
  • بهینه‌سازی عملکرد مدل : پارامترهای مدل، مانند اعلان سیستم، حداکثر نشانه‌های خروجی، دما و تنظیمات دیگر را دقیق تنظیم کنید.
  • استفاده از دستورالعمل‌های مختلف سیستم، درخواست‌ها و پیکربندی مدل بر اساس ویژگی‌های مشتری: هنگام استفاده از Remote Config با Google Analytics ، می‌توانید شرایطی را بر اساس ویژگی‌های مشتری یا مخاطبان سفارشی ایجاد کنید و پارامترهای مختلفی را بر اساس این ویژگی‌ها تنظیم کنید.

    برای مثال، اگر از هوش مصنوعی مولد برای ارائه پشتیبانی فنی در برنامه خود استفاده می‌کنید، ممکن است بخواهید دستورالعمل‌های سیستم را مختص پلتفرم برنامه تنظیم کنید تا اطمینان حاصل کنید که دستورالعمل‌های دقیق به کاربران Android، iOS و پلت فرم وب شما ارائه می‌شود.

  • شخصی سازی تجربیات برای هر کاربر: از شخصی سازی Remote Config برای تعیین خودکار تنظیمات بهینه هوش مصنوعی مولد برای هر کاربر استفاده کنید.

  • کنترل هزینه ها: از راه دور تنظیم کنید که کدام مدل های هوش مصنوعی مولد نامیده می شوند، تعداد دفعات استفاده از آنها و پیکربندی پویا حداکثر مقادیر نشانه خروجی بر اساس مخاطبان کاربر برای کاهش هزینه های غیر ضروری.

  • تجربه و نتایج برنامه را بهینه کنید: از A/B Testing با Remote Config با برنامه‌های iOS، Android و Flutter خود استفاده کنید تا تغییرات پارامترهای هوش مصنوعی را در بخش‌های مختلف کاربر آزمایش کنید تا ببینید چگونه بر معیارهای کلیدی مانند حفظ و درآمد تأثیر می‌گذارد.

با استفاده از برنامه هوش مصنوعی مولد خود با Firebase Remote Config ، می توانید برنامه های کاربردی مبتنی بر هوش مصنوعی انعطاف پذیر، ایمن و مقرون به صرفه بسازید و در عین حال تجربیات لذت بخشی را برای کاربران خود ایجاد کنید.

Firebase Remote Config به برنامه خود اضافه کنید

در این راهنمای راه‌حل، از Firebase Remote Config برای به‌روزرسانی پویا پارامترهای برنامه Android خود که از Vertex AI در Firebase SDK استفاده می‌کنند، استفاده می‌کنید. شما یاد خواهید گرفت که چگونه:

  • پارامترهایی مانند نام مدل ها و دستورالعمل های سیستم را از Firebase Remote Config واکشی و فعال کنید.
  • تماس‌های Gemini API خود را به‌روزرسانی کنید تا از پارامترهای بازیابی شده به صورت پویا استفاده کنید و به شما امکان می‌دهد بین مدل‌های مختلف جابجا شوید یا دستورالعمل‌های سیستم را بدون به‌روزرسانی برنامه تغییر دهید.
  • کنترل پارامترها از راه دور، تنظیم رفتار و قابلیت های مدل در صورت نیاز.

پیش نیازها

این راهنما فرض می کند که شما با استفاده از Android Studio برای تهیه برنامه هایی برای سیستم عامل های Android آشنا هستید. قبل از شروع ، اطمینان حاصل کنید که موارد زیر را انجام داده اید:

  • راهنمای شروع کار را برای Vertex AI در Firebase SDK تکمیل کنید. اطمینان حاصل کنید که همه موارد زیر را انجام داده اید:

    1. یک پروژه Firebase جدید یا موجود ، از جمله استفاده از برنامه قیمت گذاری Blaze و فعال کردن API های مورد نیاز را تنظیم کنید.
    2. برنامه خود را به Firebase متصل کنید ، از جمله ثبت نام برنامه خود و اضافه کردن پیکربندی Firebase خود به برنامه خود.
    3. SDK را اضافه کرده و سرویس Vertex AI و مدل تولیدی را در برنامه خود آغاز کنید.
  • Google Analytics را در پروژه خود فعال کنید و SDK خود را به برنامه خود اضافه کنید (برای هدف قرار دادن مشروط ، مانند تنظیم سرویس و مکان مدل بر اساس موقعیت مکانی دستگاه مشتری).

مرحله 1 : مقادیر پارامتر را در کنسول Firebase تنظیم کنید

یک الگوی Remote Config مشتری ایجاد کنید و پارامترها و مقادیر را برای واکشی و استفاده در برنامه پیکربندی کنید.

  1. پروژه Firebase خود را در کنسول Firebase باز کنید و از منوی ناوبری ، Run را گسترش داده و Remote Config انتخاب کنید.
  2. اطمینان حاصل کنید که مشتری از انتخاب کننده مشتری/سرور در بالای صفحه Remote Config انتخاب شده است.
    • اگر این اولین بار است که با استفاده از الگوهای مشتری Remote Config ، روی ایجاد پیکربندی کلیک کنید. اولین صفحه پارامتر Create Your ظاهر می شود.
    • اگر این اولین بار نیست که با استفاده از الگوهای Remote Config ، روی Add Parameter کلیک کنید.
  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 پیش فرض سریع استفاده از ویژگی AI تولید کننده خود. رشته I am a developer who wants to know more about Firebase!
    vertex_location به صورت اختیاری مکان را برای اجرای سرویس Vertex AI کنترل کرده و به یک مدل دسترسی پیدا کنید. می توانید شرایط را برای پیکربندی این گزینه بر اساس موقعیت مکانی مشتری که توسط Google Analytics شناسایی شده است تنظیم کنید. رشته us-central1
  4. هنگامی که اضافه کردن پارامترها را تمام کردید ، روی Publish Changes کلیک کنید. اگر این یک الگوی Remote Config نیست ، تغییرات را مرور کنید و دوباره روی انتشار تغییرات کلیک کنید.

مرحله 2 : Remote Config SDK را در برنامه خود اضافه و اولیه کنید

وابستگی های Remote Config را اضافه کرده و Remote Config در برنامه خود تنظیم کنید.

  1. وابستگی Remote Config به پرونده Gradle ماژول (سطح برنامه) خود اضافه کنید (معمولاً app/build.gradle.kts یا app/build.gradle ):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.12.0"))
        implementation("com.google.firebase:firebase-vertexai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Remote Config به منطق اصلی برنامه خود اضافه کنید. در اینجا ، Remote Config را آغاز می کنید و حداقل فاصله واکشی را اضافه می کنید:

    KotlinJava
    val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
    
    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    

در این مثال ، فاصله پیش فرض واکشی 3600 ثانیه است ، اما توصیه می کنیم در طول توسعه فاصله حداقل واکشی نسبتاً کم را در کد خود تنظیم کنید.

مرحله 3 : مقادیر پارامتر درون برنامه را تنظیم کنید

شما باید مقادیر پارامتر پیش فرض درون برنامه را در شیء Remote Config تنظیم کنید. این تضمین می کند که برنامه شما همانطور که انتظار می رود رفتار کند حتی اگر نتواند مقادیر را از سرویس Remote Config واکشی کند.

  1. از کنسول Firebase ، Remote Config باز کنید.
  2. در برگه Parameters ، منو را باز کنید و Download Default Palents را انتخاب کنید.
  3. در صورت درخواست ، .xml را برای Android فعال کنید ، سپس روی فایل بارگیری کلیک کنید.
  4. پرونده را در فهرست منابع XML برنامه خود ذخیره کنید.
  5. فایل فعالیت اصلی خود را به روز کنید تا پیش فرض را پس از configSettings که قبلاً اضافه کرده اید اضافه کنید:

    KotlinJava
    // Set default values.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    
    // Set default values.
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    

مرحله 4 : مقادیر را واکشی و فعال کنید

پس از تنظیم پیش فرض ، موارد زیر را به واکشی و فعال کردن مقادیر اضافه کنید:

KotlinJava
// 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)
          }
  // 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)
            }
          }
    });

مرحله 5: یک شنونده Remote Config در زمان واقعی اضافه کنید

یک شنونده Remote Config زمان واقعی را به برنامه خود اضافه کنید تا اطمینان حاصل کنید که تغییراتی که در الگوی Remote Config ایجاد می کنید به محض به روزرسانی به مشتری پخش می شود.

کد زیر هر زمان که یک مقدار پارامتر تغییر کند ، شیء Remote Config را به روز می کند. به صورت اختیاری ، همچنین می توانید یک عمل را در داخل فعال سازی addOnCompleteListener پیکربندی کنید:

KotlinJava
      // 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)
          }
      }
  // 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);
      }
  });

مرحله 6 : مقادیر Remote Config به متغیرهای vertex AI اختصاص دهید

اکنون که Remote Config کاملاً پیکربندی شده است ، کد خود را به روز کنید تا مقادیر کدگذاری شده را با مقادیر تهیه شده از Remote Config جایگزین کنید.

مقادیر کدگذاری شده را برای مکان ، نام مدل ، دستورالعمل های سیستم و سریع کاربر با مقادیر تهیه شده از Remote Config جایگزین کنید.

KotlinJava
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
val vertexAI = Firebase.vertexAI(location = remoteConfig.getString("vertex_location"))

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
val generativeModel = Firebase.vertexAI.generativeModel(
  modelName = remoteConfig.getString("model_name"),
  systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(remoteConfig.getString("prompt"))
print(response.text)
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
FirebaseVertexAI vertexAI = FirebaseVertexAI.getInstance(remoteConfig.getString("vertex_location"));

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
  /* modelName */ remoteConfig.getString("model_name"),
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText(remoteConfig.getString("system_instructions")).build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
Content userPrompt = new Content.Builder()
 addText(remoteConfig.getString("prompt"))
 build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(userPrompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
  @Override
  public void onSuccess(GenerateContentResponse result) {
    String resultText = result.getText();
    System.out.println(resultText);
  }

  @Override
  public void onFailure(Throwable t) {
    t.printStackTrace();
  }
}, executor);

مرحله 7 : برنامه را اجرا کنید

برنامه را بسازید و اجرا کنید و تأیید کنید که کار می کند. از صفحه Remote Config در کنسول Firebase تغییراتی در پیکربندی خود ایجاد کنید ، تغییرات را منتشر کرده و نتیجه را تأیید کنید.

مراحل بعدی

،

هنگام تماس با API Gemini از برنامه خود با استفاده از AI Vertex در Firebase SDK ، درخواست شما حاوی تعدادی پارامترهایی است که پاسخ های AI تولید کننده را کنترل می کنند. این موارد معمولاً شامل نام مدل ، پیکربندی تولید مدل (حداکثر توکن ، دما و غیره) ، تنظیمات ایمنی ، دستورالعمل های سیستم و داده های سریع است.

در بیشتر موارد ، شما می خواهید این موارد را برای تعدادی از سناریوها به صورت تقاضا یا مورد نیاز تغییر دهید:

  • مدل هوش مصنوعی خود را بدون انتشار یک برنامه جدید به روز کنید. شما می توانید قبل از اینکه نسخه های قبلی از نسخه های قبلی خارج شوند ، به نسخه های مدل جدید و پایدار ارتقا دهید ، بر اساس نیازها و ویژگی های کاربران خود به مدل های کم هزینه یا بالاتر برسد ، یا به طور مشروط جدیدترین و بهترین مدل ها را در بخش های خاص کاربر (مانند آزمایش کنندگان بتا) مستقر کنید.
  • مکانی را که در آن به مدل دسترسی دارید تنظیم کنید تا به کاربران خود نزدیکتر شود.
  • A/B دستورالعمل ها و دستورالعمل های مختلف سیستم را تست کنید ، سپس به آرامی مقادیر آزمایش برنده را به کاربران خود بکشید.
  • از پرچم های ویژگی برای افشای سریع یا پنهان کردن ویژگی های تولید AI در برنامه خود استفاده کنید.

Firebase Remote Config همه این و موارد دیگر را انجام می دهد ، به شما امکان می دهد مقادیر پارامتر را در صورت لزوم به روز کنید و به طور مشروط برای موارد برنامه هایی که مطابق با ویژگی هایی که در کنسول Firebase تنظیم کرده اید ، بدون انتشار نسخه جدیدی از برنامه خود ، به روز کنید.

این راهنمای راه حل موارد استفاده ویژه ای را ارائه می دهد و نحوه اضافه کردن Remote Config به برنامه AI تولید کننده خود را توصیف می کند.

پرش به اجرای کد

چرا با برنامه خود Firebase Remote Config استفاده می کنید؟

Firebase Remote Config به شما امکان می دهد بدون نیاز به به روزرسانی برنامه ، رفتار برنامه خود را به صورت پویا تنظیم کنید. این امر به ویژه برای برنامه هایی که از AI مولد استفاده می کنند ، قدرتمند است ، جایی که تکرار سریع و تنظیم دقیق بسیار مهم است.

موارد استفاده ضروری برای Remote Config با برنامه های AI تولیدی

توصیه می کنیم برای موارد استفاده ضروری زیر Remote Config با Vertex AI در Firebase استفاده کنید:

  • ارتقاء به آخرین نسخه مدل بدون به روزرسانی برنامه: از پارامترهای Remote Config استفاده کنید تا نام مدل را در صورت لزوم تغییر دهید تا بتوانید به محض موجود ، به آخرین نسخه مدل Gemini مورد نظر خود ارتقا دهید.
  • دستورالعمل های سیستم و تنظیمات ایمنی را بدون به روزرسانی برنامه به روز کنید: دستورالعمل های سیستم و تنظیمات ایمنی را در داخل پارامترهای Remote Config ذخیره کنید تا اطمینان حاصل کنید که در صورت کشف مشکلات بعد از استقرار ، می توانید آنها را به صورت تقاضا تغییر دهید.
  • ریسک را کاهش داده و ایمنی هوش مصنوعی را اجرا کنید: از برنامه های Remote Config استفاده کنید تا با خیال راحت و به تدریج تغییرات تولید AI را برای کاربران iOS و Android خود آزاد کنید.

موارد استفاده پیشرفته و توصیه شده برای Remote Config با برنامه های AI تولیدی

پس از ابزار کردن برنامه خود با Remote Config و Google Analytics ، می توانید موارد پیشرفته استفاده را کشف کنید:

  • مکان را بر اساس مکان مشتری تنظیم کنید: از شرایط Remote Config استفاده کنید تا مکان مدل را بر اساس مکان شناسایی شده مشتری تنظیم کنید .
  • آزمایش با مدل های مختلف : به سرعت تست و تغییر بین مدل های مختلف AI تولید کننده ، یا حتی مدل های مختلف را در بخش های مختلف کاربر مستقر کنید تا بهترین حالت را برای مورد استفاده خاص خود پیدا کنید.
  • بهینه سازی عملکرد مدل : پارامترهای مدل تنظیم خوب ، مانند سریع سیستم ، حداکثر نشانه های خروجی ، دما و سایر تنظیمات.
  • از دستورالعمل های مختلف سیستم ، ارسال ها و پیکربندی مدل بر اساس ویژگی های مشتری استفاده کنید: هنگام استفاده از Remote Config با Google Analytics ، می توانید شرایطی را بر اساس ویژگی های مشتری یا مخاطبان سفارشی ایجاد کرده و پارامترهای مختلفی را بر اساس این ویژگی ها تنظیم کنید.

    به عنوان مثال ، اگر از AI مولد برای ارائه پشتیبانی فنی در برنامه خود استفاده می کنید ، ممکن است بخواهید دستورالعمل های سیستم را خاص برای بستر برنامه تنظیم کنید تا اطمینان حاصل شود که دستورالعمل های دقیق به کاربران Android ، iOS و Web Platform شما ارائه شده است.

  • تجربیات را برای هر کاربر شخصی سازی کنید: از شخصی سازی Remote Config استفاده کنید تا به طور خودکار تنظیمات بهینه تولید AI را برای هر کاربر تعیین کنید.

  • هزینه های کنترل: از راه دور که کدام مدل های AI تولیدی نامیده می شوند ، چند بار از آنها استفاده می شود ، و به صورت پویا حداکثر مقادیر توکن خروجی را بر اساس مخاطبان کاربر پیکربندی می کند تا هزینه های غیر ضروری را کاهش دهد.

  • بهینه سازی تجربه و نتایج برنامه: از A/B Testing با Remote Config با برنامه های iOS ، Android و Flutter خود استفاده کنید تا تغییرات در پارامترهای تولید کننده AI را در بخش های مختلف کاربر آزمایش کنید تا ببینید که چگونه آنها بر معیارهای کلیدی مانند حفظ و درآمد تأثیر می گذارند.

با ابزار کردن برنامه AI تولیدی خود با Firebase Remote Config ، می توانید ضمن ایجاد تجربیات لذت بخش برای کاربران خود ، برنامه های انعطاف پذیر ، ایمن و مقرون به صرفه ایجاد کنید.

Firebase Remote Config به برنامه خود اضافه کنید

در این راهنمای راه حل ، از Firebase Remote Config برای به روزرسانی پویا در برنامه Android خود استفاده می کنید که از Vertex AI در Firebase SDK استفاده می کنند. شما یاد خواهید گرفت که چگونه:

  • پارامترهایی مانند نام مدل و دستورالعمل های سیستم را از Firebase Remote Config واکشی و فعال کنید.
  • تماس های API Gemini خود را به روز کنید تا از پارامترهای بازیابی پویا استفاده کنید ، به شما امکان می دهد بین مدل های مختلف جابجا شده یا دستورالعمل های سیستم را بدون به روزرسانی برنامه تغییر دهید.
  • پارامترهای کنترل از راه دور ، تنظیم رفتار و قابلیت های مدل در صورت لزوم.

پیش نیازها

This guide assumes that you're familiar with using Android Studio to develop apps for Android platforms. Before you begin, make sure that you have done the following:

  • Complete the Get started guide for the Vertex AI in Firebase SDK . Make sure that you've done all of the following:

    1. Set up a new or existing Firebase project, including using the Blaze pricing plan and enabling the required APIs.
    2. Connect your app to Firebase, including registering your app and adding your Firebase config to your app.
    3. Add the SDK and initialize the Vertex AI service and the generative model in your app.
  • Enable Google Analytics in your project and add its SDK to your app (required for conditional targeting, like setting the service and model's location based on the client device's location).

Step 1 : Set parameter values in the Firebase console

Create a client Remote Config template and configure parameters and values to fetch and use in the app.

  1. Open your Firebase project in the Firebase console and, from the navigation menu, expand Run and select Remote Config .
  2. Ensure that Client is selected from the Client/Server selector at the top of the Remote Config page.
    • If this is your first time using Remote Config client templates, click Create Configuration . The Create your first parameter pane appears.
    • If this is not your first time using Remote Config templates, click Add parameter .
  3. Define the following Remote Config parameters:

    نام پارامتر توضیحات تایپ کنید مقدار پیش فرض
    model_name نام مدل For up-to-date lists of model names to use in your code, see Available model names . رشته gemini-2.0-flash
    system_instructions System instructions are like a "preamble" that you add before the model gets exposed to any further instructions from the end user to influence model behavior, based on specific needs and use cases. رشته You are a helpful assistant who knows everything there is to know about Firebase!
    prompt Default prompt to use with your generative AI feature. رشته I am a developer who wants to know more about Firebase!
    vertex_location Optionally control the location to run the Vertex AI service and access a model. You can set conditions to configure this option based on client location detected by Google Analytics . رشته us-central1
  4. When you've finished adding parameters, click Publish changes . If this is not a new Remote Config template, review the changes and click Publish changes again.

Step 2 : Add and initialize the Remote Config SDK in your app

Add Remote Config dependencies and set up Remote Config within your app.

  1. Add the Remote Config dependency to your module (app-level) Gradle file (usually app/build.gradle.kts or app/build.gradle ):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.12.0"))
        implementation("com.google.firebase:firebase-vertexai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Add Remote Config to your main application logic. Here, you'll initialize Remote Config and add a minimum fetch interval:

    KotlinJava
    val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
    
    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    

In this example, the default fetch interval is 3600 seconds, but we recommend that you set a relatively low minimum fetch interval inside your code during development.

Step 3 : Set in-app parameter values

You should set in-app default parameter values in the Remote Config object. This ensures that your app behaves as expected even if it cannot fetch values from the Remote Config service.

  1. From the Firebase console , open Remote Config .
  2. In the Parameters tab, open the Menu , and select Download default values .
  3. When prompted, enable .xml for Android , then click Download file .
  4. Save the file in your app's XML resources directory.
  5. Update your main activity file to add the defaults after the configSettings you added previously:

    KotlinJava
    // Set default values.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    
    // Set default values.
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    

Step 4 : Fetch and activate values

After setting defaults, add the following to fetch and activate values:

KotlinJava
// 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)
          }
  // 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)
            }
          }
    });

Step 5: Add a real-time Remote Config listener

Add a real-time Remote Config listener to your app to ensure that changes you make to the Remote Config template are propagated to the client as soon as they're updated.

The following code updates the Remote Config object whenever a parameter value changes. Optionally, you can also configure an action inside the addOnCompleteListener activation:

KotlinJava
      // 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)
          }
      }
  // 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);
      }
  });

Step 6 : Assign Remote Config values to Vertex AI variables

Now that Remote Config is fully configured, update your code to replace hard-coded values with values sourced from Remote Config .

Replace hard-coded values for location, model name, system instructions, and user prompt with the values sourced from Remote Config .

KotlinJava
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
val vertexAI = Firebase.vertexAI(location = remoteConfig.getString("vertex_location"))

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
val generativeModel = Firebase.vertexAI.generativeModel(
  modelName = remoteConfig.getString("model_name"),
  systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(remoteConfig.getString("prompt"))
print(response.text)
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
FirebaseVertexAI vertexAI = FirebaseVertexAI.getInstance(remoteConfig.getString("vertex_location"));

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
  /* modelName */ remoteConfig.getString("model_name"),
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText(remoteConfig.getString("system_instructions")).build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
Content userPrompt = new Content.Builder()
 addText(remoteConfig.getString("prompt"))
 build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(userPrompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
  @Override
  public void onSuccess(GenerateContentResponse result) {
    String resultText = result.getText();
    System.out.println(resultText);
  }

  @Override
  public void onFailure(Throwable t) {
    t.printStackTrace();
  }
}, executor);

Step 7 : Run the app

Build and run the app and verify that it works. Make changes to your configuration from the Remote Config page in the Firebase console, publish the changes, and verify the result.

مراحل بعدی

،

When calling the Gemini API from your app using a Vertex AI in Firebase SDK, your request contains a number of parameters that control generative AI responses. These usually include the model name, the model generation configuration (maximum tokens, temperature, etc.), safety settings, system instructions, and prompt data.

In most cases, you'll want to change these on-demand or as needed for a number of scenarios:

  • Update your generative AI model without releasing a new app. You can upgrade to newer, stable model versions before earlier versions are decommissioned, drop to lower-cost or higher performance models based on your users' needs and attributes, or conditionally deploy the latest and greatest models to specific user segments (like beta testers).
  • Set the location where you access the model so that it's closer to your users.
  • A/B test different system instructions and prompts, then slowly roll out the winning experiment values to your users.
  • Use feature flags to quickly expose or hide generative AI features in your app.

Firebase Remote Config does all of this and more, letting you update parameter values as needed and conditionally for app instances that match characteristics you set in the Firebase console, without releasing a new version of your app.

This solution guide provides specific recommended use cases and describes how to add Remote Config to your generative AI app.

Jump to code implementation

Why use Firebase Remote Config with your app?

Firebase Remote Config lets you dynamically adjust your app's behavior without requiring app updates. This is especially powerful for apps that use generative AI, where rapid iteration and fine-tuning are crucial.

Essential use cases for Remote Config with generative AI apps

We recommend using Remote Config with Vertex AI in Firebase for the following essential use cases:

  • Upgrade to the latest model version without an app update: Use Remote Config parameters to change the model name as needed, so that you can upgrade to the latest version of your preferred Gemini model as soon as it's available.
  • Update system instructions and safety settings without an app update: Store system instructions and safety settings inside Remote Config parameters to ensure that you can change them on-demand if you discover issues after deployment.
  • Reduce risk and enforce AI safety: Use Remote Config Rollouts to safely and gradually release generative AI changes to your iOS and Android users.

Advanced and recommended use cases for Remote Config with generative AI apps

After instrumenting your app with Remote Config and Google Analytics , you can explore advanced use cases:

  • Set location based on client location: Use Remote Config conditions to set the location of the model based on the client's detected location.
  • Experiment with different models : Quickly test and switch between various generative AI models, or even deploy different models to different user segments, to find the best fit for your specific use case.
  • Optimize model performance : Fine-tune model parameters, such as system prompt, maximum output tokens, temperature, and other settings.
  • Use different system instructions, prompts, and model configuration based on client attributes: When using Remote Config with Google Analytics , you can create conditions based on client attributes or custom audiences and set different parameters based on these attributes.

    For example, if you're using generative AI to provide technical support in your app, you might want to set system instructions specific to the app platform to ensure accurate instructions are provided to your Android, iOS, and web platform users.

  • Personalize experiences for each user: Use Remote Config personalization to automatically determine the optimum generative AI settings for each user.

  • Control costs: Remotely adjust which generative AI models are called, how frequently they are used, and dynamically configure maximum output token values based on user audience to reduce unnecessary costs.

  • Optimize app experience and results: Use A/B Testing with Remote Config with your iOS, Android, and Flutter apps to test changes to generative AI parameters across different user segments to see how they affect key metrics like retention and revenue.

By instrumenting your generative AI app with Firebase Remote Config , you can build flexible, safe, and cost-effective AI-powered applications while creating delightful experiences for your users.

Add Firebase Remote Config to your app

In this solution guide, you'll use Firebase Remote Config to dynamically update parameters in your Android app that use the Vertex AI in Firebase SDK. شما یاد خواهید گرفت که چگونه:

  • Fetch and activate parameters like model names and system instructions from Firebase Remote Config .
  • Update your Gemini API calls to use the dynamically retrieved parameters, letting you switch between different models or modify system instructions without an app update.
  • Control parameters remotely, adjusting model behavior and capabilities as needed.

پیش نیازها

This guide assumes that you're familiar with using Android Studio to develop apps for Android platforms. Before you begin, make sure that you have done the following:

  • Complete the Get started guide for the Vertex AI in Firebase SDK . Make sure that you've done all of the following:

    1. Set up a new or existing Firebase project, including using the Blaze pricing plan and enabling the required APIs.
    2. Connect your app to Firebase, including registering your app and adding your Firebase config to your app.
    3. Add the SDK and initialize the Vertex AI service and the generative model in your app.
  • Enable Google Analytics in your project and add its SDK to your app (required for conditional targeting, like setting the service and model's location based on the client device's location).

Step 1 : Set parameter values in the Firebase console

Create a client Remote Config template and configure parameters and values to fetch and use in the app.

  1. Open your Firebase project in the Firebase console and, from the navigation menu, expand Run and select Remote Config .
  2. Ensure that Client is selected from the Client/Server selector at the top of the Remote Config page.
    • If this is your first time using Remote Config client templates, click Create Configuration . The Create your first parameter pane appears.
    • If this is not your first time using Remote Config templates, click Add parameter .
  3. Define the following Remote Config parameters:

    نام پارامتر توضیحات تایپ کنید مقدار پیش فرض
    model_name نام مدل For up-to-date lists of model names to use in your code, see Available model names . رشته gemini-2.0-flash
    system_instructions System instructions are like a "preamble" that you add before the model gets exposed to any further instructions from the end user to influence model behavior, based on specific needs and use cases. رشته You are a helpful assistant who knows everything there is to know about Firebase!
    prompt Default prompt to use with your generative AI feature. رشته I am a developer who wants to know more about Firebase!
    vertex_location Optionally control the location to run the Vertex AI service and access a model. You can set conditions to configure this option based on client location detected by Google Analytics . رشته us-central1
  4. When you've finished adding parameters, click Publish changes . If this is not a new Remote Config template, review the changes and click Publish changes again.

Step 2 : Add and initialize the Remote Config SDK in your app

Add Remote Config dependencies and set up Remote Config within your app.

  1. Add the Remote Config dependency to your module (app-level) Gradle file (usually app/build.gradle.kts or app/build.gradle ):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.12.0"))
        implementation("com.google.firebase:firebase-vertexai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Add Remote Config to your main application logic. Here, you'll initialize Remote Config and add a minimum fetch interval:

    KotlinJava
    val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
    
    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    

In this example, the default fetch interval is 3600 seconds, but we recommend that you set a relatively low minimum fetch interval inside your code during development.

Step 3 : Set in-app parameter values

You should set in-app default parameter values in the Remote Config object. This ensures that your app behaves as expected even if it cannot fetch values from the Remote Config service.

  1. From the Firebase console , open Remote Config .
  2. In the Parameters tab, open the Menu , and select Download default values .
  3. When prompted, enable .xml for Android , then click Download file .
  4. Save the file in your app's XML resources directory.
  5. Update your main activity file to add the defaults after the configSettings you added previously:

    KotlinJava
    // Set default values.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    
    // Set default values.
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    

Step 4 : Fetch and activate values

After setting defaults, add the following to fetch and activate values:

KotlinJava
// 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)
          }
  // 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)
            }
          }
    });

Step 5: Add a real-time Remote Config listener

Add a real-time Remote Config listener to your app to ensure that changes you make to the Remote Config template are propagated to the client as soon as they're updated.

The following code updates the Remote Config object whenever a parameter value changes. Optionally, you can also configure an action inside the addOnCompleteListener activation:

KotlinJava
      // 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)
          }
      }
  // 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);
      }
  });

Step 6 : Assign Remote Config values to Vertex AI variables

Now that Remote Config is fully configured, update your code to replace hard-coded values with values sourced from Remote Config .

Replace hard-coded values for location, model name, system instructions, and user prompt with the values sourced from Remote Config .

KotlinJava
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
val vertexAI = Firebase.vertexAI(location = remoteConfig.getString("vertex_location"))

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
val generativeModel = Firebase.vertexAI.generativeModel(
  modelName = remoteConfig.getString("model_name"),
  systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(remoteConfig.getString("prompt"))
print(response.text)
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
FirebaseVertexAI vertexAI = FirebaseVertexAI.getInstance(remoteConfig.getString("vertex_location"));

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
  /* modelName */ remoteConfig.getString("model_name"),
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText(remoteConfig.getString("system_instructions")).build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
Content userPrompt = new Content.Builder()
 addText(remoteConfig.getString("prompt"))
 build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(userPrompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
  @Override
  public void onSuccess(GenerateContentResponse result) {
    String resultText = result.getText();
    System.out.println(resultText);
  }

  @Override
  public void onFailure(Throwable t) {
    t.printStackTrace();
  }
}, executor);

Step 7 : Run the app

Build and run the app and verify that it works. Make changes to your configuration from the Remote Config page in the Firebase console, publish the changes, and verify the result.

مراحل بعدی