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

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

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

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

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 و اندروید خود استفاده کنید.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. پروژه Firebase خود را در کنسول Firebase باز کنید. سپس از منوی ناوبری، Run را باز کرده و Remote Config انتخاب کنید.
  2. مطمئن شوید که کلاینت از انتخابگر کلاینت/سرور در بالای صفحه انتخاب شده است.
  3. با کلیک روی «ایجاد پیکربندی» (یا اگر قبلاً از الگوهای مشتری استفاده کرده‌اید، روی «افزودن پارامتر» ) یک الگوی مشتری ایجاد کنید.
  4. پارامترهایی را که می‌خواهید با Remote Config کنترل کنید، تعریف کنید. برای مثال:

    نام پارامتر توضیحات نوع مقدار پیش‌فرض
    model_name نام مدل. نام مدل‌های موجود را ببینید. رشته gemini-2.5-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 Gemini API قابل اجرا است.
    کنترل موقعیت مکانی برای دسترسی به مدل. می‌توانید شرایطی را برای پیکربندی این گزینه بر اساس موقعیت مکانی کلاینت که توسط Google Analytics شناسایی شده است، تنظیم کنید.
    رشته global
  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
    

    در برنامه‌ی شروع سریع ، این درون VertexAISampleApp و درون کلاس AppDelegate قرار خواهد گرفت.

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

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:34.4.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.4.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 ، _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),
      ));
    
وحدت
  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. فایل را در پوشه برنامه خود ذخیره کنید.

    اگر از برنامه نمونه استفاده می‌کنید، آن را در FirebaseVertexAI/Sample/VertexAISample ذخیره کنید.

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

    اگر از نمونه استفاده می‌کنید، روی VertexAISample کلیک راست کرده و گزینه Add Files to "VertexAISample" را انتخاب کنید.

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

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

    // Set default values
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    
Kotlin
  1. از کنسول Firebase ، Remote Config باز کنید.

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

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

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

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

    // Set default values.
    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
    
Java
  1. در کنسول Firebase ، Remote Config باز کنید.

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

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

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

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

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

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

// Set default Remote Config parameter values
remoteConfig.defaultConfig = {
  model_name: 'gemini-2.5-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: 'global',
};
Dart

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

remoteConfig.setDefaults(const {
  "model_name": "gemini-2.5-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": "global"
});
وحدت

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

await remoteConfig.SetDefaultsAsync(
  new System.Collections.Generic.Dictionary<string, object>() {
    { "model_name", "gemini-2.5-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", "global" }
  }
);
مرحله ۴ : دریافت و فعال‌سازی مقادیر

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

سویفت
// 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 و vertexLocation اختصاص دهید.

    // 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 vertexLocation = getValue(remoteConfig, 'vertex_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? _vertexLocation = remoteConfig.getString("vertex_location");
وحدت
// 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 گرفته شده‌اند، جایگزین شوند.

سویفت
// 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);
وحدت
// 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+ و اندروید) منتشر کنید.

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