به‌روزرسانی پویا برنامه Firebase AI Logic با «پیکربندی از راه دور Firebase»

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

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

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

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

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

رفتن به پیاده‌سازی کد

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

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

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

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

  • ارتقا به جدیدترین نسخه مدل بدون به‌روزرسانی برنامه: از پارامترهای Remote Config برای تغییر نام مدل درصورت نیاز استفاده کنید تا بتوانید به‌محض دردسترس قرار گرفتن، به جدیدترین نسخه مدل Gemini موردنظرتان ارتقا دهید.

  • به‌روزرسانی دستورالعمل‌های سیستم و تنظیمات ایمنی بدون به‌روزرسانی برنامه: دستورالعمل‌های سیستم و تنظیمات ایمنی را در Remote Config پارامترها ذخیره کنید تا مطمئن شوید درصورت مواجهه با مشکلات پس‌از استقرار، می‌توانید آن‌ها را به‌صورت درخواستی تغییر دهید.

  • کاهش خطر و اجرای ایمنی هوش مصنوعی: از Remote Config عرضه برای انتشار ایمن و تدریجی تغییرات هوش مصنوعی زایا برای کاربران iOS و Android استفاده کنید.

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

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

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

  • مدل‌های مختلف را آزمایش کنید: به‌سرعت بین مدل‌های مختلف هوش مصنوعی زایا آزمایش کنید و جابه‌جا شوید، یا حتی برای بخش‌های مختلف کاربر به مدل‌های مختلف دسترسی پیدا کنید تا بهترین مدل را برای مورد استفاده خاص خود پیدا کنید.

  • بهینه‌سازی عملکرد مدل: پارامترهای مدل را، مثل پیام‌واره سیستم، حداکثر داده‌واحد برونداد، دما، و تنظیمات دیگر را دقیق تنظیم کنید.

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

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

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

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

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

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

افزودن Firebase Remote Config به برنامه

در این راهنمای راه‌حل، از Firebase Remote Config برای به‌روزرسانی پویا پارامترها در برنامه‌تان که از کیت توسعه نرم‌افزار Firebase AI Logic استفاده می‌کند استفاده خواهید کرد. با نحوه انجام این کارها آشنا خواهید شد:

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

پیش‌نیازها

این راهنما فرض می‌کند که شما با توسعه برنامه‌ها برای پلاتفرم خود آشنا هستید.

قبل‌از شروع، مطمئن شوید که موارد زیر را انجام داده‌اید:

  • Firebase AI Logic راهنمای شروع به کار را تکمیل کنید، که نحوه راه‌اندازی پروژه Firebase، متصل کردن برنامه به Firebase، افزودن کیت توسعه نرم‌افزار، مقداردهی اولیه سرویس زیرینه برای ارائه‌دهنده «Gemini API» انتخابی، و ایجاد نمونه مدل را شرح می‌دهد.

  • Google Analytics را در پروژه Firebase خود فعال کنید و کیت توسعه نرم‌افزار آن را به برنامه خود اضافه کنید (برای هدف‌یابی شرطی، مانند تنظیم مکان دسترسی به مدل براساس مکان دستگاه مشتری، الزامی است).

استفاده کنید

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

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

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

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

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

  4. پارامترهایی را که می‌خواهید با Remote Config کنترل کنید تعریف کنید. برای مثال:

    نام پارامتر شرح نوع مقدار پیش‌فرض
    model_name نام مدل. نام‌های مدل دردسترس را ببینید. تار gemini-3.8-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!
    agent_platform_location فقط درصورت استفاده از Agent Platform Gemini API (formerly Vertex AI) قابل‌اعمال است.
    برای دسترسی به مدل، مکان را کنترل کنید. می‌توانید شرایطی را برای پیکربندی این گزینه براساس مکان مشتری که Google Analytics تشخیص داده است تنظیم کنید.
    تار global
  5. وقتی افزودن پارامترها را تمام کردید، روی منتشر کردن تغییرات کلیک کنید. اگر این الگوی Remote Config جدید نیست، تغییرات را مرور کنید و دوباره روی انتشار تغییرات کلیک کنید.

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

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

Swift

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

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

  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.0.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.0.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،‏ _systemInstructions، و _prompt را به برنامه‌تان اضافه کنید تا بتوانید بعداً از آن‌ها استفاده کنید:

    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',
  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!',
  agent_platform_location: 'global',
};

Dart

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

// Set default values for Remote Config parameters.
remoteConfig.setDefaults(const {
  "model_name": "gemini-3.8-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!",
  "agent_platform_location": "global"
});

Unity

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

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

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

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

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. کدی را که در آن مقادیر پیش‌فرض Remote Config را مشخص می‌کنید پیدا کنید. بلافاصله پس‌از آن قطعه کد، کد زیر را اضافه کنید تا پیکربندی را واکشی و فعال کند و مقادیر را به ثابت‌های modelName، systemInstructions، prompt، و agentPlatformLocation اختصاص دهد.

    // 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();
    const systemInstructions = getValue(remoteConfig, 'system_instructions').asString();
    const prompt = getValue(remoteConfig, 'prompt').asString();
    const agentPlatformLocation = getValue(remoteConfig, 'agent_platform_location').asString();
    

Dart

// Fetch and activate Remote Config.
remoteConfig.fetchAndActivate();

// Assign Remote Config values.
String? _modelName = remoteConfig.getString("model_name");
String? _systemInstructions = remoteConfig.getString("system_instructions");
String? _prompt = remoteConfig.getString("prompt");
String? _agentPlatformLocation = remoteConfig.getString("agent_platform_location");
قرار دهید.

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

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let systemInstructions = remoteConfig.configValue(forKey: "system_instructions").stringValue

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

// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
let userPrompt = remoteConfig.configValue(forKey: "prompt").stringValue

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

Kotlin

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
val ai = Firebase.ai(backend = GenerativeBackend.googleAI())

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
val model = ai.generativeModel(
  modelName = remoteConfig.getString("model_name"),
  systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)

// To generate text output, call `generateContent` with the text input
// The text in the prompt will be sourced from Remote Config
val response = model.generateContent(remoteConfig.getString("prompt"))
print(response.text)

Java

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
FirebaseAI ai = FirebaseAI.getInstance(GenerativeBackend.googleAI());

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
GenerativeModel gm = ai.generativeModel(
        /* modelName */ remoteConfig.getString("model_name"),
        /* generationConfig (optional) */ null,
        /* safetySettings (optional) */ null,
        /* tools (optional) */ null,
        /* toolsConfig (optional) */ null,
        /* systemInstruction (optional) */ new Content.Builder().addText(
                remoteConfig.getString("system_instructions")).build(),
        /* requestOptions (optional) */ new RequestOptions()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
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);

Web

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
const model = getGenerativeModel(ai, {
  model: modelName,
  systemInstruction: systemInstruction
});

// Wrap in an async function so you can use await
async function run() {
  // Provide a prompt that contains text
  // The text in the prompt will be sourced from Remote Config
  const userPrompt = prompt;

  // To generate text output, call `generateContent` with the text input
  const result = await model.generateContent(userPrompt);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

Dart

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
final ai = await FirebaseAI.googleAI();

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
final model =
      ai.generativeModel(
        model: _modelName,
        systemInstruction: Content.system(_systemInstructions),
      );

// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
final _userPrompt = [Content.text(_prompt)];

// To generate text output, call `generateContent` with the text input
final response = await model.generateContent(_userPrompt);
print(response.text);

Unity

// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
var modelName = remoteConfig.GetValue("model_name").StringValue;
var systemInstructions = remoteConfig.GetValue("system_instructions").StringValue;

var model = ai.GetGenerativeModel(
  modelName: modelName,
  systemInstruction: ModelContent.Text(systemInstructions)
);

// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
var userPrompt = remoteConfig.GetValue("prompt").StringValue;

// To generate text output, call `GenerateContentAsync` with the text input
var response = await model.GenerateContentAsync(userPrompt);
UnityEngine.Debug.Log(response.Text ?? "No text in response.");

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

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

مراحل بعدی

  • درباره Remote Config بیشتر بدانید.

  • برای فعال کردن هدف‌یابی، Google Analytics را به کد مشتری‌تان اضافه کنید.

  • برای برنامه‌ها و بازی‌های تلفن همراه:

    • تنظیمات مدل مختلف را با Remote Config و A/B Testing آزمایش کنید.

    • تغییرات پارامتر مدل را به‌تدریج بااستفاده از Remote Config عرضه تدریجی منتشر کنید (فقط iOS+ و Android).

    • از Remote Config شخصی‌سازی برای استفاده از یادگیری ماشین برای تعیین بهترین تنظیمات برای کاربران فردی استفاده کنید (فقط iOS،‏ Android، و Unity).