Firebase Remote Config hiện hỗ trợ cấu hình phía máy chủ bằng cách sử dụng SDK Node.js dành cho quản trị viên Firebase phiên bản 12.1.0 trở lên. Tính năng mới này giúp bạn linh động quản lý 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 phương thức triển khai không cần máy chủ như Cloud Functions.
Không giống như SDK ứng dụng Firebase, tìm nạp cấu hình dành riêng cho ứng dụng có nguồn gốc từ mẫu Remote Config, SDK Remote Config phía máy chủ tải mẫu Remote Config đầy đủ xuống từ Firebase. Sau đó, máy chủ của bạn có thể đánh giá mẫu với từng yêu cầu đến và sử dụng logic riêng để phân phá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 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 đượ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 các ứng dụng chạy trên hoặ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à lời nhắc của mô hình AI c��ng như các ho��t động tích hợp khác để đảm bảo các khoá API của bạn luôn an toàn.
- Linh động điều chỉnh các tham số để phản hồi các thay đổi trong môi trường hoặc các thay đổi khác về ứ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 các ứng dụng truy cập vào máy chủ của bạn.
- Ghi lại ứng dụng nào đã nhận được 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 SDK Quản trị Firebase vào máy chủ để tạo dự án Firebase, thiết lập tài khoản dịch vụ và thêm SDK Node.js Quản trị Firebase vào máy chủ.
Bước 1: Khởi chạy SDK Node.js dành cho quản trị viên Firebase và uỷ quyền cho các yêu cầu API
Khi bạn khởi chạy SDK dành cho quản trị viên mà không có tham số nào, SDK sẽ sử dụng Thông tin xác thực mặc định của ứng dụng Google và đọc các tuỳ chọn từ biến môi trường GOOGLE_APPLICATION_CREDENTIALS
. Ví dụ: để 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 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 động bằng Remote Config. Sau đó, hãy cân nhắc những biến phải được đặt theo mặc định trong ứng dụng và giá trị mặc định của các biến đó. Đ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 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ý hàm AI tạo sinh, bạn có thể đặt tên mô hình mặc định, lời nhắc mở đầu và cấu hình AI tạo sinh, như sau:
Tên tham số | Nội dung mô tả | Loại | Giá trị mặc định |
---|---|---|---|
model_name |
Tên API mô hình | Chuỗi | gemini-1.5-pro |
preamble_prompt
|
Lời nhắc thêm vào 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 bạn xác định các tham số mà bạn muốn sử dụng với Remote Config, hãy định cấu hình ứng dụng để đặt các 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ộ để tìm nạp 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. Để thực hiện 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();
Nếu bạn đặt các điều kiện trong mẫu Remote Config, hãy 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 tỷ lệ phần trăm, hãy thêm
randomizationId
mà bạn muốn sử dụng để đánh giá(các) điều kiện trong hàmtemplate.evaluate()
. - Nếu sử dụng tín hiệu tuỳ chỉnh, hãy xác định các thuộc tính và giá trị của các thuộc tính đó. Bạn có thể sử dụng tín hiệu tuỳ chỉnh với SDK Node.js dành cho quản trị viên Firebase 12.5.0 trở lên.
Ví dụ: bạn có thể đặt mã cài đặt Firebase làm
randomizationId
hoặc mã nhận dạng 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 được tạo 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 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 sang đị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 đ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, bạn nên định cấu hình các tham số cho
model_name
vàgenerationConfig
. Dưới đâ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, trái ngược với môi trường không có máy chủ, hãy sử dụng
setInterval
để tải lại mẫu theo định kỳ để đảm bảo rằng bạn đang tìm nạp mẫu mới nhất theo định kỳ từ máy chủ Remote Config.
Bước 4: Đặt 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 của máy chủ và định cấu hình các tham số và 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 tham số Remote Config của bảng điều khiển Firebase và trong bộ chọn Ứng dụng/Máy chủ, hãy chọn Máy chủ.
- Xác định các tham số Remote Config có cùng tên và loại dữ liệu với các tham số mà bạn đã xác định trong ứng dụng và cung cấp 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 gán các giá trị này cho biến. - Bạn có thể tuỳ ý đặt đ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 thực thể hoặc tín hiệu tuỳ chỉnh mà bạn xác định. Để biết thêm thông tin về đ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 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ó kích thước nhỏ và chạy theo sự kiện, bạn nên cân nhắc triển khai mã bằng Cloud Functions. Ví dụ: giả sử bạn có một ứng dụng bao gồm cuộc trò chuyện của nhân vật do API AI tạo sinh (ví dụ: Google AI hoặc Vertex AI) cung cấp. 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 gọi theo yêu cầu.
Để tìm hiểu giải pháp sử dụng Cloud Functions thế hệ 2 với Remote Config phía máy chủ, hãy xem phần 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 phần Bắt đầu: viết, kiểm thử và triển khai các hàm đầu tiên.
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 ứng dụng của bạn được thiết kế để chạy trong thời gian dài (ví dụ: ứng dụng web có tài sản), 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 bài viết Bắt đầu nhanh: Triển khai dịch vụ Node.js cho Cloud Run.
Để biết thêm thông tin về các trường hợp sử dụng tốt nhất cho Cloud Run và Cloud Functions, hãy tham khảo bài viết Cloud Functions so với Cloud Run: trường hợp nào nên sử dụng công cụ này thay vì công cụ kia.