Sử dụng Cấu hình từ xa trong môi trường máy chủ


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.

  1. 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();
    
  2. Để đả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ẫu initServerTemplate hoặc getServerTemplate:

    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()
    
  3. 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();
    
  4. 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àm template.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"
    });
    
    
  5. 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_namegeneration_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}`;
    
  6. 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ủ:

  1. 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ủ.
  2. 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.
  3. 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.
  4. Khi bạn đã thêm xong các thông số, hãy nhấp vào Xuất bản thay đổi.
  5. 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.

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.