Gdy wywołujesz Gemini API z aplikacji za pomocą pakietu SDK Firebase AI Logic, Twoje żądanie zawiera szereg parametrów, które kontrolują odpowiedzi generatywnej AI. Zwykle obejmują one nazwę modelu, konfigurację generowania modelu (np. maksymalną liczbę tokenów wyjściowych), ustawienia bezpieczeństwa, instrukcje systemowe i dane prompta.
W większości przypadków warto zmieniać te ustawienia na żądanie lub w razie potrzeby w różnych sytuacjach:
- Zaktualizuj model generatywnej AI bez publikowania nowej aplikacji. Możesz przejść na nowsze, stabilne wersje modelu, zanim wcześniejsze wersje zostaną wyłączone, przejść na tańsze lub wydajniejsze modele w zależności od potrzeb i atrybutów użytkowników albo warunkowo wdrożyć najnowsze i najlepsze modele w określonych segmentach użytkowników (np. u beta-testerów).
- Ustaw lokalizację, w której uzyskujesz dostęp do modelu, tak aby była bliżej Twoich użytkowników.
- Przeprowadź testy A/B różnych instrukcji systemowych i promptów, a następnie powoli wdrażaj zwycięskie wartości eksperymentu dla użytkowników.
- Używaj flag funkcji, aby szybko udostępniać lub ukrywać funkcje generatywnej AI w aplikacji.
Firebase Remote Config robi to wszystko i jeszcze więcej, umożliwiając aktualizowanie wartości parametrów w razie potrzeby i warunkowo w przypadku instancji aplikacji, które odpowiadają cechom ustawionym w konsoli Firebase, bez konieczności wydawania nowej wersji aplikacji.
Ten przewodnik po rozwiązaniach zawiera konkretne zalecane przypadki użycia i opisuje, jak dodać Remote Config do aplikacji AI opartej na generatywnej AI.
Dlaczego warto używać Firebase Remote Config w aplikacji?
Firebase Remote Config umożliwia dynamiczne dostosowywanie działania aplikacji bez konieczności jej aktualizowania. Jest to szczególnie przydatne w przypadku aplikacji, które korzystają z generatywnej AI, gdzie kluczowe są szybkie iteracje i dostrajanie.
Podstawowe przypadki użycia Remote Config z aplikacjami AI opartymi na generatywnej AI
Zalecamy używanie atrybutu Remote Config z atrybutem Firebase AI Logic w tych podstawowych przypadkach użycia:
Przejdź na najnowszą wersję modelu bez aktualizowania aplikacji: użyj parametrów Remote Config, aby w razie potrzeby zmienić nazwę modelu. Dzięki temu będziesz mieć możliwość przejścia na najnowszą wersję wybranego modelu Gemini, gdy tylko będzie dostępna.
Aktualizowanie instrukcji systemowych i ustawień bezpieczeństwa bez aktualizacji aplikacji: przechowuj instrukcje systemowe i ustawienia bezpieczeństwa w parametrach Remote Config, aby móc je zmieniać na żądanie, jeśli po wdrożeniu wykryjesz problemy.
Zmniejszanie ryzyka i egzekwowanie bezpieczeństwa AI: używaj wdrażania Remote Config, aby bezpiecznie i stopniowo udostępniać zmiany związane z generatywną AI użytkownikom iOS i Androida.
Zaawansowane i zalecane przypadki użycia Remote Config z aplikacjami AI generatywnej
Po zinstrumentowaniu aplikacji za pomocą Remote Config i Google Analytics możesz zapoznać się z zaawansowanymi przypadkami użycia:
Ustaw lokalizację na podstawie lokalizacji klienta: użyj warunków Remote Config, aby ustawić lokalizację, w której uzyskujesz dostęp do modelu, na podstawie wykrytej lokalizacji klienta.
Eksperymentuj z różnymi modelami: szybko testuj różne modele generatywnej AI i przełączaj się między nimi, a nawet korzystaj z różnych modeli w przypadku różnych segmentów użytkowników, aby znaleźć najlepsze rozwiązanie dla konkretnego przypadku użycia.
Optymalizowanie wydajności modelu: dostosuj parametry modelu, takie jak prompt systemowy, maksymalna liczba tokenów wyjściowych i inne ustawienia.
Używanie różnych instrukcji systemowych, promptów i konfiguracji modelu na podstawie atrybutów klienta: gdy używasz Remote Config z Google Analytics, możesz tworzyć warunki na podstawie atrybutów klienta lub niestandardowych list odbiorców i ustawiać różne parametry na podstawie tych atrybutów.
Jeśli na przykład używasz generatywnej AI do zapewniania pomocy technicznej w aplikacji, możesz ustawić instrukcje systemowe dotyczące platformy aplikacji, aby mieć pewność, że użytkownicy Androida, iOS i platformy internetowej otrzymają dokładne instrukcje.
Personalizuj usługi dla poszczególnych użytkowników: używaj Remote Configpersonalizacji w aplikacjach i grach mobilnych, aby automatycznie określać optymalne ustawienia generatywnej AI dla każdego użytkownika.
Kontrola kosztów: zdalnie dostosowuj, które modele generatywnej AI są wywoływane i jak często są używane, oraz dynamicznie konfiguruj maksymalne wartości tokenów wyjściowych na podstawie grupy odbiorców, aby zmniejszyć niepotrzebne koszty.
Optymalizowanie wrażeń użytkownika aplikacji i wyników: używaj A/B Testing z Remote Config w swoich aplikacjach i grach mobilnych, aby testować zmiany parametrów generatywnej AI w różnych segmentach użytkowników i sprawdzać, jak wpływają one na kluczowe dane, takie jak utrzymanie użytkowników i przychody.
Dzięki zintegrowaniu aplikacji AI opartej na generatywnej AI z Firebase Remote Config możesz tworzyć elastyczne, bezpieczne i ekonomiczne aplikacje oparte na AI, a jednocześnie zapewniać użytkownikom doskonałe wrażenia.
Dodawanie Firebase Remote Config do aplikacji
W tym przewodniku po rozwiązaniach użyjesz Firebase Remote Config, aby dynamicznie aktualizować parametry w aplikacji, która korzysta z pakietu SDK Firebase AI Logic. Zapoznasz się z tymi zagadnieniami:
- Pobierz i aktywuj parametry, takie jak nazwy modeli i instrukcje systemowe, z Firebase Remote Config.
- Zaktualizuj wywołania Gemini API, aby używać parametrów pobieranych dynamicznie. Dzięki temu możesz przełączać się między różnymi modelami lub modyfikować instrukcje systemowe bez aktualizowania aplikacji.
- zdalnie sterować parametrami, dostosowując w razie potrzeby działanie i możliwości modelu;
Wymagania wstępne
W tym przewodniku zakładamy, że masz już doświadczenie w tworzeniu aplikacji na swoją platformę.
Zanim zaczniesz, wykonaj te czynności:
Postępuj zgodnie z Firebase AI Logicprzewodnikiem dla początkujących, w którym opisujemy, jak skonfigurować projekt Firebase, połączyć aplikację z Firebase, dodać pakiet SDK, zainicjować usługę backendu dla wybranego dostawcy „Gemini API” i utworzyć instancję modelu.
Włącz Google Analytics w projekcie Firebase i dodaj pakiet SDK do aplikacji (wymagane do kierowania warunkowego, np. ustawiania lokalizacji, w której uzyskujesz dostęp do modelu, na podstawie lokalizacji urządzenia klienta).
Krok 1. Ustaw wartości parametrów w konsoli Firebase
Utwórz Remote Config szablon klienta i skonfiguruj parametry oraz wartości, które mają być pobierane i używane w aplikacji.
Remote ConfigW konsoli Firebase kliknij DevOps i zaangażowanie > Zdalna konfiguracja.
W selektorze Klient/Serwer u góry strony wybierz Klient.
Aby rozpocząć tworzenie szablonu klienta, kliknij Utwórz konfigurację (lub Dodaj parametr, jeśli masz już utworzone szablony klienta).
Określ parametry, które chcesz kontrolować za pomocą Remote Config. Przykład:
Nazwa parametru Opis Typ Wartość domyślna model_nameNazwa modelu. Zobacz dostępne nazwy modeli. Ciąg znaków gemini-3.8-flashsystem_instructionsInstrukcje systemowe są jak „wprowadzenie”, które dodajesz, zanim model otrzyma dalsze instrukcje od użytkownika, aby wpłynąć na jego zachowanie. Ciąg znaków You are a helpful assistant who knows everything there is to know about Firebase!promptDomyślny prompt do użycia z funkcją generatywnej AI. Ciąg znaków I am a developer who wants to know more about Firebase!agent_platform_locationMa zastosowanie tylko wtedy, gdy używasz Agent Platform Gemini API (formerly Vertex AI).
Kontroluj lokalizację, aby uzyskać dostęp do modelu. Możesz skonfigurować warunki, aby skonfigurować tę opcję na podstawie lokalizacji klienta wykrytej przez Google Analytics.Ciąg znaków globalPo dodaniu parametrów kliknij Opublikuj zmiany. Jeśli nie jest to nowy szablon Remote Config, sprawdź zmiany i ponownie kliknij Opublikuj zmiany.
Krok 2. Dodaj i zainicjuj Remote Config w aplikacji
Dodaj bibliotekę Remote Config i skonfiguruj Remote Config w aplikacji.
Swift
W ramach Firebase AI Logickonfiguracji pakiet SDK Firebase został już dodany do aplikacji, ale musisz też dodać Remote Config.
W Xcode otwórz projekt i kliknij File > Add Package Dependencies (Plik > Dodaj zależności pakietu).
Wybierz firebase-ios-sdk, a następnie kliknij Add package (Dodaj pakiet).
W nawigatorze projektu wybierz aplikację > Cele > aplikacja.
Na karcie Ogólne przewiń do sekcji Frameworki, biblioteki i treści osadzone.
Kliknij + i wybierz FirebaseRemoteConfig, a następnie kliknij Dodaj.
Dodaj do kodu import
FirebaseRemoteConfig:import FirebaseRemoteConfigW odpowiedniej klasie aplikacji zainicjuj Firebase i dodaj Remote Config do głównej logiki aplikacji.
Tutaj dodasz Remote Config i detektor czasu rzeczywistego Remote Config jako importy, aby aplikacja mogła pobierać nowe wartości w czasie rzeczywistym, oraz dodasz minimalny interwał pobierania:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
Kotlin
Dodaj zależność Remote Config do pliku Gradle modułu (na poziomie aplikacji) (zwykle
app/build.gradle.ktslubapp/build.gradle):dependencies { implementation(platform("com.google.firebase:firebase-bom:35.0.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }Dodaj Remote Config do głównej logiki aplikacji. Tutaj zainicjujesz Remote Config i dodasz minimalny interwał pobierania:
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
Dodaj zależność Remote Config do pliku Gradle modułu (na poziomie aplikacji) (zwykle
app/build.gradle.ktslubapp/build.gradle):dependencies { implementation(platform("com.google.firebase:firebase-bom:35.0.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }Dodaj Remote Config do głównej logiki aplikacji. Tutaj zainicjujesz Remote Config i dodasz minimalny interwał pobierania:
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
Otwórz kod w edytorze tekstu i zaimportuj Remote Config:
import { getRemoteConfig } from 'firebase/remote-config';W funkcji głównej i po zainicjowaniu aplikacji w Firebase dla pakietu SDK Firebase AI Logic zainicjuj Remote Config:
// Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);Ustaw minimalny odstęp czasu pobierania:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
Zainstaluj i dodaj Remote Config z katalogu projektu Flutter, używając tego polecenia:
flutter pub add firebase_remote_configOtwórz plik
./lib/main.darti dodaj instrukcję importu po innych instrukcjach importu dodanych w celu obsługi Firebase AI Logic:import 'package:firebase_ai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart';Dodaj do aplikacji zmienne
_modelName,_systemInstructionsi_prompt, aby móc ich później używać:late final String _modelName; late final String _systemInstructions; late final String _prompt;Pobierz instancję obiektu Remote Config i ustaw minimalny interwał pobierania, aby umożliwić częste odświeżanie. Pamiętaj, aby dodać to po zainicjowaniu Firebase.
final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 3600), minimumFetchInterval: const Duration(seconds: 3600), ));
Unity
Dodaj Remote Config do projektu Unity, postępując zgodnie z tymi instrukcjami.
Pobierz instancję obiektu Remote Config i ustaw minimalny interwał pobierania, aby umożliwić częste odświeżanie. Pamiętaj, aby dodać to po zainicjowaniu Firebase.
var remoteConfig = FirebaseRemoteConfig.DefaultInstance; const int MillisecondsPerSecond = 1000; await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() { FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond, MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond });
Krok 3. Ustaw wartości parametrów w aplikacji
Wartości domyślne parametrów w aplikacji należy ustawić w obiekcie Remote Config. Dzięki temu aplikacja będzie działać zgodnie z oczekiwaniami, nawet jeśli nie będzie mogła pobrać wartości z usługi Remote Config.
Swift
W konsoli Firebase otwórz stronę DevOps i zaangażowanie > Zdalna konfiguracja > Parametry.
Otwórz
Menu i wybierz Pobierz wartości domyślne.Gdy pojawi się odpowiedni komunikat, włącz .plist na iOS, a potem kliknij Pobierz plik.
Zapisz plik w katalogu aplikacji.
W Xcode kliknij aplikację prawym przyciskiem myszy i wybierz Add Files (Dodaj pliki).
Wybierz remote_config_defaults.plist, a potem kliknij Dodaj.
Zaktualizuj kod aplikacji, aby odwoływał się do pliku wartości domyślnych:
// Set default values for Remote Config parameters. remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
W konsoli Firebase otwórz stronę DevOps i zaangażowanie > Zdalna konfiguracja > Parametry.
Otwórz
Menu i wybierz Pobierz wartości domyślne.Gdy pojawi się prośba, włącz .xml dla Androida, a następnie kliknij Pobierz plik.
Zapisz plik w katalogu zasobów XML aplikacji.
Zaktualizuj główny plik aktywności, aby dodać wartości domyślne po dodanym wcześniej kodzie
configSettings:// Set default values for Remote Config parameters. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
W konsoli Firebase otwórz stronę DevOps i zaangażowanie > Zdalna konfiguracja > Parametry.
Otwórz
Menu i wybierz Pobierz wartości domyślne.Gdy pojawi się prośba, włącz .xml dla Androida, a następnie kliknij Pobierz plik.
Zapisz plik w katalogu zasobów XML aplikacji.
Zaktualizuj plik głównej aktywności, aby dodać wartości domyślne po dodanym wcześniej
configSettings:// Set default values for Remote Config parameters. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Wartości domyślne możesz ustawić bezpośrednio w kodzie:
// Set default values for Remote Config parameters.
remoteConfig.defaultConfig = {
model_name: 'gemini-3.8-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!',
agent_platform_location: 'global',
};
Dart
Wartości domyślne możesz ustawić bezpośrednio w kodzie:
// Set default values for Remote Config parameters.
remoteConfig.setDefaults(const {
"model_name": "gemini-3.8-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!",
"agent_platform_location": "global"
});
Unity
Wartości domyślne możesz ustawić bezpośrednio w kodzie:
// Set default values for Remote Config parameters.
await remoteConfig.SetDefaultsAsync(
new System.Collections.Generic.Dictionary<string, object>() {
{ "model_name", "gemini-3.8-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!" },
{ "agent_platform_location", "global" }
}
);
Krok 4. Pobierz i aktywuj wartości
Po ustawieniu wartości domyślnych dodaj poniższy kod, aby pobrać i aktywować wartości.
Swift
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
if let error = error {
print("Error fetching Remote Config: \(error.localizedDescription)")
}
}
Powinno to aktualizować obiekt Remote Config za każdym razem, gdy zostanie opublikowany nowy szablon Remote Config.
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
Dodaj do instrukcji importu te elementy:
getValueifetchAndActivate.import { getValue, fetchAndActivate } from 'firebase/remote-config';Znajdź kod, w którym określasz domyślne wartości Remote Config. Bezpośrednio po tym bloku kodu dodaj poniższy kod, aby pobrać i aktywować konfigurację oraz przypisać wartości do stałych
modelName,systemInstructions,promptiagentPlatformLocation.// 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 agentPlatformLocation = getValue(remoteConfig, 'agent_platform_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? _agentPlatformLocation = remoteConfig.getString("agent_platform_location");
Unity
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
Krok 5. Dodaj detektor Remote Config działający w czasie rzeczywistym
Dodaj do aplikacji detektor Remote Config w czasie rzeczywistym, aby mieć pewność, że zmiany wprowadzone w szablonie Remote Config zostaną przekazane klientowi natychmiast po ich zaktualizowaniu.
Poniższy kod aktualizuje obiekt Remote Config za każdym razem, gdy zmieni się wartość parametru.
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
Opcjonalnie możesz też skonfigurować działanie w ramach aktywacji: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
Opcjonalnie możesz też skonfigurować działanie w ramach aktywacji 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
// 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();
});
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();
};
Krok 6. Zaktualizuj żądania Gemini API, aby używały wartości Remote Config
|
Kliknij Gemini API dostawcę, aby wyświetlić na tej stronie treści i kod dostawcy. |
Teraz, gdy usługa Remote Config jest w pełni skonfigurowana, zaktualizuj kod, aby zastąpić wartości zakodowane na stałe wartościami pochodzącymi z usługi 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.");
Krok 7. Uruchom aplikację
Skompiluj i uruchom aplikację oraz sprawdź, czy działa. Wprowadź zmiany w konfiguracji na stronie Remote Config w konsoli Firebase, opublikuj je i sprawdź wynik.
Dalsze kroki
Dowiedz się więcej o Remote Config.
Aby włączyć kierowanie, dodaj do kodu klienta Google Analytics.
W przypadku aplikacji i gier mobilnych:
Przetestuj różne ustawienia modelu za pomocą Remote Config i A/B Testing.
Stopniowo wprowadzaj zmiany parametrów modelu za pomocą wdrożeń Remote Config (tylko iOS+ i Android).
Użyj personalizacji Remote Config, aby za pomocą uczenia maszynowego określać najlepsze ustawienia dla poszczególnych użytkowników (tylko iOS+, Android i Unity).