1. บทนำ
ในห้องทดลองนี้ คุณจะใช้ Gemini ซึ่งเป็นผู้ช่วยที่ทำงานด้วยระบบ AI ใน Google Cloud เพื่อแก้ปัญหาการติดตั้งใช้งาน Cloud Function ด้วยการวิเคราะห์บันทึกข้อผิดพลาด หาสาเหตุของปัญหา และค้นหาวิธีแก้ไข
สิ่งที่คุณต้องดำเนินการ...
- คุณจะใช้ Cloud Shell Terminal และ gcloud CLI เพื่อตั้งค่าสภาพแวดล้อม รวมถึงเปิดใช้ Google API ที่เกี่ยวข้องและการสร้าง Cloud Function จากโค้ดที่ระบุ
- คุณจะใช้การสรุปบันทึกของ Cloud Logging เพื่อสร้างสรุปบันทึกเพื่อให้เข้าใจข้อมูลที่บันทึก
- คุณจะต้องแชทกับ Gemini เพื่อรับความช่วยเหลือจาก Gemini ในการแก้ปัญหา
สิ่งที่คุณจะได้เรียนรู้...
- วิธีใช้ Gemini กับความสามารถในการสังเกตของ Google Cloud และการแก้ปัญหา
- วิธีค้นหาและทำความเข้าใจบันทึก Cloud Function ด้วยความช่วยเหลือจาก Gemini
สิ่งที่คุณต้องมี...
- เว็บเบราว์เซอร์ Chrome
- โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
- บัญชี Google ที่มีสิทธิ์เข้าถึงโปรเจ็กต์ช่วยให้คุณเปิดใช้ API และจัดการทรัพยากรได้
ห้องทดลองนี้กำหนดเป้าหมายไปยัง DevOps วิศวกรแพลตฟอร์ม และนักพัฒนาซอฟต์แวร์ทุกระดับ รวมถึงผู้เริ่มต้น โดยจะมุ่งเน้นที่การมีประสบการณ์จริงเกี่ยวกับความสามารถของ Gemini ในการแก้ปัญหา
2. ตั้งค่า
ส่วนนี้จะครอบคลุมทุกสิ่งที่คุณต้องทำเพื่อเริ่มต้นใช้งานห้องทดลองนี้
กำหนดค่าสภาพแวดล้อม
1. ลงชื่อเข้าสู่ระบบ Cloud Console โดยเปิด https://console.cloud.google.com
2. เลือกโปรเจ็กต์ Google Cloud ที่คุณวางแผนจะทำงานด้วยสำหรับห้องทดลองนี้
3. เปิดหน้า Cloud Functions ในคอนโซล โดยเลือก Cloud Functions จากเมนูการนําทาง (ไอคอนด้านบนซ้าย ☰ ในหน้าต่าง Console)
หรือคุณจะค้นหา "ฟังก์ชันระบบคลาวด์" ก็ได้ ในช่องค้นหาของคอนโซล ให้ทำดังนี้
คลิกปุ่มสร้างฟังก์ชันที่ด้านบนของรายการฟังก์ชัน
หากคุณไม่เคยใช้ Cloud Functions ในโปรเจ็กต์นี้มาก่อน ระบบจะขอให้คุณเปิดใช้ Google APIs เพื่อทำงาน
คลิก "เปิดใช้" เพื่อดำเนินการต่อ
4. กำหนดพร็อพเพอร์ตี้พื้นฐานของ Cloud Function ใหม่
- ตั้งชื่อเป็น "
codelab-cf
" - เลือกตัวเลือก อนุญาตคำขอที่ไม่ผ่านการตรวจสอบสิทธิ์
หากต้องการทำขั้นตอนนี้ให้เสร็จสมบูรณ์ ให้คลิกปุ่ม "ถัดไป" ที่บริเวณด้านซ้ายล่างของหน้าต่าง
หลังจากคลิก "ถัดไป" คุณอาจได้รับแจ้งให้เปิดใช้ Google API เพิ่มเติม คลิก "เปิดใช้" เหมือนในขั้นตอนที่ 4
ตั้งค่ารันไทม์และโค้ดของ Cloud Function
CodeLab นี้ใช้ Python เป็นภาษาโปรแกรม ไม่ต้องกังวลหากคุณไม่คุ้นเคยกับ Python คุณไม่จำเป็นต้องมีความรู้เกี่ยวกับ Python เพื่อทำให้ CodeLab นี้เสร็จสมบูรณ์
5. เลือก Python 3.11 เป็นรันไทม์ของฟังก์ชัน
โปรดทราบว่าการเปลี่ยนแปลงรันไทม์จะเปลี่ยนซอร์สโค้ดที่แสดงในตัวแก้ไขในบรรทัด
6. คัดลอกโค้ดด้านล่างไปยังเครื่องมือแก้ไขในบรรทัดเพื่อแก้ไขตัวอย่างการเริ่มต้นอย่างรวดเร็วที่สร้างอัตโนมัติ
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
โค้ดนี้จะอ่านแอตทริบิวต์ path
จากคำขอ GET แยกวิเคราะห์เส้นทางเพื่อรับชื่อที่เก็บข้อมูล และเรียกใช้ Google Cloud Storage API เพื่อรับรายการออบเจ็กต์ที่จัดเก็บไว้ในเส้นทางนี้ ฟังก์ชัน (get_object_list
) จะยอมรับคำขอที่เป็นออบเจ็กต์ Flask เป็นอาร์กิวเมนต์อินพุตและแสดงผลชื่อของออบเจ็กต์เป็นอาร์เรย์ JSON
7. เลือกไฟล์ requirements.txt
จากรายการไฟล์ที่เหลือในเครื่องมือแก้ไขในบรรทัด แทนที่รายการทรัพยากร Dependency ปัจจุบันด้วยรายการใหม่โดยคัดลอกโค้ดด้านล่างลงในเครื่องมือแก้ไขในบรรทัด
google-cloud-storage
8. หากต้องการทำให้ Cloud Function ใช้งานได้ ให้คลิก DEPLOY ที่ด้านซ้ายล่าง
คุณอาจต้องรอ 2-3 นาทีจนกว่ากระบวนการติดตั้งใช้งานจะเสร็จสมบูรณ์ หากทำตามวิธีการตั้งค่าอย่างเคร่งครัด คุณจะเห็นการทำให้ใช้งานได้ที่ได้รับการรายงานว่าล้มเหลว
3. การค้นหาและแก้ไขปัญหา
ในส่วนนี้ คุณจะได้ใช้ฟีเจอร์คำอธิบายบันทึกและความช่วยเหลืออื่นๆ ของ Gemini เพื่อระบุปัญหาและวิธีแก้ไข
1. การทำให้ใช้งานได้ล้มเหลว คุณควรเห็นข้อความแสดงข้อผิดพลาดที่แจ้งให้ทราบถึงเรื่องนี้ พร้อมด้วยข้อมูลเพิ่มเติมและตัวเลือกในการดูบันทึกการทำให้ใช้งานได้ คลิก "ดูบันทึก" เพื่อดูบันทึกการทำให้ใช้งานได้
โปรดทราบว่าบันทึกการทำให้ใช้งานได้จะเปิดในแท็บแยกต่างหากในเบราว์เซอร์เดียวกัน คุณจะต้องไปที่แท็บต่างๆ เพื่อดำเนินการ CodeLab นี้ให้เสร็จสมบูรณ์
โปรดทราบว่าคุณอาจไม่เห็นบรรทัดในบันทึกเมื่อคลิก ดูบันทึก หรือดูเพียง 2-3 บรรทัดเท่านั้น ในกรณีดังกล่าว ให้ใช้ตัวเลือกช่วงเวลาในแผงการค้นหาของตัวสำรวจบันทึก แล้วเลือก 30 นาทีที่ผ่านมา
2. ตรวจสอบบันทึกในแท็บที่เปิดอยู่ โปรดตรวจดูว่าข้อมูลสรุปบันทึกมีลักษณะเป็น Calltack ของข้อยกเว้นหลายบรรทัด เนื่องจาก Cloud Function บันทึกข้อความที่พิมพ์ไปยัง stdout
หรือ stderr
และเขียนแต่ละบรรทัดเป็นรายการบันทึกแยกกัน บรรทัดอื่นๆ ในบันทึกจะสรุปข้อมูลเกี่ยวกับรหัสข้อผิดพลาดการออก รวมถึงข้อมูลเพิ่มเติมที่รายงานโดย Cloud Functions และ Cloud Run API
คุณสามารถคลิกที่บรรทัดใดก็ได้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับบันทึกเฉพาะ บันทึกที่ขยายจะมีองค์ประกอบ UI เพิ่มเติมเมื่อคลิก ซึ่งจะช่วยให้คุณคัดลอกข้อมูลทั้งหมดเกี่ยวกับบันทึก ขยายช่องทั้งหมดเพื่อแสดงข้อมูลทั้งหมดของรายการบันทึก และเพื่ออธิบายรายการบันทึกโดยใช้ Gemini
4. ข้อยกเว้น Calltack ไม่ได้ให้ข้อมูลมากนัก ค้นหาในบันทึกเพื่อค้นหาจุดสิ้นสุดของบันทึกสแต็กเทรซของข้อยกเว้น ซึ่งเป็นบรรทัดที่เขียนว่า "Container called exit(1)
" สรุปบันทึกต่อไปนี้แจ้งว่า:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
ดูเหมือนว่าจะเป็นผู้สมัครที่เหมาะสมสำหรับการตรวจสอบ คลิกที่บรรทัดนี้เพื่อขยายรายการบันทึก จากนั้นคลิก "อธิบายรายการบันทึกนี้" เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับบันทึกที่เลือก
หากยังไม่เคยใช้ Gemini ในโปรเจ็กต์นี้มาก่อน ระบบจะแจ้งให้คุณเปิดใช้ API ที่จำเป็น หากคุณได้รับแจ้งให้เปิดใช้ API ให้คลิก "เปิดใช้" เพื่อดำเนินการต่อ
โปรดทราบว่าบางครั้งคุณอาจได้รับข้อผิดพลาดเมื่อพรอมต์กับ Gemini ในเหตุการณ์ดังกล่าว ให้ดำเนินการกับข้อความแจ้งอีกครั้งอีกครั้งเพื่อรับคำตอบ ตัวอย่างเช่น คลิกลิงก์ "อธิบายรายการบันทึกนี้" อีกครั้ง
5. คำอธิบายรีวิวจาก Gemini หากคำอธิบายที่ได้รับนั้นไม่เพียงพอหรือไม่ชัดเจน ให้ Gemini ให้ข้อมูลเพิ่มเติมโดยใช้พรอมต์ต่อไปนี้หรือเขียนคำถามของคุณเอง
คุณให้ข้อมูลเพิ่มเติมเกี่ยวกับบันทึกนี้ได้ไหม
คุณให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้ไหม
6. จากนั้นแจ้งให้ Gemini ให้คำแนะนำในการแก้ไขปัญหา เช่น ขอให้ Gemini
วิธีแก้ไขปัญหานี้
แนะนำวิธีแก้ปัญหาข้อผิดพลาดนี้
แนะนำวิธีแก้ไขข้อผิดพลาดนี้
คำตอบของ Gemini อาจแตกต่างกันไปตามบริบทปัจจุบัน รวมถึงการใช้คำและรูปแบบของพรอมต์ด้วย คาดว่า Gemini จะแนะนำเพื่อตรวจสอบว่าซอร์สโค้ดของ Cloud Function มีฟังก์ชันที่มีชื่อว่า hello_http
7. คุณกำลังดูแท็บที่แสดงบันทึก Cloud Functions เลือกแท็บก่อนหน้าที่แสดงหน้าการทำให้ Cloud Function ใช้งานได้ที่มีข้อผิดพลาด แล้วคลิกแก้ไข
8. ตรวจสอบว่ายังตั้งค่าการตรวจสอบสิทธิ์เป็น อนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์ และอัปเดตการเลือกหากจำเป็น
9. คลิก "ถัดไป" ที่ด้านล่างเพื่อดูตัวแก้ไขในบรรทัด ทำตามคำแนะนำของ Gemini และเปลี่ยนชื่อฟังก์ชันจาก get_order_list
เป็น hello_http
หลังจากแก้ไขเสร็จแล้ว ให้คลิก DEPLOY
คุณอาจต้องรอ 2-3 นาทีจนกว่ากระบวนการติดตั้งใช้งานจะเสร็จสมบูรณ์ ยืนยันว่าการติดตั้งใช้งานเสร็จสมบูรณ์แล้ว และไม่พบข้อความแสดงข้อผิดพลาด
โปรดทราบว่าคอนโซลอาจยังแสดงข้อความแสดงข้อผิดพลาดล่าสุดจนกว่ากระบวนการติดตั้งใช้งานจะเสร็จสมบูรณ์
10. ตรวจสอบว่า Cloud Function ทำงานได้โดยส่งคำขอ HTTPS ต่อไปนี้โดยใช้ curl
คุณสามารถใช้ Cloud Shell หรือดำเนินการจากเทอร์มินัลที่มี curl
และ gcloud
CLI ติดตั้งอยู่.executing สำหรับคำสั่งต่อไปนี้จาก Cloud Shell Terminal
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
โปรดทราบว่าหากต้องการเรียกใช้คำสั่งนี้จากเทอร์มินัล คุณจะต้องตรวจสอบสิทธิ์โดยใช้ gcloud CLI และตั้งค่าของรหัสโปรเจ็กต์เป็นตัวแปรสภาพแวดล้อม GOOGLE_CLOUD_PROJECT
โบนัส
ชื่อของฟังก์ชัน hello_http
ได้รับการกำหนดเป็นจุดแรกเข้าเริ่มต้นสำหรับ Cloud Function ที่ทริกเกอร์ HTTP เมื่อเลือกรันไทม์ของ Python อีกวิธีหนึ่งคือให้ get_order_list
เป็นชื่อฟังก์ชันในซอร์สโค้ด และอัปเดตช่องจุดแรกเข้าของ Cloud Function ที่อยู่เหนือเครื่องมือแก้ไขในบรรทัดจากด้านขวาจากช่องรันไทม์
การเปลี่ยนจุดแรกเข้าจาก hello_http
เป็น get_order_list
จะแก้ไขปัญหาการทำให้ใช้งานได้
4. ล้างข้อมูล
หากต้องการล้างข้อมูล คุณอาจปิดโปรเจ็กต์หรือลบอินสแตนซ์ Cloud Function ก็ได้ คุณสามารถลบ Cloud Functions โดยใช้คอนโซล หรือด้วยคำสั่ง CLI ได้ดังตัวอย่างต่อไปนี้
gcloud functions delete codelab-cf --region=us-central1
5. ยินดีด้วย
ยินดีด้วย คุณได้ใช้ Gemini เพื่อแก้ปัญหาเกี่ยวกับแอปพลิเคชันได้สำเร็จแล้ว และตอนนี้เข้าใจแล้วว่า Gemini จะช่วยให้คุณเข้าใจบันทึกได้อย่างไร รวมถึงรับคำตอบสำหรับคำถามเกี่ยวกับ Google Cloud ได้ด้วย