คู่มือนี้จะอธิบายวิธีเริ่มต้นใช้งาน รุ่นที่ 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
ลงชื่อเข้าใช้คอนโซล Firebase
คลิกสร้างโปรเจ็กต์ แล้วใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้
- ตัวเลือกที่ 1: สร้างโปรเจ็กต์ Firebase ใหม่ (และโปรเจ็กต์Google Cloudที่เกี่ยวข้องโดยอัตโนมัติ) โดยป้อนชื่อโปรเจ็กต์ใหม่ในขั้นตอนแรกของเวิร์กโฟลว์ "สร้างโปรเจ็กต์"
- ตัวเลือกที่ 2: "เพิ่ม Firebase" ลงในโปรเจ็กต์ Google Cloud ที่มีอยู่โดยเลือกชื่อโปรเจ็กต์ Google Cloud จากเมนูแบบเลื่อนลงในขั้นตอนแรกของเวิร์กโฟลว์ "สร้างโปรเจ็กต์"
เมื่อได้รับข้อความแจ้ง คุณไม่ต้องตั้งค่า Google Analytics เพื่อใช้โซลูชันนี้
ทําตามวิธีการบนหน้าจอเพื่อสร้างโปรเจ็กต์
หากคุณมีโปรเจ็กต์ Firebase อยู่แล้ว
ดำเนินการต่อเพื่อกำหนดค่าสภาพแวดล้อมการพัฒนา
กำหนดค่าสภาพแวดล้อมการพัฒนา
คุณจะต้องมีสภาพแวดล้อม Node.js เพื่อเขียนฟังก์ชัน และจะต้องมี Firebase CLI เพื่อทำให้ฟังก์ชันใช้งานได้ในรันไทม์ Cloud Functions
-
สำหรับการติดตั้ง Node.js และ npm เราขอแนะนำให้ใช้ Node Version Manager
ติดตั้ง Firebase CLI โดยใช้วิธีที่ต้องการ เช่น หากต้องการติดตั้ง CLI โดยใช้ npm ให้เรียกใช้คำสั่งนี้
npm install -g firebase-tools@latest
คำสั่งนี้จะติดตั้งคำสั่ง
firebase
ที่พร้อมใช้งานทั่วโลก หากใช้คำสั่งนี้ไม่สำเร็จ คุณอาจต้องเปลี่ยนสิทธิ์ npmหากต้องการอัปเดต
firebase-tools
เป็นเวอร์ชันล่าสุด ให้เรียกใช้คําสั่งเดิมอีกครั้งติดตั้ง
firebase-functions
และfirebase-admin
และใช้--save
เพื่อบันทึกไฟล์เหล่านั้นลงในpackage.json
npm install firebase-functions@latest firebase-admin@latest --save
ตอนนี้คุณก็พร้อมที่จะติดตั้งใช้งานโซลูชันนี้แล้ว
การใช้งาน
ทําตามขั้นตอนต่อไปนี้เพื่อสร้าง ทดสอบ และทําให้ Cloud Functions รุ่นที่ 2 ใช้งานได้กับ Remote Config และ Vertex AI
- เปิดใช้ API ที่แนะนำของ Vertex AI ในคอนโซล Google Cloud
- เริ่มต้นโปรเจ็กต์และติดตั้ง Node Dependencies
- กำหนดค่าสิทธิ์ IAM สำหรับบัญชีบริการ Admin SDK และบันทึกคีย์
- สร้างฟังก์ชัน
- สร้างเทมเพลต Remote Config สำหรับเซิร์ฟเวอร์โดยเฉพาะ
- ทำให้ฟังก์ชันใช้งานได้และทดสอบใน Firebase Local Emulator Suite
- ทำให้ฟังก์ชันใช้งานได้ใน Google Cloud
ขั้นตอนที่ 1: เปิดใช้ Vertex AIAPI ที่แนะนําในคอนโซล Google Cloud
- เปิดคอนโซล Google Cloud แล้วเลือกโปรเจ็กต์เมื่อได้รับข้อความแจ้ง
- ในช่องค้นหาที่ด้านบนของคอนโซล ให้ป้อน Vertex AI แล้วรอให้ Vertex AI ปรากฏเป็นผลการค้นหา
- เลือก Vertex AI หน้าแดชบอร์ด Vertex AI จะปรากฏขึ้น
คลิกเปิดใช้ API ที่แนะนําทั้งหมด
การเปิดใช้ API อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ เปิดหน้าเว็บไว้จนกว่าการเปิดใช้จะเสร็จสมบูรณ์
หากไม่ได้เปิดใช้การเรียกเก็บเงิน ระบบจะแจ้งให้เพิ่มหรือลิงก์บัญชี Cloud Billing หลังจากเปิดใช้บัญชีการเรียกเก็บเงินแล้ว ให้กลับไปที่Vertex AIแดชบอร์ด แล้วตรวจสอบว่าได้เปิดใช้ API ที่แนะนําทั้งหมดแล้ว
ขั้นตอนที่ 2: เริ่มต้นโปรเจ็กต์และติดตั้ง Node Dependencies
- เปิดเทอร์มินัลในคอมพิวเตอร์และไปยังไดเรกทอรีที่คุณวางแผนจะสร้างฟังก์ชัน
เข้าสู่ระบบ Firebase
firebase login
เรียกใช้คำสั่งต่อไปนี้เพื่อเริ่มต้น Cloud Functions for Firebase
firebase init functions
เลือกใช้โปรเจ็กต์ที่มีอยู่ แล้วระบุรหัสโปรเจ็กต์
เมื่อได้รับข้อความแจ้งให้เลือกภาษาที่จะใช้ ให้เลือก Javascript แล้วกด Enter
เลือกค่าเริ่มต้นสำหรับตัวเลือกอื่นๆ ทั้งหมด
ระบบจะสร้างไดเรกทอรี
functions
ในไดเรกทอรีปัจจุบัน คุณจะพบไฟล์index.js
ที่จะใช้ในการสร้างฟังก์ชัน ไดเรกทอรีnode_modules
ที่มี Dependency สำหรับฟังก์ชัน และไฟล์package.json
ที่มี Dependency ของแพ็กเกจเพิ่มแพ็กเกจ 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 เพื่อเรียกใช้ฟังก์ชัน
- ในคอนโซล Google Cloud ให้เปิดหน้า IAM และผู้ดูแลระบบ และค้นหาบัญชีบริการ Admin SDK (ชื่อ
firebase-adminsdk
) - เลือกบัญชีแล้วคลิกแก้ไขหลักบัญชี หน้าแก้ไขสิทธิ์จะปรากฏขึ้น
- คลิกเพิ่มบทบาทอื่น เลือก Remote Config ผู้ดู
- คลิกเพิ่มบทบาทอื่น เลือกนักพัฒนาแพลตฟอร์ม AI
- คลิกเพิ่มบทบาทอื่น เลือกผู้ใช้ Vertex AI
- คลิกเพิ่มบทบาทอื่น เลือกผู้เรียกใช้ Cloud Run
- คลิกบันทึก
ถัดไป ให้ส่งออกข้อมูลเข้าสู่ระบบสำหรับบัญชีบริการ Admin SDK และบันทึกไว้ในตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS
- ในคอนโซล Google Cloud ให้เปิดหน้าข้อมูลเข้าสู่ระบบ
- คลิกบัญชีบริการ Admin SDK เพื่อเปิดหน้ารายละเอียด
- คลิกคีย์
- คลิกเพิ่มคีย์ > สร้างคีย์ใหม่
- ตรวจสอบว่าได้เลือก JSON เป็นประเภทคีย์ แล้วคลิกสร้าง
- ดาวน์โหลดคีย์ไปยังตำแหน่งที่ปลอดภัยในคอมพิวเตอร์
ส่งออกคีย์เป็นตัวแปรสภาพแวดล้อมจากเทอร์มินัลโดยทำดังนี้
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
ขั้นตอนที่ 4: สร้างฟังก์ชัน
ในขั้นตอนนี้ คุณจะต้องสร้างฟังก์ชันที่จัดการอินพุตของผู้ใช้และสร้างคำตอบที่ทำงานด้วยระบบ AI คุณจะต้องรวมข้อมูลโค้ดหลายรายการเข้าด้วยกันเพื่อสร้างฟังก์ชันที่ครอบคลุมซึ่งจะเริ่มต้น Admin SDK และ Vertex AI Gemini API กำหนดค่าพารามิเตอร์เริ่มต้นโดยใช้ Remote Config ดึงข้อมูลพารามิเตอร์ Remote Config ล่าสุด ประมวลผลอินพุตของผู้ใช้ และส่งสตรีมการตอบกลับกลับไปให้ผู้ใช้
- ในโค้ดเบส ให้เปิด
functions/index.js
ในเครื่องมือแก้ไขข้อความหรือ IDE ลบเนื้อหาที่มีอยู่ แล้วเพิ่ม 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();
กำหนดค่าเริ่มต้นที่ฟังก์ชันจะใช้หากเชื่อมต่อกับเซิร์ฟเวอร์ 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 };
สร้างฟังก์ชันและตั้งค่าฝั่งเซิร์ฟเวอร์ 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;
ตั้งค่า 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'); } });
บันทึกและปิดไฟล์
ขั้นตอนที่ 5: สร้างเทมเพลต Remote Config สำหรับเซิร์ฟเวอร์โดยเฉพาะ
ถัดไป ให้สร้างเทมเพลต Remote Config ฝั่งเซิร์ฟเวอร์และกําหนดค่าพารามิเตอร์และค่าที่จะใช้ในฟังก์ชัน วิธีสร้างเทมเพลตสำหรับเซิร์ฟเวอร์โดยเฉพาะ Remote Config
- เปิดคอนโซล Firebase แล้วขยายเรียกใช้จากเมนูการนำทาง แล้วเลือก Remote Config
เลือกเซิร์ฟเวอร์จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้าRemote Config
- หากใช้ Remote Config หรือเทมเพลตเซิร์ฟเวอร์เป็นครั้งแรก ให้คลิกสร้างการกำหนดค่า แผงสร้างพารามิเตอร์ฝั่งเซิร์ฟเวอร์แรกจะปรากฏขึ้น
- หากไม่ได้ใช้เทมเพลตเซิร์ฟเวอร์ Remote Config เป็นครั้งแรก ให้คลิกเพิ่มพารามิเตอร์
กําหนดพารามิเตอร์ 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
เมื่อเพิ่มพารามิเตอร์เสร็จแล้ว ให้ตรวจสอบพารามิเตอร์อีกครั้งและตรวจสอบว่าประเภทข้อมูลถูกต้อง จากนั้นคลิกเผยแพร่การเปลี่ยนแปลง
ขั้นตอนที่ 6: ติดตั้งใช้งานฟังก์ชันและทดสอบใน Firebase Local Emulator Suite
ตอนนี้คุณพร้อมที่จะติดตั้งใช้งานและทดสอบฟังก์ชันในเครื่องด้วย Firebase Local Emulator Suite แล้ว
ตรวจสอบว่าคุณได้ตั้งค่า
GOOGLE_APPLICATION_CREDENTIALS
เป็นตัวแปรสภาพแวดล้อมตามที่อธิบายไว้ในขั้นตอนที่ 3: กําหนดค่าสิทธิ์ IAM สําหรับบัญชีบริการ Admin SDK และบันทึกคีย์ จากนั้นจากไดเรกทอรีหลักของไดเรกทอรีfunctions
ให้ทำให้ฟังก์ชันใช้งานได้ในโปรแกรมจำลอง Firebase โดยทำดังนี้firebase emulators:start --project PROJECT_ID --only functions
เปิดหน้าบันทึกของโปรแกรมจําลอง ซึ่งควรแสดงว่าฟังก์ชันโหลดแล้ว
เข้าถึงฟังก์ชันโดยเรียกใช้คําสั่งต่อไปนี้ โดยที่ PROJECT_ID คือรหัสโปรเจ็กต์ และ LOCATION คือภูมิภาคที่คุณติดตั้งใช้งานฟังก์ชัน (เช่น
us-central1
)curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex
รอการตอบกลับ จากนั้นกลับไปที่หน้าบันทึกของโปรแกรมจำลอง Firebase หรือคอนโซลเพื่อตรวจหาข้อผิดพลาดหรือคำเตือน
ลองส่งอินพุตของผู้ใช้ โดยทราบว่าเนื่องจาก
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
ทำการเปลี่ยนแปลงเทมเพลตเซิร์ฟเวอร์ Remote Config ในคอนโซล Firebase จากนั้นเข้าถึงฟังก์ชันอีกครั้งเพื่อดูการเปลี่ยนแปลง
ขั้นตอนที่ 7: ติดตั้งใช้งานฟังก์ชันใน Google Cloud
หลังจากทดสอบและยืนยันฟังก์ชันแล้ว คุณก็พร้อมที่จะติดตั้งใช้งานใน Google Cloud และทดสอบฟังก์ชันที่เผยแพร่แล้ว
ติดตั้งใช้งานฟังก์ชัน
ทำให้ฟังก์ชันใช้งานได้โดยใช้ Firebase CLI โดยทำดังนี้
firebase deploy --only functions
บล็อกการเข้าถึงฟังก์ชันที่ไม่ผ่านการตรวจสอบสิทธิ์
เมื่อมีการทำให้ฟังก์ชันใช้งานได้โดยใช้ Firebase ระบบจะอนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์โดยค่าเริ่มต้นหากนโยบายขององค์กรไม่ได้จํากัด ในระหว่างการทดสอบและก่อนที่จะรักษาความปลอดภัยด้วย App Check เราขอแนะนำให้บล็อกการเข้าถึงที่ไม่ได้ตรวจสอบสิทธิ์
วิธีบล็อกการเข้าถึงฟังก์ชันที่ไม่มีการรับรอง
ในคอนโซล Google Cloud ให้เปิด Cloud Run
คลิก
generateWithVertex
แล้วคลิกแท็บความปลอดภัยเปิดใช้กำหนดให้ต้องตรวจสอบสิทธิ์ แล้วคลิกบันทึก
กำหนดค่าบัญชีผู้ใช้ให้ใช้ข้อมูลเข้าสู่ระบบบัญชีบริการ Admin SDK
เนื่องจากบัญชีบริการ Admin SDK มีบทบาทและสิทธิ์ที่จำเป็นทั้งหมดในการใช้งานฟังก์ชันและโต้ตอบกับ Remote Config และ Vertex AI Gemini API คุณจึงควรใช้บัญชีดังกล่าวเพื่อเรียกใช้ฟังก์ชัน ซึ่งคุณจะต้องสร้างโทเค็นสําหรับบัญชีจากบัญชีผู้ใช้ได้
ขั้นตอนต่อไปนี้อธิบายวิธีกำหนดค่าบัญชีผู้ใช้และฟังก์ชันเพื่อทำงานด้วยสิทธิ์ของบัญชีบริการ Admin SDK
- ในคอนโซล Google Cloud ให้เปิดใช้ IAM Service Account Credentials API
- ให้บัญชีผู้ใช้มีบทบาทผู้สร้างโทเค็นบัญชีบริการ โดยเปิด IAM และผู้ดูแลระบบ > IAM จากคอนโซล Google Cloud เลือกบัญชีผู้ใช้ แล้วคลิกแก้ไขผู้ใช้หลัก > เพิ่มบทบาทอื่น
เลือกเครื่องมือสร้างโทเค็นบัญชีบริการ แล้วคลิกบันทึก
ดูรายละเอียดเพิ่มเติมเกี่ยวกับการแอบอ้างเป็นบัญชีบริการได้ที่หัวข้อการแอบอ้างเป็นบัญชีบริการในเอกสารประกอบของ Google Cloud
เปิดหน้าGoogle Cloudคอนโซล Cloud Functions และคลิกฟังก์ชัน generateWithVertex ในรายการฟังก์ชัน
เลือกทริกเกอร์ > แก้ไข แล้วขยายรันไทม์ บิลด์ การเชื่อมต่อ และการตั้งค่าความปลอดภัย
จากแท็บรันไทม์ ให้เปลี่ยนบัญชีบริการรันไทม์เป็นบัญชี Admin SDK
คลิกถัดไป แล้วคลิกทำให้ใช้งานได้
ตั้งค่า gcloud CLI
หากต้องการเรียกใช้และทดสอบฟังก์ชันจากบรรทัดคำสั่งอย่างปลอดภัย คุณจะต้องตรวจสอบสิทธิ์กับบริการ Cloud Functions และรับโทเค็นการตรวจสอบสิทธิ์ที่ถูกต้อง
หากต้องการเปิดใช้การสร้างโทเค็น ให้ติดตั้งและกําหนดค่า gcloud CLI โดยทําดังนี้
หากยังไม่ได้ติดตั้งในคอมพิวเตอร์ ให้ติดตั้ง gcloud CLI ตามที่อธิบายไว้ในติดตั้ง gcloud CLI
รับข้อมูลเข้าสู่ระบบการเข้าถึงสำหรับบัญชี Google Cloud
gcloud auth login
ตั้งรหัสโปรเจ็กต์ใน 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 เผยแพร่การเปลี่ยนแปลงเหล่านั้น และทดสอบตัวเลือกต่างๆ ได้แล้ว
ขั้นตอนถัดไป
- Firebase ขอแนะนำให้ใช้ App Check เพื่อรักษาความปลอดภัยให้กับ Cloud Functions ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำให้ฟังก์ชันปลอดภัยด้วย App Check ได้ที่เปิดใช้การบังคับใช้ App Check สำหรับ Cloud Functions
- ลองใช้ฟังก์ชันเรียกใช้ได้ตัวอย่างที่มี Remote Config ฝั่งเซิร์ฟเวอร์ และ App Check ที่ เรียก Vertex AI Gemini API ด้วย Remote Config และ App Check
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Functions สำหรับ Firebase
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ Remote Config ในสภาพแวดล้อมเซิร์ฟเวอร์