1. บทนำ
โมเดล Generative AI เป็นเครื่องมือให้เหตุผลที่มีประสิทธิภาพ แต่ขาดบริบทขององค์กร หากผู้บริหารถาม AI Agent ว่า "รายได้ในไตรมาสที่ 1 ของเราเป็นเท่าใด" Agent อาจพบตารางหลายสิบรายการที่ชื่อ "รายได้" ในที่เก็บข้อมูลขนาดใหญ่ของคุณ บางรายการเป็นรายงานทางการเงินที่เข้มงวด บางรายการเป็นค่าประมาณทางการตลาดแบบเรียลไทม์ และหลายรายการอาจเป็น Sandbox ที่เลิกใช้แล้ว
หากไม่มีข้อมูลพื้นฐานที่ชัดเจน AI Agent จะเลือกตารางตามความคล้ายคลึงของชื่ออย่างง่าย ซึ่งนำไปสู่คำตอบที่ "ผิดอย่างน่าเชื่อ" ซึ่งได้มาจากข้อมูลที่ไม่ได้ยืนยัน
Codelab นี้เป็นส่วนหนึ่งของซีรีส์ 2 ตอนที่สำรวจวิธีสร้าง GenAI Agent ที่คำนึงถึงการกำกับดูแล
ในส่วนแรกนี้ คุณจะได้สร้างรากฐานข้อมูล โดยจะตั้งค่าที่เก็บข้อมูลขนาดใหญ่ที่สมจริงและ "ยุ่งเหยิง" ใน BigQuery, ใช้แท็กข้อมูลเมตาที่เข้มงวด (แง่มุมของ Knowledge Catalog) เพื่อแยกความแตกต่างระหว่างข้อมูลที่ถูกต้องกับข้อมูลที่ไม่เกี่ยวข้อง และใช้ Gemini CLI เพื่อทดสอบในเครื่องว่า LLM ปฏิบัติตามกฎการกำกับดูแลของคุณอย่างเคร่งครัดหรือไม่
(คุณสามารถอ่านส่วนที่ 2 ของซีรีส์นี้ ซึ่งครอบคลุมวิธีติดตั้งใช้งานต้นแบบในเครื่องนี้ในเว็บแอปพลิเคชันระดับองค์กรที่ปลอดภัยโดยใช้ Model Context Protocol (MCP) และ Cloud Run 👉 อ่านส่วนที่ 2)

ข้อกำหนดเบื้องต้น
- โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
- ความเข้าใจและความคุ้นเคยกับ BigQuery, Knowledge Catalog Universal Catalog และ Terraform ในระดับพื้นฐาน
- สิทธิ์เข้าถึง Google Cloud Shell
สิ่งที่คุณจะได้เรียนรู้
- ติดตั้งใช้งานที่เก็บข้อมูลขนาดใหญ่หลายระดับที่สมจริงโดยใช้ Terraform
- ออกแบบเทมเพลตข้อมูลเมตาที่เข้มงวด (ประเภทแง่มุม) ใน Knowledge Catalog เพื่อแยกความแตกต่างระหว่างผลิตภัณฑ์ข้อมูลอย่างเป็นทางการกับตาราง Sandbox ที่ยังไม่ได้ประมวลผล
- ยืนยันกฎการกำกับดูแลในเครื่องโดยใช้ Gemini CLI ก่อนเขียนโค้ดของแอปพลิเคชัน
สิ่งที่คุณต้องมี
- สิทธิ์เข้าถึง Google Cloud Shell
- Terraform (ติดตั้งไว้ล่วงหน้าใน Cloud Shell)
- Gemini CLI (ติดตั้งไว้ล่วงหน้าใน Cloud Shell)
แนวคิดหลัก
- Knowledge Catalog Universal Catalog: บริการจัดการข้อมูลเมตาแบบครบวงจร เราใช้บริการนี้เพื่อเพิ่มข้อมูลเมตาทางเทคนิค (สคีมา) ด้วยบริบททางธุรกิจ (การกำกับดูแล)
- ประเภทแง่มุม: เทมเพลตข้อมูลเมตาที่มีโครงสร้าง แง่มุมบังคับใช้การพิมพ์ที่เข้มงวด (Enum, บูลีน) ซึ่งต่างจากแท็กข้อความอิสระ ทำให้เครื่องประเมินได้อย่างน่าเชื่อถือ
2. การตั้งค่าและข้อกำหนด
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะได้ใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จาก คอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

ระบบจะจัดเตรียมและเชื่อมต่อกับสภาพแวดล้อมในเวลาไม่นาน เมื่อเสร็จแล้ว คุณควรเห็นสิ่งต่อไปนี้

เครื่องเสมือนนี้โหลดเครื่องมือพัฒนาทั้งหมดที่คุณจะต้องใช้ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่คงอยู่ และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดใน Codelab นี้ได้ภายในเบราว์เซอร์ โดยไม่จำเป็นต้องติดตั้งสิ่งใด
เริ่มต้นสภาพแวดล้อม
เปิด Cloud Shell และตั้งค่าตัวแปรโปรเจ็กต์เพื่อให้แน่ใจว่าคำสั่งทั้งหมดกำหนดเป้าหมายไปที่โครงสร้างพื้นฐานที่ถูกต้อง
export PROJECT_ID=$(gcloud config get-value project)
gcloud config set project $PROJECT_ID
export REGION="us-central1"
เปิดใช้ API
เปิดใช้บริการ Google Cloud ที่จำเป็นเพื่อดำเนินการตามคำแนะนำต่อไปนี้
gcloud services enable \
artifactregistry.googleapis.com \
bigqueryunified.googleapis.com \
cloudaicompanion.googleapis.com \
cloudbuild.googleapis.com \
cloudresourcemanager.googleapis.com \
datacatalog.googleapis.com \
run.googleapis.com
โคลนที่เก็บ
รับโค้ดโครงสร้างพื้นฐานและสคริปต์การทำงานอัตโนมัติจากที่เก็บ GitHub เราจะดาวน์โหลดเฉพาะโฟลเดอร์ที่จำเป็นสำหรับแล็บนี้เท่านั้นเพื่อประหยัดพื้นที่ดิสก์ใน Cloud Shell
# Perform a shallow clone to get only the latest repository structure without the full history
git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
# Specify and download only the folder we need for this lab
git sparse-checkout set data-analytics/governance-context
cd data-analytics/governance-context
สร้าง Data Lake ที่ "ยุ่งเหยิง"
สภาพแวดล้อมข้อมูลในโลกแห่งความเป็นจริงมักจะไม่สะอาด เราจึงต้องมีทั้ง Data Mart "อย่างเป็นทางการ" และตาราง "Sandbox" ที่ไม่น่าเชื่อถือเพื่อจำลองความเป็นจริง
เราจะใช้ Terraform เพื่อติดตั้งใช้งานสภาพแวดล้อมนี้ การกำหนดค่าจะจัดการ 2 งานต่อไปนี้
- โครงสร้างพื้นฐาน: สร้างประเภทแง่มุมของ Knowledge Catalog และชุดข้อมูล/ตาราง BigQuery
- การโหลดข้อมูล: เรียกใช้งาน BigQuery INSERT เพื่อป้อนข้อมูลตัวอย่างลงในตารางทันทีหลังจากสร้าง
- ไปที่ไดเรกทอรี
terraformแล้วเริ่มต้นไดเรกทอรี
cd terraform
terraform init
- ใช้การกำหนดค่า การดำเนินการนี้อาจใช้เวลาถึง 1 นาที
terraform apply -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve
จุดตรวจสอบ: ตอนนี้คุณมีที่เก็บข้อมูลขนาดใหญ่ที่มีข้อมูลครบถ้วน แต่ไม่มีการกำกับดูแล สำหรับ AI แล้ว ตารางทุกตารางจะดูเหมือนกันทุกประการ
3. การกำกับดูแล
นี่เป็นขั้นตอนทางวิศวกรรมที่สำคัญ ปัจจุบัน ตาราง finance_mart.fin_monthly_closing_internal และ analyst_sandbox.tmp_data_dump_v2_final_real จะดูเหมือนกันสำหรับ LLM เนื่องจากเป็นเพียงออบเจ็กต์ที่มีคอลัมน์
ในฐานะวิศวกรด้านการกำกับดูแล คุณต้องแนบ แง่มุม (ป้ายกำกับข้อมูลเมตาที่ผ่านการรับรอง) กับตารางเหล่านี้เพื่อแยกความแตกต่าง ในองค์กรจริง คุณจะทำให้กระบวนการนี้เป็นอัตโนมัติผ่านไปป์ไลน์ CI/CD เราจะจำลองการทำงานอัตโนมัตินั้นด้วยสคริปต์
สร้างเพย์โหลดการกำกับดูแล
คีย์แง่มุมของ Knowledge Catalog ต้องไม่ซ้ำกันทั่วโลก (มีคำนำหน้าเป็นรหัสโปรเจ็กต์) สคริปต์ ./generate_payloads.sh จะสร้างไฟล์ข้อมูลเมตา YAML แบบไดนามิก
cd ..
chmod +x ./generate_payloads.sh
./generate_payloads.sh
เอาต์พุต:
การดำเนินการนี้จะสร้างโฟลเดอร์ "./aspect_payloads" ที่มีไฟล์ YAML 4 ไฟล์ ซึ่งกำหนดสถานการณ์การกำกับดูแล (Gold/Internal, Gold/Public, Silver/Realtime, Bronze/Sandbox)
ใช้แง่มุมผ่าน CLI
ก่อนเรียกใช้สคริปต์ มาดูกันก่อนว่าเรากำลังใช้สิ่งใดอยู่เพื่อทำความเข้าใจกระบวนการ เรียกใช้คำสั่งต่อไปนี้เพื่อดูโครงสร้างของเพย์โหลดทางการเงินภายใน
cat aspect_payloads/fin_internal.yaml
โดยจะแสดงเนื้อหาต่อไปนี้
your-project-id.us-central1.official-data-product-spec:
data:
product_tier: GOLD_CRITICAL
data_domain: FINANCE
usage_scope: INTERNAL_ONLY
update_frequency: DAILY_BATCH
is_certified: true
โปรดสังเกตว่า YAML นี้กำหนดบริบททางธุรกิจอย่างชัดเจน เช่น การตั้งค่าแฟล็ก is_certified: true และการกำหนดระดับ GOLD_CRITICAL ซึ่งเป็นการให้กฎที่ชัดเจนและมีโครงสร้างแก่ AI เพื่อประเมินแทนที่จะเดาตามชื่อตาราง
ตอนนี้ให้เรียกใช้สคริปต์ของแอปพลิเคชัน ซึ่งจะวนซ้ำตาราง BigQuery และเรียกใช้คำสั่ง gcloud dataplex entries update เพื่อแนบข้อมูลเมตาที่เข้มงวดนี้
chmod +x ./apply_governance.sh
./apply_governance.sh
การยืนยัน (ไม่บังคับ)
ก่อนดำเนินการต่อ ให้ยืนยันว่าได้ใช้ข้อมูลเมตาอย่างถูกต้องในคอนโซล
- เปิดหน้าKnowledge Catalog Universal Catalog ในคอนโซล Google Cloud หากไม่เห็น "Knowledge Catalog Universal Catalog" ในเมนูการนำทางด้านซ้ายมือ ให้ใช้แถบค้นหาที่ด้านบนของหน้าต่างคอนโซล Google Cloud แล้วพิมพ์ Knowledge Catalog จากนั้นเลือกผลการค้นหาในส่วน "ผลการค้นหาเด่น" หรือ "ผลิตภัณฑ์และหน้าเว็บ"
- ค้นหา
fin_monthly_closing_internalคุณควรเห็นตาราง BigQuery แสดงอยู่ในผลการค้นหา คลิกชื่อตารางเพื่อเข้าสู่หน้ารายละเอียด

- ในหน้ารายละเอียดของตาราง ให้มองหาส่วน "แท็กและแง่มุมที่ไม่บังคับ" ที่ด้านล่าง
- คุณจะเห็นแง่มุม
official-data-product-specยืนยันว่าค่าตรงกับสถานการณ์ "Gold Internal" ที่เราใช้

ตอนนี้คุณได้ยืนยันแล้วว่าตาราง BigQuery ที่เหมือนกันในทางเทคนิค (fin_monthly_closing_internal และ tmp_data_dump_v2_final_real) มีความแตกต่างกันในเชิงตรรกะด้วยข้อมูลเมตาที่เครื่องอ่านได้
4. กำหนดค่าและสร้างต้นแบบ Agent
ก่อนสร้างเว็บแอปพลิเคชัน (ซึ่งเราจะทำในส่วนที่ 2) เราจะยืนยันตรรกะการกำกับดูแลในเครื่อง โดยต้องติดตั้งส่วนขยาย Knowledge Catalog และกำหนดค่าข้อความแจ้งของระบบ
ติดตั้งส่วนขยาย
ติดตั้งส่วนขยาย Knowledge Catalog ใน Cloud Shell ระบบจะขอให้คุณยืนยันและระบุรายละเอียดการตั้งค่า
export DATAPLEX_PROJECT="${PROJECT_ID}"
gemini extensions install https://github.com/gemini-cli-extensions/dataplex
(พิมพ์ Y เพื่อยอมรับการติดตั้ง และป้อนรหัสโปรเจ็กต์เมื่อได้รับข้อความแจ้ง)
กำหนดไฟล์นโยบาย
ไฟล์ GEMINI.md มีตรรกะที่แปลกฎนามธรรมของมนุษย์ (เช่น "ฉันต้องการข้อมูลที่ปลอดภัย") เป็นการค้นหาทางเทคนิคที่เข้มงวด
ปัจจุบันไฟล์นี้เป็นไฟล์ทั่วไป Agent ต้องทราบอย่างแน่ชัดว่าจะค้นหาโปรเจ็กต์ Google Cloud ใดเพื่อป้องกันไม่ให้ Agent สร้างตารางขึ้นมาเองจากอินเทอร์เน็ตสาธารณะหรือบริบทอื่นๆ
- แทรก
PROJECT_IDลงในไฟล์นโยบาย
envsubst < GEMINI.md > GEMINI.md.tmp && mv GEMINI.md.tmp GEMINI.md
- ตรวจสอบไฟล์เพื่อทำความเข้าใจอัลกอริทึมที่เรากำลังสอน AI
cat GEMINI.md
โปรดสังเกต 2 สิ่งในไฟล์นี้
- ขอบเขตของโปรเจ็กต์: ตรวจสอบระยะที่ 2 ตรวจสอบว่า projectid:
${PROJECT_ID}ถูกแทนที่ด้วยรหัสโปรเจ็กต์จริงของคุณแล้ว(e.g., projectid:my-lab-project)หากไม่ได้แทนที่ตัวแปรนี้ Agent จะค้นหาในทุกโปรเจ็กต์ที่คุณมีสิทธิ์เข้าถึง ซึ่งนำไปสู่คำตอบที่ไม่ถูกต้อง - อัลกอริทึม: สังเกตตรรกะระยะที่ 1 / ระยะที่ 2 เราสั่งให้โมเดลอย่างชัดเจนว่าอย่าเดา SQL โมเดลต้องค้นหาคำจำกัดความของแท็กที่ถูกต้องก่อน (ระยะที่ 1) แล้วจึงค้นหาข้อมูล (ระยะที่ 2)
เริ่ม Agent และทดสอบสถานการณ์
เริ่มเซสชัน Gemini CLI โดยโหลดนโยบายการกำกับดูแลเป็นบริบทของระบบในครั้งนี้
gemini

หมายเหตุ: คุณอาจเห็นการโหลดไฟล์บริบทหลายไฟล์ (เช่น GEMINI.md และไฟล์อื่นๆ) ซึ่งเป็นเรื่องปกติ CLI จะโหลด GEMINI.md ในเครื่องสำหรับกฎเฉพาะของโปรเจ็กต์นี้ รวมถึงคำแนะนำเริ่มต้นสำหรับส่วนขยาย Knowledge Catalog เอง
ยืนยันการติดตั้ง
พิมพ์ /mcp desc เพื่อยืนยันว่าส่วนขยาย Knowledge Catalog ทำงานอยู่ คุณควรเห็น dataplex แสดงเป็นเซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้พร้อมเครื่องมือที่พร้อมใช้งาน

สถานการณ์การทดสอบ (การสร้างต้นแบบ)
วางข้อความแจ้งต่อไปนี้ลงในเซสชัน Agent ที่ทำงานอยู่ทีละรายการเพื่อยืนยันว่า Agent ปฏิบัติตามกฎของคุณ
- สถานการณ์ ก (รับรองข้อมูลของ CFO)
"We are preparing the deck for an internal Board of Directors meeting next week. I need the numbers to be absolutely finalized, trustworthy, and kept strictly confidential. Which table is safe to use?"
สิ่งที่คาดไว้: ค้นหา fin_monthly_closing_internal เนื่องจากมีความหมายตรงกับ GOLD_CRITICAL (ถูกต้อง) และ INTERNAL_ONLY (การประชุมคณะกรรมการ) ในแง่มุม
- สถานการณ์ ข (การเปิดเผยต่อสาธารณะ)
"I need to share our quarterly financial summary with an external consulting firm. It is critical that we do not leak any raw or internal metrics. Which dataset is officially scrubbed and explicitly approved for external sharing?"
สิ่งที่คาดไว้: Agent ต้องข้ามตารางภายในรายเดือนและเลือก fin_quarterly_public_report อย่างเคร่งครัด เนื่องจากเป็นข้อมูลเพียงรายการเดียวที่มีแท็ก EXTERNAL_READY
- สถานการณ์ ค (ความต้องการในการดำเนินงาน)
"My dashboard needs to show what's happening right now with our ad spend. I can't wait for the overnight load. What do you recommend?"
สิ่งที่คาดไว้: Agent เลือก mkt_realtime_campaign_performance เนื่องจากระบุความถี่ในการอัปเดต REALTIME_STREAMING ซึ่งให้ความสำคัญกับความถี่ดังกล่าวมากกว่าระดับ GOLD_CRITICAL ของข้อมูลทางการเงิน
- สถานการณ์ ง (การทดลอง Sandbox)
"I'm just playing around with some new ML models and need a lot of raw data. It doesn't need to be perfect, just a sandbox environment."
สิ่งที่คาดไว้: Agent เลือก tmp_data_dump_v2_final_real เนื่องจากมีความหมายตรงกับ BRONZE_ADHOC (ข้อมูลดิบ) และ is_certified: false (สภาพแวดล้อม Sandbox) ในแง่มุม
(หากต้องการออกจากเซสชัน Gemini ให้พิมพ์ /quit)
5. ยินดีด้วย ต้องทำอะไรต่อ
คุณได้สร้างรากฐานข้อมูลที่มีการกำกับดูแลเรียบร้อยแล้ว และพิสูจน์ให้เห็นว่า AI สามารถปฏิบัติตามกฎข้อมูลเมตาของคุณอย่างเคร่งครัดโดยใช้ต้นแบบ CLI ในเครื่อง
ตอนนี้คุณมาถึงจุดตรวจสอบแล้ว โปรดเลือกขั้นตอนถัดไป
ตัวเลือก ก: ฉันต้องการทำส่วนที่ 2 ต่อเลยตอนนี้
หากคุณพร้อมที่จะเปลี่ยนต้นแบบในเครื่องนี้ให้เป็นเว็บแอปพลิเคชันระดับโปรดักชันที่ปลอดภัยโดยใช้ Model Context Protocol (MCP) และ Cloud Run
👉 ลิงก์ไปยัง Codelab ส่วนที่ 2
ตัวเลือก ข: ฉันจะทำส่วนที่ 2 ในภายหลัง หรือต้องการทำเฉพาะส่วนที่ 1 ให้เสร็จสมบูรณ์
หากต้องการหยุดทำงานในวันนี้และหลีกเลี่ยงค่าใช้จ่ายระบบคลาวด์ คุณควรล้างข้อมูลทรัพยากร
ไม่ต้องกังวล ในส่วนที่ 2 เราจะมี "สคริปต์ด่วน" ที่จะสร้างสภาพแวดล้อมส่วนที่ 1 นี้ขึ้นมาใหม่ทั้งหมดให้คุณในเวลาเพียง 2 นาที คุณจึงสามารถทำงานต่อจากจุดที่คุณค้างไว้ได้
👉 ไปที่ส่วนการล้างข้อมูล
6. การล้างข้อมูล (สำหรับตัวเลือก ข เท่านั้น)
หากคุณหยุดทำงานที่นี่ ให้ทำลายทรัพยากรเพื่อหลีกเลี่ยงค่าใช้จ่าย
ทำลาย Data Lake (Terraform)
หากคุณอยู่ในสภาพแวดล้อม Gemini CLI ในขณะนี้ ให้ออกจากเซสชันโดยกด Ctrl+C 2 ครั้งหรือพิมพ์ /quit จากนั้นเรียกใช้คำสั่งต่อไปนี้
cd ~/devrel-demos/data-analytics/governance-context/terraform
terraform destroy -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve
ถอนการติดตั้งส่วนขยาย Gemini CLI และนำไฟล์ในเครื่องออก
gemini extensions uninstall dataplex
cd ~
rm -rf ~/devrel-demos