Firebase AI Logic-App mit Firebase Remote Config dynamisch aktualisieren

Wenn Sie die Gemini API über ein Firebase AI Logic SDK von Ihrer App aus aufrufen, enthält Ihre Anfrage eine Reihe von Parametern, mit denen generative KI-Antworten gesteuert werden. Dazu gehören in der Regel der Modellname, die Konfiguration der Modellgenerierung (z. B. maximale Tokens, Temperatur), Sicherheitseinstellungen, Systemanweisungen und Prompt-Daten.

In den meisten Fällen sollten Sie diese nach Bedarf oder für eine Reihe von Szenarien ändern:

  • Sie können Ihr generatives KI-Modell aktualisieren, ohne eine neue App zu veröffentlichen. Sie können auf neuere, stabile Modellversionen umstellen, bevor ältere Versionen eingestellt werden, auf kostengünstigere oder leistungsstärkere Modelle umsteigen, je nach den Anforderungen und Attributen Ihrer Nutzer, oder die neuesten und besten Modelle bedingt für bestimmte Nutzersegmente (z. B. Betatester) bereitstellen.
  • Legen Sie den Standort fest, von dem aus Sie auf das Modell zugreifen, damit es näher an Ihren Nutzern ist.
  • Führen Sie A/B-Tests mit verschiedenen Systemanweisungen und Prompts durch und führen Sie die erfolgreichen Testwerte dann nach und nach für Ihre Nutzer ein.
  • Mithilfe von Funktions-Flags können Sie generative AI-Funktionen in Ihrer App schnell ein- oder ausblenden.

Firebase Remote Config bietet noch mehr Funktionen. Sie können Parameterwerte bei Bedarf und bedingungslos für App-Instanzen aktualisieren, die den in der Firebase-Konsole festgelegten Merkmalen entsprechen, ohne eine neue Version Ihrer App veröffentlichen zu müssen.

In diesem Lösungsleitfaden finden Sie empfohlene Anwendungsfälle und eine Beschreibung, wie Sie Remote Config in Ihre generative KI-Anwendung einbinden.

Codeimplementierung

Warum sollten Sie Firebase Remote Config in Ihrer App verwenden?

Mit Firebase Remote Config können Sie das Verhalten Ihrer App dynamisch anpassen, ohne dass App-Updates erforderlich sind. Das ist besonders nützlich für Apps, bei denen generative AI verwendet wird, bei denen schnelle Iterationen und Feinabstimmungen entscheidend sind.

Wichtige Anwendungsfälle für Remote Config mit Apps für generative KI

Wir empfehlen die Verwendung von Remote Config mit Firebase AI Logic für die folgenden wichtigen Anwendungsfälle:

  • Ohne App-Update auf die neueste Modellversion umstellen: Verwenden Sie Remote Config-Parameter, um den Modellnamen nach Bedarf zu ändern, damit Sie auf die neueste Version Ihres bevorzugten Gemini-Modells umstellen können, sobald sie verfügbar ist.

  • Systemanweisungen und Sicherheitseinstellungen ohne App-Update aktualisieren: Sie können Systemanweisungen und Sicherheitseinstellungen in Remote Config-Parametern speichern, damit Sie sie bei Bedarf ändern können, falls nach der Bereitstellung Probleme auftreten.

  • Risiken reduzieren und KI-Sicherheit durchsetzen: Mit Remote Config-Rollouts können Sie generative KI-Änderungen sicher und schrittweise für Ihre iOS- und Android-Nutzer freigeben.

Erweiterte und empfohlene Anwendungsfälle für Remote Config mit Apps für generative KI

Nachdem Sie Ihre App mit Remote Config und Google Analytics instrumentiert haben, können Sie erweiterte Anwendungsfälle ausprobieren:

  • Standort basierend auf dem Standort des Clients festlegen: Mit Remote Config-Bedingungen können Sie den Standort festlegen, unter dem Sie auf das Modell zugreifen, basierend auf dem erkannten Standort des Clients.

  • Mit verschiedenen Modellen experimentieren: Sie können verschiedene generative KI-Modelle schnell testen und zwischen ihnen wechseln oder sogar auf verschiedene Modelle für verschiedene Nutzersegmente zugreifen, um das für Ihren Anwendungsfall am besten geeignete Modell zu finden.

  • Modellleistung optimieren: Sie können Modellparameter wie den Systemprompt, die maximale Anzahl von Ausgabetokens, die Temperatur und andere Einstellungen optimieren.

  • Unterschiedliche Systemanweisungen, Prompts und Modellkonfigurationen basierend auf Clientattributen verwenden: Wenn Sie Remote Config mit Google Analytics verwenden, können Sie Bedingungen basierend auf Clientattributen oder benutzerdefinierten Zielgruppen erstellen und anhand dieser Attribute unterschiedliche Parameter festlegen.

    Wenn Sie beispielsweise generative KI für den technischen Support in Ihrer App verwenden, sollten Sie plattformspezifische Systemanweisungen festlegen, damit Android-, iOS- und Webnutzer korrekte Anweisungen erhalten.

  • Nutzererfahrungen personalisieren: Mit der Remote Config-Personalisierung in Ihren mobilen Apps und Spielen können Sie die optimalen Einstellungen für die generative KI für jeden Nutzer automatisch ermitteln.

  • Kosten steuern: Sie können aus der Ferne festlegen, welche generativen KI-Modelle aufgerufen und wie häufig sie verwendet werden sollen. Außerdem können Sie die maximalen Ausgabetokenwerte dynamisch basierend auf der Nutzergruppe konfigurieren, um unnötige Kosten zu vermeiden.

  • App-Nutzung und -Ergebnisse optimieren: Mit A/B Testing und Remote Config können Sie Änderungen an den Parametern für die generative KI in verschiedenen Nutzersegmenten testen, um zu sehen, wie sich diese auf wichtige Messwerte wie Bindung und Umsatz auswirken.

Wenn Sie Ihre generative KI-App mit Firebase Remote Config ausstatten, können Sie flexible, sichere und kostengünstige KI-gestützte Anwendungen entwickeln und gleichzeitig eine hervorragende Nutzererfahrung schaffen.

Firebase Remote Config zur App hinzufügen

In diesem Lösungsleitfaden verwenden Sie Firebase Remote Config, um Parameter in Ihrer Android-App, die das Firebase AI Logic SDK verwenden, dynamisch zu aktualisieren. Nach Abschluss können Sie:

  • Rufen Sie Parameter wie Modellnamen und Systemanweisungen von Firebase Remote Config ab und aktivieren Sie sie.
  • Aktualisieren Sie Ihre Gemini API-Aufrufe, um die dynamisch abgerufenen Parameter zu verwenden. So können Sie ohne App-Update zwischen verschiedenen Modellen wechseln oder Systemanweisungen ändern.
  • Parameter per Fernzugriff steuern und Modellverhalten und -funktionen nach Bedarf anpassen

Vorbereitung

In dieser Anleitung wird davon ausgegangen, dass Sie mit der Entwicklung von Apps für Ihre Plattform vertraut sind.

Führen Sie die folgenden Schritte aus, bevor Sie beginnen:

  • Folgen Sie dem Firebase AI Logic-Startleitfaden. Darin wird beschrieben, wie Sie Ihr Firebase-Projekt einrichten, Ihre App mit Firebase verbinden, das SDK hinzufügen, den Back-End-Dienst für den ausgewählten Gemini API-Anbieter initialisieren und eine Modellinstanz erstellen.

  • Aktivieren Sie Google Analytics in Ihrem Firebase-Projekt und fügen Sie Ihrer App das zugehörige SDK hinzu. Dies ist für das bedingte Targeting erforderlich, z. B. um den Speicherort festzulegen, an dem Sie auf das Modell zugreifen, basierend auf dem Standort des Clientgeräts.

Schritt 1: Parameterwerte in der Firebase-Konsole festlegen

Erstellen Sie eine clientseitige Remote Config-Vorlage und konfigurieren Sie Parameter und Werte, die abgerufen und in der App verwendet werden sollen.

  1. Öffnen Sie Ihr Firebase-Projekt in der Firebase Console. Maximieren Sie dann im Navigationsmenü Ausführen und wählen Sie Remote Config aus.
  2. Achte darauf, dass oben auf der Seite in der Auswahl Client/Server die Option Client ausgewählt ist.
  3. Klicken Sie auf Konfiguration erstellen, um eine Kundenvorlage zu starten. Wenn Sie bereits Kundenvorlagen verwendet haben, klicken Sie auf Parameter hinzufügen.
  4. Definieren Sie die Parameter, die Sie mit Remote Config steuern möchten. Beispiel:

    Parametername Beschreibung Typ Standardwert
    model_name Modellname. Verfügbare Modellnamen String gemini-2.0-flash
    system_instructions Systemanweisungen sind wie eine „Präambel“, die Sie hinzufügen, bevor dem Modell weitere Anweisungen des Endnutzers zur Beeinflussung des Modellverhaltens zugewiesen werden. String You are a helpful assistant who knows everything there is to know about Firebase!
    prompt Standardprompt für die Funktion „Generative KI“. String I am a developer who wants to know more about Firebase!
    vertex_location Nur bei Verwendung von Vertex AI Gemini API.
     Steuern Sie den Standort, um auf das Modell zuzugreifen. Sie können Bedingungen festlegen, um diese Option basierend auf dem von Google Analytics erkannten Clientstandort zu konfigurieren.
    String us-central1
  5. Wenn Sie alle Parameter hinzugefügt haben, klicken Sie auf Änderungen veröffentlichen. Wenn dies keine neue Remote Config-Vorlage ist, überprüfen Sie die Änderungen und klicken Sie noch einmal auf Änderungen veröffentlichen.

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.

  1. Öffnen Sie das Projekt in Xcode und gehen Sie zu File > Add Package Dependencies (Datei > Paketabhängigkeiten hinzufügen).

  2. Wählen Sie firebase-ios-sdk aus und klicken Sie dann auf Paket hinzufügen.

  3. Wählen Sie im Project Navigator Ihre App > Ziele > Ihre App aus.

  4. Scrollen Sie auf dem Tab Allgemein zu Frameworks, Bibliotheken und eingebettete Inhalte.

  5. Klicken Sie auf +, wählen Sie FirebaseRemoteConfig aus und klicken Sie dann auf Hinzufügen.

  6. Fügen Sie Ihrem Code den FirebaseRemoteConfig-Import hinzu:

    import FirebaseRemoteConfig
    
  7. Initialisieren Sie Firebase in der entsprechenden Klasse Ihrer App und fügen Sie Remote Config zur 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. Fügen Sie außerdem ein Mindestabrufintervall hinzu:

    let remoteConfig = RemoteConfig.remoteConfig()
    let settings = RemoteConfigSettings()
    settings.minimumFetchInterval = 3600
    remoteConfig.configSettings = settings
    

    In der App der Schritt-für-Schritt-Anleitung würde dies in VertexAISampleApp in der Klasse AppDelegate geschehen.

Kotlin

  1. Fügen Sie der Gradle-Datei des Moduls (auf Anwendungsebene, in der Regel app/build.gradle.kts oder app/build.gradle) die Abhängigkeit Remote Config hinzu:

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.14.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Fügen Sie Remote Config der Hauptlogik Ihrer Anwendung 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

  1. Fügen Sie der Gradle-Datei des Moduls (auf Anwendungsebene, in der Regel app/build.gradle.kts oder app/build.gradle) die Abhängigkeit Remote Config hinzu:

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:33.14.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Fügen Sie Remote Config der Hauptlogik Ihrer Anwendung 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

  1. Öffnen Sie den Code in einem Texteditor und importieren Sie Remote Config:

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. Initialisieren Sie in Ihrer Hauptfunktion und nachdem die Firebase App für das Firebase AI Logic SDK initialisiert wurde, Remote Config:

      // Initialize Remote Config and get a reference to the service
      const remoteConfig = getRemoteConfig(app);
    
  3. Mindestabrufintervall festlegen:

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Dart

  1. Installieren und fügen Sie Remote Config mit dem folgenden Befehl aus dem Flutter-Projektverzeichnis hinzu:

    flutter pub add firebase_remote_config
    
  2. Öffnen Sie ./lib/main.dart und 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';
    
  3. Fügen Sie Ihrer App die Variablen _modelName, _systemInstructions und _prompt hinzu, damit wir sie später verwenden können:

    late final String _modelName;
    late final String _systemInstructions;
    late final String _prompt;
    
  4. Rufen Sie die Remote Config-Objektinstanz ab und legen Sie das Mindestabrufintervall fest, um häufige Aktualisierungen zu ermöglichen. Fügen Sie diesen Code erst hinzu, nachdem Firebase initialisiert wurde.

      final remoteConfig = FirebaseRemoteConfig.instance;
      await remoteConfig.setConfigSettings(RemoteConfigSettings(
        fetchTimeout: const Duration(seconds: 3600),
        minimumFetchInterval: const Duration(seconds: 3600),
      ));
    

Einheit

  1. Fügen Sie Ihrem Unity-Projekt Remote Config hinzu. Folgen Sie dazu dieser Anleitung.

  2. Rufen Sie die Remote Config-Objektinstanz ab und legen Sie das Mindestabrufintervall fest, um häufige Aktualisierungen zu ermöglichen. Fügen Sie diesen Code erst hinzu, nachdem Firebase initialisiert wurde.

    var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
    const int MillisecondsPerSecond = 1000;
    await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() {
      FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond,
      MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond
    });
    

Schritt 3: In-App-Parameterwerte festlegen

Sie sollten In-App-Standardparameterwerte im Remote Config-Objekt festlegen. So wird sichergestellt, dass sich Ihre App wie erwartet verhält, auch wenn keine Werte vom Remote Config-Dienst abgerufen werden können.

Swift

  1. Öffnen Sie in der Firebase-Konsole Remote Config.

  2. Öffnen Sie auf dem Tab Parameter das Menü und wählen Sie Standardwerte herunterladen aus.

  3. Aktivieren Sie auf Aufforderung .plist für iOS und klicken Sie dann auf Datei herunterladen.

  4. Speichern Sie die Datei im Anwendungsverzeichnis.

    Wenn Sie die Beispiel-App verwenden, speichern Sie sie unter FirebaseVertexAI/Sample/VertexAISample.

  5. Klicken Sie in Xcode mit der rechten Maustaste auf Ihre App und wählen Sie Dateien hinzufügen aus.

    Wenn Sie das Beispiel verwenden, klicken Sie mit der rechten Maustaste auf VertexAISample und wählen Sie Dateien zu „VertexAISample“ hinzufügen aus.

  6. Wählen Sie remote_config_defaults.plist aus und klicken Sie auf Hinzufügen.

  7. Aktualisieren Sie Ihren App-Code, damit er auf die Standarddatei verweist:

    // Set default values
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

Kotlin

  1. Öffne in der Firebase-Konsole Remote Config.

  2. Öffnen Sie auf dem Tab Parameter das Menü und wählen Sie Standardwerte herunterladen aus.

  3. Aktivieren Sie auf Aufforderung .xml für Android und klicken Sie dann auf Datei herunterladen.

  4. Speichern Sie die Datei im XML-Ressourcenverzeichnis Ihrer App.

  5. Aktualisieren Sie Ihre Hauptaktivitätsdatei, indem Sie die Standardwerte nach der zuvor hinzugefügten configSettings einfügen:

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

Java

  1. Öffnen Sie in der Firebase-Konsole Remote Config.

  2. Öffnen Sie auf dem Tab Parameter das Menü und wählen Sie Standardwerte herunterladen aus.

  3. Aktivieren Sie auf Aufforderung .xml für Android und klicken Sie dann auf Datei herunterladen.

  4. Speichern Sie die Datei im XML-Ressourcenverzeichnis Ihrer App.

  5. Aktualisieren Sie Ihre Hauptaktivitätsdatei, indem Sie die Standardwerte nach der zuvor hinzugefügten configSettings einfügen:

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

Web

Sie können die Standardwerte direkt in Ihrem Code festlegen:

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

Sie können die Standardwerte direkt in Ihrem Code festlegen:

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

Einheit

Sie können die Standardwerte direkt in Ihrem Code festlegen:

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

Schritt 4: Werte abrufen und aktivieren

Nachdem Sie die Standardwerte 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 sollte das Remote Config-Objekt jedes Mal aktualisiert werden, 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

  1. Fügen Sie Ihren Importen getValue und fetchAndActivate hinzu:

    import { getValue, fetchAndActivate } from 'firebase/remote-config';
    
  2. Nachdem Sie den Code zum Konfigurieren der Standardwerte für Remote Config hinzugefügt haben, rufen Sie die Konfiguration ab und aktivieren Sie sie. Weisen Sie dann den Konstanten modelName, systemInstructions, prompt und vertexLocation Werte zu.

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

Einheit

// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();

Schritt 5: Realtime-Remote Config-Listener hinzufügen

Fügen Sie Ihrer App einen Remote Config-Listener in Echtzeit hinzu, damit Änderungen an der Remote Config-Vorlage sofort an den Client weitergegeben werden.

Mit dem folgenden Code wird das Remote Config-Objekt jedes Mal aktualisiert, wenn sich ein Parameterwert ä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 kannst du auch eine Aktion innerhalb der addOnCompleteListener-Aktivierung 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 kannst du auch eine Aktion innerhalb der addOnCompleteListener-Aktivierung 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

Remote ConfigEchtzeit-Listener werden für Webanwendungen nicht unterstützt.

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 so aktualisieren, dass Remote Config-Werte verwendet werden

Klicke auf deinen Gemini API-Anbieter, um dir anbieterspezifische Inhalte und Code auf dieser Seite anzusehen.

Nachdem Remote Config vollständig konfiguriert ist, aktualisieren Sie Ihren Code, um hartcodierte Werte durch Werte aus Remote Config zu ersetzen.

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

Einheit

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

Schritt 7: App ausführen

Erstellen und führen Sie die App aus und prüfen Sie, ob sie funktioniert. Nehmen Sie in der Firebase-Konsole auf der Seite Remote Config Änderungen an der Konfiguration vor, veröffentlichen Sie die Änderungen und prüfen Sie das Ergebnis.

Nächste Schritte