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

Cấu hình từ xa Firebase hiện hỗ trợ cấu hình phía máy chủ bằng cách sử dụng SDK Node.js cho quản trị viên Firebase phiên bản 12.1.0 trở lên. Chức năng mới này cho phé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 cách sử dụng Cấu hình từ xa. Trong đó có cả các phương pháp triển khai không máy chủ như Cloud Functions (Chức năng đám mây).

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 lấy từ mẫu từ mẫu Cấu hình từ xa, SDK Cấu hình từ xa phía máy chủ tải xuống một mẫu Cấu hình từ xa hoàn chỉnh từ Firebase. Sau đó, máy chủ của bạn có thể đánh giá mẫu với mỗi 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.

Với Cấu hình từ xa phía máy chủ, bạn có thể:

  • Xác định tham 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 tham số và lời nhắc của mô hình AI cũng như các công cụ tích hợp khác, để đảm bảo khoá API luôn an toàn.
  • Linh động điều chỉnh các tham số theo những thay đổi trong môi trường của bạn hoặc những 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 một cách nhanh chóng cho các máy khách truy cập vào máy chủ của bạn.

Bạn có thể triển khai Cấu hình từ xa phía máy chủ trên Cloud Run, Cloud Functions hoặc cá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 bài viết 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ị của Firebase vào máy chủ của bạn.

Bước 1: Khởi chạy SDK Node.js cho quản trị viên Firebase và cho phép 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ố, 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 lựa chọn từ biến môi trường GOOGLE_APPLICATION_CREDENTIALS. Ví dụ: để khởi chạy SDK và thêm Cấu hình từ xa, hãy làm như sau:

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ị thông 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 tự động cập nhật bằng Cấu hình từ xa. Sau đó, hãy cân nhắc xem 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 các biến đó. Điều này đảm bảo ứng dụng sẽ 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ợ Cấu hình từ xa 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 chức năng AI tạo sinh, thì 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 thông số Nội dung mô tả Loại chức năng 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 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 thông số bạn muốn sử dụng với Cấu hình từ xa, 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 Cấu hình từ xa 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 Các hàm đám mây, thì bạn có thể sử dụng getServerTemplate không đồng bộ để tìm nạp và tải mẫu đó chỉ 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 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ợ Cấu hình từ xa bị gián đoạn, hãy thêm giá trị mặc định cho mỗi tham số vào ứng dụng của bạn. Để thực hiện việc này, hãy thêm defaultConfig 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 xong, hãy sử dụng template.evaluate() để nhập các tham số và giá trị từ mẫu:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. Nếu bạn đặt điều kiện phần trăm trong mẫu Cấu hình từ xa (không bắt buộc), hãy xác định và cung cấp randomizationId mà bạn muốn sử dụng để đánh giá (các) điều kiện trong hàm template.evaluate().

    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 ngẫu nhiên thích hợp. Ví dụ sau là một ví dụ cơ bản, nhưng bạn có thể định cấu hình máy chủ của mình để tạo nhiều randomizationIds cho các yêu cầu khác nhau của ứng dụng, nhằm đảm bảo rằng người dùng được phân phát các giá trị nhất quán từ Cấu hình từ xa dựa trên tư cách thành viên của họ trong các nhóm điều kiện tỷ lệ phần trăm.

    Để biết thêm thông tin về các điều kiện tỷ lệ phần trăm, hãy xem phần Người dùng trong tỷ lệ phần trăm ngẫu nhiên.

    // Set the randomizationId
    const randomizationId = "2ac93c28-c459-4760-963d-a3974ec26c04"
    
    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationId}.
    const config = template.evaluate({
      randomizationId
    });
    
  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ừ Cấu hình từ xa sang định dạng dự kiến. Các loại sau đượ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ủ của mình và muốn thay đổi các mô hình cũng như các tham số của mô hình, bạn nên định cấu hình các tham số cho model_namegenerationConfig. Dưới đây là ví dụ về cách truy cập vào các giá trị của Cấu hình từ xa:

    // 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, chứ không phải môi trường không máy chủ, hãy sử dụng setInterval để định kỳ tải lại mẫu nhằm đảm bảo rằng bạn đang tìm nạp định kỳ mẫu mới nhất từ máy chủ Cấu hình từ xa.

Bước 4: Đặt giá trị thông số theo máy chủ cụ thể trong Cấu hình từ xa

Tiếp theo, hãy tạo một mẫu Cấu hình từ xa máy chủ và định cấu hình các thông số cũng như giá trị để dùng trong ứng dụng của bạn.

Để tạo mẫu Cấu hình từ xa theo máy chủ cụ thể, hãy làm như sau:

  1. Mở trang thông số Cấu hình từ xa trên bảng điều khiển Firebase rồi chọn Máy chủ trong bộ chọn Ứng dụng/Máy chủ.
  2. Xác định thông số Cấu hình từ xa có cùng tên và kiểu dữ liệu với thông số bạn đã xác định trong ứng dụng của mình 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 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ỳ ý thiết lập điều kiện tỷ lệ phần trăm để liên tục áp dụng một giá trị cho các phiên bản mẫu ngẫu nhiên. Để biết thêm thông tin về điều kiện tỷ lệ phần trăm, hãy xem phần Người dùng trong tỷ lệ phần trăm ngẫu nhiên.
  4. Khi bạn thêm xong thông số, hãy nhấp vào Xuất bản các 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 dưới dạng một hàm Cloud hoặc sử dụng Cloud Run

Nếu ứng dụng máy chủ của bạn có trọng lượng nhẹ và hướng sự kiện, bạn nên cân nhắc việc triển khai mã dưới dạng Chức năng đám mây. Ví dụ: giả sử bạn sở hữu một ứng dụng có các cuộc hội thoại với nhân vật sử dụng các API AI tạo sinh như Google AI và Vertex AI. Trong trường hợp này, bạn có thể lưu trữ logic phân phát LLM trong Hàm đám mây mà ứng dụng của bạn gọi theo yêu cầu. Tìm hiểu cách triển khai ứng dụng dưới dạng một Hàm đám mây tại bài viết Bắt đầu: viết, kiểm thử và triển khai các hàm đầu tiên.

Nếu bạn dự định chạy ứng dụng trong thời gian dài (ví dụ: một ứng dụng web có các thành phần), thì 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 trong bài viết Quickstart: 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 phù hợp nhất cho Cloud Run và Chức năng đám mây, hãy tham khảo bài viết Hàm Cloud Run so với Cloud Run: thời điểm sử dụng hàm này thay vì hàm kia.