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 eingestellt.

Wenn Sie über Firebase AI Logic direkt auf generative KI-Modelle in einer mobilen App oder Web-App zugreifen, müssen Sie Ihre App so konfigurieren, dass diese häufigen Modelländerungen berücksichtigt werden. Nicht alle Nutzer aktualisieren auf die neueste Version Ihrer App, um das Modell zu verwenden, das Sie für sie vorgesehen haben.

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

Das Ändern eines Modellnamens ist ein wichtiger Anwendungsfall für die Verwendung von Remote Config mit Firebase AI Logic. Sie können aber auch Remote Config verwenden, um Parameter in Ihrer App dynamisch und sogar bedingt zu steuern, z. B. die Konfiguration der Modellgenerierung (maximale 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, um ihn in der App abzurufen und zu verwenden.

  1. Öffnen Sie Ihr Firebase-Projekt in der Firebase Konsole. Maximieren Sie dann im Navigationsmenü Ausführen und wählen Sie Remote Config aus.

  2. Achten Sie darauf, dass oben auf der Seite im Auswahlfeld Client/Server die Option Client ausgewählt ist.

  3. Starten Sie eine Clientvorlage, indem Sie auf Konfiguration erstellen klicken. Wenn Sie bereits Clientvorlagen verwendet haben, klicken Sie auf Parameter hinzufügen.

  4. Definieren Sie den Parameter model_name:

    Parameter name Beschreibung Typ Standardwert
    model_name Modellname. Verfügbare Modellnamen ansehen . 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, 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.

  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 Add package (Paket hinzufügen).

  3. Wählen Sie im Projektnavigator Ihre App > Targets (Ziele) > Ihre App aus.

  4. Scrollen Sie auf dem Tab General (Allgemein) zu Frameworks, Libraries, and Embedded Content (Frameworks, Bibliotheken und eingebettete Inhalte).

  5. Klicken Sie auf + und wählen Sie FirebaseRemoteConfig aus. Klicken Sie dann auf Add (Hinzufügen).

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

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

    Fügen Sie hier 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
    

Kotlin

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

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:34.12.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Fügen Sie Remote Config zur Hauptanwendungslogik hinzu. Initialisieren Sie hier Remote Config und fügen Sie ein Mindestabrufintervall hinzu:

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

Java

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

    dependencies {
        implementation(platform("com.google.firebase:firebase-bom:34.12.0"))
        implementation("com.google.firebase:firebase-ai")
        implementation("com.google.firebase:firebase-config")
        // ... other dependencies
    }
    
  2. Fügen Sie Remote Config zur Hauptanwendungslogik hinzu. Initialisieren Sie hier Remote Config und fügen Sie ein Mindestabrufintervall 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 Firebase AI Logic SDK initialisiert wurde:

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

    remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
    

Dart

  1. Installieren und fügen Sie Remote Config über den folgenden Befehl aus Ihrem 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 Variable _modelName hinzu, damit Sie sie später verwenden können:

    late final String _modelName;
    late final String _systemInstructions;
    late final String _prompt;
    
  4. Erstellen Sie eine Remote Config Objektinstanz und legen Sie das Mindestabruf intervall fest, um häufige Aktualisierungen zu ermöglichen. Fügen Sie dies 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 Remote Config Ihrem Unity-Projekt hinzu. Folgen Sie dazu diesen Anweisungen.

  2. Erstellen Sie eine Remote Config Objektinstanz und legen Sie das Mindestabruf intervall fest, um häufige Aktualisierungen zu ermöglichen. Fügen Sie dies 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: 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

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

  2. Öffnen Sie auf dem Parameters Tab das Menü und wählen Sie Download default values aus.

  3. Aktivieren Sie bei Aufforderung .plist for iOS und klicken Sie dann auf Download file (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 Add Files (Dateien hinzufügen) aus.

  6. Wählen Sie remote_config_defaults.plist aus und klicken Sie dann auf Add (Hinzufügen).

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

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

  2. Öffnen Sie auf dem Parameters Tab das Menü und wählen Sie Download default values aus.

  3. Aktivieren Sie bei Aufforderung .xml for Android und klicken Sie dann auf Download file.

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

  5. Aktualisieren Sie die Hauptaktivitätsdatei, um die Standardwerte nach den zuvor hinzugefügten configSettings hinzuzufügen:

    // 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 Parameters Tab das Menü und wählen Sie Download default values aus.

  3. Aktivieren Sie bei Aufforderung .xml for Android und klicken Sie dann auf Download file.

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

  5. Aktualisieren Sie die Hauptaktivitätsdatei, um die Standardwerte nach den zuvor hinzugefügten configSettings hinzuzufü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 = {
  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 wird das Remote Config Objekt immer 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

  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 Konstante 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-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, 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

// 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 und führen Sie die App aus und prüfen Sie, ob sie funktioniert. Nehmen Sie auf derRemote Config Seite in der Firebase Console Änderungen an Ihrer Konfiguration vor, veröffentlichen Sie die Änderungen und prüfen Sie das Ergebnis.

Nächste Schritte