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 dành cho quản trị viên của Firebase phiên bản 12.1.0 trở lên. Chức năng mới này hỗ trợ bạn để quản lý động hành vi và cấu hình của phía máy chủ ứng dụng bằng Cấu hình từ xa. Điều này bao gồm cả việc triển khai mô hình không máy chủ như Cloud Functions.

Không giống như các SDK ứng dụng Firebase tìm nạp cấu hình dành riêng cho ứng dụng lấy từ mẫu Cấu hình từ xa, phía máy chủ SDK Cấu hình từ xa sẽ tải một mẫu Cấu hình từ xa hoàn chỉnh xuống 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 đượ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ố, câu lệnh và công cụ tích hợp khác của mô hình AI để đảm bảo Khoá API luôn an toàn.
  • Linh động điều chỉnh các thông số để phản hồi các thay đổi trong môi trường hoặc những thay đổi khác đối với ứ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 khách hàng truy cập vào máy chủ.
  • Ghi lại những khách hàng đã nhận được giá trị thông số và sử dụng giá trị này trong Chức năng đám mây là một phần của hệ thống xác minh quyền.

Bạn có thể triển khai Cấu hình từ xa phía máy chủ trên Cloud Run, Chức năng đám mây 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 bài viết Thêm SDK quản trị Firebase vào máy chủ để tạo một Firebase dự án, thiết lập tài khoản dịch vụ và thêm SDK Node.js dành cho quản trị viên Firebase vào máy chủ của bạn.

Bước 1: Khởi chạy SDK Node.js dành cho quản trị viên của 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ố, SDK này sẽ sử dụng Google Mặc định của ứng dụng Thông tin xác thực và đọc các tuỳ chọn trong môi trường GOOGLE_APPLICATION_CREDENTIALS biến. 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ị tham số mặc định cho ứng dụng máy chủ của bạn

Xác định các biến trong ứng dụng mà bạn muốn cập nhật một cách linh động Cấu hình từ xa. Sau đó, hãy xem xét 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. Đ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ợ Cấu hình từ xa bị gián đoạn.

Ví dụ: nếu bạn đang viết một ứng dụng máy chủ quản lý một chức năng AI tạo sinh, bạn có thể đặt tên mô hình mặc định, lời mở đầu câu lệnh, và một cấu hình AI tạo sinh, chẳng hạn như:

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-1.5-pro
preamble_prompt Lời nhắc thêm vào đầu truy vấn 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 Thông 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ố mà bạn muốn sử dụng cùng Cấu hình từ xa, đị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 đó. Chiến lược phát hành đĩa đơn 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ộ để tìm nạp và tải mẫu ở một bước duy nhất:

    // 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ợ Cấu hình từ xa bị gián đoạn, hãy thêm giá trị mặc định cho từng thông số cho ứng dụng của bạn. Để thực hiện 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à các giá trị từ mẫu:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. Không bắt buộc, nếu bạn đặt percentage các điều kiện trong mẫu Cấu hình từ xa, 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 của mình trong template.evaluate().

    Ví dụ: bạn có thể đặt chế độ cài đặt Firebase Mã nhận dạng randomizationId hoặc user ID để đảm bảo rằng mỗi người dùng các địa chỉ liên hệ mà máy chủ của bạn sẽ được thêm vào nhóm ngẫu nhiên thích hợp. Chiến lược phát hành đĩa đơn sau đây là một ví dụ cơ bản, nhưng bạn có thể định cấu hình máy chủ để tạo randomizationIds khác cho ứng dụng khác nhau để đảm bảo người dùng nhận được 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ọ theo điều kiện tỷ lệ phần trăm nhó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 chế độ ngẫu nhiên phần trăm.

    // 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ị thông số mà bạn cần từ hằng số config. Sử dụng getters để truyền các giá trị từ Cấu hình từ xa vào . Các loại sau đượ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 và tham số mô hình, bạn có thể muốn định cấu hình các tham số cho model_namegenerationConfig. Sau đây là một ví dụ về cách bạn có thể 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 hoạt động trong thời gian dài, trái ngược với môi trường không máy chủ, sử dụng setInterval để tải lại mẫu theo định kỳ nhằm đảm bảo rằng bạn sẽ 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ố dành riêng cho máy chủ trong Cấu hình từ xa

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

Cách tạo mẫu Cấu hình từ xa dành riêng cho máy chủ:

  1. Mở các thông số Cấu hình từ xa trên bảng điều khiển của Firebase và từ Bộ chọn Ứng dụng/Máy chủ, chọn 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 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 các giá trị sẽ ghi đè defaultConfig mà bạn đặt trong phần Định cấu hình máy chủ khi tìm nạp và đánh giá mẫu và chỉ định các giá trị này cho các biến của bạn.
  3. (Không bắt buộc) Bạn có thể đặt điều kiện tỷ lệ phần trăm để áp dụng liên tục giá trị cho một mẫu thực thể ngẫu nhiên. Để biết thêm thông tin về tỷ lệ phần trăm điều kiện, xem Người dùng trong ngẫu nhiên phần trăm.
  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 bằng Cloud Functions hoặc Cloud Run

Nếu ứng dụng máy chủ của bạn nhẹ và hướng sự kiện, bạn nên cân nhắc triển khai mã bằng cách sử dụng Chức năng đám mây. Ví dụ: giả sử bạn có một ứng dụng chứa hội thoại của nhân vật dựa trên công nghệ AI tạo sinh API (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 (mô hình ngôn ngữ lớn) trong một chức năng mà ứng dụng của bạn gọi theo yêu cầu.

Nếu ứng dụng của bạn dự định sẽ chạy trong thời gian dài (ví dụ: ứng dụng web có nội dung), bạn có thể cân nhắc sử dụng Cloud Run. Để triển khai ứng dụng máy chủ của bạn bằng Cloud Run, hãy làm theo hướng dẫn trong bài viết Bắt đầu nhanh: Triển khai Dịch vụ Node.js đến Đám mây Chạy.

Để 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: thời điểm sử dụng một trên khác.