Cập nhật linh động AI Vertex trong ứng dụng Firebase bằng Cấu hình từ xa Firebase

Khi gọi Gemini API từ ứng dụng bằng SDK Vertex AI in Firebase, yêu cầu của bạn sẽ chứa một số thông số kiểm soát phản hồi AI tạo sinh. Các thông số này thường bao gồm tên mô hình, cấu hình tạo mô hình (mã thông báo tối đa, nhiệt độ, v.v.), chế độ cài đặt an toàn, hướng dẫn hệ thống và dữ liệu lời nhắc.

Trong hầu hết các trường hợp, bạn nên thay đổi các giá trị này theo yêu cầu hoặc khi cần trong một số trường hợp:

  • Cập nhật mô hình AI tạo sinh mà không cần phát hành ứng dụng mới. Bạn có thể nâng cấp lên các phiên bản mô hình mới hơn, ổn định hơn trước khi các phiên bản cũ ngừng hoạt động, chuyển sang các mô hình có chi phí thấp hơn hoặc hiệu suất cao hơn dựa trên nhu cầu và thuộc tính của người dùng, hoặc triển khai có điều kiện các mô hình mới nhất và tốt nhất cho các phân khúc người dùng cụ thể (chẳng hạn như người kiểm thử beta).
  • Đặt vị trí truy cập mô hình để mô hình đó gần với người dùng hơn.
  • Thử nghiệm A/B nhiều hướng dẫn và lời nhắc của hệ thống, sau đó từng bước triển khai các giá trị thử nghiệm hiệu quả nhất cho người dùng.
  • Sử dụng cờ tính năng để nhanh chóng hiển thị hoặc ẩn các tính năng AI tạo sinh trong ứng dụng.

Firebase Remote Config thực hiện tất cả những việc này và nhiều việc khác, cho phép bạn cập nhật các giá trị tham số khi cần và có điều kiện cho các phiên bản ứng dụng khớp với các đặc điểm mà bạn đặt trong bảng điều khiển Firebase, mà không cần phát hành phiên bản mới của ứng dụng.

Hướng dẫn giải pháp này cung cấp các trường hợp sử dụng cụ thể được đề xuất và mô tả cách thêm Remote Config vào ứng dụng AI tạo sinh.

Chuyển đến phần triển khai mã

Tại sao nên sử dụng Firebase Remote Config với ứng dụng của bạn?

Firebase Remote Config cho phép bạn tự động điều chỉnh hành vi của ứng dụng mà không cần cập nhật ứng dụng. Điều này đặc biệt hữu ích đối với các ứng dụng sử dụng AI tạo sinh, trong đó việc lặp lại nhanh chóng và tinh chỉnh là rất quan trọng.

Các trường hợp sử dụng thiết yếu của Remote Config với ứng dụng AI tạo sinh

Bạn nên sử dụng Remote Config với Vertex AI in Firebase cho các trường hợp sử dụng thiết yếu sau:

  • Nâng cấp lên phiên bản mô hình mới nhất mà không cần cập nhật ứng dụng: Sử dụng các tham số Remote Config để thay đổi tên mô hình nếu cần, nhờ đó bạn có thể nâng cấp lên phiên bản mới nhất của mô hình Gemini mà bạn muốn ngay khi có.
  • Cập nhật hướng dẫn hệ thống và chế độ cài đặt an toàn mà không cần cập nhật ứng dụng: Lưu trữ hướng dẫn hệ thống và chế độ cài đặt an toàn bên trong các tham số Remote Config để đảm bảo rằng bạn có thể thay đổi các chế độ cài đặt đó theo yêu cầu nếu phát hiện vấn đề sau khi triển khai.
  • Giảm rủi ro và thực thi tính an toàn của AI: Sử dụng tính năng Phát hành Remote Config để phát hành các thay đổi về AI tạo sinh một cách an toàn và dần dần cho người dùng iOS và Android.

Các trường hợp sử dụng nâng cao và được đề xuất cho Remote Config với các ứng dụng AI tạo sinh

Sau khi đo lường ứng dụng bằng Remote ConfigGoogle Analytics, bạn có thể khám phá các trường hợp sử dụng nâng cao:

  • Đặt vị trí dựa trên vị trí của ứng dụng: Sử dụng các điều kiện Remote Config để đặt vị trí của mô hình dựa trên vị trí được phát hiện của ứng dụng.
  • Thử nghiệm với nhiều mô hình: Thử nghiệm và chuyển đổi nhanh chóng giữa nhiều mô hình AI tạo sinh, hoặc thậm chí triển khai nhiều mô hình cho nhiều phân khúc người dùng để tìm ra mô hình phù hợp nhất với trường hợp sử dụng cụ thể của bạn.
  • Tối ưu hoá hiệu suất mô hình: Điều chỉnh các tham số mô hình, chẳng hạn như lời nhắc hệ thống, mã thông báo đầu ra tối đa, nhiệt độ và các chế độ cài đặt khác.
  • Sử dụng nhiều hướng dẫn, lời nhắc và cấu hình mô hình hệ thống dựa trên các thuộc tính của ứng dụng: Khi sử dụng Remote Config với Google Analytics, bạn có thể tạo các điều kiện dựa trên các thuộc tính của ứng dụng hoặc đối tượng tuỳ chỉnh và đặt nhiều thông số dựa trên các thuộc tính này.

    Ví dụ: nếu đang sử dụng AI tạo sinh để hỗ trợ kỹ thuật trong ứng dụng, bạn nên đặt hướng dẫn hệ thống dành riêng cho nền tảng ứng dụng để đảm bảo cung cấp hướng dẫn chính xác cho người dùng nền tảng Android, iOS và web.

  • Cá nhân hoá trải nghiệm cho từng người dùng: Sử dụng tính năng cá nhân hoá Remote Config để tự động xác định chế độ cài đặt AI tạo sinh tối ưu cho từng người dùng.

  • Kiểm soát chi phí: Điều chỉnh từ xa mô hình AI tạo sinh nào được gọi, tần suất sử dụng các mô hình đó và linh động định cấu hình giá trị mã thông báo đầu ra tối đa dựa trên đối tượng người dùng để giảm chi phí không cần thiết.

  • Tối ưu hoá trải nghiệm và kết quả của ứng dụng: Sử dụng A/B Testing với Remote Config cho ứng dụng iOS, Android và Flutter để kiểm thử các thay đổi đối với các tham số AI tạo sinh trên nhiều phân khúc người dùng nhằm xem chúng ảnh hưởng như thế nào đến các chỉ số chính như tỷ lệ giữ chân và doanh thu.

Bằng cách đo lường ứng dụng AI tạo sinh bằng Firebase Remote Config, bạn có thể tạo các ứng dụng dựa trên AI linh hoạt, an toàn và tiết kiệm chi phí, đồng thời tạo trải nghiệm thú vị cho người dùng.

Thêm Firebase Remote Config vào ứng dụng

Trong hướng dẫn giải pháp này, bạn sẽ sử dụng Firebase Remote Config để cập nhật động các tham số trong ứng dụng Android sử dụng SDK Vertex AI in Firebase. Bạn sẽ tìm hiểu cách:

  • Tìm nạp và kích hoạt các tham số như tên mô hình và hướng dẫn hệ thống từ Firebase Remote Config.
  • Cập nhật lệnh gọi Gemini API để sử dụng các thông số được truy xuất động, cho phép bạn chuyển đổi giữa các mô hình hoặc sửa đổi hướng dẫn hệ thống mà không cần cập nhật ứng dụng.
  • Điều khiển các thông số từ xa, điều chỉnh hành vi và chức năng của mô hình nếu cần.

Điều kiện tiên quyết

Hướng dẫn này giả định rằng bạn đã quen thuộc với việc sử dụng Android Studio để phát triển ứng dụng cho các nền tảng Android. Trước khi bắt đầu, hãy đảm bảo rằng bạn đã làm xong những việc sau:

  • Xem hết Hướng dẫn bắt đầu sử dụng SDK Vertex AI in Firebase. Hãy đảm bảo rằng bạn đã làm tất cả những việc sau:

    1. Thiết lập một dự án Firebase mới hoặc hiện có, bao gồm cả việc sử dụng gói giá Blaze và bật các API bắt buộc.
    2. Kết nối ứng dụng với Firebase, bao gồm cả việc đăng ký ứng dụng và thêm cấu hình Firebase vào ứng dụng.
    3. Thêm SDK và khởi chạy dịch vụ Vertex AI cũng như mô hình tạo sinh trong ứng dụng.
  • Bật Google Analytics trong dự án và thêm SDK của dịch vụ này vào ứng dụng (bắt buộc đối với tính năng nhắm mục tiêu có điều kiện, chẳng hạn như đặt vị trí của dịch vụ và mô hình dựa trên vị trí của thiết bị khách).

Bước 1: Đặt giá trị thông số trong bảng điều khiển Firebase

Tạo mẫu Remote Config của ứng dụng và định cấu hình các tham số và giá trị để tìm nạp và sử dụng trong ứng dụng.

  1. Mở dự án Firebase trong bảng điều khiển Firebase. Trong trình đơn điều hướng, hãy mở rộng Run (Chạy) rồi chọn Remote Config.
  2. Đảm bảo rằng bạn đã chọn Client (Ứng dụng) trong bộ chọn Client/Server (Ứng dụng/Máy chủ) ở đầu trang Remote Config.
    • Nếu đây là lần đầu tiên bạn sử dụng mẫu ứng dụng Remote Config, hãy nhấp vào Create Configuration (Tạo cấu hình). Ngăn Tạo tham số đầu tiên sẽ xuất hiện.
    • Nếu đây không phải là lần đầu tiên bạn sử dụng mẫu Remote Config, hãy nhấp vào Thêm thông số.
  3. Xác định các tham số Remote Config sau:

    Tên tham số Nội dung mô tả Loại Giá trị mặc định
    model_name Tên mô hình. Để biết danh sách tên mô hình mới nhất để sử dụng trong mã, hãy xem phần Tên mô hình hiện có. Chuỗi gemini-1.5-flash
    system_instructions Hướng dẫn hệ thống giống như một "lời mở đầu" mà bạn thêm vào trước khi mô hình hiển thị bất kỳ hướng dẫn nào khác của người dùng cuối để ảnh hưởng đến hành vi của mô hình, dựa trên các nhu cầu và trường hợp sử dụng cụ thể. Chuỗi You are a helpful assistant who knows everything there is to know about Firebase!
    prompt Lời nhắc mặc định để sử dụng với tính năng AI tạo sinh. Chuỗi I am a developer who wants to know more about Firebase!
    vertex_location Có thể kiểm soát vị trí để chạy dịch vụ Vertex AI và truy cập vào một mô hình. Bạn có thể đặt điều kiện để định cấu hình tuỳ chọn này dựa trên vị trí của ứng dụng do Google Analytics phát hiện. Chuỗi us-central1
  4. Khi bạn thêm xong thông số, hãy nhấp vào Xuất bản thay đổi. Nếu đây không phải là mẫu Remote Config mới, hãy xem lại các thay đổi rồi nhấp lại vào Xuất bản thay đổi.

Bước 2: Thêm và khởi chạy SDK Remote Config trong ứng dụng

Thêm các phần phụ thuộc Remote Config và thiết lập Remote Config trong ứng dụng.

  1. Thêm phần phụ thuộc Remote Config vào tệp Gradle mô-đun (cấp ứng dụng) (thường là app/build.gradle.kts hoặc app/build.gradle):

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.7.0"))
        implementation("com.google.firebase:firebase-vertexai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Thêm Remote Config vào logic ứng dụng chính. Tại đây, bạn sẽ khởi chạy Remote Config và thêm khoảng thời gian tìm nạp tối thiểu:

    Kotlin

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

Trong ví dụ này, khoảng thời gian tìm nạp mặc định là 3600 giây, nhưng bạn nên đặt khoảng thời gian tìm nạp tối thiểu tương đối thấp bên trong mã của mình trong quá trình phát triển.

Bước 3: Đặt giá trị thông số trong ứng dụng

Bạn nên đặt giá trị tham số mặc định trong ứng dụng trong đối tượng Remote Config. Điều này đảm bảo ứng dụng của bạn hoạt động như mong đợi ngay cả khi không thể tìm nạp giá trị từ dịch vụ Remote Config.

  1. Trên bảng điều khiển Firebase, hãy mở Remote Config.
  2. Trong thẻ Parameters (Thông số), hãy mở Menu (Trình đơn) rồi chọn Download default values (Tải giá trị mặc định xuống).
  3. Khi được nhắc, hãy bật .xml cho Android, sau đó nhấp vào Tải tệp xuống.
  4. Lưu tệp trong thư mục tài nguyên XML của ứng dụng.
  5. Cập nhật tệp hoạt động chính để thêm các giá trị mặc định sau configSettings mà bạn đã thêm trước đó:

    Kotlin

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

    Java

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

Bước 4: Tìm nạp và kích hoạt các giá trị

Sau khi đặt giá trị mặc định, hãy thêm nội dung sau để tìm nạp và kích hoạt các giá trị:

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

Bước 5: Thêm trình nghe Remote Config theo thời gian thực

Thêm trình nghe Remote Config theo thời gian thực vào ứng dụng để đảm bảo rằng các thay đổi bạn thực hiện đối với mẫu Remote Config được truyền đến ứng dụng ngay khi được cập nhật.

Mã sau đây sẽ cập nhật đối tượng Remote Config bất cứ khi nào giá trị tham số thay đổi. Nếu muốn, bạn cũng có thể định cấu hình một hành động bên trong quá trình kích hoạt addOnCompleteListener:

Kotlin

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

Bước 6: Chỉ định giá trị Remote Config cho biến Vertex AI

Giờ đây, khi Remote Config đã được định cấu hình đầy đủ, hãy cập nhật mã của bạn để thay thế các giá trị được mã hoá cứng bằng các giá trị lấy từ Remote Config.

Thay thế các giá trị được mã hoá cứng cho vị trí, tên mô hình, hướng dẫn hệ thống và lời nhắc người dùng bằng các giá trị lấy từ Remote Config.

Kotlin

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

Bước 7: Chạy ứng dụng

Tạo bản dựng rồi chạy ứng dụng và xác minh ứng dụng có hoạt động hay không. Thực hiện thay đổi đối với cấu hình của bạn từ trang Remote Config trong bảng điều khiển Firebase, phát hành các thay đổi và xác minh kết quả.

Các bước tiếp theo