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

คู่มือนี้อธิบายวิธีเริ่มต้นใช้งาน Cloud Functions กับการกำหนดค่าระยะไกลฝั่งเซิร์ฟเวอร์เพื่อเรียกฝั่งเซิร์ฟเวอร์ไปยัง Vertex AI Gemini API

ในบทแนะนำนี้ คุณได้เพิ่มการกำหนดค่าระยะไกลไปยังฟังก์ชันคล้ายแชทบ็อตที่ใช้โมเดล Gemini ในการตอบคำถามของผู้ใช้ การกำหนดค่าระยะไกลจะจัดการอินพุต 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 เราขอแนะนำให้ใช้เครื่องมือจัดการเวอร์ชันโหนด

  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 ด้วยการกำหนดค่าระยะไกลและ Vertex AI

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

ขั้นตอนที่ 1: เปิดใช้ API ที่แนะนำของ Vertex AI ในคอนโซล Google Cloud

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

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

  5. หากไม่ได้เปิดใช้การเรียกเก็บเงิน ระบบจะแจ้งให้เพิ่มหรือลิงก์บัญชีสำหรับการเรียกเก็บเงินใน Cloud หลังจากเปิดใช้บัญชีสำหรับการเรียกเก็บเงิน ให้กลับไปที่หน้าแดชบอร์ด Vertex AI และยืนยันว่าได้เปิดใช้ 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 และแพ็กเกจ Vertex AI โดยเรียกใช้คำสั่งต่อไปนี้โดยใช้ --save เพื่อให้มั่นใจว่าระบบจะบันทึก SDK ลงในไฟล์ 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 คุณจะเห็น stanza ที่มีคำว่า ESLint อยู่ นอกจากนี้ ให้ตรวจสอบว่าเวอร์ชัน Node Engine ตรงกับเวอร์ชันที่ติดตั้งของ Node.js และเวอร์ชันที่คุณเรียกใช้บน Google Cloud ในท้ายที่สุด ตัวอย่างเช่น หากกำหนดค่า engines stanza ใน package.json เป็นโหนดเวอร์ชัน 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. คลิกเพิ่มบทบาทอื่น แล้วเลือกผู้ดูการกำหนดค่าระยะไกล
  4. คลิกเพิ่มบทบาทอื่น แล้วเลือกนักพัฒนา AI Platform
  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, กำหนดค่าพารามิเตอร์เริ่มต้นโดยใช้ การกำหนดค่าระยะไกล, ดึงข้อมูลพารามิเตอร์การกำหนดค่าระยะไกลล่าสุด, ประมวลผลอินพุตของผู้ใช้ และสตรีมคำตอบกลับไปให้ผู้ใช้

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

    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. กำหนดค่าเริ่มต้นที่ฟังก์ชันจะใช้หากเชื่อมต่อกับเซิร์ฟเวอร์การกำหนดค่าระยะไกลไม่ได้ โซลูชันนี้กำหนดค่า textModel, generationConfig, safetySettings, textPrompt และ location เป็นพารามิเตอร์การกำหนดค่าระยะไกลที่สอดคล้องกับพารามิเตอร์การกำหนดค่าระยะไกลที่คุณจะกำหนดค่าเพิ่มเติมในคู่มือนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้ได้ที่ไคลเอ็นต์ Vertex AI Node.js

    นอกจากนี้ คุณยังกำหนดค่าพารามิเตอร์เพื่อควบคุมว่าจะเข้าถึง 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-preview-0514",
      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. สร้างฟังก์ชันและตั้งค่าการกำหนดค่าระยะไกลฝั่งเซิร์ฟเวอร์ โดยทำดังนี้

    // 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: สร้างเทมเพลตการกำหนดค่าระยะไกลเฉพาะเซิร์ฟเวอร์

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

  1. เปิดคอนโซล Firebase จากเมนูการนำทาง ให้ขยายเรียกใช้ แล้วเลือกการกำหนดค่าระยะไกล
  2. เลือกเซิร์ฟเวอร์จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้าการกำหนดค่าระยะไกล

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

    ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น
    model_name ชื่อโมเดล
    ดูรายการชื่อโมเดลล่าสุดสำหรับใช้ในโค้ดได้ที่เวอร์ชันและวงจรโมเดลหรือชื่อโมเดลที่ใช้ได้
    สตริง gemini-1.5-pro-preview-0514
    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 และบันทึกคีย์ จากนั้น ทำให้ฟังก์ชันใช้งานได้ในโปรแกรมจำลอง 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 ในเทมเพลตเซิร์ฟเวอร์การกำหนดค่าระยะไกล การดำเนินการนี้ควรเข้าถึง Gemini ผ่าน Vertex AI Gemini API และอาจมีค่าใช้จ่าย

    curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20cats
    
  6. ทำการเปลี่ยนแปลงเทมเพลตเซิร์ฟเวอร์การกำหนดค่าระยะไกลบน คอนโซล 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 มีบทบาทและสิทธิ์ที่จำเป็นทั้งหมดในการเรียกใช้ฟังก์ชันและโต้ตอบกับการกำหนดค่าระยะไกลและ Vertex AI Gemini API คุณจึงต้องใช้บัญชีเพื่อเรียกใช้ฟังก์ชัน ในการดำเนินการนี้ คุณต้องสามารถสร้างโทเค็นสำหรับบัญชีจากบัญชีผู้ใช้ของคุณ

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

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

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

  4. เปิดหน้า Cloud Functions สำหรับคอนโซล Google Cloud และคลิกฟังก์ชัน 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"

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

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