Gdy wywołujesz usługę Gemini API z aplikacji za pomocą pakietu SDK Firebase AI Logic, Twoje żądanie zawiera kilka parametrów, które kontrolują odpowiedzi generowane przez AI. Zwykle obejmują one nazwę modelu, konfigurację generowania modelu (maksymalna liczba tokenów, temperatura itp.), ustawienia bezpieczeństwa, instrukcje dotyczące systemu i dane promptu.
W większości przypadków warto je zmieniać w miarę potrzeby lub w różnych sytuacjach:
- Zaktualizuj model generatywnej AI bez publikowania nowej aplikacji. Możesz zaktualizować starsze wersje modelu na nowsze, stabilne wersje, zanim starsze wersje zostaną wycofane, zmienić model na tańszy lub wydajniejszy w zależności od potrzeb i właściwości użytkowników albo wdrożyć nowe, najlepsze modele w sposób warunkowy w przypadku określonych segmentów użytkowników (np. testerów wersji beta).
- Ustaw lokalizację, w której będziesz uzyskiwać dostęp do modelu, aby była ona bliżej użytkowników.
- Przeprowadź testy A/B różnych instrukcji i promptów, a potem stopniowo wprowadzaj zwycięskie wartości eksperymentu wśród użytkowników.
- Używaj flag funkcji, aby szybko wyświetlać lub ukrywać funkcje generatywnej AI w aplikacji.
Firebase Remote Config umożliwia to wszystko i więcej, pozwalając na aktualizowanie wartości parametrów w miarę potrzeby i warunkowo w przypadku instancji aplikacji, które odpowiadają ustawionym przez Ciebie w konsoli Firebase cechom, bez wydawania nowej wersji aplikacji.
Ten przewodnik zawiera konkretne zalecane zastosowania i opisuje, jak dodać Remote Config do aplikacji korzystającej z generatywnej AI.
Dlaczego warto używać Firebase Remote Config w aplikacji?
Firebase Remote Config pozwala dynamicznie dostosowywać działanie aplikacji bez konieczności jej aktualizowania. Jest to szczególnie przydatne w przypadku aplikacji korzystających z generatywnej AI, w których szybkie iteracje i dostrojenie są kluczowe.
Najważniejsze zastosowania Remote Config w aplikacjach korzystających z generatywnej AI
Zalecamy używanie atrybutu Remote Config z atrybutem Firebase AI Logic w przypadku tych podstawowych zastosowań:
Przejdź na najnowszą wersję modelu bez aktualizowania aplikacji: użyj parametrów Remote Config, aby w razie potrzeby zmienić nazwę modelu, dzięki czemu będziesz mieć możliwość przejścia na najnowszą wersję wybranego modelu Gemini, gdy tylko będzie ona dostępna.
Aktualizowanie instrukcji dotyczących systemu i ustawień bezpieczeństwa bez aktualizacji aplikacji: przechowuj instrukcje dotyczące systemu i ustawienia bezpieczeństwa w parametrach Remote Config, aby móc je zmieniać w miarę potrzeby, jeśli po wdrożeniu wykryjesz problemy.
Zmniejszanie ryzyka i zapewnienie bezpieczeństwa AI: Remote Configwprowadzaj zmiany generatywnej AI stopniowo i bezpiecznie dla użytkowników iOS i Androida.
Zaawansowane i zalecane zastosowania Remote Config w przypadku aplikacji korzystających z generatywnej AI
Po instrumentowaniu aplikacji za pomocą Remote Config i Google Analytics możesz zapoznać się z zastosowaniami zaawansowanymi:
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: możesz szybko testować i przełączać się między różnymi modelami generatywnej AI, a nawet uzyskiwać dostęp do różnych modeli dla różnych segmentów użytkowników, aby znaleźć model najlepiej dopasowany do Twojego konkretnego przypadku użycia.
Zoptymalizować wydajność modelu: dostosować parametry modelu, takie jak prompt systemowy, maksymalna liczba tokenów wyjściowych, temperatura i inne ustawienia.
Używanie różnych instrukcji systemowych, promptów i konfiguracji modelu na podstawie atrybutów klienta: korzystając z Remote Config w Google Analytics, możesz tworzyć warunki na podstawie atrybutów klienta lub list odbiorców niestandardowych i ustawiać różne parametry na podstawie tych atrybutów.
Jeśli na przykład używasz generatywnej AI do udzielania pomocy technicznej w aplikacji, możesz ustawić instrukcje systemu dotyczące konkretnej platformy aplikacji, aby zapewnić dokładne instrukcje użytkownikom Androida, iOS i platformy internetowej.
Personalizuj wrażenia 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.
Kontrolowanie kosztów: zdalnie dostosuj, które modele generatywnej AI są wywoływane, jak często są używane i dynamicznie konfiguruj maksymalne wartości tokenów wyjściowych na podstawie grupy odbiorców, aby zmniejszyć niepotrzebne koszty.
Optymalizowanie wrażeń z aplikacji i wyników: użyj A/B Testing z Remote Config w przypadku aplikacji mobilnych i gier, aby testować zmiany w parametrach generatywnej AI w różnych segmentach użytkowników i sprawdzać, jak wpływają one na kluczowe dane, takie jak retencja i przychody.
Dzięki instrumentacji aplikacji z generatywną AI za pomocą Firebase Remote Config możesz tworzyć elastyczne, bezpieczne i wydajne aplikacje oparte na AI, a zarazem zapewniać użytkownikom przyjemne wrażenia.
Dodawanie Firebase Remote Config do aplikacji
W tym przewodniku po rozwiązaniach dowiesz się, jak używać pakietu Firebase Remote Config do dynamicznej aktualizacji parametrów w aplikacji na Androida, która korzysta z pakietu SDK Firebase AI Logic. Zapoznasz się z tymi zagadnieniami:
- Pobierz i aktywuj parametry, takie jak nazwy modeli i instrukcje systemu, z Firebase Remote Config.
- Zaktualizuj wywołania Gemini API, aby używać dynamicznie pobieranych parametrów. Dzięki temu możesz przełączać się między różnymi modelami lub modyfikować instrukcje systemu bez konieczności aktualizowania aplikacji.
- Zdalnie steruj parametrami, dostosowując w razie potrzeby zachowanie i możliwości modelu.
Wymagania wstępne
W tym przewodniku przyjęto założenie, że znasz już podstawy tworzenia aplikacji na swoją platformę.
Zanim zaczniesz, wykonaj te czynności:
Zapoznaj się z poradnikiem na temat korzystania z usługi Firebase AI Logic, w którym znajdziesz informacje o konfigurowaniu projektu Firebase, łączeniu aplikacji z Firebase, dodawaniu pakietu SDK, inicjowaniu usługi backendowej wybranego dostawcy „Gemini API” oraz tworzeniu instancji modelu.
Włącz Google Analytics w projekcie Firebase i dodaj do aplikacji jego pakiet SDK (wymagany do kierowania warunkowego, np. do 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 Remote Config klienta i skonfiguruj parametry oraz wartości, które mają być pobierane i używane w aplikacji.
- Otwórz projekt Firebase w konsoli Firebase. Następnie w menu nawigacyjnym rozwiń Uruchom i wybierz Remote Config.
- U góry strony w selektorze Klient/serwer sprawdź, czy wybrana jest opcja Klient.
- Aby utworzyć szablon klienta, kliknij Utwórz konfigurację (jeśli korzystasz już z szablonów klienta, kliknij Dodaj parametr).
Określ parametry, którymi chcesz sterować za pomocą usługi Remote Config. Przykład:
Nazwa parametru Opis Typ Wartość domyślna model_name
Nazwa modelu. Zobacz dostępne nazwy modeli. Ciąg znaków gemini-2.0-flash
system_instructions
Instrukcje systemowe to „wstęp”, który dodajesz przed przekazaniem modelu do dalszych instrukcji użytkownika końcowego, aby wpływać na jego działanie. Ciąg znaków You are a helpful assistant who knows everything there is to know about Firebase!
prompt
Domyślny prompt do użycia z funkcją generatywnej AI. Ciąg znaków I am a developer who wants to know more about Firebase!
vertex_location
Ma zastosowanie tylko wtedy, gdy używasz Vertex AI Gemini API.
Kontroluj lokalizację, aby uzyskać dostęp do modelu. Możesz skonfigurować tę opcję, określając warunki na podstawie lokalizacji klienta wykrytej przez Google Analytics.Ciąg znaków us-central1
Gdy skończysz dodawać parametry, kliknij Opublikuj zmiany. Jeśli nie jest to nowy szablon Remote Config, sprawdź zmiany i ponownie kliknij Opublikuj zmiany.
Krok 2. Dodaj i inicjuj Remote Config w aplikacji
Dodaj bibliotekę Remote Config i skonfiguruj Remote Config w aplikacji.
Swift
W ramach konfiguracji Firebase AI Logic pakiet SDK Firebase został już dodany do Twojej aplikacji, ale musisz też dodać pakiet Remote Config.
W Xcode po otwarciu projektu wybierz Plik > Dodaj zależności pakietu.
Wybierz firebase-ios-sdk i kliknij Dodaj pakiet.
W przewodniku po projekcie wybierz swoją aplikację > Grupy odbiorców > swoją aplikację.
Na karcie Ogólne przewiń do sekcji Frameworki, biblioteki i osadzone treści.
Kliknij kolejno +, FirebaseRemoteConfig i Dodaj.
Dodaj do kodu instrukcje importu
FirebaseRemoteConfig
:import FirebaseRemoteConfig
W odpowiedniej klasie w aplikacji zainicjuj Firebase i dodaj Remote Config do głównej logiki aplikacji.
Tutaj musisz uwzględnić Remote Config i słuchacza Remote Config w czasie rzeczywistym jako importy, aby aplikacja mogła pobierać nowe wartości w czasie rzeczywistym, oraz dodać minimalny interwał pobierania:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
W aplikacji quickstart znajduje się ona w klasie
AppDelegate
w obrębie klasyVertexAISampleApp
.
Kotlin
Dodaj zależność Remote Config do pliku Gradle modułu (na poziomie aplikacji) (zwykle
app/build.gradle.kts
lubapp/build.gradle
):dependencies { implementation(platform("com.google.firebase:firebase-bom:33.14.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
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.kts
lubapp/build.gradle
):dependencies { implementation(platform("com.google.firebase:firebase-bom:33.14.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
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';
Wewnątrz funkcji głównej i po zainicjowaniu aplikacji 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 interwał pobierania:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
W katalogu projektu Flutter zainstaluj i dodaj Remote Config za pomocą tego polecenia:
flutter pub add firebase_remote_config
Otwórz plik
./lib/main.dart
i dodaj instrukcje importu po innych instrukcjach importu dodanych na potrzeby obsługi pliku Firebase AI Logic:import 'package:firebase_vertexai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart';
Dodaj do aplikacji zmienne
_modelName
,_systemInstructions
i_prompt
, abyśmy mogli z nich skorzystać później: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ć ten kod 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 uda jej się pobrać wartości z usługi Remote Config.
Swift
W konsoli Firebase otwórz Remote Config.
Na karcie Parametry otwórz Menu i wybierz Pobierz wartości domyślne.
Gdy pojawi się odpowiedni komunikat, włącz opcję plik.plist na iOS, a potem kliknij Pobierz plik.
Zapisz plik w katalogu aplikacji.
Jeśli używasz przykładowej aplikacji, zapisz ją w folderze
FirebaseVertexAI/Sample/VertexAISample
.W Xcode kliknij aplikację prawym przyciskiem myszy i wybierz Dodaj pliki.
Jeśli używasz przykładu, kliknij VertexAISample prawym przyciskiem myszy i wybierz Dodaj pliki do folderu „VertexAISample”.
Wybierz remote_config_defaults.plist i kliknij Dodaj.
Zaktualizuj kod aplikacji, aby odwoływał się do pliku domyślnych:
// Set default values remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
W konsoli Firebase otwórz Remote Config.
Na karcie Parametry otwórz Menu i wybierz Pobierz wartości domyślne.
Gdy pojawi się taka prośba, włącz plik.xml na Androida, a następnie kliknij Pobierz plik.
Zapisz plik w katalogu zasobów XML aplikacji.
Zaktualizuj plik głównej aktywności, aby dodać domyślne wartości po elemencie
configSettings
, który został dodany wcześniej:// Set default values. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
W konsoli Firebase otwórz Remote Config.
Na karcie Parametry otwórz Menu i wybierz Pobierz wartości domyślne.
Gdy pojawi się taka prośba, włącz plik.xml na Androida, a następnie kliknij Pobierz plik.
Zapisz plik w katalogu zasobów XML aplikacji.
Zaktualizuj plik głównej aktywności, aby dodać domyślne wartości po elemencie
configSettings
, który został dodany wcześniej:// Set default values. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Wartości domyślne możesz ustawić bezpośrednio w kodzie:
// Set default Remote Config parameter values
remoteConfig.defaultConfig = {
model_name: 'gemini-2.0-flash',
system_instructions:
'You are a helpful assistant who knows everything there is to know about Firebase!',
prompt: 'I am a developer who wants to know more about Firebase!',
vertex_location: 'us-central1',
};
Dart
Wartości domyślne możesz ustawić bezpośrednio w kodzie:
remoteConfig.setDefaults(const {
"model_name": "gemini-2.0-flash",
"system_instructions": "You are a helpful assistant who knows everything there is to know about Firebase!",
"prompt": "I am a developer who wants to know more about Firebase!",
"vertex_location": "us-central1"
});
Unity
Wartości domyślne możesz ustawić bezpośrednio w kodzie:
await remoteConfig.SetDefaultsAsync(
new System.Collections.Generic.Dictionary<string, object>() {
{ "model_name", "gemini-2.0-flash" },
{ "system_instructions", "You are a helpful assistant who knows everything there is to know about Firebase!" },
{ "prompt", "I am a developer who wants to know more about Firebase!" },
{ "vertex_location", "us-central1" }
}
);
Krok 4. Pobierz i aktywuj wartości
Po ustawieniu wartości domyślnych dodaj te informacje, 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)")
}
}
Obiekt Remote Config powinien być aktualizowany 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 importu plików
getValue
ifetchAndActivate
:import { getValue, fetchAndActivate } from 'firebase/remote-config';
Po dodaniu kodu do skonfigurowania domyślnych wartości Remote Config pobierz i aktywuj konfigurację, a potem przypisz wartości stałym elementom
modelName
,systemInstructions
,prompt
ivertexLocation
.// Fetch and activate Remote Config. try { await fetchAndActivate(remoteConfig); } catch(err) { console.error('Remote Config fetch failed', err); } console.log('Remote Config fetched.'); // Assign Remote Config values. const modelName = getValue(remoteConfig, 'model_name').asString(); const systemInstructions = getValue(remoteConfig, 'system_instructions').asString(); const prompt = getValue(remoteConfig, 'prompt').asString(); const vertexLocation = getValue(remoteConfig, 'vertex_location').asString();
Dart
// Fetch and activate Remote Config.
remoteConfig.fetchAndActivate();
// Assign Remote Config values.
String? _modelName = remoteConfig.getString("model_name");
String? _systemInstructions = remoteConfig.getString("system_instructions");
String? _prompt = remoteConfig.getString("prompt");
String? _vertexLocation = remoteConfig.getString("vertex_location");
Unity
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
Krok 5. Dodaj odtwarzacz Remote Config w czasie rzeczywistym
Dodaj do aplikacji odbiorcę zdarzeń Remote Config w czasie rzeczywistym, aby mieć pewność, że zmiany wprowadzone w szablonie Remote Config zostaną przekazane klientowi zaraz po ich zaktualizowaniu.
Poniższy kod aktualizuje obiekt Remote Config za każdym razem, gdy zmienia 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 addOnCompleteListener
aktywacji:
// 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 addOnCompleteListener
aktywacji:
// 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
Odbiorcy w czasie rzeczywistymRemote Config nie są obsługiwani w przypadku aplikacji internetowych.
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ć wartości Remote Config
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod związane z tym dostawcą. |
Gdy usługa Remote Config będzie w pełni skonfigurowana, zaktualizuj kod, aby zastąpić zakodowane wartości wartościami pochodzącymi z 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ę, a potem sprawdź, czy działa. Wprowadź zmiany w konfiguracji na stronie Remote Config w konsoli Firebase, opublikuj zmiany i sprawdź wynik.
Dalsze kroki
Dowiedz się więcej o Remote Config.
Dodaj Google Analytics do kodu klienta, aby włączyć kierowanie.
W przypadku aplikacji i gier mobilnych:
Testuj różne ustawienia modelu za pomocą parametrów Remote Config i A/B Testing.
stopniowo wprowadzać zmiany parametrów modelu za pomocą Remote Configwdrożeń (tylko na iOS i Androida).
Użyj personalizacji Remote Config, aby za pomocą systemów uczących się określić najlepsze ustawienia dla poszczególnych użytkowników (tylko iOS+, Android i Unity).