نام مدل را از دور در برنامه‌تان تغییر دهید

دردسترس بودن مدل‌های هوش مصنوعی زایا مرتباً تغییر می‌کند — مدل‌های جدیدتر و بهتر منتشر می‌شوند و مدل‌های قدیمی‌تر و با توانایی کمتر از دور خارج می‌شوند.

وقتی که بااستفاده از Firebase AI Logic مستقیماً از برنامه وب یا تلفن همراه به مدل‌های هوش مصنوعی زایا دسترسی پیدا می‌کنید، بسیار مهم است که برنامه‌تان را به‌گونه‌ای پیکربندی کنید که با این تغییرات مکرر مدل سازگار باشد. همه کاربران شما به جدیدترین نسخه برنامه‌تان به‌روزرسانی نخواهند کرد تا از مدلی که می‌خواهید استفاده کنند.

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

توجه داشته باشید که تغییر نام مدل یک مورد استفاده بحرانی برای استفاده از Remote Config با Firebase AI Logic است، اما همچنین می‌توانید از Remote Config برای کنترل پویا و حتی شرطی پارامترها در برنامه‌تان استفاده کنید، مانند پیکربندی تولید مدل (مانند حداکثر توکن‌های خروجی)، تنظیمات ایمنی، دستورالعمل‌های سیستم، و داده‌های پیام‌واره.

این راهنما نحوه پیاده‌سازی Remote Config را در برنامه‌تان شرح می‌دهد، به‌ویژه برای کنترل نام مدل استفاده‌شده در برنامه‌تان.

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

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

  1. در کنسول Firebase، به DevOps و تعامل > پیکربندی از راه دور بروید.

  2. از انتخابگر کارخواه/سرور در بالای صفحه، کارخواه را انتخاب کنید.

  3. با کلیک کردن روی ایجاد پیکربندی، الگوی کارخواه را شروع کنید (یا اگر قبلاً از الگوهای کارخواه استفاده کرده‌اید، روی افزودن پارامتر کلیک کنید).

  4. پارامتر model_name را تعریف کنید:

    نام پارامتر شرح نوع مقدار پیش‌فرض
    model_name نام مدل. نام مدل‌های دردسترس را ببینید. تار gemini-3.8-flash
  5. پس‌از افزودن این پارامتر، روی انتشار تغییرات کلیک کنید. اگر این الگو، الگوی Remote Config جدیدی نیست، تغییرات را مرور کنید و دوباره روی انتشار تغییرات کلیک کنید.

مرحله ۲: افزودن و مقداردهی اولیه Remote Config در برنامه

کتابخانه Remote Config را اضافه کنید و Remote Config را در برنامه‌تان راه‌اندازی کنید.

Swift

به‌عنوان بخشی از Firebase AI Logic راه‌اندازی، قبلاً کیت توسعه نرم‌افزار Firebase را به برنامه‌تان اضافه کرده‌اید، اما باید Remote Config را نیز اضافه کنید.

  1. در Xcode، وقتی پروژه باز است، به فایل > افزودن وابستگی‌های بسته بروید.

  2. firebase-ios-sdk را انتخاب کنید و سپس روی افزودن بسته کلیک کنید.

  3. از «پیمایشگر پروژه»، برنامه‌تان > هدف‌ها > برنامه‌تان را انتخاب کنید.

  4. از برگه عمومی، به چارچوب‌ها، کتابخانه‌ها، و محتوای جاسازی‌شده پیمایش کنید.

  5. روی + کلیک کنید و FirebaseRemoteConfig را انتخاب کنید، سپس روی افزودن کلیک کنید.

  6. واردات FirebaseRemoteConfig را به کدتان اضافه کنید:

    import FirebaseRemoteConfig
    
  7. درون کلاس مناسب برای برنامه‌تان، Firebase را مقداردهی اولیه کنید و Remote Config را به منطق برنامه اصلی‌تان اضافه کنید.

    در اینجا، Remote Config و شنونده هم‌زمان Remote Config را به‌عنوان واردات اضافه می‌کنید تا برنامه بتواند مقادیر جدید را به‌صورت هم‌زمان واکشی کند، و یک حداقل فاصله واکشی اضافه کنید:

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

Kotlin

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

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

    val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
    

Java

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

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

    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    

Web

  1. کدتان را در ویرایشگر نوشتار باز کنید و Remote Config را وارد کنید:

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. درون تابع اصلی و پس‌از مقداردهی اولیه برنامه Firebase برای کیت توسعه نرم‌افزار Firebase AI Logic، Remote Config را مقداردهی اولیه کنید:

      // Initialize Remote Config and get a reference to the service
      const remoteConfig = getRemoteConfig(app);
    
  3. حداقل فاصله واکشی را تنظیم کنید:

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Dart

  1. از فهرست راهنمای پروژه Flutter، بااستفاده از فرمان زیر، Remote Config را نصب و اضافه کنید:

    flutter pub add firebase_remote_config
    
  2. ./lib/main.dart را باز کنید و وارد کردن را بعداز وارد کردن‌های دیگری که برای پشتیبانی از Firebase AI Logic اضافه کردید اضافه کنید:

    import 'package:firebase_ai/firebase_ai.dart';
    import 'package:firebase_core/firebase_core.dart';
    import 'package:firebase_remote_config/firebase_remote_config.dart';
    
  3. متغیر _modelName را به برنامه‌تان اضافه کنید تا بتوانید بعداً از آن استفاده کنید:

    late final String _modelName;
    late final String _systemInstructions;
    late final String _prompt;
    
  4. نمونه شیء Remote Config را دریافت کنید و حداقل فاصله واکشی را تنظیم کنید تا امکان بازآوری‌های مکرر فراهم شود. حتماً این را بعداز مقداردهی اولیه Firebase اضافه کنید.

      final remoteConfig = FirebaseRemoteConfig.instance;
      await remoteConfig.setConfigSettings(RemoteConfigSettings(
        fetchTimeout: const Duration(seconds: 3600),
        minimumFetchInterval: const Duration(seconds: 3600),
      ));
    

Unity

  1. با دنبال کردن این دستورالعمل‌ها، Remote Config را به پروژه Unity خود اضافه کنید.

  2. نمونه شیء 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

  1. در کنسول Firebase، به صفحه DevOps و تعامل > پیکربندی از راه دور > پارامترها بروید.

  2. منو را باز کنید و بارگیری مقادیر پیش‌فرض را انتخاب کنید.

  3. وقتی درخواست شد، plist. برای iOS را فعال کنید، سپس روی بارگیری فایل کلیک کنید.

  4. فایل را در فهرست راهنمای برنامه‌تان ذخیره کنید.

  5. در Xcode، روی برنامه‌تان کلیک راست کنید و افزودن فایل را انتخاب کنید

  6. remote_config_defaults.plist را انتخاب کنید، سپس روی افزودن کلیک کنید.

  7. کد برنامه‌تان را به‌روز کنید تا به فایل پیش‌فرض ارجاع دهد:

    // Set default values for Remote Config parameters.
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

Kotlin

  1. در کنسول Firebase، به صفحه DevOps و تعامل > پیکربندی از راه دور > پارامترها بروید.

  2. منو را باز کنید و بارگیری مقادیر پیش‌فرض را انتخاب کنید.

  3. وقتی درخواست شد، xml. برای Android را فعال کنید، سپس روی بارگیری فایل کلیک کنید.

  4. فایل را در فهرست راهنمای منابع XML برنامه‌تان ذخیره کنید.

  5. فایل فعالیت اصلی‌تان را به‌روز کنید تا پیش‌فرض‌ها را بعداز configSettings که قبلاً اضافه کرده‌اید اضافه کنید:

    // Set default values for Remote Config parameters.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    

Java

  1. در کنسول Firebase، به صفحه DevOps و تعامل > پیکربندی از راه دور > پارامترها بروید.

  2. منو را باز کنید و بارگیری مقادیر پیش‌فرض را انتخاب کنید.

  3. وقتی درخواست شد، xml. برای Android را فعال کنید، سپس روی بارگیری فایل کلیک کنید.

  4. فایل را در فهرست راهنمای منابع XML برنامه‌تان ذخیره کنید.

  5. فایل فعالیت اصلی‌تان را به‌روز کنید تا پیش‌فرض‌ها را بعداز 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-3.8-flash',
};

Dart

می‌توانید مقدار پیش‌فرض نام مدل را مستقیماً در کدتان تنظیم کنید:

// Set default values for Remote Config parameters.
remoteConfig.setDefaults(const {
  "model_name": "gemini-3.8-flash"
});

Unity

می‌توانید مقدار پیش‌فرض نام مدل را مستقیماً در کدتان تنظیم کنید:

// Set default values for Remote Config parameters.
await remoteConfig.SetDefaultsAsync(
  new System.Collections.Generic.Dictionary<string, object>() {
    { "model_name", "gemini-3.8-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

  1. ‫getValue و fetchAndActivate را به واردات خود اضافه کنید:

    import { getValue, fetchAndActivate } from 'firebase/remote-config';
    
  2. کدی را که در آن مقدار پیش‌فرض نام مدل را مشخص می‌کنید پیدا کنید. بلافاصله بعداز آن بلوک کد، کد زیر را برای واکشی و فعال کردن پیکربندی و اختصاص دادن مقدار واکشی‌شده به ثابت 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 FirebaseAILogic

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

// ...

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

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

مراحل بعدی