คู่มือนี้อธิบายวิธีเริ่มต้นใช้งาน Cloud Functions กับการกำหนดค่าระยะไกลฝั่งเซิร์ฟเวอร์เพื่อเรียกฝั่งเซิร์ฟเวอร์ไปยัง Vertex AI Gemini API
ในบทแนะนำนี้ คุณได้เพิ่มการกำหนดค่าระยะไกลไปยังฟังก์ชันคล้ายแชทบ็อตที่ใช้โมเดล Gemini ในการตอบคำถามของผู้ใช้ การกำหนดค่าระยะไกลจะจัดการอินพุต 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 เราขอแนะนำให้ใช้เครื่องมือจัดการเวอร์ชันโหนด
ติดตั้ง 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 ด้วยการกำหนดค่าระยะไกลและ Vertex AI
- เปิดใช้ API ที่แนะนำของ Vertex AI ในคอนโซล Google Cloud
- เริ่มต้นโปรเจ็กต์และติดตั้งทรัพยากร Dependency ของโหนด
- กำหนดค่าสิทธิ์ IAM สำหรับบัญชีบริการ Admin SDK และบันทึกคีย์
- สร้างฟังก์ชัน
- สร้างเทมเพลตการกำหนดค่าระยะไกลเฉพาะเซิร์ฟเวอร์
- ทำให้ฟังก์ชันใช้งานได้และทดสอบใน 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 หลังจากเปิดใช้บัญชีสำหรับการเรียกเก็บเงิน ให้กลับไปที่หน้าแดชบอร์ด Vertex AI และยืนยันว่าได้เปิดใช้ API ที่แนะนำทั้งหมดแล้ว
ขั้นตอนที่ 2: เริ่มต้นโปรเจ็กต์และติดตั้งทรัพยากร Dependency ของโหนด
- เปิดเทอร์มินัลในคอมพิวเตอร์และไปยังไดเรกทอรีที่คุณวางแผนจะสร้างฟังก์ชัน
เข้าสู่ระบบ 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
เพื่อให้มั่นใจว่าระบบจะบันทึก 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 เพื่อเรียกใช้ฟังก์ชัน
- ในคอนโซล Google Cloud ให้เปิด
หน้า IAM และผู้ดูแลระบบ
แล้วค้นหาบัญชีบริการ Admin SDK (ชื่อ
firebase-adminsdk
) - เลือกบัญชีและคลิกแก้ไขผู้ใช้หลัก หน้าแก้ไขสิทธิ์เข้าถึงจะปรากฏขึ้น
- คลิกเพิ่มบทบาทอื่น แล้วเลือกผู้ดูการกำหนดค่าระยะไกล
- คลิกเพิ่มบทบาทอื่น แล้วเลือกนักพัฒนา AI Platform
- คลิกเพิ่มบทบาทอื่น แล้วเลือกผู้ใช้ 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, กำหนดค่าพารามิเตอร์เริ่มต้นโดยใช้ การกำหนดค่าระยะไกล, ดึงข้อมูลพารามิเตอร์การกำหนดค่าระยะไกลล่าสุด, ประมวลผลอินพุตของผู้ใช้ และสตรีมคำตอบกลับไปให้ผู้ใช้
- ในฐานของโค้ด ให้เปิด
functions/index.js
ในเครื่องมือแก้ไขข้อความหรือ IDE ลบเนื้อหาที่มีอยู่ จากนั้นเพิ่ม 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();
กำหนดค่าเริ่มต้นที่ฟังก์ชันจะใช้หากเชื่อมต่อกับเซิร์ฟเวอร์การกำหนดค่าระยะไกลไม่ได้ โซลูชันนี้กำหนดค่า
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 };
สร้างฟังก์ชันและตั้งค่าการกำหนดค่าระยะไกลฝั่งเซิร์ฟเวอร์ โดยทำดังนี้
// 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: สร้างเทมเพลตการกำหนดค่าระยะไกลเฉพาะเซิร์ฟเวอร์
ถัดไป ให้สร้างเทมเพลตการกำหนดค่าระยะไกลฝั่งเซิร์ฟเวอร์และกำหนดค่าพารามิเตอร์และค่าเพื่อใช้ในฟังก์ชัน วิธีสร้างเทมเพลตการกำหนดค่าระยะไกลเฉพาะเซิร์ฟเวอร์
- เปิดคอนโซล Firebase จากเมนูการนำทาง ให้ขยายเรียกใช้ แล้วเลือกการกำหนดค่าระยะไกล
เลือกเซิร์ฟเวอร์จากตัวเลือกไคลเอ็นต์/เซิร์ฟเวอร์ที่ด้านบนของหน้าการกำหนดค่าระยะไกล
- หากใช้งานการกำหนดค่าระยะไกลหรือเทมเพลตเซิร์ฟเวอร์เป็นครั้งแรก ให้คลิกสร้างการกำหนดค่า แผงสร้างพารามิเตอร์ฝั่งเซิร์ฟเวอร์แรกจะปรากฏขึ้น
- หากไม่ได้ใช้เทมเพลตเซิร์ฟเวอร์การกำหนดค่าระยะไกลเป็นครั้งแรก ให้คลิกเพิ่มพารามิเตอร์
กำหนดพารามิเตอร์การกำหนดค่าระยะไกลต่อไปนี้
ชื่อพารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น 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
เมื่อเพิ่มพารามิเตอร์เสร็จแล้ว ให้ตรวจสอบพารามิเตอร์อีกครั้งและตรวจสอบว่าประเภทข้อมูลถูกต้อง แล้วคลิกเผยแพร่การเปลี่ยนแปลง
ขั้นตอนที่ 6: ทำให้ฟังก์ชันใช้งานได้และทดสอบใน Firebase Local Emulator Suite
ตอนนี้คุณพร้อมที่จะทำให้ฟังก์ชันใช้งานได้และทดสอบภายในเครื่องด้วย Firebase Local Emulator Suite
ตรวจสอบว่าคุณได้ตั้งค่า
GOOGLE_APPLICATION_CREDENTIALS
เป็นตัวแปรสภาพแวดล้อมตามที่อธิบายไว้ในขั้นตอนที่ 3: กำหนดค่าสิทธิ์ IAM สำหรับบัญชีบริการ Admin SDK และบันทึกคีย์ จากนั้น ทำให้ฟังก์ชันใช้งานได้ในโปรแกรมจำลอง Firebase จากไดเรกทอรีระดับบนสุดของไดเรกทอรีfunctions
firebase emulators:start --project PROJECT_ID --only functions
เปิดหน้าบันทึกของโปรแกรมจำลอง คุณจะเห็นว่าฟังก์ชันโหลดแล้ว
เข้าถึงฟังก์ชันโดยเรียกใช้คำสั่งต่อไปนี้ โดยที่ PROJECT_ID คือรหัสโปรเจ็กต์และ LOCATION คือภูมิภาคที่คุณทำให้ฟังก์ชันใช้งานได้ (เช่น
us-central1
)curl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex
รอการตอบกลับ จากนั้นกลับไปที่หน้าบันทึก Firebase Emulator หรือคอนโซล แล้วตรวจสอบข้อผิดพลาดหรือคำเตือน
ลองส่งอินพุตของผู้ใช้ โดยโปรดทราบว่าเนื่องจากมีการกำหนดค่า
is_vertex_enabled
ในเทมเพลตเซิร์ฟเวอร์การกำหนดค่าระยะไกล การดำเนินการนี้ควรเข้าถึง Gemini ผ่าน Vertex AI Gemini API และอาจมีค่าใช้จ่ายcurl http://localhost:5001/PROJECT_ID/LOCATION/generateWithVertex?prompt=Tell%20me%20everything%20you%20know%20about%20cats
ทำการเปลี่ยนแปลงเทมเพลตเซิร์ฟเวอร์การกำหนดค่าระยะไกลบน คอนโซล Firebase จากนั้นเข้าถึงฟังก์ชันอีกครั้งเพื่อสังเกตการเปลี่ยนแปลง
ขั้นตอนที่ 7: ทำให้ฟังก์ชันใช้งานได้ใน Google Cloud
หลังจากทดสอบและยืนยันฟังก์ชันแล้ว คุณก็พร้อมที่จะติดตั้งใช้งานใน Google Cloud และทดสอบฟังก์ชันที่เผยแพร่อยู่
ทำให้ฟังก์ชันใช้งานได้
ทำให้ฟังก์ชันใช้งานได้โดยใช้ Firebase CLI:
firebase deploy --only functions
บล็อกการเข้าถึงฟังก์ชันที่ไม่ได้ตรวจสอบสิทธิ์
เมื่อมีการทำให้ฟังก์ชันใช้งานได้โดยใช้ Firebase ระบบจะอนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์โดยค่าเริ่มต้นหากนโยบายขององค์กรไม่ได้จำกัดการดำเนินการดังกล่าว ระหว่างการทดสอบและก่อนรักษาความปลอดภัยด้วย App Check เราขอแนะนำให้คุณบล็อกการเข้าถึงที่ไม่ได้ตรวจสอบสิทธิ์
หากต้องการบล็อกการเข้าถึงฟังก์ชันที่ไม่ได้ตรวจสอบสิทธิ์ ให้ทำดังนี้
ในคอนโซล Google Cloud ให้เปิด Cloud Run
คลิก
generateWithVertex
แล้วคลิกแท็บความปลอดภัยเปิดใช้ต้องมีการตรวจสอบสิทธิ์ แล้วคลิกบันทึก
กำหนดค่าบัญชีผู้ใช้เพื่อใช้ข้อมูลเข้าสู่ระบบบัญชีบริการ Admin SDK
เนื่องจากบัญชีบริการ Admin SDK มีบทบาทและสิทธิ์ที่จำเป็นทั้งหมดในการเรียกใช้ฟังก์ชันและโต้ตอบกับการกำหนดค่าระยะไกลและ Vertex AI Gemini API คุณจึงต้องใช้บัญชีเพื่อเรียกใช้ฟังก์ชัน ในการดำเนินการนี้ คุณต้องสามารถสร้างโทเค็นสำหรับบัญชีจากบัญชีผู้ใช้ของคุณ
ขั้นตอนต่อไปนี้อธิบายวิธีกำหนดค่าบัญชีผู้ใช้และฟังก์ชันที่จะเรียกใช้ด้วยสิทธิ์ของบัญชีบริการ Admin SDK
- เปิดใช้ IAM Service Account Credentials API ในคอนโซล Google Cloud
- มอบบทบาทผู้สร้างโทเค็นบัญชีบริการให้บัญชีผู้ใช้ของคุณ โดยเปิด IAM & Admin > IAM เลือกบัญชีผู้ใช้ แล้วคลิกแก้ไขผู้ใช้หลัก > เพิ่มบทบาทอื่น
เลือกผู้สร้างโทเค็นบัญชีบริการ แล้วคลิกบันทึก
ดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับการแอบอ้างเป็นบัญชีบริการได้ที่การแอบอ้างเป็นบัญชีบริการในเอกสารประกอบของ Google Cloud
เปิดหน้า Cloud Functions สำหรับคอนโซล Google Cloud และคลิกฟังก์ชัน 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"
ตอนนี้คุณสามารถเปลี่ยนแปลงเทมเพลตเซิร์ฟเวอร์การกำหนดค่าระยะไกล เผยแพร่การเปลี่ยนแปลงเหล่านั้น และทดสอบตัวเลือกต่างๆ ได้
ขั้นตอนถัดไป
- Firebase แนะนำให้ใช้ App Check เพื่อรักษาความปลอดภัยให้กับ Cloud Functions โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการรักษาความปลอดภัยของฟังก์ชันด้วย App Check ที่เปิดใช้การบังคับใช้ App Check สำหรับ Cloud Functions
- ลองใช้ตัวอย่างฟังก์ชันที่เรียกใช้ได้กับการกำหนดค่าระยะไกลฝั่งเซิร์ฟเวอร์และ App Check ได้ที่ เรียกใช้ Vertex AI Gemini API ด้วยการกำหนดค่าระยะไกลและ App Check
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Functions for Firebase
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้การกำหนดค่าระยะไกลในสภาพแวดล้อมเซิร์ฟเวอร์