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ę generacji modelu (np. maksymalną liczbę tokenów wyjściowych), ustawienia bezpieczeństwa, instrukcje systemowe i dane promptu.
W większości przypadków będziesz 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 wyświetlać 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 aktualizacji aplikacji. Jest to szczególnie przydatne w przypadku aplikacji korzystających z generatywnej AI, w których szybkie iteracje i dostrajanie są kluczowe.
Podstawowe przypadki użycia Remote Config z aplikacjami AI opartymi na generatywnej AI
Zalecamy używanie Remote Config z Firebase AI Logic w tych podstawowych przypadkach użycia:
Przejście na najnowszą wersję modelu bez aktualizacji aplikacji: użyj parametrów Remote Config, aby w razie potrzeby zmienić nazwę modelu, dzięki czemu możesz przejść na najnowszą wersję preferowanego 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 zapewnianie bezpieczeństwa AI: korzystaj z Remote Configwdrażania etapowego, aby bezpiecznie i stopniowo udostępniać zmiany w generatywnej 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: dostosowywanie parametrów modelu, takich jak prompt systemowy, maksymalna liczba tokenów wyjściowych, temperatura i inne ustawienia.
Używanie różnych instrukcji systemowych, promptów i konfiguracji modelu w zależności od atrybutów klienta: gdy używasz Remote Config z Google Analytics, możesz tworzyć warunki na podstawie atrybutów klienta lub niestandardowych grup 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 wrażenia każdego użytkownika: używaj personalizacji Remote Config w aplikacjach i grach mobilnych, aby automatycznie określać optymalne ustawienia generatywnej AI dla każdego użytkownika.
Kontrolowanie 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 ograniczyć 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 instrumentacji aplikacji AI opartej na generatywnej AI za pomocą 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 dowiesz się, jak za pomocą Firebase Remote Config dynamicznie aktualizować parametry w aplikacji, które używają pakietu SDK Firebase AI Logic. Zapoznasz się z tymi zagadnieniami:
- Pobieraj i aktywuj parametry, takie jak nazwy modeli i instrukcje systemowe, z Firebase Remote Config.
- Zaktualizuj wywołania Gemini API, aby używały dynamicznie pobieranych parametrów. Dzięki temu będziesz mieć możliwość przełączania się między różnymi modelami lub modyfikowania instrukcji systemowych bez konieczności aktualizowania aplikacji.
- Zdalnie steruj parametrami, dostosowując zachowanie i możliwości modelu zgodnie z potrzebami.
Wymagania wstępne
W tym przewodniku przyjęto założenie, że znasz proces tworzenia aplikacji na swoją platformę.
Zanim zaczniesz, wykonaj te czynności:
Zapoznaj się z Firebase AI Logic przewodnikiem dla początkujących, który opisuje, jak skonfigurować projekt w 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 szablon klienta Remote Config 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órymi chcesz sterować 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 to rodzaj „wstępu”, który 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 to nie jest 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 potem 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 między pobraniami:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
W katalogu projektu Flutter zainstaluj i dodaj Remote Configza pomocą tego polecenia:
flutter pub add firebase_remote_configOtwórz plik
./lib/main.darti dodaj instrukcję importu po innych instrukcjach importu dodanych na potrzeby 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ć ten kod 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
Domyślne wartości 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 prawym przyciskiem myszy aplikację i wybierz Add Files (Dodaj pliki).
Wybierz remote_config_defaults.plist, a potem kliknij Dodaj.
Zaktualizuj kod aplikacji, aby odwoływał się do pliku domyślnego:
// 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 plik głównej aktywności, aby dodać wartości domyślne po dodanym wcześniej
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 publikowany jest 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 Remote Config słuchacza w czasie rzeczywistym
Dodaj do aplikacji odbiornik Remote Configw czasie rzeczywistym, aby zmiany wprowadzone w Remote Configszablonie były przekazywane do klienta natychmiast po aktualizacji.
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 Agent Platform Gemini API backend service (formerly Vertex AI).
// The location for where to access the model will be sourced from Remote Config
let agentPlatformLocation = remoteConfig.configValue(forKey: "agent_platform_location").stringValue
let ai = FirebaseAI.firebaseAI(backend: .agentPlatform(location: agentPlatformLocation))
// 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 Agent Platform Gemini API backend service (formerly Vertex AI).
// The location for where to access the model will be sourced from Remote Config
val ai = Firebase.ai(backend = GenerativeBackend.agentPlatform(location = remoteConfig.getString("agent_platform_location")))
// 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 Agent Platform Gemini API backend service (formerly Vertex AI).
// The location for where to access the model will be sourced from Remote Config
FirebaseAI ai = FirebaseAI.getInstance(
GenerativeBackend.agentPlatform(remoteConfig.getString("agent_platform_location")));
// 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 Agent Platform Gemini API backend service (formerly Vertex AI).
// The location for where to access the model will be sourced from Remote Config
const ai = getAI(firebaseApp, { backend: new AgentPlatformBackend(agentPlatformLocation) });
// 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 Agent Platform Gemini API backend service (formerly Vertex AI).
// The location for where to access the model will be sourced from Remote Config
final ai = await FirebaseAI.agentPlatform(location: _agentPlatformLocation);
// 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 Agent Platform Gemini API backend service (formerly Vertex AI).
// The location for where to access the model will be sourced from Remote Config
var agentPlatformLocation = remoteConfig.GetValue("agent_platform_location").StringValue;
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.AgentPlatform(agentPlatformLocation));
// 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ę, a następnie 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 ciąg 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żywaj Remote Configpersonalizacji, aby wykorzystywać systemy uczące się do określania najlepszych ustawień dla poszczególnych użytkowników (tylko iOS+, Android i Unity).