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

هنگام فراخوانی Gemini API از برنامه خود با استفاده از 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 و Android خود استفاده کنید.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

پیش نیازها

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

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

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

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

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

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

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

    نام پارامتر توضیحات تایپ کنید مقدار پیش فرض
    model_name نام مدل اسامی مدل های موجود را ببینید. رشته gemini-2.0-flash
    system_instructions دستورالعمل‌های سیستم مانند یک «مقدمه» هستند که قبل از اینکه مدل در معرض هر دستورالعمل دیگری از کاربر نهایی قرار گیرد تا بر رفتار مدل تأثیر بگذارد، اضافه می‌کنید. رشته You are a helpful assistant who knows everything there is to know about Firebase!
    prompt درخواست پیش‌فرض برای استفاده با ویژگی هوش مصنوعی مولد شما. رشته I am a developer who wants to know more about Firebase!
    vertex_location فقط در صورت استفاده از Vertex AI Gemini API قابل استفاده است.
    مکان را برای دسترسی به مدل کنترل کنید. می توانید شرایطی را برای پیکربندی این گزینه بر اساس مکان مشتری شناسایی شده توسط Google Analytics تنظیم کنید.
    رشته us-central1
  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. از برگه عمومی ، به Frameworks, Libraries, and 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:33.14.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:33.14.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
    });
    

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

شما باید مقادیر پارامترهای پیش فرض درون برنامه را در شی 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. را برای Android فعال کنید، سپس روی دانلود فایل کلیک کنید.

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

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

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

Java

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

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

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

  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.0-flash',
  system_instructions:
    'You are a helpful assistant who knows everything there is to know about Firebase!',
  prompt: 'I am a developer who wants to know more about Firebase!',
  vertex_location: 'us-central1',
};

Dart

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

remoteConfig.setDefaults(const {
  "model_name": "gemini-2.0-flash",
  "system_instructions": "You are a helpful assistant who knows everything there is to know about Firebase!",
  "prompt": "I am a developer who wants to know more about Firebase!",
  "vertex_location": "us-central1"
});

وحدت

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

await remoteConfig.SetDefaultsAsync(
  new System.Collections.Generic.Dictionary<string, object>() {
    { "model_name", "gemini-2.0-flash" },
    { "system_instructions", "You are a helpful assistant who knows everything there is to know about Firebase!" },
    { "prompt", "I am a developer who wants to know more about Firebase!" },
    { "vertex_location", "us-central1" }
  }
);

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

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

سویفت

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

مرحله 5 : یک شنونده 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 : درخواست های Gemini API را برای استفاده از مقادیر Remote Config به روز کنید

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

اکنون که Remote Config به طور کامل پیکربندی شده است، کد خود را به‌روزرسانی کنید تا مقادیر سخت‌کد شده را با مقادیر منبع‌شده از 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.");

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

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

مراحل بعدی

  • درباره Remote Config بیشتر بیاموزید.

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

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

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

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

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