Firebase Remote Config hỗ trợ cấu hình phía máy chủ bằng Firebase Admin Node.js SDK phiên bản 12.1.0 trở lên. Khả năng này cho phép bạn quản lý linh hoạt hành vi và cấu hình của các ứng dụng phía máy chủ bằng Remote Config. Điều này bao gồm cả các hoạt động triển khai không cần máy chủ như Cloud Functions.
Không giống như các SDK ứng dụng Firebase (tìm nạp một cấu hình dành riêng cho ứng dụng xuất phát từ mẫu Remote Config), SDK Remote Config phía máy chủ sẽ tải một mẫu hoàn chỉnh Remote Config xuống từ Firebase. Sau đó, máy chủ của bạn có thể đánh giá mẫu này bằng từng yêu cầu đến và sử dụng logic riêng để phân phát một phản hồi tuỳ chỉnh với độ trễ rất thấp. Bạn có thể sử dụng điều kiện để kiểm soát và tuỳ chỉnh các phản hồi dựa trên tỷ lệ phần trăm ngẫu nhiên và các thuộc tính của ứng dụng khách được xác định trong tín hiệu tuỳ chỉnh.
Với Remote Config phía máy chủ, bạn có thể:
- Xác định các thông số cấu hình cho những ứng dụng chạy trên hoặc được truy cập thông qua máy chủ của bạn, cho phép các trường hợp sử dụng như định cấu hình từ xa các thông số và câu lệnh của mô hình AI cũng như các chế độ tích hợp khác, để đảm bảo khoá API của bạn luôn an toàn.
- Điều chỉnh các tham số một cách linh hoạt để phản hồi những thay đổi trong môi trường của bạn hoặc các thay đổi khác của ứng dụng, chẳng hạn như cập nhật các tham số LLM và điểm cuối của mô hình.
- Kiểm soát chi phí bằng cách cập nhật từ xa các API mà máy chủ của bạn gọi.
- Tạo cấu hình tuỳ chỉnh ngay lập tức cho những ứng dụng khách truy cập vào máy chủ của bạn.
- Ghi lại những ứng dụng nhận được một giá trị tham số và sử dụng giá trị này trong Cloud Functions như một phần của hệ thống xác minh quyền.
Bạn có thể triển khai Remote Config phía máy chủ trên Cloud Run, Cloud Functions hoặc môi trường máy chủ tự lưu trữ.
Trước khi bắt đầu
Làm theo hướng dẫn trong phần Thêm Firebase Admin SDK vào máy chủ để tạo một dự án Firebase, thiết lập tài khoản dịch vụ và thêm Firebase Admin Node.js SDK vào máy chủ.
Bước 1: Khởi chạy Firebase Admin Node.js SDK và uỷ quyền các yêu cầu API
Khi bạn khởi chạy Admin SDK mà không có tham số, SDK sẽ sử dụng Thông tin đăng nhập mặc định của ứng dụng Google và đọc các lựa chọn từ biến môi trường GOOGLE_APPLICATION_CREDENTIALS
. Cách khởi chạy SDK và thêm Remote Config:
import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
Bước 2: Xác định các giá trị tham số mặc định cho ứng dụng máy chủ
Xác định các biến trong ứng dụng mà bạn muốn cập nhật linh hoạt bằng Remote Config. Sau đó, hãy cân nhắc những biến nào phải được đặt theo mặc định trong ứng dụng của bạn và giá trị mặc định của chúng là gì. Điều này đảm bảo rằng ứng dụng của bạn chạy thành công ngay cả khi kết nối của ứng dụng với máy chủ phụ trợ Remote Config bị gián đoạn.
Ví dụ: nếu đang viết một ứng dụng máy chủ quản lý một hàm AI tạo sinh, bạn có thể đặt tên mô hình mặc định, phần mở đầu của câu lệnh và cấu hình AI tạo sinh, chẳng hạn như sau:
Tên thông số | Nội dung mô tả | Loại | Giá trị mặc định |
---|---|---|---|
model_name |
Tên API mô hình | Chuỗi | gemini-2.0-flash |
preamble_prompt
|
Lời nhắc để thêm vào trước truy vấn của người dùng | Chuỗi | 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
|
Các tham số cần gửi đến mô hình | JSON |
{"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
Bước 3: Định cấu hình ứng dụng máy chủ
Sau khi xác định các tham số bạn muốn sử dụng với Remote Config, hãy định cấu hình ứng dụng của bạn để đặt giá trị mặc định, tìm nạp mẫu Remote Config dành riêng cho máy chủ và sử dụng các giá trị của mẫu đó. Các bước sau đây mô tả cách định cấu hình ứng dụng Node.js.
Truy cập và tải mẫu.
// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = rc.initServerTemplate(); // Load Remote Config await template.load();
Nếu đang sử dụng Node.js trong Cloud Functions, bạn có thể sử dụng
getServerTemplate
không đồng bộ để khởi chạy và tải mẫu trong một bước:// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = await rc.getServerTemplate();
Để đảm bảo ứng dụng của bạn chạy thành công ngay cả khi kết nối với máy chủ phụ trợ Remote Config bị gián đoạn, hãy thêm giá trị mặc định cho từng tham số vào ứng dụng. Để làm việc này, hãy thêm
defaultConfig
vào bên trong hàm mẫuinitServerTemplate
hoặcgetServerTemplate
: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()
Sau khi mẫu tải, hãy sử dụng
template.evaluate()
để nhập các thông số và giá trị từ mẫu:// Add template parameters to config const config = template.evaluate();
Bạn có thể tuỳ chọn đặt điều kiện trong mẫu Remote Config, xác định và cung cấp các giá trị mà bạn muốn:
- Nếu sử dụng điều kiện về tỷ lệ phần trăm, hãy thêm
randomizationId
mà bạn muốn dùng để đánh giá(các) điều kiện trong hàmtemplate.evaluate()
. - Nếu bạn sử dụng custom_signals, hãy xác định các thuộc tính và giá trị của chúng. Bạn có thể sử dụng tín hiệu tuỳ chỉnh với Firebase Admin Node.js SDK 12.5.0 trở lên.
Ví dụ: bạn có thể đặt mã nhận dạng lượt cài đặt Firebase làm
randomizationId
hoặc mã người dùng để đảm bảo rằng mỗi người dùng liên hệ với máy chủ của bạn đều được thêm vào nhóm ngẫu nhiên thích hợp,version
làm tín hiệu tuỳ chỉnh để nhắm đến các phiên bản ứng dụng cụ thể vàplatform
làm tín hiệu tuỳ chỉnh để nhắm đến nền tảng ứng dụng.Để biết thêm thông tin về các điều kiện, hãy xem phần Các loại quy tắc điều kiện.
// 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" });
- Nếu sử dụng điều kiện về tỷ lệ phần trăm, hãy thêm
Tiếp theo, hãy trích xuất các giá trị tham số bạn cần từ hằng số cấu hình. Sử dụng
getters
để truyền các giá trị từ Remote Config vào định dạng dự kiến. Các loại sau đây được hỗ trợ:- Boolean:
getBoolean
- Đồ vật:
getValue
- Số:
getNumber
- Chuỗi:
getString
Ví dụ: nếu bạn đang triển khai Vertex AI trên máy chủ và muốn thay đổi mô hình cũng như các tham số mô hình, thì bạn có thể muốn định cấu hình các tham số cho
model_name
vàgeneration_config
. Sau đây là ví dụ về cách bạn có thể truy cập vào các giá trị của 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:
Nếu máy chủ của bạn chạy trong thời gian dài, thay vì môi trường không có máy chủ, hãy dùng
setInterval
để định kỳ tải lại mẫu nhằm xác nhận rằng bạn đang tìm nạp mẫu mới nhất từ máy chủ Remote Config.
Bước 4: Đặt các giá trị tham số dành riêng cho máy chủ trong Remote Config
Tiếp theo, hãy tạo một mẫu Remote Config máy chủ và định cấu hình các tham số cũng như giá trị để sử dụng trong ứng dụng của bạn.
Cách tạo mẫu Remote Config dành riêng cho máy chủ:
- Mở trang thông số Remote Config của bảng điều khiển Firebase rồi chọn Máy chủ trong bộ chọn Máy khách/Máy chủ.
- Xác định các tham số Remote Config có cùng tên và kiểu dữ liệu với các tham số mà bạn đã xác định trong ứng dụng của mình và cung cấp các giá trị. Các giá trị này sẽ ghi đè
defaultConfig
mà bạn đặt trong phần Định cấu hình ứng dụng máy chủ khi bạn tìm nạp và đánh giá mẫu, đồng thời chỉ định các giá trị này cho các biến của bạn. - Bạn có thể tuỳ ý đặt các điều kiện để liên tục áp dụng các giá trị cho một mẫu ngẫu nhiên của các phiên bản hoặc tín hiệu tuỳ chỉnh mà bạn xác định. Để biết thêm thông tin về các điều kiện, hãy xem phần Các loại quy tắc điều kiện.
- Khi bạn đã thêm xong các thông số, hãy nhấp vào Xuất bản thay đổi.
- Xem lại các thay đổi rồi nhấp lại vào Xuất bản các thay đổi.
Bước 5: Triển khai bằng Cloud Functions hoặc Cloud Run
Nếu ứng dụng máy chủ của bạn có dung lượng nhẹ và dựa trên sự kiện, bạn nên cân nhắc triển khai mã bằng cách sử dụng Cloud Functions. Ví dụ: giả sử bạn có một ứng dụng có chứa hộp thoại nhân vật do một API AI tạo sinh hỗ trợ (ví dụ: Google AI hoặc Vertex AI). Trong trường hợp này, bạn có thể lưu trữ logic phân phát LLM trong một hàm mà ứng dụng của bạn gọi theo yêu cầu.
Để tìm hiểu một giải pháp sử dụng Cloud Functions thế hệ thứ 2 với Remote Config phía máy chủ, hãy xem bài viết Sử dụng Remote Config phía máy chủ với Cloud Functions và Vertex AI.
Để tìm hiểu thêm về cách triển khai ứng dụng bằng Cloud Functions, hãy xem bài viết Bắt đầu: viết, kiểm thử và triển khai các hàm đầu tiên.
Dùng thử một hàm có thể gọi mẫu với Remote Config và App Check phía máy chủ tại Gọi Vertex AI Gemini API bằng Remote Config và App Check.
Nếu bạn đang tạo một ứng dụng web được kết xuất phía máy chủ, thì App Hosting có hỗ trợ các khung web phổ biến.
Nếu không, bạn có thể cân nhắc sử dụng Cloud Run. Để triển khai ứng dụng máy chủ bằng Cloud Run, hãy làm theo hướng dẫn tại Hướng dẫn nhanh: Triển khai dịch vụ Node.js lên Cloud Run.
Để biết thêm thông tin về các trường hợp sử dụng phù hợp nhất cho Cloud Run và Cloud Functions, hãy tham khảo bài viết Cloud Functions so với Cloud Run: khi nào nên sử dụng một trong hai.