แก้ปัญหาด้วย Gemini CodeLab

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 ที่คุณวางแผนจะทำงานด้วยสำหรับห้องทดลองนี้

22170459a4f3ba59.png

3. เปิดหน้า Cloud Functions ในคอนโซล โดยเลือก Cloud Functions จากเมนูการนําทาง (ไอคอนด้านบนซ้าย ☰ ในหน้าต่าง Console)

9d27c844c16ad3e4.png

หรือคุณจะค้นหา "ฟังก์ชันระบบคลาวด์" ก็ได้ ในช่องค้นหาของคอนโซล ให้ทำดังนี้

35f23e52875b26cd.png

คลิกปุ่มสร้างฟังก์ชันที่ด้านบนของรายการฟังก์ชัน 34b5e7e36f4e48e9.png

หากคุณไม่เคยใช้ Cloud Functions ในโปรเจ็กต์นี้มาก่อน ระบบจะขอให้คุณเปิดใช้ Google APIs เพื่อทำงาน

5b7978521d6f56f7.png

คลิก "เปิดใช้" เพื่อดำเนินการต่อ

4. กำหนดพร็อพเพอร์ตี้พื้นฐานของ Cloud Function ใหม่

  • ตั้งชื่อเป็น "codelab-cf"
  • เลือกตัวเลือก อนุญาตคำขอที่ไม่ผ่านการตรวจสอบสิทธิ์

6a2aaf9bedd161d9.png

หากต้องการทำขั้นตอนนี้ให้เสร็จสมบูรณ์ ให้คลิกปุ่ม "ถัดไป" ที่บริเวณด้านซ้ายล่างของหน้าต่าง

f4e76470dbdf6854.png

หลังจากคลิก "ถัดไป" คุณอาจได้รับแจ้งให้เปิดใช้ Google API เพิ่มเติม คลิก "เปิดใช้" เหมือนในขั้นตอนที่ 4

1ad7bf15c07eda49.png

ตั้งค่ารันไทม์และโค้ดของ Cloud Function

CodeLab นี้ใช้ Python เป็นภาษาโปรแกรม ไม่ต้องกังวลหากคุณไม่คุ้นเคยกับ Python คุณไม่จำเป็นต้องมีความรู้เกี่ยวกับ Python เพื่อทำให้ CodeLab นี้เสร็จสมบูรณ์

5. เลือก Python 3.11 เป็นรันไทม์ของฟังก์ชัน

9a3cd8bf272b4d02.png

โปรดทราบว่าการเปลี่ยนแปลงรันไทม์จะเปลี่ยนซอร์สโค้ดที่แสดงในตัวแก้ไขในบรรทัด

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 ที่ด้านซ้ายล่าง

17c4828702a32cd9.png

คุณอาจต้องรอ 2-3 นาทีจนกว่ากระบวนการติดตั้งใช้งานจะเสร็จสมบูรณ์ หากทำตามวิธีการตั้งค่าอย่างเคร่งครัด คุณจะเห็นการทำให้ใช้งานได้ที่ได้รับการรายงานว่าล้มเหลว

3. การค้นหาและแก้ไขปัญหา

ในส่วนนี้ คุณจะได้ใช้ฟีเจอร์คำอธิบายบันทึกและความช่วยเหลืออื่นๆ ของ Gemini เพื่อระบุปัญหาและวิธีแก้ไข

1. การทำให้ใช้งานได้ล้มเหลว คุณควรเห็นข้อความแสดงข้อผิดพลาดที่แจ้งให้ทราบถึงเรื่องนี้ พร้อมด้วยข้อมูลเพิ่มเติมและตัวเลือกในการดูบันทึกการทำให้ใช้งานได้ คลิก "ดูบันทึก" เพื่อดูบันทึกการทำให้ใช้งานได้

bc62db6ef3b35420.png

โปรดทราบว่าบันทึกการทำให้ใช้งานได้จะเปิดในแท็บแยกต่างหากในเบราว์เซอร์เดียวกัน คุณจะต้องไปที่แท็บต่างๆ เพื่อดำเนินการ CodeLab นี้ให้เสร็จสมบูรณ์

โปรดทราบว่าคุณอาจไม่เห็นบรรทัดในบันทึกเมื่อคลิก ดูบันทึก หรือดูเพียง 2-3 บรรทัดเท่านั้น ในกรณีดังกล่าว ให้ใช้ตัวเลือกช่วงเวลาในแผงการค้นหาของตัวสำรวจบันทึก แล้วเลือก 30 นาทีที่ผ่านมา

e24856920201ebf8.png

2. ตรวจสอบบันทึกในแท็บที่เปิดอยู่ โปรดตรวจดูว่าข้อมูลสรุปบันทึกมีลักษณะเป็น Calltack ของข้อยกเว้นหลายบรรทัด เนื่องจาก Cloud Function บันทึกข้อความที่พิมพ์ไปยัง stdout หรือ stderr และเขียนแต่ละบรรทัดเป็นรายการบันทึกแยกกัน บรรทัดอื่นๆ ในบันทึกจะสรุปข้อมูลเกี่ยวกับรหัสข้อผิดพลาดการออก รวมถึงข้อมูลเพิ่มเติมที่รายงานโดย Cloud Functions และ Cloud Run API

b49e41594173b57c.png

คุณสามารถคลิกที่บรรทัดใดก็ได้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับบันทึกเฉพาะ บันทึกที่ขยายจะมีองค์ประกอบ UI เพิ่มเติมเมื่อคลิก ซึ่งจะช่วยให้คุณคัดลอกข้อมูลทั้งหมดเกี่ยวกับบันทึก ขยายช่องทั้งหมดเพื่อแสดงข้อมูลทั้งหมดของรายการบันทึก และเพื่ออธิบายรายการบันทึกโดยใช้ Gemini

4. ข้อยกเว้น Calltack ไม่ได้ให้ข้อมูลมากนัก ค้นหาในบันทึกเพื่อค้นหาจุดสิ้นสุดของบันทึกสแต็กเทรซของข้อยกเว้น ซึ่งเป็นบรรทัดที่เขียนว่า "Container called exit(1)" สรุปบันทึกต่อไปนี้แจ้งว่า:

functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...

ดูเหมือนว่าจะเป็นผู้สมัครที่เหมาะสมสำหรับการตรวจสอบ คลิกที่บรรทัดนี้เพื่อขยายรายการบันทึก จากนั้นคลิก "อธิบายรายการบันทึกนี้" เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับบันทึกที่เลือก

b815de46d1b4597c.png

หากยังไม่เคยใช้ Gemini ในโปรเจ็กต์นี้มาก่อน ระบบจะแจ้งให้คุณเปิดใช้ API ที่จำเป็น หากคุณได้รับแจ้งให้เปิดใช้ API ให้คลิก "เปิดใช้" เพื่อดำเนินการต่อ

7ca90e087a2e99d1.png

โปรดทราบว่าบางครั้งคุณอาจได้รับข้อผิดพลาดเมื่อพรอมต์กับ Gemini ในเหตุการณ์ดังกล่าว ให้ดำเนินการกับข้อความแจ้งอีกครั้งอีกครั้งเพื่อรับคำตอบ ตัวอย่างเช่น คลิกลิงก์ "อธิบายรายการบันทึกนี้" อีกครั้ง

5. คำอธิบายรีวิวจาก Gemini หากคำอธิบายที่ได้รับนั้นไม่เพียงพอหรือไม่ชัดเจน ให้ Gemini ให้ข้อมูลเพิ่มเติมโดยใช้พรอมต์ต่อไปนี้หรือเขียนคำถามของคุณเอง

คุณให้ข้อมูลเพิ่มเติมเกี่ยวกับบันทึกนี้ได้ไหม
คุณให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้ไหม

6. จากนั้นแจ้งให้ Gemini ให้คำแนะนำในการแก้ไขปัญหา เช่น ขอให้ Gemini

วิธีแก้ไขปัญหานี้
แนะนำวิธีแก้ปัญหาข้อผิดพลาดนี้
แนะนำวิธีแก้ไขข้อผิดพลาดนี้

คำตอบของ Gemini อาจแตกต่างกันไปตามบริบทปัจจุบัน รวมถึงการใช้คำและรูปแบบของพรอมต์ด้วย คาดว่า Gemini จะแนะนำเพื่อตรวจสอบว่าซอร์สโค้ดของ Cloud Function มีฟังก์ชันที่มีชื่อว่า hello_http

7. คุณกำลังดูแท็บที่แสดงบันทึก Cloud Functions เลือกแท็บก่อนหน้าที่แสดงหน้าการทำให้ Cloud Function ใช้งานได้ที่มีข้อผิดพลาด แล้วคลิกแก้ไข

c3d9b207214a2240.png

8. ตรวจสอบว่ายังตั้งค่าการตรวจสอบสิทธิ์เป็น อนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์ และอัปเดตการเลือกหากจำเป็น

6a2aaf9bedd161d9.png

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 ที่อยู่เหนือเครื่องมือแก้ไขในบรรทัดจากด้านขวาจากช่องรันไทม์

9a3cd8bf272b4d02.png

การเปลี่ยนจุดแรกเข้าจาก hello_http เป็น get_order_list จะแก้ไขปัญหาการทำให้ใช้งานได้

4. ล้างข้อมูล

หากต้องการล้างข้อมูล คุณอาจปิดโปรเจ็กต์หรือลบอินสแตนซ์ Cloud Function ก็ได้ คุณสามารถลบ Cloud Functions โดยใช้คอนโซล หรือด้วยคำสั่ง CLI ได้ดังตัวอย่างต่อไปนี้

gcloud functions delete codelab-cf --region=us-central1

5. ยินดีด้วย

ยินดีด้วย คุณได้ใช้ Gemini เพื่อแก้ปัญหาเกี่ยวกับแอปพลิเคชันได้สำเร็จแล้ว และตอนนี้เข้าใจแล้วว่า Gemini จะช่วยให้คุณเข้าใจบันทึกได้อย่างไร รวมถึงรับคำตอบสำหรับคำถามเกี่ยวกับ Google Cloud ได้ด้วย

เอกสารอ้างอิง...