Modellnamen in Ihrer App per Fernzugriff ändern

Die Verfügbarkeit generativer KI-Modelle ändert sich häufig. Es werden neue, bessere Modelle veröffentlicht und ältere, weniger leistungsfähige Modelle werden eingestellt.

Wenn Sie über Firebase AI Logic direkt von einer mobilen App oder Web-App auf generative KI-Modelle zugreifen, ist es wichtig, dass Sie Ihre App so konfigurieren, dass sie diese häufigen Modelländerungen berücksichtigt. Nicht alle Nutzer werden auf die neueste Version Ihrer App aktualisieren, um das Modell zu verwenden, das Sie benötigen.

Mit Firebase Remote Config können Sie Parameterwerte in Ihrer App (z. B. einen Modellnamen) dynamisch und remote über die Firebase-Konsole aktualisieren, ohne eine neue Version Ihrer App veröffentlichen zu müssen.

Das Ändern eines Modellnamens ist ein kritischer Anwendungsfall für die Verwendung von Remote Config mit Firebase AI Logic. Sie können Remote Config aber auch verwenden, um Parameter in Ihrer App dynamisch und sogar bedingt zu steuern, z. B. die Konfiguration der Modellgenerierung (maximale Anzahl von Tokens, Temperatur usw.), Sicherheitseinstellungen, Systemanweisungen und Prompt-Daten.

In dieser Anleitung wird beschrieben, wie Sie Remote Config in Ihrer App implementieren, insbesondere um den in Ihrer App verwendeten Modellnamen zu steuern.

Schritt 1: Parameterwert in der Firebase-Konsole festlegen

Erstellen Sie eine Remote Config-Clientvorlage und konfigurieren Sie einen model_name-Parameter und seinen Wert, der in der App abgerufen und verwendet werden soll.

  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. Achten Sie darauf, dass oben auf der Seite in der Auswahl Client/Server die Option Client ausgewählt ist.

  3. Klicken Sie auf Konfiguration erstellen (oder auf Parameter hinzufügen, wenn Sie bereits Clientvorlagen verwendet haben), um eine Clientvorlage zu erstellen.

  4. Definieren Sie den Parameter model_name:

    Parametername Beschreibung Typ Standardwert
    model_name Modellname. Verfügbare Modellnamen String gemini-2.5-flash
  5. Klicken Sie nach dem Hinzufügen dieses Parameters auf Änderungen veröffentlichen. Wenn es sich nicht um eine neue Remote Config-Vorlage handelt, überprüfen Sie die Änderungen und klicken Sie noch einmal auf Änderungen veröffentlichen.

Schritt 2: Remote Config in Ihre App einfü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 das Firebase SDK bereits in Ihre App eingefü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 den FirebaseRemoteConfig-Import in Ihren Code ein:

    import FirebaseRemoteConfig
    
  7. Initialisieren Sie Firebase in der entsprechenden Klasse für Ihre App und fügen Sie Remote Config in Ihre Hauptanwendungslogik ein.

    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 minimales Abrufintervall hinzu:

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

Kotlin

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

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:34.5.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Fügen Sie Remote Config in Ihre Hauptanwendungslogik ein. Hier initialisieren Sie Remote Config und fügen ein minimales Abrufintervall hinzu:

    val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
    

Java

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

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:34.5.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Fügen Sie Remote Config in Ihre Hauptanwendungslogik ein. Hier initialisieren Sie Remote Config und fügen ein minimales Abrufintervall hinzu:

    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    

Web

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

    import { getRemoteConfig } from 'firebase/remote-config';
    
  2. Initialisieren Sie Remote Config in Ihrer primären Funktion 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);
    
  3. Mindestabrufintervall festlegen:

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Dart

  1. Installieren und fügen Sie Remote Config über das Verzeichnis Ihres Flutter-Projekts mit dem folgenden Befehl 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 die Variable _modelName Ihrer App hinzu, damit Sie 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 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

  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 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: In-App-Parameterwert festlegen

Sie sollten In-App-Standardparameterwerte im Remote Config-Objekt festlegen. So wird sichergestellt, dass sich Ihre App wie erwartet verhält, auch wenn sie keine Werte vom Remote Config-Dienst abrufen kann.

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 bei Aufforderung .plist für iOS und klicken Sie dann auf Datei herunterladen.

  4. Speichern Sie die Datei im Anwendungsverzeichnis.

  5. Klicken Sie in Xcode mit der rechten Maustaste auf Ihre App und wählen Sie Dateien 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 for Remote Config parameters.
    remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
    

Kotlin

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

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

  3. Aktivieren Sie bei 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, um die Standardwerte nach dem configSettings hinzuzufügen, das Sie zuvor hinzugefügt haben:

    // Set default values for Remote Config parameters.
    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 bei 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, um die Standardwerte nach dem configSettings hinzuzufügen, das Sie zuvor hinzugefügt haben:

    // 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 = {
  model_name: 'gemini-2.5-flash',
};

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 {
  "model_name": "gemini-2.5-flash"
});

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>() {
    { "model_name", "gemini-2.5-flash" }
  }
);

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 sollte das Remote Config-Objekt immer dann 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 getValue und fetchAndActivate zu Ihren Importen hinzu:

    import { getValue, fetchAndActivate } from 'firebase/remote-config';
    
  2. 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 modelName zuzuweisen.

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

Dart

// Fetch and activate Remote Config.
remoteConfig.fetchAndActivate();

// Assign Remote Config values.
String? _modelName = remoteConfig.getString("model_name");

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-Listener in Echtzeit hinzu, damit Änderungen, die Sie an der Remote Config-Vorlage vornehmen, sofort an den Client weitergegeben werden.

Der folgende Code aktualisiert das Remote Config-Objekt, 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 können Sie auch eine Aktion in 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 können Sie auch eine Aktion in 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 Config-Listener in Echtzeit werden für Web-Apps 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 aktualisieren, damit der Remote Config-Wert verwendet wird

Klicken Sie auf Ihren Gemini API-Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

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

Swift

import FirebaseAI

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: modelName
)

// ...

Kotlin

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = remoteConfig.getString("model_name")
)

// ...

Java

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
      /* modelName */ remoteConfig.getString("model_name"),
      /* generationConfig (optional) */ null,
      /* safetySettings (optional) */ null,
      /* requestOptions (optional) */ new RequestOptions(),
      /* tools (optional) */ null,
      /* toolsConfig (optional) */ null,
      /* systemInstruction (optional) */ null,
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

// ...

Web

// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
const model = getGenerativeModel(ai, {
  model: modelName
});

// ...

Dart

// ...

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
final model = FirebaseAI.googleAI().generativeModel(
  model: _modelName,
);

// ...

Einheit

// ...

var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// When creating a `GenerativeModel` instance, source the model name value from Remote Config
var modelName = remoteConfig.GetValue("model_name").StringValue;
var model = ai.GetGenerativeModel(
  modelName: modelName
);

// ...

Schritt 7: App ausführen

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

Nächste Schritte