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

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

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

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

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

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

پرش به اجرای کد

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

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

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

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

  • ارتقاء به آخرین نسخه مدل بدون به‌روزرسانی برنامه: از پارامترهای Remote Config برای تغییر نام مدل در صورت نیاز استفاده کنید، تا بتوانید به‌محض در دسترس شدن، آن را به آخرین نسخه مدل دلخواه Gemini خود ارتقا دهید.
  • دستورالعمل‌های سیستم و تنظیمات ایمنی را بدون به‌روزرسانی برنامه به‌روزرسانی کنید: دستورالعمل‌های سیستم و تنظیمات ایمنی را در پارامترهای Remote Config ذخیره کنید تا اطمینان حاصل کنید که اگر بعد از استقرار مشکلی پیدا کردید، می‌توانید آن‌ها را بر اساس درخواست تغییر دهید.
  • کاهش خطر و تقویت ایمنی هوش مصنوعی: از Remote Config Rollouts استفاده کنید تا به طور ایمن و تدریجی تغییرات مولد هوش مصنوعی را برای کاربران iOS و Android خود منتشر کنید.

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

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

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

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

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

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

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

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

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

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

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

پیش نیازها

این راهنما فرض می‌کند که شما با استفاده از Android Studio برای توسعه برنامه‌ها برای پلتفرم‌های Android آشنا هستید. قبل از شروع، مطمئن شوید که موارد زیر را انجام داده اید:

  • راهنمای شروع برای Vertex AI in Firebase SDK را کامل کنید. مطمئن شوید که تمام کارهای زیر را انجام داده اید:

    1. یک پروژه Firebase جدید یا موجود راه اندازی کنید، از جمله استفاده از طرح قیمت گذاری Blaze و فعال کردن API های مورد نیاز.
    2. برنامه خود را به Firebase وصل کنید، از جمله ثبت برنامه خود و افزودن پیکربندی Firebase به برنامه خود.
    3. SDK را اضافه کنید و سرویس Vertex AI و مدل تولیدی را در برنامه خود راه اندازی کنید.
  • Google Analytics در پروژه خود فعال کنید و SDK آن را به برنامه خود اضافه کنید (برای هدف گیری مشروط، مانند تنظیم مکان سرویس و مدل بر اساس مکان دستگاه مشتری، لازم است).

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

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

  1. پروژه Firebase خود را در کنسول Firebase باز کنید و از منوی پیمایش، Run را باز کرده و Remote Config انتخاب کنید.
  2. اطمینان حاصل کنید که Client از انتخابگر Client/Server در بالای صفحه Remote Config انتخاب شده است.
    • اگر این اولین باری است که از الگوهای سرویس گیرنده Remote Config استفاده می کنید، روی ایجاد پیکربندی کلیک کنید. پنجره Create your first parameter ظاهر می شود.
    • اگر این اولین بار نیست که از الگوهای Remote Config استفاده می‌کنید، روی افزودن پارامتر کلیک کنید.
  3. پارامترهای Remote Config زیر را تعریف کنید:

    نام پارامتر توضیحات تایپ کنید مقدار پیش فرض
    model_name نام مدل برای لیست های به روز نام مدل ها برای استفاده در کد خود، به نام مدل های موجود مراجعه کنید. رشته gemini-1.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 و دسترسی به یک مدل کنترل کنید. می توانید شرایطی را برای پیکربندی این گزینه بر اساس مکان مشتری شناسایی شده توسط Google Analytics تنظیم کنید. رشته us-central1
  4. وقتی افزودن پارامترها تمام شد، روی انتشار تغییرات کلیک کنید. اگر این یک الگوی Remote Config جدید نیست، تغییرات را مرور کنید و دوباره روی انتشار تغییرات کلیک کنید.

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

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

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

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

    Kotlin+KTX

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

    Java

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

در این مثال، فاصله واکشی پیش‌فرض 3600 ثانیه است، اما توصیه می‌کنیم در طول توسعه، حداقل فاصله واکشی نسبتاً کم را در داخل کد خود تنظیم کنید.

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

شما باید مقادیر پارامترهای پیش فرض درون برنامه را در شی Remote Config تنظیم کنید. این تضمین می کند که برنامه شما همانطور که انتظار می رود رفتار کند حتی اگر نتواند مقادیر را از سرویس Remote Config واکشی کند.

  1. از کنسول Firebase ، Remote Config باز کنید.
  2. در برگه پارامترها ، منو را باز کنید و مقادیر پیش فرض را دانلود کنید.
  3. وقتی از شما خواسته شد، xml. را برای Android فعال کنید، سپس روی دانلود فایل کلیک کنید.
  4. فایل را در فهرست منابع XML برنامه خود ذخیره کنید.
  5. فایل اکتیویتی اصلی خود را به‌روزرسانی کنید تا پس از configSettings که قبلاً اضافه کرده‌اید، پیش‌فرض‌ها را اضافه کنید:

    Kotlin+KTX

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

    Java

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

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

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

Kotlin+KTX

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

مرحله 5: یک شنونده Remote Config بیدرنگ اضافه کنید

یک شنونده بیدرنگ Remote Config به برنامه خود اضافه کنید تا مطمئن شوید که تغییراتی که در الگوی Remote Config ایجاد می کنید به محض به روز رسانی به مشتری منتشر می شود.

کد زیر هر زمان که مقدار پارامتر تغییر کند، شی Remote Config به روز می کند. به صورت اختیاری، می توانید یک عمل را در داخل فعال سازی addOnCompleteListener نیز پیکربندی کنید:

Kotlin+KTX

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

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

مرحله 6 : مقادیر Remote Config به متغیرهای Vertex AI اختصاص دهید

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

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

Kotlin+KTX

// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
val vertexAI = Firebase.vertexAI(location = remoteConfig.getString("vertex_location"))

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
val generativeModel = Firebase.vertexAI.generativeModel(
  modelName = remoteConfig.getString("model_name"),
  systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(remoteConfig.getString("prompt"))
print(response.text)

Java

// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
FirebaseVertexAI vertexAI = FirebaseVertexAI.getInstance(remoteConfig.getString("vertex_location"));

// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
  /* modelName */ remoteConfig.getString("model_name"),
  /* generationConfig (optional) */ null,
  /* safetySettings (optional) */ null,
  /* requestOptions (optional) */ new RequestOptions(),
  /* tools (optional) */ null,
  /* toolsConfig (optional) */ null,
  /* systemInstruction (optional) */ new Content.Builder().addText(remoteConfig.getString("system_instructions")).build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// Provide a prompt that contains text
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);

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

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

مراحل بعدی