Wenn Sie Server-Promptvorlagen verwenden, können Sie Werte in einer bestimmten Vorlage aktualisieren, ohne eine neue Version Ihrer App zu veröffentlichen. Da jedoch alle Änderungen an der Vorlage fast sofort von Anfragen aus Ihrer App verwendet werden, müssen Sie vorsichtig sein, wenn Sie Änderungen vornehmen, die Ihre App beschädigen oder unerwartete Verhaltensänderungen verursachen könnten.
Wenn Sie also größere Änderungen vornehmen oder Änderungen schrittweise einführen möchten, sollten Sie die Vorlage, die im Produktionscode verwendet wird, nicht ändern.
Stattdessen empfehlen wir, mit Firebase Remote Config den Wert der Vorlagen-ID zu steuern, die in der Anfrage an das Modell verwendet wird.
Firebase Remote Config ermöglicht Ihnen die dynamische und Remote-Aktualisierung von Parameter werten in Ihrer App (z. B. der Vorlagen-ID) über die Firebase Konsole, ohne eine neue Version Ihrer App veröffentlichen zu müssen. Es bietet außerdem optimierte Funktionen und Integrationen für die Einführung von Änderungen sowie A/B-Tests.
In dieser Anleitung wird beschrieben, wie Sie Remote Config in Ihrer App implementieren, insbesondere um die in Ihrer App verwendete Vorlagen-ID zu steuern.
Schritt 1: Parameterwert in der Firebase Konsole festlegen
Erstellen Sie eine Remote Config Clientvorlage und konfigurieren Sie einen template_id
Parameter und seinen Wert, um ihn in der App abzurufen und zu verwenden.
Rufen Sie in der Firebase Konsole DevOps & Engagement > Remote Config auf.
Wählen Sie oben auf der Seite in der Auswahl Client/Server die Option Client aus.
Starten Sie eine Clientvorlage, indem Sie auf Konfiguration erstellen klicken (oder auf Parameter hinzufügen , wenn Sie bereits Clientvorlagen verwendet haben).
Definieren Sie den Parameter
template_id:Parameter name Beschreibung Typ Standardwert template_idVorlagen-ID. String my-first-template-v1-0-0Klicken Sie nach dem Hinzufügen dieses Parameters auf Änderungen veröffentlichen. Wenn es sich nicht um eine neue Remote Config Vorlage handelt, prüfen Sie die Änderungen und klicken Sie Änderungen veröffentlichen noch einmal.
Schritt 2: Remote Config in Ihrer App hinzufügen und initialisieren
Fügen Sie die Remote Config-Bibliothek hinzu und richten Sie Remote Config in Ihrer App ein.
Swift
Im Rahmen der Firebase AI Logic Einrichtung haben Sie Ihrer App bereits das Firebase SDK hinzugefügt. Sie müssen aber auch Remote Config hinzufügen.
Öffnen Sie das Projekt in Xcode und rufen Sie File > Add Package Dependencies (Datei > Paketabhängigkeiten hinzufügen) auf.
Wählen Sie firebase-ios-sdk aus und klicken Sie dann auf Add package (Paket hinzufügen).
Wählen Sie im Projektnavigator Ihre App > Targets (Ziele) > Ihre App aus.
Scrollen Sie auf dem Tab General (Allgemein) zu Frameworks, Libraries, and Embedded Content (Frameworks, Bibliotheken und eingebettete Inhalte).
Klicken Sie auf + und wählen Sie FirebaseRemoteConfig aus. Klicken Sie dann auf Add (Hinzufügen).
Fügen Sie den Import
FirebaseRemoteConfigin Ihren Code ein:import FirebaseRemoteConfigInitialisieren Sie Firebase in der entsprechenden Klasse für Ihre App und fügen Sie Remote Config der Hauptanwendungslogik hinzu.
Hier fügen Sie Remote Config und den Remote Config Echtzeit-Listener als Importe hinzu, damit die App neue Werte in Echtzeit abrufen kann. Außerdem fügen Sie ein Mindestabrufintervall hinzu:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
Kotlin
Fügen Sie die Remote Config Abhängigkeit der Gradle Datei des Moduls (auf Anwendungsebene, in der Regel
app/build.gradle.ktsoderapp/build.gradle) hinzu:dependencies { implementation(platform("com.google.firebase:firebase-bom:34.13.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }Fügen Sie Remote Config der Hauptanwendungslogik hinzu. Hier initialisieren Sie Remote Config und fügen ein Mindestabrufintervall hinzu:
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
Fügen Sie die Remote Config Abhängigkeit der Gradle Datei des Moduls (auf Anwendungsebene, in der Regel
app/build.gradle.ktsoderapp/build.gradle) hinzu:dependencies { implementation(platform("com.google.firebase:firebase-bom:34.13.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }Fügen Sie Remote Config der Hauptanwendungslogik hinzu. Hier initialisieren Sie Remote Config und fügen ein Mindestabrufintervall hinzu:
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
Öffnen Sie Ihren Code in einem Texteditor und importieren Sie Remote Config:
import { getRemoteConfig } from 'firebase/remote-config';Initialisieren Sie Remote Config in der Hauptfunktion und nachdem die Firebase-App für das Firebase AI Logic SDK initialisiert wurde:
// Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);Legen Sie ein Mindestabrufintervall fest:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
Installieren und fügen Sie Remote Config über den folgenden Befehl aus Ihrem Flutter-Projektverzeichnis hinzu:
flutter pub add firebase_remote_configÖffnen Sie
./lib/main.dartund fügen Sie den Import nach den anderen Importen hinzu, die Sie zur Unterstützung von Firebase AI Logic hinzugefügt haben:import 'package:firebase_vertexai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart';Fügen Sie Ihrer App die Variable
_modelNamehinzu, damit Sie sie später verwenden können:late final String _modelName; late final String _systemInstructions; late final String _prompt;Erstellen Sie eine Remote Config Objektinstanz und legen Sie das Mindestabruf intervall fest, um häufige Aktualisierungen zu ermöglichen. Fügen Sie dies nach der Initialisierung von Firebase hinzu.
final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 3600), minimumFetchInterval: const Duration(seconds: 3600), ));
Einheit
Fügen Sie Remote Config Ihrem Unity-Projekt hinzu. Folgen Sie dazu diesen Anweisungen.
Erstellen Sie eine Remote Config Objektinstanz und legen Sie das Mindestabruf intervall fest, um häufige Aktualisierungen zu ermöglichen. Fügen Sie dies nach der Initialisierung von Firebase hinzu.
var remoteConfig = FirebaseRemoteConfig.DefaultInstance; const int MillisecondsPerSecond = 1000; await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() { FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond, MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond });
Schritt 3: Parameterwert in der App festlegen
Sie sollten Standardparameterwerte in der App im Remote Config Objekt festlegen. So verhält sich Ihre App auch dann wie erwartet, wenn sie keine Werte vom Remote Config Dienst abrufen kann.
Swift
Rufen Sie in der Firebase Konsole die DevOps & Engagement > Remote Config > Parameters Seite auf.
Öffnen Sie das
Menü und wählen Sie Download default values (Standardwerte herunterladen) aus.Aktivieren Sie bei Aufforderung .plist for iOS und klicken Sie dann auf Download file (Datei herunterladen).
Speichern Sie die Datei im Anwendungsverzeichnis.
Klicken Sie in Xcode mit der rechten Maustaste auf Ihre App und wählen Sie Add Files (Dateien hinzufügen) aus.
Wählen Sie remote_config_defaults.plist aus und klicken Sie dann auf Add (Hinzufügen).
Aktualisieren Sie Ihren App-Code, um auf die Standarddatei zu verweisen:
// Set default values for Remote Config parameters. remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
Rufen Sie in der Firebase Konsole die DevOps & Engagement > Remote Config > Parameters Seite auf.
Öffnen Sie das
Menü und wählen Sie Download default values (Standardwerte herunterladen) aus.Aktivieren Sie bei Aufforderung .xml for Android und klicken Sie dann auf Download file.
Speichern Sie die Datei im XML-Ressourcenverzeichnis Ihrer App.
Aktualisieren Sie die Hauptaktivitätsdatei, um die Standardwerte nach den zuvor hinzugefügten
configSettingshinzuzufügen:// Set default values for Remote Config parameters. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
Rufen Sie in der Firebase Konsole die DevOps & Engagement > Remote Config > Parameters Seite auf.
Öffnen Sie das
Menü und wählen Sie Download default values (Standardwerte herunterladen) aus.Aktivieren Sie bei Aufforderung .xml for Android und klicken Sie dann auf Download file.
Speichern Sie die Datei im XML-Ressourcenverzeichnis Ihrer App.
Aktualisieren Sie die Hauptaktivitätsdatei, um die Standardwerte nach den zuvor hinzugefügten
configSettingshinzuzufügen:// Set default values for Remote Config parameters. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Sie können den Standardwert für den Modellnamen direkt in Ihrem Code festlegen:
// Set default values for Remote Config parameters.
remoteConfig.defaultConfig = {
template_id: 'my-first-template-v1-0-0',
};
Dart
Sie können den Standardwert für den Modellnamen direkt in Ihrem Code festlegen:
// Set default values for Remote Config parameters.
remoteConfig.setDefaults(const {
"template_id": "my-first-template-v1-0-0"
});
Einheit
Sie können den Standardwert für den Modellnamen direkt in Ihrem Code festlegen:
// Set default values for Remote Config parameters.
await remoteConfig.SetDefaultsAsync(
new System.Collections.Generic.Dictionary<string, object>() {
{ "template_id", "my-first-template-v1-0-0" }
}
);
Schritt 4: Wert abrufen und aktivieren
Nachdem Sie den Standardwert für den Modellnamen festgelegt haben, fügen Sie Folgendes hinzu, um Werte abzurufen und zu aktivieren.
Swift
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
if let error = error {
print("Error fetching Remote Config: \(error.localizedDescription)")
}
}
Dadurch wird das Remote Config Objekt immer dann aktualisiert, wenn eine neue Remote Config Vorlage veröffentlicht wird.
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
Fügen Sie
getValueundfetchAndActivatezu Ihren Importen hinzu:import { getValue, fetchAndActivate } from 'firebase/remote-config';Suchen Sie den Code, in dem Sie den Standardwert für den Modellnamen angeben. Fügen Sie direkt nach diesem Codeblock den folgenden Code hinzu, um die Konfiguration abzurufen und zu aktivieren und den abgerufenen Wert der Konstanten
templateIDzuzuweisen:// 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 templateID = getValue(remoteConfig, 'template_id').asString();
Dart
// Fetch and activate Remote Config.
remoteConfig.fetchAndActivate();
// Assign Remote Config values.
String? _templateID = remoteConfig.getString("template_id");
Einheit
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
Schritt 5: Echtzeit-Remote Config Listener hinzufügen
Fügen Sie Ihrer App einen Remote Config-Echtzeit-Listener hinzu, damit Änderungen, die Sie an der Remote Config Remote Config-Vorlage vornehmen, sofort an den Client weitergegeben werden.Remote Config
Der folgende Code aktualisiert das Remote Config Objekt immer dann, wenn sich ein Parameter Wert ändert.
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
Optional können Sie auch eine Aktion in der Aktivierung addOnCompleteListener konfigurieren:
// 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
Optional können Sie auch eine Aktion in der Aktivierung addOnCompleteListener konfigurieren:
// 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
// Add a real-time Remote Config listener
onConfigUpdate(remoteConfig, {
next: (configUpdate) => {
console.log("Updated keys:", configUpdate.getUpdatedKeys());
if (configUpdate.getUpdatedKeys().has("welcome_message")) {
activate(remoteConfig).then(() => {
showWelcomeMessage();
});
}
},
error: (error) => {
console.log("Config update error:", error);
},
complete: () => {
console.log("Listening stopped.");
}
});
Dart
// Add a real-time Remote Config listener
remoteConfig.onConfigUpdated.listen((event) async {
await remoteConfig.activate();
});
Einheit
// 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();
};
Schritt 6: Gemini API Anfragen aktualisieren, um den Remote Config Wert zu verwenden
|
Klicken Sie auf Ihren Gemini API Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen. |
Nachdem Remote Config vollständig konfiguriert wurde, aktualisieren Sie Ihren Code, um fest codierte Werte durch Werte aus Remote Config zu ersetzen.
Swift
import FirebaseAI
let templateID = remoteConfig.configValue(forKey: "template_id").stringValue
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()
let customerName = "Jane"
// When making the `generateContent` call, source the template ID value from Remote Config
let response = try await model.generateContent(
templateID: templateID,
// Provide the values for any input variables required by your template.
inputs: [
"customerName": customerName
]
)
// ...
Kotlin
// ...
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).templateGenerativeModel()
val customerName = "Jane"
// When making the `generateContent` call, source the template ID value from Remote Config
val response = model.generateContent(
remoteConfig.getString("template_id"),
// Provide the values for any input variables required by your template.
mapOf(
"customerName" to customerName
)
)
val text = response.text
println(text)
Java
// ...
TemplateGenerativeModel ai = FirebaseAI.getInstance()
.templateGenerativeModel(null /* Request Options */);
TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(ai);
String customerName = "Jane";
// When making the `generateContent` call, source the template ID value from Remote Config
Future<GenerateContentResponse> response = model.generateContent(
remoteConfig.getString("template_id"),
// Provide the values for any input variables required by your template.
mapOf("customerName", customerName)
);
addCallback(response,
new FutureCallback<GenerateContentResponse>() {
public void onSuccess(GenerateContentResponse result) {
System.out.println(result.getText());
}
public void onFailure(Throwable t) {
reportError(t);
}
}
executor);
// ...
Web
// ...
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
const model = getTemplateGenerativeModel(ai);
const templateID = getValue(remoteConfig, 'template_id').asString();
const customerName = 'Jane';
// When making the `generateContent` call, source the template ID value from Remote Config
const result = await model.generateContent(
templateID,
// Provide the values for any input variables required by your template
{
customerName: customerName,
}
);
// ...
Dart
// ...
final model = FirebaseAI.googleAI().templateGenerativeModel();
final templateID = remoteConfig.getString("template_id");
final customerName = 'Jane';
// When making the `generateContent` call, source the template ID value from Remote Config
var response = await model.generateContent(
templateID,
// Provide the values for any input variables required by your template
inputs: {
'customerName': customerName,
},
);
// ...
Einheit
// ...
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
var templateID = remoteConfig.GetValue("template_id").StringValue;
var model = ai.GetTemplateGenerativeModel();
var customerName = "Jane";
try
{
// When making the `generateContent` call, source the template ID value from Remote Config
var response = await model.GenerateContentAsync(
templateID,
// Provide the values for any input variables required by your template
new Dictionary<string, object>
{
{ "customerName", customerName },
}
);
Debug.Log($"Response Text: {response.Text}");
}
catch (Exception e)
{
Debug.LogError($"An error occurred: {e.Message}");
}
// ...
Schritt 7: App ausführen
Erstellen und führen Sie die App aus und prüfen Sie, ob sie funktioniert. Nehmen Sie auf der Remote Config Seite in der Firebase Konsole Änderungen an Ihrer Konfiguration vor, veröffentlichen Sie die Änderungen und prüfen Sie das Ergebnis.
Nächste Schritte
Weitere Informationen zur Implementierung anderer Anwendungsfälle für Remote Config und Firebase AI Logic.
Für mobile Apps und Spiele:
Testen Sie Ihre Vorlagenänderungen mit Remote Config und A/B Testing.
Änderungen schrittweise mit Remote Config Rollouts einführen (nur iOS+ und Android).
Verwenden Sie Remote Config Personalisierung mithilfe von maschinellem Lernen, um die besten Einstellungen für einzelne Nutzer zu ermitteln (nur iOS+, Android und Unity).