คำแนะนำนี้จะอธิบายวิธีเริ่มต้นใช้งาน รุ่นที่ 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ในการติดตั้ง Node.js และ npm
ติดตั้ง Firebase CLI โดยใช้วิธีที่ ต้องการ เช่น หากต้องการติดตั้ง CLI โดยใช้ npm ให้เรียกใช้คำสั่งต่อไปนี้
npm install -g firebase-tools@latestคำสั่งนี้จะติดตั้งคำสั่ง
firebaseที่พร้อมใช้งานทั่วโลก หากคำสั่งนี้ล้มเหลว คุณอาจต้อง เปลี่ยนสิทธิ์ npmหากต้องการอัปเดตเป็น
Cloud Shellfirebase-toolsเวอร์ชันล่าสุด ให้เรียกใช้คำสั่งเดิมอีกครั้งติดตั้ง
firebase-functionsและfirebase-adminแล้วใช้--saveเพื่อบันทึกแพ็กเกจเหล่านี้ลงในpackage.jsonnpm install firebase-functions@latest firebase-admin@latest --save
ตอนนี้คุณพร้อมที่จะดำเนินการตามการติดตั้งใช้งานโซลูชันนี้แล้ว
การใช้งาน
ทำตามขั้นตอนต่อไปนี้เพื่อสร้าง ทดสอบ และทำให้ 2nd gen Cloud Functions ใช้งานได้กับ Remote Config และ Vertex AI:
- เปิดใช้ API ที่แนะนำในคอนโซลVertex AIGoogle Cloud
- เริ่มต้นโปรเจ็กต์และติดตั้งทรัพยากร Dependency ของ Node
- กำหนดค่าสิทธิ์ IAM สำหรับบัญชีบริการ Admin SDK และ บันทึกคีย์
- สร้างฟังก์ชัน
- สร้างเทมเพลต Remote Config เฉพาะเซิร์ฟเวอร์
- ทำให้ฟังก์ชันใช้งานได้และทดสอบใน Firebase Local Emulator Suite
- ทำให้ฟังก์ชันใช้งานได้กับ Google Cloud
ขั้นตอนที่ 1: เปิดใช้ API ที่แนะนำของ Vertex AI ในคอนโซล Google Cloud
- เปิดคอนโซล Google Cloud แล้วเลือกโปรเจ็กต์เมื่อได้รับข้อความแจ้ง
- ในช่องค้นหา ที่ด้านบนของคอนโซล ให้ป้อน Vertex AI แล้วรอให้ Vertex AI ปรากฏขึ้นเป็นผลการค้นหา
- เลือก Vertex AI แดชบอร์ด Vertex AI จะปรากฏขึ้น
คลิกเปิดใช้ API ที่แนะนำทั้งหมด
การเปิดใช้ API อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ โปรดเปิดหน้าเว็บไว้จนกว่าการเปิดใช้จะเสร็จสิ้น
หากไม่ได้เปิดใช้การเรียกเก็บเงิน ระบบจะแจ้งให้คุณเพิ่มหรือลิงก์บัญชี Cloud Billing หลังจากเปิดใช้บัญชีสำหรับการเรียกเก็บเงินแล้ว ให้กลับไปที่ Vertex AI แดชบอร์ด และตรวจสอบว่าได้เปิดใช้ API ที่แนะนำทั้งหมดแล้ว
ขั้นตอนที่ 2: เริ่มต้นโปรเจ็กต์และติดตั้งทรัพยากร Dependency ของ Node
- เปิดเทอร์มินัลในคอมพิวเตอร์และไปที่ไดเรกทอรีที่คุณต้องการสร้างฟังก์ชัน
เข้าสู่ระบบ 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.jsoncd 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 Engine ตรงกับ Node.js เวอร์ชันที่คุณติดตั้งและเวอร์ชันที่คุณจะเรียกใช้ใน Google Cloud เช่น หากส่วน engines ใน package.json ได้รับการกำหนดค่าเป็น Node เวอร์ชัน 18 และคุณใช้ Node.js 20 ให้อัปเดตไฟล์ให้ใช้ 20 ดังนี้
"engines": {
"node": "20"
},
ขั้นตอนที่ 3: กำหนดค่าสิทธิ์ IAM สำหรับบัญชีบริการ Admin SDK และบันทึกคีย์
ในโซลูชันนี้ คุณจะใช้บัญชีบริการ Firebase Admin SDK เพื่อเรียกใช้ ฟังก์ชัน
- ในคอนโซล 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 ลบเนื้อหาที่มีอยู่ แล้วเพิ่ม Admin SDK, Remote Config และ Vertex AI SDK พร้อมเริ่มต้นแอปโดย วางโค้ดต่อไปนี้ลงในไฟล์
const { onRequest } = require("firebase-functions/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 พารามิเตอร์ที่คุณจะกำหนดค่าเพิ่มเติมในคำแนะนำนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้ได้ที่ Vertex AI Node.js Clientนอกจากนี้ คุณยังกำหนดค่าพารามิเตอร์เพื่อควบคุมว่าจะ เข้าถึง 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 ให้ไปที่ DevOps และการมีส่วนร่วม > การกำหนดค่าระยะไกล
เลือกเซิร์ฟเวอร์ จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ ที่ด้านบนของหน้า
- หากคุณใช้ Remote Config หรือเทมเพลตเซิร์ฟเวอร์เป็นครั้งแรก ให้คลิก สร้างการกำหนดค่า บานหน้าต่างสร้างพารามิเตอร์ฝั่งเซิร์ฟเวอร์แรก จะปรากฏขึ้น
- หากคุณเคยใช้เทมเพลตเซิร์ฟเวอร์ Remote Config มาแล้ว ให้คลิก เพิ่มพารามิเตอร์
กำหนดพารามิเตอร์ Remote Config ต่อไปนี้
ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น model_nameชื่อโมเดล
ดูรายการชื่อโมเดลล่าสุดที่จะใช้ในโค้ดได้ที่ เวอร์ชัน และวงจรการใช้งานของโมเดล หรือ ชื่อโมเดล ที่พร้อมใช้งานสตริง gemini-2.0-flashpromptพรอมต์ที่จะเพิ่มไว้ข้างหน้าคำค้นหาของผู้ใช้ สตริง 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-central1is_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
วิธีบล็อกการเข้าถึงฟังก์ชันโดยไม่ได้รับการตรวจสอบสิทธิ์
เปิด Cloud Run ในคอนโซลGoogle Cloud
คลิก
generateWithVertexแล้วคลิกแท็บความปลอดภัยเปิดใช้กำหนดให้มีการตรวจสอบสิทธิ์ แล้วคลิกบันทึก
กำหนดค่าบัญชีผู้ใช้ให้ใช้ข้อมูลเข้าสู่ระบบบัญชีบริการ Admin SDK
เนื่องจากบัญชีบริการ Admin SDK มีบทบาทและ สิทธิ์ที่จำเป็นทั้งหมดในการเรียกใช้ฟังก์ชันและโต้ตอบกับ Remote Config และ Vertex AI Gemini API คุณจึงควรใช้บัญชีบริการนี้เพื่อเรียกใช้ฟังก์ชัน หากต้องการดำเนินการนี้ คุณต้องสร้างโทเค็นสำหรับบัญชีจากบัญชีผู้ใช้ได้
ขั้นตอนต่อไปนี้จะอธิบายวิธีกำหนดค่าบัญชีผู้ใช้และฟังก์ชัน ให้ทำงานโดยใช้สิทธิ์ของบัญชีบริการ Admin SDK
- ในคอนโซล Google Cloud ให้เปิดใช้ IAM Service Account Credentials API
- ให้บทบาทผู้สร้างโทเค็นบัญชีบริการ แก่บัญชีผู้ใช้ โดยทำดังนี้ จาก Google Cloud คอนโซล ให้เปิดIAM และผู้ดูแลระบบ > IAM เลือกบัญชีผู้ใช้ แล้วคลิกแก้ไขหลัก > เพิ่มบทบาทอื่น
เลือกผู้สร้างโทเค็นบัญชีบริการ แล้วคลิกบันทึก
ดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับการใช้บัญชีบริการอ้างเป็นบัญชีอื่นได้ที่ การใช้บัญชีบริการ อ้างเป็นบัญชีอื่น ในเอกสารประกอบ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