ใช้การกำหนดค่าระยะไกลฝั่งเซิร์ฟเวอร์กับ Cloud Functions และ Agent Platform

คู่มือนี้อธิบายวิธีเริ่มต้นใช้งาน Cloud Functions รุ่นที่ 2 ด้วย Remote Config ฝั่งเซิร์ฟเวอร์เพื่อเรียกใช้ Agent Platform Gemini API (formerly Vertex AI) ฝั่งเซิร์ฟเวอร์

ในบทแนะนำนี้ คุณจะเพิ่ม Remote Config ลงในฟังก์ชันที่คล้ายแชทบ็อตซึ่งใช้โมเดล Gemini เพื่อตอบคำถามของผู้ใช้ Remote Config จะจัดการอินพุต Gemini API (รวมถึงพรอมต์ที่คุณจะใส่ไว้หน้าคำค้นหาของผู้ใช้ที่เข้ามา) และคุณสามารถอัปเดตอินพุตเหล่านี้ได้ตามต้องการจากคอนโซล Firebase นอกจากนี้ คุณยังจะใช้ Firebase Local Emulator Suite เพื่อทดสอบและแก้ไขข้อบกพร่องของฟังก์ชัน จากนั้นหลังจากยืนยันว่าฟังก์ชันทำงานได้แล้ว คุณจะทำให้ใช้งานได้และทดสอบใน Google Cloud

ข้อกำหนดเบื้องต้น

คู่มือนี้จะถือว่าคุณคุ้นเคยกับการใช้ JavaScript เพื่อพัฒนาแอปพลิเคชัน

ตั้งค่าโปรเจ็กต์ Firebase

หากยังไม่มีโปรเจ็กต์ Firebase ให้ทำดังนี้

  1. ลงชื่อเข้าใช้คอนโซล Firebase

  2. คลิกสร้างโปรเจ็กต์ แล้วใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

    • ตัวเลือกที่ 1: สร้างโปรเจ็กต์ Firebase ใหม่ (และโปรเจ็กต์ Google Cloud ที่เกี่ยวข้องโดยอัตโนมัติ) โดยป้อนชื่อโปรเจ็กต์ใหม่ในขั้นตอนแรกของเวิร์กโฟลว์ "สร้างโปรเจ็กต์"
    • ตัวเลือกที่ 2: "เพิ่ม Firebase" ลงในโปรเจ็กต์ Google Cloud ที่มีอยู่โดยเลือกชื่อโปรเจ็กต์ Google Cloud จากเมนูแบบเลื่อนลงในขั้นตอนแรกของเวิร์กโฟลว์ "สร้างโปรเจ็กต์"
  3. เมื่อได้รับข้อความแจ้ง คุณไม่จำเป็นต้องตั้งค่า Google Analytics เพื่อใช้โซลูชันนี้

  4. ทำตามวิธีการบนหน้าจอต่อไปเพื่อสร้างโปรเจ็กต์

หากมีโปรเจ็กต์ Firebase อยู่แล้ว

ดำเนินการต่อในส่วนกำหนดค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์

กำหนดค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์

คุณจะต้องมีสภาพแวดล้อม Node.js เพื่อเขียนฟังก์ชัน และจะต้องมี Firebase CLI เพื่อติดตั้งใช้งานฟังก์ชันในรันไทม์ Cloud Functions

  1. ติดตั้ง Node.js และ npm

    สำหรับการติดตั้ง Node.js และ npm เราขอแนะนำให้ใช้ เครื่องมือจัดการเวอร์ชัน Node

  2. ติดตั้ง Firebase CLI โดยใช้วิธีที่ต้องการ เช่น หากต้องการติดตั้ง CLI โดยใช้ npm ให้เรียกใช้คำสั่งต่อไปนี้

    npm install -g firebase-tools@latest
    

    คำสั่งนี้จะติดตั้งคำสั่ง firebase ที่ใช้ได้ทั่วโลก หากคำสั่งนี้ไม่สำเร็จ คุณอาจต้องเปลี่ยนสิทธิ์ npm

    หากต้องการอัปเดต firebase-tools เป็นเวอร์ชันล่าสุด ให้เรียกใช้คำสั่งเดิมอีกครั้ง

  3. ติดตั้ง firebase-functions และ firebase-admin แล้วใช้ --save เพื่อบันทึกรายการเหล่านั้นลงใน package.json โดยทำดังนี้

    npm install firebase-functions@latest firebase-admin@latest --save
    

ตอนนี้คุณพร้อมที่จะดำเนินการติดตั้งใช้งานโซลูชันนี้แล้ว

การใช้งาน

ทำตามขั้นตอนต่อไปนี้เพื่อสร้าง ทดสอบ และทำให้ Cloud Functions รุ่นที่ 2 ใช้งานได้ด้วย Remote Config และ Agent Platform

  1. เปิดใช้ API ที่แนะนำ Agent Platform รายการในคอนโซล Google Cloud
  2. เริ่มต้นโปรเจ็กต์และติดตั้งทรัพยากร Dependency ของโหนด
  3. กำหนดค่าสิทธิ์ IAM สำหรับบัญชีบริการ Admin SDK และบันทึกคีย์
  4. สร้างฟังก์ชัน
  5. สร้างเทมเพลต Remote Config สำหรับเซิร์ฟเวอร์ที่เจาะจง
  6. ติดตั้งใช้งานฟังก์ชันและทดสอบใน Firebase Local Emulator Suite
  7. ทำให้ฟังก์ชันใช้งานได้ใน Google Cloud

ขั้นตอนที่ 1: เปิดใช้ API ที่แนะนำ Agent Platform รายการในคอนโซล Google Cloud

  1. เปิดคอนโซล Google Cloud และเมื่อได้รับข้อความแจ้ง ให้เลือกโปรเจ็กต์
  2. ในช่องค้นหาที่ด้านบนของคอนโซล ให้ป้อน Agent Platform แล้วรอให้ Agent Platform ปรากฏเป็นผลลัพธ์
  3. เลือก Agent Platform แดชบอร์ด Agent Platform จะปรากฏขึ้น
  4. คลิกเปิดใช้ API ที่แนะนำทั้งหมด

    การเปิดใช้ API อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ เปิดหน้านี้ไว้และใช้งานอยู่จนกว่าการเปิดใช้จะเสร็จสิ้น

  5. หากไม่ได้เปิดใช้การเรียกเก็บเงิน ระบบจะแจ้งให้คุณเพิ่มหรือลิงก์บัญชี Cloud Billing หลังจากเปิดใช้บัญชีสำหรับการเรียกเก็บเงินแล้ว ให้กลับไปที่แดชบอร์ด Agent Platform และยืนยันว่าได้เปิดใช้ API ที่แนะนำทั้งหมดแล้ว

ขั้นตอนที่ 2: เริ่มต้นโปรเจ็กต์และติดตั้งทรัพยากร Dependency ของโหนด

  1. เปิดเทอร์มินัลในคอมพิวเตอร์และไปที่ไดเรกทอรีที่คุณวางแผนจะสร้างฟังก์ชัน
  2. เข้าสู่ระบบ Firebase โดยทำดังนี้

    firebase login
    
  3. เรียกใช้คำสั่งต่อไปนี้เพื่อเริ่มต้น Cloud Functions for Firebase

    firebase init functions
    
  4. เลือกใช้โปรเจ็กต์ที่มีอยู่ แล้วระบุรหัสโปรเจ็กต์

  5. เมื่อระบบแจ้งให้เลือกภาษาที่จะใช้ ให้เลือก Javascript แล้วกด Enter

  6. สำหรับตัวเลือกอื่นๆ ทั้งหมด ให้เลือกค่าเริ่มต้น

    ระบบจะสร้างไดเรกทอรี functions ในไดเรกทอรีปัจจุบัน ภายใน คุณจะเห็นไฟล์ index.js ที่จะใช้สร้างฟังก์ชัน ไดเรกทอรี node_modules ที่มีทรัพยากร Dependency สำหรับฟังก์ชัน และไฟล์ package.json ที่มีทรัพยากร Dependency ของแพ็กเกจ

  7. เพิ่มแพ็กเกจ Admin SDK และ Agent Platform โดยเรียกใช้คำสั่งต่อไปนี้ โดยใช้ --save เพื่อให้แน่ใจว่าระบบบันทึกไว้ในไฟล์ package.json:

    cd functions
    npm install firebase-admin@latest @google-cloud/vertexai --save
    

ตอนนี้ไฟล์ functions/package.json ควรมีลักษณะดังต่อไปนี้ โดยระบุเวอร์ชันล่าสุดไว้

  {
    "name": "functions",
    "description": "Cloud Functions for Firebase",
    "scripts": {
      "serve": "firebase emulators:start --only functions",
      "shell": "firebase functions:shell",
      "start": "npm run shell",
      "deploy": "firebase deploy --only functions",
      "logs": "firebase functions:log"
    },
    "engines": {
      "node": "20"
    },
    "main": "index.js",
    "dependencies": {
      "@google-cloud/vertexai": "^1.1.0",
      "firebase-admin": "^12.1.0",
      "firebase-functions": "^5.0.0"
    },
    "devDependencies": {
      "firebase-functions-test": "^3.1.0"
    },
    "private": true
  }

โปรดทราบว่าหากใช้ ESLint คุณจะเห็นส่วนที่รวม ESLint ไว้ด้วย นอกจากนี้ โปรดตรวจสอบว่าเวอร์ชันของเครื่องมือโหนดตรงกับเวอร์ชันของ Node.js ที่ติดตั้งและเวอร์ชันที่คุณเรียกใช้ใน Google Cloud เช่น หากกำหนดค่า stanza engines ใน package.json เป็น Node เวอร์ชัน 18 และคุณใช้ Node.js 20 ให้อัปเดตไฟล์เพื่อใช้ 20 ดังนี้

  "engines": {
    "node": "20"
  },

ขั้นตอนที่ 3: กำหนดค่าสิทธิ์ IAM สำหรับบัญชีบริการ Admin SDK และบันทึกคีย์

ในโซลูชันนี้ คุณจะใช้บัญชีบริการ Firebase Admin SDK เพื่อเรียกใช้ฟังก์ชัน

  1. ในคอนโซล Google Cloud ให้เปิดหน้า IAM และผู้ดูแลระบบ แล้วค้นหาบัญชีบริการ Admin SDK (ชื่อ firebase-adminsdk)
  2. เลือกบัญชีแล้วคลิกแก้ไขผู้ใช้หลัก หน้าแก้ไขสิทธิ์เข้าถึงจะปรากฏขึ้น
  3. คลิกเพิ่มบทบาทอื่น แล้วเลือกผู้มีสิทธิ์ดู Remote Config
  4. คลิกเพิ่มบทบาทอื่น แล้วเลือกนักพัฒนาแพลตฟอร์ม AI
  5. คลิกเพิ่มบทบาทอื่น แล้วเลือกผู้ใช้ Agent Platform
  6. คลิกเพิ่มบทบาทอื่น แล้วเลือก Cloud Run Invoker
  7. คลิกบันทึก

ถัดไป ให้ส่งออกข้อมูลเข้าสู่ระบบสำหรับบัญชีบริการ Admin SDK และบันทึกไว้ในตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS

  1. ในคอนโซล Google Cloud ให้เปิดหน้าข้อมูลเข้าสู่ระบบ
  2. คลิกบัญชีบริการ Admin SDK เพื่อเปิดหน้ารายละเอียด
  3. คลิกคีย์
  4. คลิกเพิ่มคีย์ > สร้างคีย์ใหม่
  5. ตรวจสอบว่าได้เลือก JSON เป็นประเภทคีย์ แล้วคลิกสร้าง
  6. ดาวน์โหลดคีย์ไปยังตำแหน่งที่ปลอดภัยในคอมพิวเตอร์
  7. จากเทอร์มินัล ให้ส่งออกคีย์เป็นตัวแปรสภาพแวดล้อม โดยทำดังนี้

    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
    

ขั้นตอนที่ 4: สร้างฟังก์ชัน

ในขั้นตอนนี้ คุณจะสร้างฟังก์ชันที่จัดการอินพุตของผู้ใช้และสร้างคำตอบที่ทำงานด้วยระบบ AI คุณจะรวมข้อมูลโค้ดหลายรายการเพื่อสร้างฟังก์ชันที่ครอบคลุมซึ่งจะเริ่มต้น Admin SDK และ Agent Platform Gemini API (formerly Vertex AI), กำหนดค่าพารามิเตอร์เริ่มต้นโดยใช้ Remote Config, ดึงข้อมูลพารามิเตอร์ Remote Config ล่าสุด, ประมวลผลข้อมูลที่ผู้ใช้ป้อน และสตรีมคำตอบกลับไปยังผู้ใช้

  1. ในฐานของโค้ด ให้เปิด functions/index.js ในเครื่องมือแก้ไขข้อความหรือ IDE
  2. ลบเนื้อหาที่มีอยู่ แล้วเพิ่ม SDK ของ Admin SDK, Remote Config และ Agent Platform จากนั้นเริ่มต้นแอปโดยวางโค้ดต่อไปนี้ลงในไฟล์

    const { onRequest } = require("firebase-functions/https");
    const { requiresRole, requiresAPI } = require("firebase-functions");
    const logger = require("firebase-functions/logger");
    
    const { initializeApp } = require("firebase-admin/app");
    const { VertexAI } = require('@google-cloud/vertexai');
    const { getRemoteConfig } = require("firebase-admin/remote-config");
    
    requiresRole("roles/aiplatform.user");
    requiresRole("roles/cloudconfig.viewer");
    requiresAPI("aiplatform.googleapis.com", "Needed to query Vertex AI Gemini models");
    requiresAPI("firebaseremoteconfig.googleapis.com", "Needed to fetch server-side Remote Config templates");
    
    // Set and check environment variables.
    const project = process.env.GCLOUD_PROJECT;
    
    // Initialize Firebase.
    const app = initializeApp();
    
  3. กำหนดค่าเริ่มต้นที่ฟังก์ชันจะใช้หากเชื่อมต่อกับเซิร์ฟเวอร์ Remote Config ไม่ได้ โซลูชันนี้จะกำหนดค่า textModel, generationConfig, safetySettings, textPrompt และ location เป็นพารามิเตอร์ Remote Config ที่สอดคล้องกับพารามิเตอร์ Remote Config ซึ่งคุณจะกำหนดค่าเพิ่มเติมในคู่มือนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้ได้ที่ไคลเอ็นต์ Vertex AI Node.js

    นอกจากนี้ คุณยังกำหนดค่าพารามิเตอร์เพื่อควบคุมว่าจะเข้าถึง Agent Platform Gemini API (formerly Vertex AI) หรือไม่ (ในตัวอย่างนี้คือพารามิเตอร์ชื่อ vertex_enabled) การตั้งค่านี้จะมีประโยชน์เมื่อทดสอบฟังก์ชัน ในข้อมูลโค้ดต่อไปนี้ ค่านี้จะตั้งเป็น false ซึ่งจะข้ามการใช้ Agent Platform ขณะที่คุณทดสอบการติดตั้งใช้งานฟังก์ชันพื้นฐาน การตั้งค่าเป็น true จะเรียกใช้ Agent Platform Gemini API (formerly Vertex AI)

    // Define default (fallback) parameter values for Remote Config.
    const defaultConfig = {
    
      // Default values for Vertex AI.
      model_name: "gemini-1.5-flash-002",
      generation_config: [{
        "stopSequences": [], "temperature": 0.7,
        "maxOutputTokens": 64, "topP": 0.1, "topK": 20
      }],
      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!",
      safety_settings: [{
        "category":
          "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT",
        "threshold": "HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE"
      }],
      location: 'us-central1',
    
      // Disable Vertex AI Gemini API access for testing.
      vertex_enabled: false
    };
    
  4. สร้างฟังก์ชันและตั้งค่า ฝั่งเซิร์ฟเวอร์ Remote Config ดังนี้

    // Export the function.
    exports.generateWithVertex = onRequest(async (request, response) => {
    
      try {
    
        // Set up Remote Config.
        const rc = getRemoteConfig(app);
    
        // Get the Remote Config template and assign default values.
        const template = await rc.getServerTemplate({
          defaultConfig: defaultConfig
        });
    
        // Add the template evaluation to a constant.
        const config = template.evaluate();
    
        // Obtain values from Remote Config.
        const textModel = config.getString("model_name") ||
            defaultConfig.model_name;
        const textPrompt = config.getString("prompt") || defaultConfig.prompt;
        const generationConfig = config.getString("generation_config") ||
            defaultConfig.generation_config;
        const safetySettings = config.getString("safety_settings") ||
            defaultConfig.safety_settings;
        const location = config.getString("location") ||
            defaultConfig.location;
        const vertexEnabled = config.getBoolean("is_vertex_enabled") ||
            defaultConfig.vertex_enabled;
    
  5. ตั้งค่า Agent Platform และเพิ่มตรรกะการแชทและการตอบกลับ ดังนี้

      // Allow user input.
      const userInput = request.query.prompt || '';
    
      // Instantiate Vertex AI.
        const vertex_ai = new VertexAI({ project: project, location: location });
        const generativeModel = vertex_ai.getGenerativeModel({
          model: textModel,
          safety_settings: safetySettings,
          generation_config: generationConfig,
        });
    
        // Combine prompt from Remote Config with optional user input.
        const chatInput = textPrompt + " " + userInput;
    
        if (!chatInput) {
          return res.status(400).send('Missing text prompt');
        }
        // If vertexEnabled isn't true, do not send queries to Vertex AI.
        if (vertexEnabled !== true) {
          response.status(200).send({
            message: "Vertex AI call skipped. Vertex is not enabled."
          });
          return;
        }
    
        logger.log("\nRunning with model ", textModel, ", prompt: ", textPrompt,
          ", generationConfig: ", generationConfig, ", safetySettings: ",
          safetySettings, " in ", location, "\n");
    
        const result = await generativeModel.generateContentStream(chatInput); 
        response.writeHead(200, { 'Content-Type': 'text/plain' });
    
        for await (const item of result.stream) {
          const chunk = item.candidates[0].content.parts[0].text;
          logger.log("Received chunk:", chunk);
          response.write(chunk);
        }
    
        response.end();
    
      } catch (error) {
        logger.error(error);
        response.status(500).send('Internal server error');
      }
    });
    
  6. บันทึกและปิดไฟล์

ขั้นตอนที่ 5: สร้างเทมเพลต Remote Config สำหรับเซิร์ฟเวอร์โดยเฉพาะ

ถัดไป ให้สร้างเทมเพลต Remote Config ฝั่งเซิร์ฟเวอร์ แล้วกำหนดค่าพารามิเตอร์และค่าที่จะใช้ในฟังก์ชัน วิธีสร้างเทมเพลต Remote Config เฉพาะเซิร์ฟเวอร์

  1. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล

  2. จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้า ให้เลือกเซิร์ฟเวอร์

    • หากใช้ Remote Config หรือเทมเพลตเซิร์ฟเวอร์เป็นครั้งแรก ให้คลิกสร้างการกำหนดค่า แผงสร้างพารามิเตอร์ฝั่งเซิร์ฟเวอร์รายการแรกจะปรากฏขึ้น
    • หากไม่ได้ใช้เทมเพลตเซิร์ฟเวอร์ Remote Config เป็นครั้งแรก ให้คลิกเพิ่มพารามิเตอร์
  3. กำหนดพารามิเตอร์ Remote Config ต่อไปนี้

    ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น
    model_name ชื่อโมเดล
    ดูรายการชื่อโมเดลล่าสุดที่จะใช้ในโค้ดได้ที่เวอร์ชันและวงจรของโมเดลหรือชื่อโมเดลที่พร้อมใช้งาน
    สตริง gemini-2.0-flash
    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!
    generation_config พารามิเตอร์ที่จะส่งไปยังโมเดล JSON [{"stopSequences": ["I hope this helps"],"temperature": 0.7,"maxOutputTokens": 512, "topP": 0.1,"topK": 20}]
    safety_settings การตั้งค่าความปลอดภัยสำหรับ Agent Platform JSON [{"category": "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "HarmBlockThreshold.BLOCK_LOW_AND_ABOVE"}]
    location สถานที่ที่จะเรียกใช้บริการและโมเดล Agent Platform สตริง global
    is_vertex_enabled พารามิเตอร์ที่ไม่บังคับซึ่งควบคุมว่าจะส่งคำค้นหาไปยัง Agent Platform หรือไม่ บูลีน true
  4. เมื่อเพิ่มพารามิเตอร์เสร็จแล้ว ให้ตรวจสอบพารามิเตอร์อีกครั้งและตรวจสอบว่าประเภทข้อมูลถูกต้อง จากนั้นคลิกเผยแพร่การเปลี่ยนแปลง

ขั้นตอนที่ 6: ติดตั้งใช้งานฟังก์ชันและทดสอบใน Firebase Local Emulator Suite

ตอนนี้คุณพร้อมที่จะติดตั้งใช้งานและทดสอบฟังก์ชันในเครื่องด้วย Firebase Local Emulator Suite แล้ว

  1. ตรวจสอบว่าคุณได้ตั้งค่า GOOGLE_APPLICATION_CREDENTIALS เป็นตัวแปรสภาพแวดล้อมตามที่อธิบายไว้ในขั้นตอนที่ 3: กำหนดค่าสิทธิ์ IAM สำหรับบัญชีบริการ Admin SDK และบันทึกคีย์ จากนั้นให้ติดตั้งใช้งานฟังก์ชันในโปรแกรมจำลอง Firebase จากไดเรกทอรีระดับบนของไดเรกทอรี functions ดังนี้

    firebase emulators:start --project PROJECT_ID --only functions
    
  2. เปิดหน้าบันทึกของโปรแกรมจำลอง ซึ่งควรแสดงว่าฟังก์ชันโหลดแล้ว

  3. เข้าถึงฟังก์ชันโดยเรียกใช้คำสั่งต่อไปนี้ โดยที่ PROJECT_ID คือรหัสโปรเจ็กต์ และ LOCATION คือภูมิภาคที่คุณทำให้ฟังก์ชันใช้งานได้ (เช่น us-central1)

    curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex
    
  4. รอการตอบกลับ จากนั้นกลับไปที่หน้าบันทึกของ Firebase Emulator หรือคอนโซล แล้วตรวจสอบข้อผิดพลาดหรือคำเตือน

  5. ลองส่งข้อมูลที่ผู้ใช้ป้อน โดยโปรดทราบว่าเนื่องจากมีการกำหนดค่า is_vertex_enabled ในเทมเพลตเซิร์ฟเวอร์ Remote Config การดำเนินการนี้จึงควรเข้าถึงโมเดล Gemini ผ่าน Agent Platform Gemini API (formerly Vertex AI) และอาจมีค่าใช้จ่าย:

    curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20cats
    
  6. ทำการเปลี่ยนแปลงเทมเพลตเซิร์ฟเวอร์ Remote Config ในคอนโซล Firebase จากนั้นเข้าถึงฟังก์ชันอีกครั้งเพื่อดูการเปลี่ยนแปลง

ขั้นตอนที่ 7: ติดตั้งใช้งานฟังก์ชันใน Google Cloud

หลังจากทดสอบและยืนยันฟังก์ชันแล้ว คุณก็พร้อมที่จะทำให้ใช้งานได้ใน Google Cloud และทดสอบฟังก์ชันที่ใช้งานจริง

ติดตั้งใช้งานฟังก์ชัน

ทำให้ฟังก์ชันใช้งานได้โดยใช้ Firebase CLI:

firebase deploy --only functions

บล็อกการเข้าถึงฟังก์ชันที่ไม่ผ่านการตรวจสอบสิทธิ์

เมื่อติดตั้งใช้งานฟังก์ชันโดยใช้ Firebase ระบบจะอนุญาตการเรียกใช้ที่ไม่ได้ตรวจสอบสิทธิ์โดยค่าเริ่มต้น หากนโยบายขององค์กรไม่ได้จำกัดไว้ ในระหว่างการทดสอบและก่อนที่จะรักษาความปลอดภัยด้วย App Check เราขอแนะนำให้บล็อกการเข้าถึงที่ไม่ผ่านการตรวจสอบสิทธิ์

วิธีบล็อกการเข้าถึงฟังก์ชันโดยไม่ผ่านการตรวจสอบสิทธิ์

  1. เปิด Cloud Run ในคอนโซล Google Cloud

  2. คลิก generateWithVertex แล้วคลิกแท็บความปลอดภัย

  3. เปิดใช้ต้องมีการตรวจสอบสิทธิ์ แล้วคลิกบันทึก

กำหนดค่าบัญชีผู้ใช้เพื่อใช้ข้อมูลเข้าสู่ระบบของบัญชีบริการ Admin SDK

เนื่องจากบัญชีบริการ Admin SDK มีบทบาทและสิทธิ์ที่จำเป็นทั้งหมดในการเรียกใช้ฟังก์ชันและโต้ตอบกับ Remote Config และ Agent Platform Gemini API (formerly Vertex AI) คุณจึงควรใช้บัญชีบริการนี้เพื่อเรียกใช้ฟังก์ชัน โดยคุณต้องสร้างโทเค็นสำหรับบัญชีจากบัญชีผู้ใช้ของคุณได้

ขั้นตอนต่อไปนี้อธิบายวิธีกำหนดค่าบัญชีผู้ใช้และฟังก์ชันให้ทำงานด้วยสิทธิ์ของบัญชีบริการ Admin SDK

  1. ในคอนโซล Google Cloud ให้เปิดใช้ IAM Service Account Credentials API
  2. มอบบทบาทผู้สร้างโทเค็นบัญชีบริการให้กับบัญชีผู้ใช้ของคุณ โดยเปิด IAM และผู้ดูแลระบบ > IAM จากคอนโซล Google Cloud เลือกบัญชีผู้ใช้ แล้วคลิกแก้ไขผู้ใช้หลัก > เพิ่มบทบาทอื่น
  3. เลือกผู้สร้างโทเค็นบัญชีบริการ แล้วคลิกบันทึก

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการแอบอ้างเป็นบัญชีบริการได้ที่หัวข้อการแอบอ้างเป็นบัญชีบริการในเอกสารประกอบของ Google Cloud

  4. เปิดหน้าคอนโซล Google Cloud Cloud Functions แล้วคลิกฟังก์ชัน generateWithVertex ในรายการฟังก์ชัน

  5. เลือกทริกเกอร์ > แก้ไข แล้วขยายรันไทม์ บิลด์ การเชื่อมต่อ และการตั้งค่าความปลอดภัย

  6. จากแท็บรันไทม์ ให้เปลี่ยนบัญชีบริการรันไทม์เป็นบัญชี Admin SDK

  7. คลิกถัดไป แล้วคลิกติดตั้งใช้งาน

ตั้งค่า gcloud CLI

หากต้องการเรียกใช้และทดสอบฟังก์ชันจากบรรทัดคำสั่งอย่างปลอดภัย คุณจะต้องตรวจสอบสิทธิ์ด้วยบริการ Cloud Functions และรับโทเค็นการตรวจสอบสิทธิ์ที่ถูกต้อง

หากต้องการเปิดใช้การสร้างโทเค็น ให้ติดตั้งและกำหนดค่า gcloud CLI โดยทำดังนี้

  1. หากยังไม่ได้ติดตั้ง gcloud CLI ในคอมพิวเตอร์ ให้ติดตั้งตามที่อธิบายไว้ในหัวข้อติดตั้ง gcloud CLI

  2. รับข้อมูลเข้าสู่ระบบสำหรับบัญชี Google Cloud ของคุณโดยทำดังนี้

    gcloud auth login
    
  3. ตั้งค่ารหัสโปรเจ็กต์ใน gcloud โดยทำดังนี้

    gcloud config set project PROJECT_ID
    

ทดสอบฟังก์ชัน

ตอนนี้คุณพร้อมที่จะทดสอบฟังก์ชันใน Google Cloud แล้ว หากต้องการทดสอบฟังก์ชัน ให้เรียกใช้คำสั่งต่อไปนี้

curl -X POST https://LOCATION-PROJECT_ID.cloudfunctions.net/generateWithVertex \
  -H "Authorization: bearer $(gcloud auth print-identity-token)" \
  -H "Content-Type: application/json"

ลองอีกครั้งโดยใช้ข้อมูลที่ผู้ใช้ระบุ

curl -X POST https://LOCATION-PROJECT_ID.cloudfunctions.net/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20dogs \
 -H "Authorization: bearer $(gcloud auth print-identity-token)" \
 -H "Content-Type: application/json"

ตอนนี้คุณสามารถทำการเปลี่ยนแปลงเทมเพลตเซิร์ฟเวอร์ Remote Config เผยแพร่การเปลี่ยนแปลงเหล่านั้น และทดสอบตัวเลือกต่างๆ ได้แล้ว

ขั้นตอนถัดไป