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 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 ứng dụng mới.
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.
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 linh độ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 Firebase AI Logic 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, để 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 sử dụng 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 ra mắt 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 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: 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.
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í truy cập vào 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: Tinh chỉnh các tham số mô hình, chẳng hạn như lời nhắc của 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 của 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 web, Android và iOS.
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 với ứng dụng và trò chơi dành cho thiết bị di động để 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 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 với ứng dụng và trò chơi dành cho thiết bị di động để 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 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 đ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 ra 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 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 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 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 làm theo các bước sau:
Hoàn tất hướng dẫn bắt đầu sử dụng Firebase AI Logic. Hướng dẫn này 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 (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í 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ố và giá trị để tìm nạp và sử dụng trong ứng dụng.
- Mở dự án Firebase trong bảng điều khiển Firebase. Sau đó, trên 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 Client (Ứng dụng) trong bộ chọn Client/Server (Ứng dụng/Máy chủ) ở đầu trang.
- Bắt đầu một mẫu ứng dụng bằng cách nhấp vào Tạo cấu hình (hoặc Thêm tham số nếu trước đây bạn đã sử dụng mẫu ứng dụ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ô hình. Xem các tên mô hình hiện có. Chuỗi gemini-2.0-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 để ảnh hưở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 đ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
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 Remote Config trong ứng dụng
Thêm thư viện Remote Config và thiết lập Remote Config trong ứng dụng.
Swift
Trong quá trình thiết lập Firebase AI Logic, bạn đã thêm SDK Firebase vào ứng dụng, 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 phần phụ thuộc gói).
Chọn firebase-ios-sdk rồi nhấp vào Thêm gói.
Trong Project navigator (Trình điều hướng dự án), hãy chọn ứng dụng > Targets (Mục tiêu) > ứng dụng.
Trên thẻ General (Chung), hãy di chuyển đến Frameworks, Libraries, and Embedded Content (Khung, Thư viện và Nội dung nhúng).
Nhấp vào + rồi chọn FirebaseRemoteConfig, sau đó nhấp vào Thêm.
Thêm lệnh nhập
FirebaseRemoteConfig
vào mã:import FirebaseRemoteConfig
Bên trong lớp thích hợp cho ứng dụng, hãy khởi chạy 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 dưới dạng 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, phần 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.13.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. 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:
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.13.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. 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:
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
Mở mã của bạn trong trình soạn thảo văn bản và nhập Remote Config:
import { getRemoteConfig } from 'firebase/remote-config';
Bên 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
và thêm lệnh nhập sau các lệnh 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 để chúng ta có thể sử dụng sau:late final String _modelName; late final String _systemInstructions; late final String _prompt;
Tải thực thể đố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 phần này sau khi khởi chạy Firebase.
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 theo hướng dẫn sau.
Tải thực thể đố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 phần này sau khi khởi chạy Firebase.
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 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.
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, sau đó nhấp vào Tải tệp xuống.
Lưu tệp trong thư mục ứng dụng.
Nếu sử 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 rồi chọn Add Files (Thêm tệp)
Nếu sử 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, sau đó nhấp vào Thêm.
Cập nhật mã ứng dụng để tham chiếu 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 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 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 giá trị mặc định ngay trong mã:
// 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
Bạn có thể đặt giá trị mặc định ngay trong mã:
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"
});
Unity
Bạn có thể đặt giá trị mặc định ngay trong mã:
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" }
}
);
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 mỗi khi có mẫu Remote Config mới được phát hành.
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: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 đó gán giá trị cho các 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 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 sẽ được truyền đến ứng dụng khách 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.
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
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
:
// 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
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
:
// 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
Trình nghe Remote Config theo thời gian thực không được hỗ trợ cho ứng dụng web.
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 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
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 dành cho thiết bị di động:
Kiểm thử các chế độ cài đặt mô hình khác nhau bằng Remote Config và A/B Testing.
Từng bước phát hành các thay đổi về tham số mô hình bằng cách sử dụng các bản phát hành Remote Config (chỉ dành cho iOS trở lên và Android).
Sử dụng tính năng cá nhân hoá Remote Config để sử 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).