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

ข้อกำหนดเบื้องต้น
- โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
- ความเข้าใจพื้นฐานเกี่ยวกับ Cloud Run, บัญชีบริการ IAM และ Python
- ชุดข้อมูล BigQuery และ Knowledge Catalog Aspects ที่สร้างขึ้นในส่วนที่ 1 (ไม่ต้องกังวลหากคุณลบชุดข้อมูลและ Knowledge Catalog Aspects ไปแล้ว เรามีสคริปต์ "Fast-Track" ด้านล่างเพื่อสร้างชุดข้อมูลและ Knowledge Catalog Aspects เหล่านั้นขึ้นมาใหม่)
สิ่งที่คุณจะได้เรียนรู้
- วิธีใช้ Model Context Protocol (MCP) เพื่อกำหนดมาตรฐานวิธีที่ AI Agent โต้ตอบกับข้อมูล Google Cloud
- วิธีติดตั้งใช้งานเซิร์ฟเวอร์ MCP ที่ปลอดภัยใน Cloud Run
- วิธีสร้าง AI Agent โดยใช้ Agent Development Kit (ADK) และเชื่อมต่อกับแบ็กเอนด์ MCP
- วิธีเรียกใช้ UI สำหรับนักพัฒนาแอปในตัวของ ADK เพื่อโต้ตอบกับ Agent ที่มีการกำกับดูแล
สิ่งที่คุณต้องมี
- สิทธิ์เข้าถึง Google Cloud Shell
แนวคิดหลัก
- Model Context Protocol (MCP): ลองนึกภาพ MCP เป็น "สาย USB-C อเนกประสงค์" สำหรับ AI Agent MCP มีวิธีมาตรฐานให้ AI เชื่อมต่อกับเครื่องมือข้อมูลระดับองค์กร (เช่น Knowledge Catalog และ BigQuery) ได้อย่างปลอดภัย แทนที่จะเขียนโค้ดการผสานรวม API ที่กำหนดเองสำหรับโมเดล AI แต่ละโมเดล
- Agent Development Kit (ADK): เฟรมเวิร์กโอเพนซอร์สที่ยืดหยุ่นของ Google ซึ่งออกแบบมาเพื่อลดความซับซ้อนของการพัฒนา AI Agent ตั้งแต่ต้นจนจบ โดยใช้หลักการวิศวกรรมซอฟต์แวร์กับการสร้าง Agent ซึ่งช่วยให้คุณจัดการเครื่องมือที่ซับซ้อน จัดการสถานะ และเปิดตัว UI สำหรับนักพัฒนาแอปในตัวเพื่อการทดสอบและการติดตั้งใช้งานได้อย่างง่ายดาย
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"
จุดตรวจ: กลับมาทำต่อหรือสร้างใหม่
เนื่องจาก Codelab นี้เป็นส่วนที่ 2 Agent ของคุณจึงต้องใช้ข้อมูลที่มีการกำกับดูแลจากส่วนที่ 1 เพื่อให้ทำงานได้ โปรดเลือกเส้นทางต่อไปนี้
เส้นทาง ก: ฉันเพิ่งทำส่วนที่ 1 เสร็จและทรัพยากรของฉันยังคงทำงานอยู่
เยี่ยมเลย ไปที่ไดเรกทอรีการทำงาน แล้วคุณก็พร้อมที่จะดำเนินการต่อ
cd ~/devrel-demos/data-analytics/governance-context
เส้นทาง ข: ฉันข้ามส่วนที่ 1 หรือลบทรัพยากร (ล้างข้อมูล) ไปแล้ว
ไม่มีปัญหา เราได้จัดเตรียมบล็อกคำสั่ง "Fast-Track" ไว้ด้านล่าง ซึ่งจะสร้างที่เก็บข้อมูลขนาดใหญ่ของ BigQuery ขึ้นมาใหม่โดยอัตโนมัติและใช้ข้อมูลเมตาการกำกับดูแลของ Knowledge Catalog เหมือนกับที่เราทำในส่วนที่ 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 Knowledge Catalog 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 for Databases ซึ่งเป็นโปรเจ็กต์โอเพนซอร์สอย่างเป็นทางการของ Google เพื่อสร้าง Data Control Plane นี้ Toolbox นี้มีเซิร์ฟเวอร์ MCP ที่สร้างไว้ล่วงหน้าซึ่งออกแบบมาโดยเฉพาะเพื่อเชื่อมต่อ AI Agent กับฐานข้อมูล Google Cloud และบริการข้อมูลเมตา เช่น Knowledge Catalog ได้อย่างปลอดภัย
การติดตั้งใช้งาน Toolbox นี้เป็นเซิร์ฟเวอร์ MCP ใน Cloud Run จะช่วยให้เราได้รับสิ่งต่อไปนี้
- ข้อมูลประจำตัวแบบรวมศูนย์: Agent จะทำงานเป็นบัญชีบริการที่จำกัด ไม่ใช่บัญชีผู้ใช้ส่วนตัวของคุณ
- การกำหนดมาตรฐาน: ไคลเอ็นต์ใดๆ (ADK, Gemini, แอปที่กำหนดเอง) สามารถ "เสียบ" เข้ากับเซิร์ฟเวอร์นี้ได้โดยใช้โปรโตคอล MCP มาตรฐาน
- ขอบเขตที่ควบคุมได้ (สิทธิ์ขั้นต่ำที่สุด): เราไม่ได้ให้สิทธิ์ LLM เข้าถึง BigQuery แบบไม่จำกัด แต่บังคับให้ LLM นำทางผ่านแคตตาล็อกข้อมูลเมตาของ Knowledge Catalog ก่อน
กำหนดค่าคำจำกัดความของเครื่องมือ (tools.yaml)
GenAI Toolbox ต้องใช้ไฟล์การกำหนดค่าแบบประกาศ 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 Knowledge Catalog.
lookup_entry:
kind: dataplex-lookup-entry
source: dataplex
description: Retrieve a specific entry from Knowledge 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 ไว้ใน Google Cloud Secret Manager อย่างปลอดภัย
gcloud services enable secretmanager.googleapis.com
gcloud secrets create dataplex-tools-config --data-file=tools.yaml
ใช้สิทธิ์ขั้นต่ำที่สุด (IAM)
จากนั้นสร้างบัญชีบริการเฉพาะสำหรับเซิร์ฟเวอร์ MCP ของ GenAI Toolbox ข้อมูลประจำตัวนี้จะมีสิทธิ์ที่จำเป็นเท่านั้นในการอ่านแคตตาล็อก Knowledge Catalog และเข้าถึงข้อมูล BigQuery
export MCP_SA=mcp-sa
gcloud iam service-accounts create ${MCP_SA} \
--display-name="Service Account for Knowledge Catalog 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 Knowledge Catalog 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 Toolbox โดยใช้ Container Image ที่สร้างไว้ล่วงหน้าของ 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 นี้แทนที่จะเข้าถึงฐานข้อมูลโดยตรง Agent จะเห็นได้เฉพาะสิ่งที่ Toolbox นี้อนุญาตให้เห็นเท่านั้น
4. สร้างแบ็กเอนด์ของ Agent ด้วย ADK
คุณได้สร้าง Data Control Plane (MCP) ที่ปลอดภัยและมีการกำกับดูแลซึ่งทำงานบน Cloud Run แล้ว ตอนนี้ AI Agent ของคุณต้องมีเฟรมเวิร์กเพื่อจัดการตรรกะ เช่น การประมวลผลอินพุตของผู้ใช้ การตัดสินใจว่าจะเรียกใช้เซิร์ฟเวอร์ MCP เมื่อใด และการจัดรูปแบบเอาต์พุต
เราจะใช้ Agent Development Kit (ADK) ของ Google แทนที่จะเขียนโค้ด Boilerplate ทั้งหมดนี้ตั้งแต่เริ่มต้น ADK เป็นเฟรมเวิร์กแบบ Code-First ที่จะรวมตรรกะของ Agent ไว้ในแบ็กเอนด์ FastAPI โดยอัตโนมัติ นอกจากนี้ ยังมาพร้อมกับ UI สำหรับนักพัฒนาแอปในตัว ซึ่งช่วยให้คุณเห็นภาพกระบวนการให้เหตุผลและการเรียกใช้เครื่องมือของ Agent ได้ทันทีโดยไม่ต้องสร้างส่วนหน้าแบบกำหนดเองก่อน
ตรวจสอบตรรกะของ Agent (agent.py)
มาดูแกนหลักของแอปพลิเคชันนี้ก่อนที่จะกำหนดค่าโครงสร้างพื้นฐาน
ไปที่ไดเรกทอรีและแสดงเนื้อหาของ agent.py ไฟล์นี้เป็น "สมอง" ของการติดตั้งใช้งาน ADK
cd ~/devrel-demos/data-analytics/governance-context/mcp_server
cat agent.py
ดูโครงสร้างโค้ด ซึ่งทำหน้าที่สำคัญ 3 อย่างโดยใช้ Boilerplate น้อยที่สุด
- การผสานรวม MCPToolset: ADK ใช้
MCPToolset(server_url=mcp_url)แทนที่จะเขียนไคลเอ็นต์ HTTP ที่กำหนดเองเพื่อโต้ตอบกับเครื่องมือ Knowledge Catalog ซึ่งจะดึงคำจำกัดความtools.yamlจากเซิร์ฟเวอร์ MCP ที่ติดตั้งใช้งานแบบไดนามิกและแปลคำจำกัดความเหล่านั้นเป็นการเรียกใช้ฟังก์ชันดั้งเดิมสำหรับ LLM - คำแนะนำของระบบ: พารามิเตอร์
instructionsมีกฎการกำกับดูแลที่เข้มงวด (ตรรกะเดียวกับที่เราใช้ใน CLIGEMINI.md) โดยจะสั่งให้โมเดลดำเนินการวงจรการให้เหตุผลระยะที่ 1 (การค้นหาข้อมูลเมตา) ไปยังระยะที่ 2 (การค้นหาข้อมูล) อย่างชัดเจน - การจัดการ Agent เป็นกลุ่ม: คลาส
Agent(...)จะผูกโมเดล Gemini, พรอมต์ของระบบ และเครื่องมือ MCP เข้าด้วยกัน เมื่อติดตั้งใช้งานแล้ว ADK จะแปลงออบเจ็กต์นี้เป็นปลายทาง FastAPI ที่ปรับขนาดได้โดยอัตโนมัติ
การแยกหน้าที่: กำหนดค่าข้อมูลประจำตัวฟรอนท์เอนด์
หากต้องการเรียกใช้โค้ดนี้อย่างปลอดภัย เราต้องบอก Agent ว่าเซิร์ฟเวอร์ MCP อยู่ที่ใด เราจะสร้าง URL แบบไดนามิกและบันทึก URL ลงในไฟล์ .env ที่ ADK จะอ่านในรันไทม์
นอกจากนี้ เราจะสร้างข้อมูลประจำตัวแยกต่างหาก (dataplex-agent-sa) สำหรับแอปพลิเคชันที่ผู้ใช้มองเห็นนี้ การแยกหน้าที่นี้ช่วยให้มั่นใจว่า Agent ส่วนหน้ามีสิทธิ์ที่แตกต่างจากเซิร์ฟเวอร์การกำกับดูแลส่วนหลัง
เรียกใช้คำสั่งต่อไปนี้เพื่อกำหนดค่าสภาพแวดล้อมและข้อมูลประจำตัว
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=knowledge-catalog-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 Knowledge Catalog Agent "
กำหนดค่าตัวแปรรันไทม์
เฟรมเวิร์ก ADK อาศัยตัวแปรสภาพแวดล้อมเพื่อทำความเข้าใจบริบท เราต้องตั้งค่ารหัสโปรเจ็กต์ ภูมิภาค และเปิดใช้การใช้ Agent Engine ของ Gemini Enterprise อย่างชัดเจน โดยผนวกตัวแปรเหล่านี้เข้ากับไฟล์ .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
ให้สิทธิ์
แม้ว่า Agent จะมอบหมายการตรวจสอบการกำกับดูแลให้กับเซิร์ฟเวอร์ MCP แต่ก็ยังต้องมีสิทธิ์พื้นฐานในการทำงาน เราจะให้บทบาท 2 บทบาทต่อไปนี้
- ผู้ใช้ Agent Engine ของ Gemini Enterprise: เพื่อเรียกใช้โมเดล Gemini สำหรับสร้างคำตอบภาษาธรรมชาติ
- ผู้เรียกใช้ Cloud Run: เพื่อเรียกใช้ API ของเซิร์ฟเวอร์ MCP อย่างปลอดภัย โดยจะไม่มีสิทธิ์เข้าถึง BigQuery หรือ Knowledge Catalog โดยตรง
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 โดยไม่ต้องติดตั้งการขึ้นต่อกันด้วยตนเอง คำสั่งด้านล่างจะรวมตรรกะ agent.py สร้าง Container Image แทรกบัญชีบริการ และเปิดใช้เซิร์ฟเวอร์ FastAPI การเพิ่มแฟล็ก --with_ui จะรวม ADK Web Playground ไว้สำหรับการแก้ไขข้อบกพร่องด้วย
คำสั่งนี้จะสร้างคอนเทนเนอร์และติดตั้งใช้งาน ซึ่งอาจใช้เวลา 1-3 นาที
uvx --from google-adk \
adk deploy cloud_run \
--project=$PROJECT_ID \
--region=$REGION \
--service_name=knowledge-catalog-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 เรียกใช้เครื่องมือ Knowledge Catalog
- เซิร์ฟเวอร์ MCP บังคับใช้กฎการกำกับดูแลของ Knowledge Catalog และแสดงข้อมูลเมตา
- Gemini สังเคราะห์คำตอบที่เชื่อถือได้ตามข้อมูลเมตาและแสดงคำตอบนั้นแก่ผู้ใช้
5. ทดสอบ Enterprise Agent
ตอนนี้ Agent ของคุณพร้อมใช้งานแล้ว เรามาดูสถานการณ์การกำกับดูแลที่ทดสอบไว้ก่อนหน้านี้ด้วย CLI อีกครั้ง ตรรกะยังคงเหมือนเดิม แต่ตอนนี้คุณกำลังโต้ตอบกับ ADK Web Playground ที่ติดตั้งใช้งานแล้ว ซึ่งแสดงภาพสถานะภายในและการเรียกใช้เครื่องมือ
- การจัดการเป็นกลุ่ม: ADK Agent (ทำงานบน Cloud Run) ได้รับข้อความของคุณ
- การกำหนดเส้นทางเครื่องมือ: Gemini รับรู้ว่าคำถามของคุณต้องใช้บริบทข้อมูลและส่งต่อคำขอไปยังเซิร์ฟเวอร์ MCP
- การตรวจสอบการกำกับดูแล: เซิร์ฟเวอร์ MCP (ทำงานในอินสแตนซ์ Cloud Run แยกต่างหาก) จะค้นหา Knowledge Catalog สำหรับประเภท 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 สำหรับนักพัฒนาแอป:
- การจดจำความตั้งใจ: Agent แยกวิเคราะห์ "ตอนนี้" และ "รอข้ามคืนไม่ไหวแล้ว"
- การค้นหาข้อมูลเมตา: Agent จะเรียกใช้เครื่องมือ MCP
search_aspect_typesและค้นหาสินทรัพย์ข้อมูลที่ Aspectupdate_frequencyตั้งค่าเป็น REALTIME หรือ STREAMING แทนที่จะเป็น DAILY หรือ MONTHLY - การเลือก: Agent ระบุว่าตาราง
mkt_realtime_campaign_performanceตรงตามเกณฑ์เหล่านี้ ในขณะที่ตารางfin_monthly_closing_internal(แม้ว่าจะมีคุณภาพสูง) จะช้าเกินไปสำหรับคำขอของคุณ - คำตอบ: Agent แนะนำตารางแบบเรียลไทม์

ความสำคัญ
หากไม่มีข้อมูลเมตาการกำกับดูแลนี้ LLM มีแนวโน้มที่จะแนะนำตาราง fin_monthly_closing_internal เพียงเพราะมีคอลัมน์ชื่อ "ad_spend" โดยไม่สนใจว่าข้อมูลนั้นมีอายุ 24 ชั่วโมงแล้ว บริบทข้อมูลเมตาของคุณช่วยป้องกันข้อผิดพลาดทางธุรกิจ
นอกจากนี้ คุณยังทดสอบพรอมต์ "การประชุมคณะกรรมการ" เพื่อดูวิธีที่ Agent เปลี่ยนไปใช้ตารางต่างๆ ตาม Aspect ระดับข้อมูลผลิตภัณฑ์ได้ด้วย
"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 เพื่อลบตาราง BigQuery, ชุดข้อมูล และคำจำกัดความ Aspect ของ Knowledge Catalog
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 knowledge-catalog-agent --region=$REGION --quiet
ล้างอาร์ติแฟกต์บิลด์และพื้นที่เก็บข้อมูลชั่วคราว
เมื่อคุณติดตั้งใช้งาน ADK Agent โดยใช้ uvx ระบบจะสร้าง Container Image และอัปโหลดซอร์สโค้ดไปยัง Bucket 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 Agent ที่คำนึงถึงการกำกับดูแลตั้งแต่ต้นจนจบเรียบร้อยแล้ว
ใน Codelab 2 ส่วนนี้ คุณได้ก้าวข้ามวิศวกรรมพรอมต์ (Prompt Engineering) อย่างง่ายๆ ไปสู่การติดตั้งใช้งานสถาปัตยกรรมที่แข็งแกร่งและพร้อมใช้งานจริง การถือว่าการกำกับดูแลข้อมูลเป็นข้อกำหนดเบื้องต้นสำหรับ GenAI ช่วยให้คุณสร้างวิธีการที่เป็นระบบเพื่อป้องกันไม่ให้โมเดลดึงข้อมูลที่ไม่ได้รับการรับรองหรือข้อมูลที่หลอน
สิ่งสำคัญที่ได้เรียนรู้
- AI ที่กำหนดได้ผ่านข้อมูลเมตา: แทนที่จะอาศัย LLM ในการคาดเดาตารางที่ถูกต้องตามชื่อคอลัมน์ คุณได้บังคับใช้วงจรการให้เหตุผลที่เข้มงวดโดยใช้ GenAI Toolbox for Databases การเปิดเผยเครื่องมือ Knowledge Catalog เพียง 3 รายการอย่างชัดเจน (
search_aspect_types,search_entries,lookup_entry) จะบังคับให้โมเดลตรวจสอบการรับรองข้อมูลก่อนที่จะสังเคราะห์คำตอบ - สถาปัตยกรรมที่แยกออกจากกัน (MCP): การติดตั้งใช้งานเซิร์ฟเวอร์ Model Context Protocol (MCP) ใน Cloud Run ช่วยให้คุณแยกกฎการกำกับดูแลข้อมูลออกเป็น API แบบรวมศูนย์และได้มาตรฐาน Agent ส่วนหน้าไม่จำเป็นต้องมีตรรกะฐานข้อมูล แต่จำเป็นต้องสื่อสารผ่านมาตรฐาน MCP เท่านั้น ซึ่งหมายความว่าคุณสามารถเสียบโมเดล AI หรือไคลเอ็นต์ในอนาคตเข้ากับแบ็กเอนด์ที่มีการกำกับดูแลเดียวกันได้
- การแยกหน้าที่: คุณใช้หลักการให้สิทธิ์ขั้นต่ำที่สุดโดยแยกข้อมูลประจำตัว IAM ADK Agent ที่ผู้ใช้มองเห็นจะทำงานโดยมีสิทธิ์จำกัดอยู่เพียงการเรียกใช้โมเดลและการกำหนดเส้นทาง API ในขณะที่เซิร์ฟเวอร์ MCP ส่วนหลังจะจัดการการค้นหา Knowledge Catalog และการดึงข้อมูล BigQuery อย่างปลอดภัย
- การจัดการ Agent เป็นกลุ่มแบบ Code-First: คุณใช้ Google Agent Development Kit (ADK) เพื่อรวมตรรกะ Agent Python ไว้ในแบ็กเอนด์ FastAPI ที่ปรับขนาดได้ทันที โดยใช้ UI สำหรับนักพัฒนาแอปในตัวเพื่อแสดงภาพและแก้ไขข้อบกพร่องการเรียกใช้เครื่องมือภายในของ Agent
ขั้นตอนถัดไป
- Codelab การกำกับดูแลพื้นฐานของ Knowledge Catalog: เรียนรู้พื้นฐานของการกำกับดูแลข้อมูลใน Knowledge Catalog ก่อนที่จะเพิ่มเลเยอร์ AI
- เอกสารประกอบเครื่องมือ Knowledge Catalog: สำรวจเอกสารประกอบอย่างเป็นทางการสำหรับเครื่องมือและส่วนขยาย Knowledge Catalog ที่สร้างไว้ล่วงหน้าซึ่งใช้ในแล็บนี้
- เริ่มต้นใช้งานส่วนขยาย Gemini CLI: ดูวิธีสร้างส่วนขยายที่กำหนดเองเพื่อเพิ่มขีดความสามารถให้กับ GenAI Agent
- เจาะลึก MCP: ดูข้อกำหนด MCP อย่างเป็นทางการเพื่อทำความเข้าใจวิธีสร้างเซิร์ฟเวอร์ที่กำหนดเองสำหรับ API ระดับองค์กรภายใน