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

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

ในบทแนะนํานี้ คุณจะได้เพิ่ม 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 Version Manager

  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 และ Vertex AI

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

ขั้นตอนที่ 1: เปิดใช้ Vertex AIAPI ที่แนะนําในคอนโซล Google Cloud

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

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

  5. หากไม่ได้เปิดใช้การเรียกเก็บเงิน ระบบจะแจ้งให้เพิ่มหรือลิงก์บัญชี Cloud Billing หลังจากเปิดใช้บัญชีการเรียกเก็บเงินแล้ว ให้กลับไปที่Vertex AIแดชบอร์ด แล้วตรวจสอบว่าได้เปิดใช้ API ที่แนะนําทั้งหมดแล้ว

ขั้นตอนที่ 2: เริ่มต้นโปรเจ็กต์และติดตั้ง Node Dependencies

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

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

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

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

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

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

    const { onRequest } = require("firebase-functions/v2/https");
    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");
    
    // 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 ที่คุณกําหนดค่าเพิ่มเติมในคู่มือนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้ได้ที่ไคลเอ็นต์ Node.js ของ Vertex AI

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

    // 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. ตั้งค่า Vertex AI และเพิ่มตรรกะการแชทและการตอบกลับ

      // 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 แล้วขยายเรียกใช้จากเมนูการนำทาง แล้วเลือก Remote Config
  2. เลือกเซิร์ฟเวอร์จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้า Remote Config

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

    ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น
    model_name ชื่อโมเดล
    ดูรายการชื่อโมเดลล่าสุดที่จะใช้ในโค้ดได้ที่เวอร์ชันและวงจรชีวิตของโมเดลหรือชื่อโมเดลที่ใช้ได้
    สตริง gemini-1.5-flash-002
    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 การตั้งค่าความปลอดภัยสำหรับ Vertex AI JSON [{"category": "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "HarmBlockThreshold.BLOCK_LOW_AND_ABOVE"}]
    location ตำแหน่งเพื่อเรียกใช้Vertex AIบริการและโมเดล สตริง us-central1
    is_vertex_enabled พารามิเตอร์ที่ไม่บังคับซึ่งควบคุมว่าจะส่งการค้นหาไปยัง Vertex AI หรือไม่ บูลีน true
  4. เมื่อเพิ่มพารามิเตอร์เสร็จแล้ว ให้ตรวจสอบพารามิเตอร์อีกครั้งและดูว่าประเภทข้อมูลถูกต้อง จากนั้นคลิกเผยแพร่การเปลี่ยนแปลง

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

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

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

    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 หรือคอนโซลเพื่อตรวจสอบข้อผิดพลาดหรือคำเตือน

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

    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. ในคอนโซล Google Cloud ให้เปิด Cloud Run

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

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

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

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

ขั้นตอนต่อไปนี้อธิบายวิธีกำหนดค่าบัญชีผู้ใช้และฟังก์ชันให้ทำงานด้วยสิทธิ์ของบัญชีบริการ 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 เผยแพร่การเปลี่ยนแปลงเหล่านั้น และทดสอบตัวเลือกต่างๆ ได้แล้ว

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