1. บทนำ
Codelab นี้เป็นส่วนหนึ่งของชุดข้อมูล 2 ส่วนที่อธิบายวิธีสร้างเอเจนต์ GenAI ที่คำนึงถึงการกำกับดูแล
(คุณอ่านส่วนแรกของชุดข้อมูลนี้ได้ ซึ่งครอบคลุมวิธีสร้างรากฐานข้อมูลโดยใช้แง่มุม Dataplex กับตาราง BigQuery และทดสอบกฎในเครื่องผ่าน Gemini CLI 👉 อ่านตอนที่ 1)
อย่างไรก็ตาม การทดสอบใน CLI ในเครื่องเป็นเพียงจุดเริ่มต้น หากต้องการเปิดตัวฟีเจอร์นี้ในทั้งบริษัท คุณต้องมีระบบรักษาความปลอดภัยแบบรวมศูนย์ การเชื่อมต่อเครื่องมือ AI ที่ได้มาตรฐาน และเฟรมเวิร์กแอปพลิเคชันที่เหมาะสมเพื่อจัดระเบียบตรรกะของเอเจนต์และมอบอินเทอร์เฟซการแชทที่คุ้นเคย
ในส่วนที่ 2 นี้ คุณจะได้แก้ปัญหาความท้าทายเหล่านี้และปรับขนาดให้พร้อมใช้งานจริง คุณจะนำกฎการกำกับดูแลไปใช้ในเซิร์ฟเวอร์ MCP ส่วนกลางที่โฮสต์ใน Cloud Run จากนั้นคุณจะใช้ Agent Development Kit (ADK) ของ Google เพื่อสร้างแอปพลิเคชันเอเจนต์จริงและเชื่อมต่อกับเครื่องมือ MCP พร้อมด้วย UI เว็บระดับมืออาชีพ

ข้อกำหนดเบื้องต้น
- โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
- ความเข้าใจพื้นฐานเกี่ยวกับ Cloud Run, บัญชีบริการ IAM และ Python
- ชุดข้อมูล BigQuery และแง่มุม Dataplex ที่สร้างขึ้นในส่วนที่ 1 (ไม่ต้องกังวลหากคุณลบไปแล้ว เรามีสคริปต์ด่วนด้านล่างเพื่อสร้างใหม่)
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ Model Context Protocol (MCP) เพื่อกำหนดมาตรฐานวิธีที่เอเจนต์ AI โต้ตอบกับข้อมูล Google Cloud
- วิธีทำให้เซิร์ฟเวอร์ MCP ที่ปลอดภัยใช้งานได้ใน Cloud Run
- วิธีสร้างเอเจนต์ AI โดยใช้ Agent Development Kit (ADK) และเชื่อมต่อกับแบ็กเอนด์ MCP
- วิธีเรียกใช้ UI สำหรับนักพัฒนาแอปในตัวของ ADK เพื่อโต้ตอบกับเอเจนต์ที่ควบคุม
สิ่งที่คุณต้องมี
- สิทธิ์เข้าถึง Google Cloud Shell
แนวคิดหลัก
- Model Context Protocol (MCP): MCP เป็นเหมือน "สาย USB-C อเนกประสงค์" สำหรับเอเจนต์ AI MCP มีวิธีมาตรฐานสำหรับ AI ในการเชื่อมต่อกับเครื่องมือข้อมูลขององค์กร (เช่น Dataplex และ BigQuery) อย่างปลอดภัย แทนที่จะเขียนโค้ดการผสานรวม API ที่กำหนดเองสำหรับโมเดล AI ทุกโมเดล
- Agent Development Kit (ADK): เฟรมเวิร์กโอเพนซอร์สที่ยืดหยุ่นของ Google ซึ่งออกแบบมาเพื่อลดความซับซ้อนของการพัฒนา AI Agent แบบครบวงจร โดยจะใช้หลักการวิศวกรรมซอฟต์แวร์กับการสร้างเอเจนต์ ซึ่งช่วยให้คุณจัดระเบียบเครื่องมือที่ซับซ้อน จัดการสถานะ และเปิดใช้ UI ของนักพัฒนาซอฟต์แวร์ในตัวได้อย่างง่ายดายเพื่อการทดสอบและการติดตั้งใช้งาน
2. การตั้งค่าและข้อกำหนด
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จาก Google Cloud Console ให้คลิกไอคอน 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"
จุดตรวจ: จะดำเนินการต่อหรือสร้างใหม่
เนื่องจากนี่คือส่วนที่ 2 เอเจนต์จึงต้องใช้ข้อมูลที่ควบคุมจากส่วนที่ 1 เพื่อให้ทำงานได้ โปรดเลือกเส้นทางของคุณ
เส้นทาง A: ฉันเพิ่งดูส่วนที่ 1 จบและทรัพยากรยังคงทำงานอยู่
เยี่ยมเลย ไปที่ไดเรกทอรีการทำงาน แล้วคุณก็พร้อมดำเนินการต่อ
cd ~/devrel-demos/data-analytics/governance-context
เส้นทาง B: ฉันข้ามส่วนที่ 1 หรือลบทรัพยากร (ล้างข้อมูล)
ไม่มีปัญหา เราได้จัดเตรียมบล็อกคำสั่ง "Fast-Track" ไว้ด้านล่าง ซึ่งจะสร้าง Data Lake ของ BigQuery ขึ้นใหม่โดยอัตโนมัติ และใช้ข้อมูลเมตาการกํากับดูแลของ Dataplex เหมือนกับที่เราทําในส่วนที่ 1
# 1. Clone the repo and navigate to the working directory
git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
git sparse-checkout set data-analytics/governance-context
cd data-analytics/governance-context
# 2. Rebuild the messy data lake with Terraform
cd terraform
terraform init
terraform apply -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve
# 3. Generate and apply Dataplex Aspects (Governance rules)
cd ..
chmod +x ./generate_payloads.sh ./apply_governance.sh
./generate_payloads.sh
./apply_governance.sh
3. ขยายขนาดด้วย MCP: การสร้าง Data Control Plane
ที่ผ่านมา คุณได้ทดสอบตรรกะการกำกับดูแลโดยใช้ Gemini CLI เรียบร้อยแล้ว ซึ่งเหมาะอย่างยิ่งสำหรับการสร้างต้นแบบอย่างรวดเร็ว แต่จะทำงานในเครื่องโดยใช้ข้อมูลเข้าสู่ระบบส่วนตัวของคุณ
ในสภาพแวดล้อมขององค์กรจริง คุณต้องมี Data Control Plane แบบรวมศูนย์ ในการสร้างนี้ เราจะใช้ GenAI Toolbox สำหรับฐานข้อมูล ซึ่งเป็นโปรเจ็กต์โอเพนซอร์สอย่างเป็นทางการของ Google กล่องเครื่องมือนี้มีเซิร์ฟเวอร์ MCP ที่สร้างไว้ล่วงหน้าซึ่งออกแบบมาเพื่อเชื่อมต่อเอเจนต์ AI กับฐานข้อมูลและบริการข้อมูลเมตาของ Google Cloud เช่น Dataplex อย่างปลอดภัยโดยเฉพาะ
การติดตั้งใช้งานกล่องเครื่องมือนี้เป็นเซิร์ฟเวอร์ MCP ใน Cloud Run ช่วยให้เราทำสิ่งต่อไปนี้ได้
- ข้อมูลประจำตัวแบบรวมศูนย์: ตัวแทนจะทำงานเป็นบัญชีบริการที่จำกัด ไม่ใช่บัญชีผู้ใช้ส่วนตัว
- การกำหนดมาตรฐาน: ไคลเอ็นต์ใดก็ตาม (ADK, Gemini, แอปที่กำหนดเอง) สามารถ "เสียบ" เข้ากับเซิร์ฟเวอร์นี้ได้โดยใช้โปรโตคอล MCP มาตรฐาน
- ขอบเขตที่ควบคุม (สิทธิ์น้อยที่สุด): เราไม่ได้ให้สิทธิ์เข้าถึง BigQuery แบบเปิดแก่ LLM เราบังคับให้ระบบไปยังแคตตาล็อกข้อมูลเมตาของ Dataplex ก่อน
กำหนดค่าคำจำกัดความของเครื่องมือ (tools.yaml)
กล่องเครื่องมือ GenAI ต้องใช้ไฟล์การกำหนดค่าแบบประกาศ tools.yaml ไฟล์นี้จะกำหนด sources (ตำแหน่งที่จะเชื่อมต่อ) และ tools (สิ่งที่ AI ได้รับอนุญาตให้ทำ)
- ไปที่ไดเรกทอรีเซิร์ฟเวอร์และแทรกรหัสโปรเจ็กต์ลงในไฟล์การกำหนดค่า
cd ~/devrel-demos/data-analytics/governance-context/mcp_server
envsubst < tools.yaml > tools.tmp && mv tools.tmp tools.yaml
cat tools.yaml
โดยควรมีลักษณะเหมือนกับข้อมูลโค้ดต่อไปนี้ ตรวจสอบว่าฟิลด์โปรเจ็กต์ตรงกับรหัสโปรเจ็กต์ Google Cloud จริงแล้ว
sources:
dataplex:
kind: dataplex
project: YOUR-PROJECT-ID
tools:
search_entries:
kind: dataplex-search-entries
source: dataplex
description: Search for entries in Dataplex Catalog.
lookup_entry:
kind: dataplex-lookup-entry
source: dataplex
description: Retrieve a specific entry from Dataplex Catalog.
search_aspect_types:
kind: dataplex-search-aspect-types
source: dataplex
description: Find aspect types relevant to a query.
toolsets:
dataplex-toolset:
- search_entries
- lookup_entry
- search_aspect_types
การกำหนดเครื่องมือทั้ง 3 อย่างนี้จะช่วยให้เราบังคับให้ AI เป็นแบบ "อ่านอย่างเดียว" และ "เน้นการกำกับดูแลเป็นอันดับแรก" ได้
รักษาความปลอดภัยให้กับการกำหนดค่า (Secret Manager)
ในสถาปัตยกรรมขององค์กร คุณไม่ควรฝังไฟล์การกำหนดค่าลงในอิมเมจคอนเทนเนอร์โดยตรง เราจะจัดเก็บ tools.yaml อย่างปลอดภัยใน Secret Manager ของ Google Cloud
gcloud services enable secretmanager.googleapis.com
gcloud secrets create dataplex-tools-config --data-file=tools.yaml
ใช้สิทธิ์ขั้นต่ำ (IAM)
จากนั้นเราจะสร้างบัญชีบริการเฉพาะสำหรับเซิร์ฟเวอร์ MCP ของกล่องเครื่องมือ GenAI โดยข้อมูลประจำตัวนี้จะมีสิทธิ์ที่จำเป็นในการอ่านแคตตาล็อก Dataplex และเข้าถึงข้อมูล BigQuery เท่านั้น
export MCP_SA=mcp-sa
gcloud iam service-accounts create ${MCP_SA} \
--display-name="Service Account for Dataplex MCP"
export MCP_SERVICE_ACCOUNT="${MCP_SA}@${PROJECT_ID}.iam.gserviceaccount.com"
# Allow the server to read its own config from Secret Manager
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
--role="roles/secretmanager.secretAccessor"
# Allow the server to read Dataplex Metadata and BigQuery Data
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
--role="roles/dataplex.catalogViewer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
--role="roles/bigquery.dataViewer"
ติดตั้งใช้งานเซิร์ฟเวอร์ MCP ใน Cloud Run
ตอนนี้เราจะติดตั้งใช้งานกล่องเครื่องมือ GenAI เราใช้รูปภาพคอนเทนเนอร์ที่สร้างไว้ล่วงหน้าของ Google (database-toolbox/toolbox) และติดตั้งการกำหนดค่าจาก Secret Manager (--set-secrets) ในช่วงรันไทม์
export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy governance-mcp \
--image=$IMAGE \
--service-account $MCP_SERVICE_ACCOUNT \
--region=$REGION \
--no-allow-unauthenticated \
--set-secrets="/app/tools.yaml=dataplex-tools-config:latest" \
--args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080"
ตอนนี้คุณได้สร้าง API ที่มีการควบคุมแล้ว แทนที่จะให้ส่วนหน้าของ GenAI เข้าถึงฐานข้อมูลโดยตรง ส่วนหน้าจะเชื่อมต่อกับ URL ของ Cloud Run นี้ โดยเอเจนต์จะดูได้เฉพาะสิ่งที่กล่องเครื่องมือนี้อนุญาตให้ดูเท่านั้น
4. สร้างแบ็กเอนด์ของ Agent ด้วย ADK
คุณได้สร้าง Data Control Plane (MCP) ที่ปลอดภัยและมีการควบคุมซึ่งทำงานบน Cloud Run ตอนนี้ AI Agent ของคุณต้องมีเฟรมเวิร์กเพื่อจัดระเบียบตรรกะ เช่น การประมวลผลอินพุตของผู้ใช้ การตัดสินใจว่าจะเรียกเซิร์ฟเวอร์ MCP เมื่อใด และการจัดรูปแบบเอาต์พุต
เราจะใช้ Agent Development Kit (ADK) ของ Google แทนการเขียนโค้ดมาตรฐานทั้งหมดนี้ตั้งแต่ต้น ADK เป็นเฟรมเวิร์กแบบโค้ดเป็นอันดับแรกที่จะรวมตรรกะของ Agent เข้ากับแบ็กเอนด์ FastAPI โดยอัตโนมัติ นอกจากนี้ ยังมาพร้อมกับ UI สำหรับนักพัฒนาซอฟต์แวร์ในตัว ซึ่งช่วยให้คุณเห็นภาพกระบวนการให้เหตุผลและการเรียกใช้เครื่องมือของเอเจนต์ได้ทันทีโดยไม่ต้องสร้างส่วนหน้าแบบกำหนดเองก่อน
ตรวจสอบตรรกะของเอเจนต์ (agent.py)
ก่อนกำหนดค่าโครงสร้างพื้นฐาน เรามาดูแกนหลักของแอปพลิเคชันนี้กัน
ไปที่ไดเรกทอรีและแสดงเนื้อหาของ agent.py ไฟล์นี้เป็น "สมอง" ของการติดตั้งใช้งาน ADK
cd ~/devrel-demos/data-analytics/governance-context/mcp_server
cat agent.py
ดูโครงสร้างโค้ด โดยมีฟังก์ชันสำคัญ 3 อย่างที่มีข้อความเทมเพลตที่ต้องใช้บ่อยๆ น้อยที่สุด ดังนี้
- การผสานรวม MCPToolset: ADK ใช้
MCPToolset(server_url=mcp_url)แทนการเขียนไคลเอ็นต์ HTTP ที่กำหนดเองเพื่อโต้ตอบกับเครื่องมือ Dataplex ซึ่งจะดึงข้อมูลtools.yamlแบบไดนามิกจากเซิร์ฟเวอร์ MCP ที่คุณติดตั้งใช้งาน และแปลเป็นฟังก์ชันการเรียกใช้ดั้งเดิมสำหรับ LLM - คำสั่งของระบบ: พารามิเตอร์
instructionsมีกฎการกำกับดูแลที่เข้มงวด (ตรรกะเดียวกันกับที่เราใช้ใน CLIGEMINI.md) โดยจะสั่งให้โมเดลดำเนินการลูปการให้เหตุผลจากเฟส 1 (การค้นหาข้อมูลเมตา) ไปยังเฟส 2 (การค้นหาข้อมูล) อย่างชัดเจน - การประสานงานเอเจนต์: คลาส
Agent(...)จะเชื่อมโยงโมเดล Gemini, พรอมต์ของระบบ และเครื่องมือ MCP เข้าด้วยกัน เมื่อติดตั้งใช้งาน ADK จะแปลงออบเจ็กต์นี้เป็นปลายทาง FastAPI ที่ปรับขนาดได้โดยอัตโนมัติ
การแยกหน้าที่: กำหนดค่าข้อมูลประจำตัวของส่วนหน้า
หากต้องการเรียกใช้โค้ดนี้อย่างปลอดภัย เราต้องบอก Agent ว่าเซิร์ฟเวอร์ MCP อยู่ที่ใด เราจะสร้าง URL แบบไดนามิกและบันทึกลงในไฟล์ .env ซึ่ง ADK จะอ่านในขณะรันไทม์
นอกจากนี้ เราจะสร้างข้อมูลประจำตัวแยกต่างหาก (dataplex-agent-sa) สำหรับแอปพลิเคชันที่แสดงต่อผู้ใช้นี้ด้วย การแยกหน้าที่นี้ช่วยให้มั่นใจว่าตัวแทนส่วนหน้ามีสิทธิ์ที่แตกต่างจากเซิร์ฟเวอร์การกำกับดูแลส่วนหลัง
เรียกใช้คำสั่งต่อไปนี้เพื่อกำหนดค่าสภาพแวดล้อมและข้อมูลประจำตัว
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
export MCP_SERVER_URL=https://governance-mcp-${PROJECT_NUMBER}.${REGION}.run.app/mcp
export AGENT_SA=dataplex-agent-sa
export AGENT_SERVICE_ACCOUNT="${AGENT_SA}@${PROJECT_ID}.iam.gserviceaccount.com"
gcloud iam service-accounts create ${AGENT_SA} \
--display-name="Service Account for Dataplex Agent "
กำหนดค่าตัวแปรรันไทม์
เฟรมเวิร์ก ADK ใช้ตัวแปรสภาพแวดล้อมเพื่อทำความเข้าใจบริบท เราต้องตั้งค่ารหัสโปรเจ็กต์ ภูมิภาค และเปิดใช้การใช้งาน Vertex AI อย่างชัดเจน เราจะต่อท้ายข้อมูลเหล่านี้ใน.envไฟล์เดียวกัน
echo MCP_SERVER_URL=$MCP_SERVER_URL > .env
echo GOOGLE_GENAI_USE_VERTEXAI=1 >> .env
echo GOOGLE_CLOUD_PROJECT=$PROJECT_ID >> .env
echo GOOGLE_CLOUD_LOCATION=$REGION >> .env
ให้สิทธิ์
แม้ว่าตัวแทนจะมอบหมายการตรวจสอบการกำกับดูแลให้กับเซิร์ฟเวอร์ MCP แต่ก็ยังต้องมีสิทธิ์พื้นฐานในการดำเนินการ เราจะมอบบทบาท 2 อย่างต่อไปนี้
- ผู้ใช้ Vertex AI: เรียกใช้โมเดล Gemini เพื่อสร้างคำตอบที่เป็นภาษาธรรมชาติ
- ผู้เรียกใช้ Cloud Run: เพื่อเรียกใช้ MCP Server API อย่างปลอดภัย แต่จะไม่ได้รับสิทธิ์เข้าถึง BigQuery หรือ Dataplex โดยตรง
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
--role="roles/aiplatform.user"
gcloud run services add-iam-policy-binding governance-mcp \
--region=$REGION \
--member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
--role="roles/run.invoker"
ทำให้ใช้งานได้กับ Cloud Run
สุดท้าย เราจะติดตั้งใช้งานฟูลสแต็กใน Cloud Run
เราใช้ uvx เพื่อเรียกใช้เครื่องมือ ADK โดยไม่ต้องติดตั้งทรัพยากร Dependency ด้วยตนเอง คำสั่งด้านล่างจะแพ็กเกจตรรกะ agent.py สร้างอิมเมจคอนเทนเนอร์ แทรกบัญชีบริการ และเปิดใช้เซิร์ฟเวอร์ FastAPI การเพิ่มแฟล็ก --with_ui จะเป็นการรวม ADK Web Playground ไว้สำหรับการแก้ไขข้อบกพร่องด้วย
คำสั่งนี้จะสร้างคอนเทนเนอร์และทำให้ใช้งานได้ ซึ่งอาจใช้เวลา 1-3 นาที
uvx --from google-adk \
adk deploy cloud_run \
--project=$PROJECT_ID \
--region=$REGION \
--service_name=dataplex-agent \
--with_ui \
. \
-- \
--service-account=$AGENT_SERVICE_ACCOUNT \
--allow-unauthenticated
เมื่อคำสั่งนี้เสร็จสมบูรณ์แล้ว ระบบจะแสดงURL ของบริการ (e.g., https://dataplex-agent-xyz.run.app) คลิกที่ลิงก์ดังกล่าวเพื่อเปิดอินเทอร์เฟซแชท GenAI ที่มีการควบคุมอย่างเต็มรูปแบบ

ขั้นตอนสถาปัตยกรรมตั้งแต่ต้นจนจบ
ตอนนี้คุณได้ทำตามขั้นตอนในระบบเสร็จเรียบร้อยแล้ว เมื่อผู้ใช้โต้ตอบกับ UI ของ ADK จะเกิดลําดับต่อไปนี้
- ผู้ใช้ส่งพรอมต์ใน ADK Agent (Dev UI)
- ADK Agent (agent.py) จะประมวลผลอินพุตและเรียกใช้โมเดล Gemini
- Gemini ระบุว่าต้องใช้บริบทและขอให้เซิร์ฟเวอร์ MCP เรียกใช้เครื่องมือ Dataplex
- เซิร์ฟเวอร์ MCP จะบังคับใช้กฎการกำกับดูแล Dataplex และแสดงข้อมูลเมตา
- Gemini จะสังเคราะห์คำตอบที่เชื่อถือได้โดยอิงตามข้อมูลเมตา แล้วส่งกลับให้ผู้ใช้
5. ทดสอบ Enterprise Agent
ตอนนี้เอเจนต์ของคุณพร้อมใช้งานแล้ว มาดูสถานการณ์การกำกับดูแลที่เราทดสอบไปก่อนหน้านี้ด้วย CLI กัน ตรรกะยังคงเหมือนเดิม แต่ตอนนี้คุณกำลังโต้ตอบกับ ADK Web Playground ที่ติดตั้งใช้งานแล้ว ซึ่งจะแสดงภาพสถานะภายในและการดำเนินการของเครื่องมือ
- การประสานงาน: ตัวแทน ADK (ทำงานใน Cloud Run) จะได้รับข้อความของคุณ
- การกำหนดเส้นทางเครื่องมือ: Gemini รับรู้ว่าคำถามของคุณต้องใช้บริบทของข้อมูลและส่งต่อคำขอไปยังเซิร์ฟเวอร์ MCP
- การตรวจสอบการกำกับดูแล: เซิร์ฟเวอร์ MCP (ทำงานในอินสแตนซ์ Cloud Run แยกต่างหาก) จะค้นหา Dataplex สำหรับประเภท Aspect ที่เฉพาะเจาะจง
- การสังเคราะห์: ระบบจะส่งคืนข้อมูลเมตาที่เกี่ยวข้องไปยัง Gemini เพื่อสร้างคำตอบสุดท้าย
ยืนยันตรรกะการกำกับดูแล
เปิด URL ของบริการที่คุณสร้างในขั้นตอนก่อนหน้า (e.g., https://dataplex-agent-xyz.run.app) ในเบราว์เซอร์ วางพรอมต์ต่อไปนี้
"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 ใน UI ของนักพัฒนาแอป
- การจดจำเจตนา: เอเจนต์จะแยกวิเคราะห์คำว่า "ตอนนี้" และ "รอข้ามคืนไม่ได้"
- การค้นหาข้อมูลเมตา: เรียกใช้เครื่องมือ MCP
search_aspect_typesโดยจะค้นหาสินทรัพย์ข้อมูลที่ตั้งค่าupdate_frequencyแง่มุมเป็นเรียลไทม์หรือสตรีมมิง แทนที่จะเป็นรายวันหรือรายเดือน - การเลือก: ระบบระบุว่าตาราง
mkt_realtime_campaign_performanceเป็นไปตามเกณฑ์เหล่านี้ ในขณะที่fin_monthly_closing_internal(แม้จะมีคุณภาพสูง) ก็ยังช้าเกินไปสำหรับคำขอของคุณ - คำตอบ: เจ้าหน้าที่แนะนำตารางแบบเรียลไทม์

ความสำคัญ:
หากไม่มีข้อมูลเมตาการกำกับดูแลนี้ LLM อาจแนะนำตาราง fin_monthly_closing_internal เพียงเพราะมีคอลัมน์ชื่อ "ad_spend" โดยไม่สนใจว่าข้อมูลนั้นมีอายุ 24 ชั่วโมง บริบทของข้อมูลเมตาช่วยป้องกันข้อผิดพลาดทางธุรกิจ
นอกจากนี้ คุณยังทดสอบพรอมต์ "การประชุมคณะกรรมการ" เพื่อดูว่าเอเจนต์จะเปลี่ยนไปใช้ตารางต่างๆ ตามแง่มุมของระดับผลิตภัณฑ์ข้อมูลได้อย่างไร
"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?"
6. ล้างข้อมูล
โปรดทำตามขั้นตอนต่อไปนี้เพื่อทำลายโครงสร้างพื้นฐานทั้งหมดที่สร้างขึ้นในส่วนที่ 1 และส่วนที่ 2 เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ใน Codelab นี้
ทำลาย Data Lake (Terraform)
ใช้ Terraform เพื่อลบตาราง ชุดข้อมูล และคำจำกัดความของ Dataplex Aspect ใน BigQuery
cd ~/devrel-demos/data-analytics/governance-context/terraform
terraform destroy -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve
ลบบริการ Cloud Run
นำทรัพยากรการประมวลผลออกเพื่อหยุดการเรียกเก็บเงินที่ใช้งานอยู่สำหรับคอนเทนเนอร์ที่ทำงานอยู่
gcloud run services delete governance-mcp --region=$REGION --quiet
gcloud run services delete dataplex-agent --region=$REGION --quiet
ล้างอาร์ติแฟกต์บิลด์และพื้นที่เก็บข้อมูลการจัดเตรียม
เมื่อคุณติดตั้งใช้งานเอเจนต์ ADK โดยใช้ uvx ระบบจะสร้างอิมเมจคอนเทนเนอร์โดยอัตโนมัติและอัปโหลดซอร์สโค้ดไปยังที่เก็บข้อมูล Cloud Storage ชั่วคราว อาร์ติแฟกต์เหล่านี้จะยังคงอยู่แม้หลังจากลบบริการ Cloud Run แล้ว และจะทำให้เกิดค่าใช้จ่ายในการจัดเก็บอย่างต่อเนื่อง
นำที่เก็บ Artifact Registry และ Bucket การทดลองใช้ของ Cloud Storage ออกโดยทำดังนี้
# Delete the repository used for the agent build
gcloud artifacts repositories delete cloud-run-source-deploy \
--location=$REGION \
--quiet
# Delete the staging bucket created by Cloud Run source deploy
gcloud storage rm --recursive gs://run-sources-${PROJECT_ID}-${REGION}
ลบข้อมูลประจำตัว สิทธิ์ และข้อมูลลับ
ก่อนอื่นให้นำการเชื่อมโยงนโยบาย IAM ออกเพื่อป้องกันไม่ให้รายการ "หลุมศพ" (ระเบียนที่ไม่มีเจ้าของ) ยังคงอยู่ในหน้า IAM ของโปรเจ็กต์ จากนั้นลบบัญชีบริการและข้อมูลลับในการกำหนดค่า
# Remove IAM roles granted to the MCP Service Account
gcloud projects remove-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
--role="roles/secretmanager.secretAccessor" --quiet
gcloud projects remove-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
--role="roles/dataplex.catalogViewer" --quiet
gcloud projects remove-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$MCP_SERVICE_ACCOUNT" \
--role="roles/bigquery.dataViewer" --quiet
# Remove IAM roles granted to the Agent Service Account
gcloud projects remove-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
--role="roles/aiplatform.user" --quiet
# Delete the Service Accounts
gcloud iam service-accounts delete $MCP_SERVICE_ACCOUNT --quiet
gcloud iam service-accounts delete $AGENT_SERVICE_ACCOUNT --quiet
# Delete the Secret Manager entry
gcloud secrets delete dataplex-tools-config --quiet
นำการกำหนดค่าในเครื่องออก
สุดท้าย ให้ล้างไฟล์การกำหนดค่าในเครื่องและตัวแปรสภาพแวดล้อมใน Cloud Shell
# Uninstall the Gemini CLI extension (installed in Part 1)
gemini extensions uninstall dataplex
# Remove local repository files and unset variables
cd ~
rm -rf ~/devrel-demos
unset MCP_SERVER_URL
unset MCP_SERVICE_ACCOUNT
unset AGENT_SERVICE_ACCOUNT
7. ยินดีด้วย
คุณได้ติดตั้งใช้งานเอเจนต์ GenAI ที่คำนึงถึงการกำกับดูแลแบบครบวงจรเรียบร้อยแล้ว
ใน Codelab 2 ส่วนนี้ คุณได้ก้าวข้ามการสร้างพรอมต์อย่างง่ายเพื่อใช้สถาปัตยกรรมที่มีประสิทธิภาพและพร้อมใช้งานจริง การถือว่าการกำกับดูแลข้อมูลเป็นข้อกำหนดเบื้องต้นสำหรับ GenAI ทำให้คุณได้สร้างวิธีการที่เป็นระบบเพื่อป้องกันไม่ให้โมเดลดึงข้อมูลที่ไม่ได้รับการรับรองหรือข้อมูลที่โมเดลแต่งขึ้น
สิ่งสำคัญที่ได้เรียนรู้
- AI ที่กำหนดได้ผ่านข้อมูลเมตา: คุณบังคับใช้ลูปการให้เหตุผลที่เข้มงวดโดยใช้กล่องเครื่องมือ GenAI สำหรับฐานข้อมูล แทนที่จะพึ่งพา LLM ในการคาดเดาตารางที่ถูกต้องตามชื่อคอลัมน์ การเปิดเผยเครื่องมือ Dataplex เพียง 3 รายการอย่างชัดเจน (
search_aspect_types,search_entries,lookup_entry) ทำให้โมเดลต้องยืนยันการรับรองข้อมูลก่อนที่จะสังเคราะห์คำตอบ - สถาปัตยกรรมที่แยกออกจากกัน (MCP): การติดตั้งใช้งานเซิร์ฟเวอร์ Model Context Protocol (MCP) ใน Cloud Run จะช่วยให้คุณแยกกฎการกำกับดูแลข้อมูลออกเป็น API ที่มีมาตรฐานและรวมศูนย์ เอเจนต์ส่วนหน้าไม่จำเป็นต้องมีตรรกะของฐานข้อมูล เพียงแค่ต้องสื่อสารผ่านมาตรฐาน MCP ซึ่งหมายความว่าคุณสามารถเสียบโมเดลหรือไคลเอ็นต์ AI ในอนาคตเข้ากับแบ็กเอนด์ที่ควบคุมเดียวกันนี้ได้
- การแบ่งแยกหน้าที่: คุณใช้หลักการให้สิทธิ์ขั้นต่ำที่สุดโดยการแยกข้อมูลประจำตัว IAM เอเจนต์ ADK ที่หันหน้าเข้าหาผู้ใช้จะทํางานโดยมีสิทธิ์ที่จํากัดไว้สําหรับการเรียกใช้โมเดลและการกำหนดเส้นทาง API ขณะที่เซิร์ฟเวอร์ MCP ที่แบ็กเอนด์จะจัดการการค้นหาแคตตาล็อก Dataplex และการดึงข้อมูล BigQuery อย่างปลอดภัย
- การประสานงานเอเจนต์แบบเน้นโค้ดเป็นอันดับแรก: คุณใช้ชุดพัฒนาเอเจนต์ (ADK) ของ Google เพื่อห่อหุ้มตรรกะเอเจนต์ Python ของคุณทันทีในแบ็กเอนด์ FastAPI ที่ปรับขนาดได้ โดยใช้ UI สำหรับนักพัฒนาซอฟต์แวร์ในตัวเพื่อแสดงภาพและแก้ไขข้อบกพร่องของการดำเนินการเครื่องมือภายในของเอเจนต์
สิ่งที่จะเกิดขึ้นต่อจากนี้
- Codelab เกี่ยวกับการกำกับดูแลพื้นฐานของ Dataplex: เรียนรู้พื้นฐานของการกำกับดูแลข้อมูลใน Dataplex ก่อนที่จะเพิ่มเลเยอร์ AI
- เอกสารประกอบเกี่ยวกับเครื่องมือ Dataplex: ดูเอกสารประกอบอย่างเป็นทางการสำหรับเครื่องมือและส่วนขยาย Dataplex ที่สร้างไว้ล่วงหน้าซึ่งใช้ในแล็บนี้
- เริ่มต้นใช้งานส่วนขยาย Gemini CLI: ดูวิธีสร้างส่วนขยายที่กำหนดเองเพื่อเพิ่มความสามารถให้กับเอเจนต์ GenAI
- เจาะลึก MCP: ดูข้อกำหนด MCP อย่างเป็นทางการเพื่อทำความเข้าใจวิธีสร้างเซิร์ฟเวอร์ที่กำหนดเองสำหรับ API ภายในขององค์กร