Firebase Remote Config kini mendukung konfigurasi sisi server yang menggunakan Firebase Admin Node.js SDK v12.1.0+. Kemampuan baru ini memungkinkan Anda untuk mengelola perilaku dan konfigurasi aplikasi sisi server secara dinamis menggunakan Remote Config. Hal ini mencakup penerapan serverless seperti Cloud Functions.
Tidak seperti SDK klien Firebase, yang mengambil konfigurasi khusus klien yang berasal dari template Remote Config, Remote Config SDK sisi server mendownload template Remote Config yang lengkap dari Firebase. Server Anda kemudian dapat mengevaluasi template dengan setiap permintaan yang masuk dan menggunakan logikanya sendiri untuk menyajikan respons yang disesuaikan dengan latensi yang sangat rendah. Anda dapat menggunakan kondisi untuk mengontrol dan menyesuaikan respons berdasarkan persentase acak dan atribut klien yang ditentukan dalam sinyal kustom.
Dengan Remote Config sisi server, Anda dapat:
- Menentukan parameter konfigurasi untuk aplikasi yang berjalan pada atau diakses melalui server Anda, sehingga memungkinkan kasus penggunaan seperti mengonfigurasi parameter dan prompt model AI dari jarak jauh serta integrasi lainnya, untuk memastikan kunci API Anda tetap aman.
- Menyesuaikan parameter secara dinamis sebagai respons terhadap perubahan lingkungan atau perubahan aplikasi lainnya, seperti memperbarui parameter LLM dan endpoint model.
- Mengontrol biaya dengan mengupdate API yang dipanggil server Anda dari jarak jauh.
- Membuat konfigurasi kustom dengan cepat untuk klien yang mengakses server Anda.
- Mencatat klien mana yang menerima parameter value dan menggunakan catatan ini di Cloud Functions sebagai bagian dari sistem verifikasi hak.
Anda dapat men-deploy Remote Config sisi server di Cloud Run, Cloud Functions, atau lingkungan server yang dihosting sendiri.
Sebelum memulai
Ikuti petunjuk di Menambahkan Firebase Admin SDK ke server untuk membuat project Firebase, menyiapkan akun layanan, dan menambahkan Firebase Admin Node.js SDK ke server Anda.
Langkah 1: Lakukan inisialisasi Firebase Admin Node.js SDK dan beri otorisasi permintaan API
Saat Anda melakukan inisialisasi Admin SDK tanpa parameter, SDK akan menggunakan Kredensial
Default Aplikasi
Google
dan membaca opsi dari variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
. Misalnya, untuk melakukan inisialisasi SDK dan menambahkan Remote Config:
import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
Langkah 2: Identifikasi parameter value default untuk aplikasi server
Identifikasi variabel di aplikasi yang ingin Anda update secara dinamis dengan Remote Config. Kemudian, pertimbangkan variabel mana yang harus ditetapkan secara default di aplikasi Anda dan berapa nilai defaultnya. Hal ini memastikan bahwa aplikasi Anda berhasil berjalan meskipun koneksinya ke server backend Remote Config terganggu.
Misalnya, jika Anda menulis aplikasi server yang mengelola fungsi AI generatif, Anda bisa menetapkan nama model default, field preamble prompt, dan konfigurasi AI generatif, seperti berikut:
Nama parameter | Deskripsi | Jenis | Nilai default |
---|---|---|---|
model_name |
Nama API Model | String | gemini-1.5-pro |
preamble_prompt
|
Prompt untuk menambahkan kueri pengguna | String | I'm a
developer who
wants to learn
about Firebase and
you are a helpful
assistant who
knows everything
there is to know
about Firebase! |
generation_config
|
Parameter yang akan dikirim ke model | JSON |
{"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
Langkah 3: Konfigurasikan aplikasi server Anda
Setelah menentukan parameter yang ingin digunakan dengan Remote Config, konfigurasikan aplikasi Anda untuk menetapkan nilai default, mengambil template Remote Config khusus server, dan menggunakan nilainya. Langkah-langkah berikut menjelaskan cara mengonfigurasi aplikasi Node.js Anda.
Mengakses dan memuat template.
// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = rc.initServerTemplate(); // Load Remote Config await template.load();
Jika menggunakan Node.js dalam Cloud Functions, Anda dapat menggunakan
getServerTemplate
asinkron untuk mengambil dan memuat template dalam satu langkah:// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = await rc.getServerTemplate();
Untuk memastikan bahwa aplikasi Anda berhasil berjalan meskipun koneksinya ke server backend Remote Config terganggu, tambahkan nilai default untuk setiap parameter ke aplikasi Anda. Untuk melakukannya, tambahkan
defaultConfig
di dalam fungsi templateinitServerTemplate
ataugetServerTemplate
:const template = rc.initServerTemplate({ defaultConfig: { model_name: "gemini-pro", generation_config: '{"stopSequences": [], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20}', preamble_prompt: "I'm a developer who wants to learn about Firebase and you are a helpful assistant who knows everything there is to know about Firebase!" }, }); // Load Remote Config await template.load()
Setelah template dimuat, gunakan
template.evaluate()
untuk mengimpor parameter dan nilai dari template:// Add template parameters to config const config = template.evaluate();
Jika ingin, saat menetapkan kondisi dalam template Remote Config, tentukan dan berikan nilai yang Anda inginkan:
- Jika menggunakan kondisi
persentase,
tambahkan
randomizationId
yang ingin Anda gunakan untuk mengevaluasi kondisi dalam fungsitemplate.evaluate()
. - Jika menggunakan sinyal kustom, tentukan atribut dan nilainya. Sinyal kustom tersedia dengan Firebase Admin Node.js SDK 12.5.0 dan yang lebih baru.
Misalnya, Anda dapat menetapkan ID penginstalan Firebase sebagai
randomizationId
, atau ID pengguna, untuk memastikan bahwa setiap pengguna yang menghubungi server Anda ditambahkan ke grup acak yang sesuai,version
sebagai sinyal kustom untuk menargetkan versi klien tertentu, danplatform
sebagai sinyal kustom untuk menargetkan platform klien.Untuk informasi selengkapnya tentang kondisi, lihat Jenis aturan kondisi.
// Add template parameters to `config`. Evaluates the // template and returns the parameter value assigned to // the group assigned to the {randomizationId} and version. const config = template.evaluate({ randomizationId: "2ac93c28-c459-4760-963d-a3974ec26c04", version: "1.0", platform: "Android" });
- Jika menggunakan kondisi
persentase,
tambahkan
Selanjutnya, ekstrak parameter value yang Anda perlukan dari konstan konfigurasi. Gunakan
getters
untuk mentransmisikan nilai dari Remote Config ke format yang diinginkan. Berikut adalah jenis yang didukung:- Boolean:
getBoolean
- Objek:
getValue
- Angka:
getNumber
- String:
getString
Misalnya, jika Anda mengimplementasikan Vertex AI pada server dan ingin mengubah model dan parameter model, Anda dapat mengonfigurasi parameter untuk
model_name
dangenerationConfig
. Berikut adalah contoh cara mengakses nilai Remote Config:// Replace defaults with values from Remote Config. const generationConfig = JSON.parse( config.getString('generation_config')); const is_ai_enabled = config.getBool('is_ai_enabled'); const model = config.getString('model_name'); // Generates a prompt comprised of the Remote Config // parameter and prepends it to the user prompt const prompt = `${config.getString('preamble_prompt')} ${req.query.prompt}`;
- Boolean:
Jika server Anda berjalan lama dan bukan merupakan lingkungan serverless, gunakan
setInterval
untuk memuat ulang template secara berkala guna memastikan bahwa Anda secara berkala mengambil template terbaru dari server Remote Config.
Langkah 4: Tetapkan parameter value khusus server di Remote Config
Selanjutnya, buat template Remote Config server dan konfigurasikan parameter serta nilai yang akan digunakan dalam aplikasi Anda.
Untuk membuat template Remote Config khusus server:
- Buka halaman parameter Remote Config Firebase console dan, dari pemilih Client/Server, pilih Server.
- Tentukan parameter Remote Config dengan nama dan jenis data yang sama dengan
parameter yang Anda tetapkan dalam aplikasi dan berikan nilainya. Nilai
ini akan menggantikan
defaultConfig
yang Anda tetapkan di Konfigurasikan aplikasi server saat Anda mengambil dan mengevaluasi template serta menetapkan nilai ini ke variabel Anda. - Jika ingin, tetapkan kondisi untuk terus menerapkan nilai ke sampel acak instance atau sinyal kustom yang Anda tentukan. Untuk informasi selengkapnya tentang kondisi, lihat Jenis aturan kondisi.
- Setelah menambahkan parameter, klik Publish changes.
- Tinjau perubahan, lalu klik kembali Publish changes.
Langkah 5: Deploy dengan Cloud Functions atau Cloud Run
Jika aplikasi server Anda ringan dan berbasis peristiwa, sebaiknya pertimbangkan untuk men-deploy kode menggunakan Cloud Functions. Misalnya, Anda memiliki aplikasi yang menyertakan dialog karakter yang didukung oleh AI generatif API (misalnya, Google AI atau Vertex AI). Dalam kasus ini, Anda dapat menghosting logika penyajian LLM dalam fungsi yang dipanggil aplikasi Anda on-demand.
Untuk menggunakan solusi yang memanfaatkan Cloud Functions generasi ke-2 dengan Remote Config sisi server, lihat Menggunakan Remote Config sisi server dengan Cloud Functions dan Vertex AI.
Untuk mempelajari cara men-deploy aplikasi dengan Cloud Functions lebih lanjut, lihat Memulai: menulis, menguji, dan men-deploy fungsi pertama Anda.
Coba contoh fungsi callable dengan Remote Config dan App Check sisi server di Memanggil Vertex AI Gemini API dengan Remote Config dan App Check.
Jika aplikasi Anda didesain untuk berjalan lama (misalnya, aplikasi web dengan aset), Anda dapat mempertimbangkan Cloud Run. Untuk men-deploy aplikasi server Anda dengan Cloud Run, ikuti panduan di Panduan memulai: Men-deploy layanan Node.js ke Cloud Run.
Untuk informasi selengkapnya tentang kasus penggunaan terbaik untuk Cloud Run dan Cloud Functions, lihat Cloud Functions vs. Cloud Run: kapan harus menggunakan salah satu dari keduanya.