Khi gọi Gemini API từ ứng dụng bằng SDK Firebase AI Logic, yêu cầu của bạn sẽ chứa một số thông số kiểm soát các phản hồi của AI tạo sinh. Những thông số này thường bao gồm tên mô hình, cấu hình thế hệ mô hình (số lượng 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 câu lệnh.
Trong hầu hết các trường hợp, bạn sẽ muốn thay đổi những thông tin này theo yêu cầu hoặc khi cần cho 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 và ổ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í mà bạn truy cập vào mô hình để vị trí đó gần với người dùng của bạn hơn.
- Thử nghiệm A/B nhiều chỉ dẫn và câu lệnh hệ thống, sau đó từ từ triển khai các giá trị thử nghiệm hiệu quả 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 của bạn.
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 những phiên bản ứng dụng phù hợ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 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 của bạn.
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 điều chỉnh linh hoạt 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 những ứng dụng sử dụng AI tạo sinh, trong đó việc lặp lại và tinh chỉnh nhanh chóng là rất quan trọng.
Các trường hợp sử dụng thiết yếu cho Remote Config bằng các ứng dụng AI tạo sinh
Bạn nên sử dụng Remote Config với Firebase AI Logic cho các trường hợp sử dụng thiết yếu sau đây:
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 khi 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à mình muốn ngay khi phiên bản đó ra mắt.
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 trong các tham số Remote Config để đảm bảo bạn có thể thay đổi các chế độ này theo yêu cầu nếu phát hiện thấy 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 Remote Configphát hành từng phần để 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 Config và Google 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 khách: Sử dụng các điều kiện Remote Config để đặt vị trí mà bạn truy cập vào mô hình dựa trên vị trí được phát hiện của ứng dụng khách.
Thử nghiệm với nhiều mô hình: Nhanh chóng thử nghiệm và chuyển đổi giữa nhiều mô hình AI tạo sinh, hoặc thậm chí truy cập vào nhiều mô hình cho các phân khúc người dùng khác nhau để tìm ra mô hình phù hợp nhất cho trường hợp sử dụng cụ thể của bạn.
Tối ưu hoá hiệu suất mô hình: Tinh chỉnh các thông số mô hình, chẳng hạn như câu lệnh hệ thống, số lượ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 các chỉ dẫn, câu lệnh và cấu hình mô hình khác nhau của hệ thống dựa trên thuộc tính của khách hà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 thuộc tính của khách hàng hoặc đối tượng tuỳ chỉnh và đặt các thông số khác nhau dựa trên những thuộc tính này.
Ví dụ: nếu đang sử dụng AI tạo sinh để cung cấp dịch vụ hỗ trợ kỹ thuật trong ứng dụng, bạn có thể muố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 Android, iOS và nền tảng web.
Cá nhân hoá trải nghiệm cho từng người dùng: Sử dụng tính năng Remote Config cá nhân hoá với các ứng dụng và trò chơi di động của bạn để 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 những mô hình AI tạo sinh được gọi, tần suất sử dụng và định cấu hình linh hoạt các 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 với các ứng dụng và trò chơi di động của bạn để kiểm thử các thay đổi đối với thông số của AI tạo sinh trên nhiều phân khúc người dùng nhằm xem những thay đổi đó ả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 trang bị Firebase Remote Config cho ứng dụng AI tạo sinh của mình, bạn có thể tạo các ứng dụng linh hoạt, an toàn và tiết kiệm chi phí dựa trên AI, đồng thời mang đến 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 về giải pháp này, bạn sẽ sử dụng Firebase Remote Config để cập nhật các tham số một cách linh hoạt trong ứng dụng Android sử dụng SDK Firebase AI Logic. 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 các 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 khác nhau hoặc sửa đổi hướng dẫn hệ thống mà không cần cập nhật ứng dụng.
- Kiểm soát các thông số từ xa, điều chỉnh hành vi và khả 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 với việc phát triển ứng dụng cho nền tảng của mình.
Trước khi bắt đầu, hãy đảm bảo bạn đã thực hiện những việc sau:
Hoàn tất Firebase AI Logichướng dẫn bắt đầu, trong đó mô tả cách thiết lập dự án Firebase, kết nối ứng dụng với Firebase, thêm SDK, khởi chạy dịch vụ phụ trợ cho nhà cung cấp "Gemini API" mà bạn chọn và tạo một thực thể mô hình.
Bật Google Analytics trong dự án Firebase và thêm SDK của dự án đó vào ứng dụng của bạn (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í mà bạn truy cập vào 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ố cũng như giá trị để tìm nạp và sử dụng trong ứng dụng.
- Mở dự án Firebase của bạn trong Firebasebảng điều khiển. Sau đó, trong trình đơn điều hướng, hãy mở rộng Run (Chạy) rồi chọn Remote Config.
- Đảm bảo rằng bạn đã chọn Khách hàng trong bộ chọn Khách hàng/Máy chủ ở đầu trang.
- Bắt đầu một mẫu khách hàng bằng cách nhấp vào Tạo cấu hình (hoặc Thêm thông số nếu trước đây bạn đã sử dụng mẫu khách hàng).
Xác định các thông số bạn muốn kiểm soát bằng Remote Config. Ví dụ:
Tên tham số Nội dung mô tả Loại Giá trị mặc định model_name
Tên mẫu thiết bị. Xem tên mẫu có sẵn. Chuỗi gemini-2.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 tiếp xúc với bất kỳ hướng dẫn nào khác của người dùng cuối để tác động đến hành vi của mô hình. Chuỗi You are a helpful assistant who knows everything there is to know about Firebase!
prompt
Câu lệnh 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
Chỉ áp dụng nếu bạn sử dụng Vertex AI Gemini API.
Kiểm soát vị trí để truy cập vào mô hình. Bạn có thể đặt các điều kiện để định cấu hình lựa chọn này dựa trên vị trí của khách hàng do Google Analytics phát hiện.Chuỗi global
Khi bạn đã thêm xong các 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 xét 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 tạo Remote Config trong ứng dụng của bạn
Thêm thư viện Remote Config và thiết lập Remote Config trong ứng dụng của bạn.
Swift
Trong quá trình thiết lập Firebase AI Logic, bạn đã thêm SDK Firebase vào ứng dụng của mình, nhưng cũng cần thêm Remote Config.
Trong Xcode, khi dự án đang mở, hãy chuyển đến File > Add Package Dependencies (Tệp > Thêm các phần phụ thuộc của gói).
Chọn firebase-ios-sdk rồi nhấp vào Add package (Thêm gói).
Trong Project navigator (Trình điều hướng dự án), hãy chọn ứng dụng của bạn > Targets (Mục tiêu) > ứng dụng của bạn.
Trong thẻ Chung, hãy di chuyển đến phần Framework, Thư viện và Nội dung được nhúng.
Nhấp vào + rồi chọn FirebaseRemoteConfig, sau đó nhấp vào Add (Thêm).
Thêm lệnh nhập
FirebaseRemoteConfig
vào mã của bạn:import FirebaseRemoteConfig
Trong lớp thích hợp cho ứng dụng của bạn, hãy khởi động Firebase và thêm Remote Config vào logic ứng dụng chính.
Tại đây, bạn sẽ thêm Remote Config và trình nghe theo thời gian thực Remote Config làm các mục nhập để ứng dụng có thể tìm nạp các giá trị mới theo thời gian thực và thêm khoảng thời gian tìm nạp tối thiểu:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
Trong ứng dụng khởi động nhanh, mã này sẽ nằm bên trong
VertexAISampleApp
, trong lớpAppDelegate
.
Kotlin
Thêm phần phụ thuộc Remote Config vào tệp Gradle (cấp ứng dụng) của mô-đun (thường là
app/build.gradle.kts
hoặcapp/build.gradle
):dependencies { implementation(platform("com.google.firebase:firebase-bom:33.15.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
Thêm Remote Config vào logic ứng dụng chính của bạn. Tại đây, bạn sẽ khởi động Remote Config và thêm khoảng thời gian tìm nạp tối thiểu:
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
Thêm phần phụ thuộc Remote Config vào tệp Gradle (cấp ứng dụng) của mô-đun (thường là
app/build.gradle.kts
hoặcapp/build.gradle
):dependencies { implementation(platform("com.google.firebase:firebase-bom:33.15.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
Thêm Remote Config vào logic ứng dụng chính của bạn. Tại đây, bạn sẽ khởi động Remote Config và thêm khoảng thời gian tìm nạp tối thiểu:
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
Mở mã của bạn trong một trình chỉnh sửa văn bản và nhập Remote Config:
import { getRemoteConfig } from 'firebase/remote-config';
Trong hàm chính và sau khi ứng dụng Firebase được khởi chạy cho SDK Firebase AI Logic, hãy khởi chạy Remote Config:
// Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);
Đặt khoảng thời gian tìm nạp tối thiểu:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
Trong thư mục dự án Flutter, hãy cài đặt và thêm Remote Config bằng lệnh sau:
flutter pub add firebase_remote_config
Mở
./lib/main.dart
rồi thêm nội dung nhập sau các nội dung nhập khác mà bạn đã thêm để hỗ trợ 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';
Thêm các biến
_modelName
,_systemInstructions
và_prompt
vào ứng dụng của bạn để sau này chúng ta có thể sử dụng các biến này:late final String _modelName; late final String _systemInstructions; late final String _prompt;
Lấy phiên bản đối tượng Remote Config và đặt khoảng thời gian tìm nạp tối thiểu để cho phép làm mới thường xuyên. Hãy nhớ thêm mã này sau khi Firebase được khởi chạy.
final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 3600), minimumFetchInterval: const Duration(seconds: 3600), ));
Unity
Thêm Remote Config vào dự án Unity của bạn theo hướng dẫn này.
Lấy phiên bản đối tượng Remote Config và đặt khoảng thời gian tìm nạp tối thiểu để cho phép làm mới thường xuyên. Hãy nhớ thêm mã này sau khi Firebase được khởi chạy.
var remoteConfig = FirebaseRemoteConfig.DefaultInstance; const int MillisecondsPerSecond = 1000; await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() { FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond, MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond });
Bước 3: Đặt giá trị thông số trong ứng dụng
Bạn nên đặt các 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 các giá trị từ dịch vụ Remote Config.
Swift
Trong bảng điều khiển Firebase, hãy mở Remote Config.
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).
Khi được nhắc, hãy bật .plist cho iOS, rồi nhấp vào Tải tệp xuống.
Lưu tệp trong thư mục ứng dụng của bạn.
Nếu dùng ứng dụng mẫu, hãy lưu ứng dụng đó trong
FirebaseVertexAI/Sample/VertexAISample
.Trong Xcode, hãy nhấp chuột phải vào ứng dụng của bạn rồi chọn Add Files (Thêm tệp)
Nếu bạn đang dùng mẫu, hãy nhấp chuột phải vào VertexAISample rồi chọn Add Files to "VertexAISample" (Thêm tệp vào "VertexAISample").
Chọn remote_config_defaults.plist, rồi nhấp vào Thêm.
Cập nhật mã ứng dụng để tham chiếu đến tệp mặc định:
// Set default values remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
Trên bảng điều khiển Firebase, hãy mở Remote Config.
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).
Khi được nhắc, hãy bật .xml cho Android, sau đó nhấp vào Tải tệp xuống.
Lưu tệp này trong thư mục tài nguyên XML của ứng dụng.
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 đó:// Set default values. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
Trong bảng điều khiển Firebase, hãy mở Remote Config.
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).
Khi được nhắc, hãy bật .xml cho Android, sau đó nhấp vào Tải tệp xuống.
Lưu tệp này trong thư mục tài nguyên XML của ứng dụng.
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 đó:// Set default values. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Bạn có thể đặt các giá trị mặc định ngay trong mã của mình:
// 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
Bạn có thể đặt các giá trị mặc định ngay trong mã của mình:
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"
});
Unity
Bạn có thể đặt các giá trị mặc định ngay trong mã của mình:
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" }
}
);
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ị.
Swift
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
if let error = error {
print("Error fetching Remote Config: \(error.localizedDescription)")
}
}
Thao tác này sẽ cập nhật đối tượng Remote Config bất cứ khi nào một mẫu Remote Config mới được xuất bản.
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
Thêm
getValue
vàfetchAndActivate
vào các lệnh nhập của bạn:import { getValue, fetchAndActivate } from 'firebase/remote-config';
Sau khi bạn thêm mã để định cấu hình các giá trị Remote Config mặc định, hãy tìm nạp và kích hoạt cấu hình, sau đó chỉ định các giá trị cho hằng số
modelName
,systemInstructions
,prompt
và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");
Unity
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
Bước 5: Thêm một trình nghe Remote Config theo thời gian thực
Thêm một trình nghe Remote Config theo thời gian thực vào ứng dụng của bạn để đảm bảo rằng những thay đổi mà bạn thực hiện đối với mẫu Remote Config sẽ được truyền đến ứng dụng ngay khi chúng được cập nhật.
Đoạn mã sau đây cập nhật đối tượng Remote Config bất cứ khi nào giá trị tham số thay đổi.
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
Bạn cũng có thể tuỳ ý định cấu hình một thao tác trong quá trình kích hoạt 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
Bạn cũng có thể tuỳ ý định cấu hình một thao tác trong quá trình kích hoạt 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
Ứng dụng Web không hỗ trợ Remote Configthính giả theo thời gian thực.
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();
};
Bước 6: Cập nhật các yêu cầu Gemini API để sử dụng các giá trị Remote Config
Nhấp vào nhà cung cấp Gemini API để xem nội dung và mã dành riêng cho nhà cung cấp trên trang này. |
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.
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.");
Bước 7: Chạy ứng dụng
Tạo bản dựng và chạy ứng dụng, đồng thời xác minh rằng ứng dụng hoạt động. Thay đổi cấu hình của bạn trên trang Remote Config trong bảng điều khiển Firebase, xuất bản các thay đổi và xác minh kết quả.
Các bước tiếp theo
Tìm hiểu thêm về Remote Config.
Thêm Google Analytics vào mã ứng dụng để bật tính năng nhắm mục tiêu.
Đối với ứng dụng và trò chơi di động:
Thử nghiệm các chế độ cài đặt mô hình khác nhau bằng Remote Config và A/B Testing.
Dần dần phát hành các thay đổi về tham số mô hình bằng cách sử dụng Remote Config triển khai (chỉ dành cho iOS+ và Android).
Sử dụng tính năng Remote Configcá nhân hoá để dùng công nghệ học máy nhằm xác định chế độ cài đặt phù hợp nhất cho từng người dùng (chỉ dành cho iOS+, Android và Unity).