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

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

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

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

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

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

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

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

  1. پروژه Firebase خود را در کنسول Firebase باز کنید. سپس از منوی ناوبری، Run را باز کرده و Remote Config انتخاب کنید.

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

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

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

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

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

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

سویفت

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

  1. در Xcode، با باز کردن پروژه، به مسیر File > Add Package Dependencies بروید.

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

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

  4. از برگه عمومی (General )، به چارچوب‌ها (Frameworks)، کتابخانه‌ها (Libraries) و محتوای جاسازی‌شده (Embedded Content) بروید.

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

  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:34.5.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:34.5.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 SDK مقداردهی اولیه شد، 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_vertexai/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),
      ));
    

وحدت

  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 دریافت کند، طبق انتظار رفتار کند.

سویفت

  1. در کنسول Firebase ، Remote Config باز کنید.

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

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

  4. فایل را در پوشه برنامه خود ذخیره کنید.

  5. در Xcode، روی برنامه خود کلیک راست کرده و گزینه Add Files را انتخاب کنید.

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

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

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

Kotlin

  1. از کنسول Firebase ، Remote Config باز کنید.

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

  3. وقتی از شما خواسته شد، فایل ‎.xml را برای اندروید فعال کنید، سپس روی دانلود فایل کلیک کنید.

  4. فایل را در پوشه منابع XML برنامه خود ذخیره کنید.

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

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

Java

  1. در کنسول Firebase ، Remote Config باز کنید.

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

  3. وقتی از شما خواسته شد، فایل ‎.xml را برای اندروید فعال کنید، سپس روی دانلود فایل کلیک کنید.

  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-2.5-flash',
};

Dart

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

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

وحدت

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

// Set default values for Remote Config parameters.
await remoteConfig.SetDefaultsAsync(
  new System.Collections.Generic.Dictionary<string, object>() {
    { "model_name", "gemini-2.5-flash" }
  }
);

مرحله ۴ : دریافت و فعال‌سازی مقدار

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

سویفت

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

وحدت

// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();

مرحله ۵ : یک شنونده 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")
  }
}

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

شنونده‌های Remote Config بلادرنگ برای برنامه‌های وب پشتیبانی نمی‌شوند.

Dart

// Add a real-time Remote Config listener
remoteConfig.onConfigUpdated.listen((event) async {
  await remoteConfig.activate();
});

وحدت

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

مرحله 6 : درخواست‌های API مربوط به Gemini را برای استفاده از مقدار Remote Config به‌روزرسانی کنید.

برای مشاهده محتوا و کد مخصوص ارائه‌دهنده در این صفحه، روی ارائه‌دهنده API Gemini خود کلیک کنید.

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

سویفت

import FirebaseAI

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: modelName
)

// ...

Kotlin

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = remoteConfig.getString("model_name")
)

// ...

Java

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
      /* modelName */ remoteConfig.getString("model_name"),
      /* generationConfig (optional) */ null,
      /* safetySettings (optional) */ null,
      /* requestOptions (optional) */ new RequestOptions(),
      /* tools (optional) */ null,
      /* toolsConfig (optional) */ null,
      /* systemInstruction (optional) */ null,
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

// ...

Web

// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
const model = getGenerativeModel(ai, {
  model: modelName
});

// ...

Dart

// ...

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
final model = FirebaseAI.googleAI().generativeModel(
  model: _modelName,
);

// ...

وحدت

// ...

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 ، تغییراتی در پیکربندی خود ایجاد کنید، تغییرات را منتشر کنید و نتیجه را تأیید کنید.

مراحل بعدی