ติดตั้งใช้งานเอเจนต์ที่รับรู้การกำกับดูแลระดับองค์กรด้วย MCP และ Cloud Run

1. บทนำ

Codelab นี้เป็นส่วนหนึ่งของชุดข้อมูล 2 ส่วนที่อธิบายวิธีสร้างเอเจนต์ AI ที่ตระหนักถึงการกำกับดูแล

(คุณอ่านส่วนแรกของชุดข้อมูลนี้ได้ ซึ่งครอบคลุมวิธีสร้างรากฐานข้อมูลโดยการลงทะเบียนประเภทลักษณะของแคตตาล็อกความรู้ ใช้ลักษณะกับตาราง BigQuery และทดสอบกฎในเครื่องผ่าน AGY CLI 👉 อ่านส่วนที่ 1)

อย่างไรก็ตาม การทดสอบใน CLI ในเครื่องเป็นเพียงจุดเริ่มต้น หากต้องการเปิดตัวฟีเจอร์นี้ในทั้งบริษัท คุณต้องมีระบบรักษาความปลอดภัยแบบรวมศูนย์ การเชื่อมต่อเครื่องมือ AI ที่ได้มาตรฐาน และเฟรมเวิร์กแอปพลิเคชันที่เหมาะสมเพื่อจัดระเบียบตรรกะของเอเจนต์และมอบอินเทอร์เฟซแชทที่คุ้นเคย

ในส่วนที่ 2 นี้ คุณจะได้แก้ปัญหาเหล่านี้และปรับขนาดให้พร้อมใช้งานจริง คุณจะเชื่อมต่อ Agent กับ MCP Server แคตตาล็อกความรู้ที่ Google จัดการโดยตรงแทนการติดตั้งใช้งาน MCP Server ที่กำหนดเอง จากนั้นคุณจะใช้ Agent Development Kit (ADK) ของ Google เพื่อสร้างแอปพลิเคชันเอเจนต์จริง โหลดกฎการกำกับดูแลจากทักษะเอเจนต์ในเครื่อง และนำไปใช้งานใน Cloud Run พร้อมกับเว็บ UI ระดับมืออาชีพ

.

เมื่อผู้ใช้โต้ตอบกับ UI ของ ADK จะเกิดลําดับต่อไปนี้

8912d1983c34ee8e.png

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้ Model Context Protocol (MCP) เพื่อกำหนดมาตรฐานวิธีที่ Agent AI โต้ตอบกับข้อมูล Google Cloud
  • วิธีที่ Agent ของ ADK เชื่อมต่อกับเซิร์ฟเวอร์ MCP ของแคตตาล็อกความรู้ที่ Google จัดการ
  • วิธีโหลดกฎการกำกับดูแลแบบไดนามิกจากทักษะของตัวแทนที่แชร์
  • วิธีติดตั้งใช้งาน Agent ใน Cloud Run และเรียกใช้เว็บเพลย์กราวด์ในตัวของ ADK

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • สิทธิ์เข้าถึง Google Cloud Shell
  • มีความรู้พื้นฐานเกี่ยวกับ Cloud Run, บัญชีบริการ IAM และ Python
  • ชุดข้อมูล BigQuery และแง่มุมของแคตตาล็อกความรู้ที่สร้างขึ้นในส่วนที่ 1 (ไม่ต้องกังวลหากคุณลบไปแล้ว เรามีสคริปต์ด่วนด้านล่างเพื่อสร้างใหม่)

หัวข้อสำคัญ

  • Model Context Protocol (MCP): ลองนึกถึง MCP ว่าเป็น "สาย USB-C อเนกประสงค์" สำหรับเอเจนต์ AI MCP มีวิธีมาตรฐานสำหรับ AI ในการเชื่อมต่อกับเครื่องมือข้อมูลขององค์กร (เช่น Knowledge Catalog และ BigQuery) อย่างปลอดภัยแทนที่จะเขียนโค้ดการผสานรวม API ที่กำหนดเองสำหรับโมเดล AI ทุกโมเดล
  • Agent Development Kit (ADK): เฟรมเวิร์กโอเพนซอร์สที่ยืดหยุ่นของ Google ซึ่งออกแบบมาเพื่อลดความซับซ้อนของการพัฒนา AI Agent ตั้งแต่ต้นจนจบ โดยจะใช้หลักการวิศวกรรมซอฟต์แวร์กับการสร้างเอเจนต์ ซึ่งช่วยให้คุณจัดระเบียบเครื่องมือที่ซับซ้อน จัดการสถานะ และเปิดใช้ UI ของนักพัฒนาแอปในตัวได้อย่างง่ายดายสำหรับการทดสอบและการติดตั้งใช้งาน
  • แพลตฟอร์ม Agent ของ Gemini Enterprise(GEAP): สภาพแวดล้อมการโฮสต์และการจัดการเป็นกลุ่มระดับองค์กรสำหรับการติดตั้งใช้งาน AI Agent ใน Google Cloud

2. การตั้งค่าและข้อกำหนด

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลในแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จาก คอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

เปิดใช้งาน Cloud Shell

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

ภาพหน้าจอของเทอร์มินัล Google 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 APIs ขั้นต่ำที่จำเป็นต่อการจัดการรากฐานข้อมูล เรียกใช้โมเดล Vertex AI และโฮสต์ ADK Agent ใน Cloud Run

gcloud services enable \
    dataplex.googleapis.com \
    bigquery.googleapis.com \
    aiplatform.googleapis.com \
    run.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com

จุดตรวจสอบ: กลับมาทำงานต่อหรือสร้างใหม่

เนื่องจากนี่คือส่วนที่ 2 เอเจนต์จึงต้องใช้ข้อมูลที่มีการควบคุมจากส่วนที่ 1 เพื่อให้ทำงานได้ โปรดเลือกเส้นทางของคุณ

เส้นทาง A: ฉันเพิ่งทำส่วนที่ 1 เสร็จและทรัพยากรยังคงทำงานอยู่

เยี่ยมเลย ไปที่ไดเรกทอรีการทำงาน แล้วคุณก็พร้อมที่จะดำเนินการต่อ

cd ~/devrel-demos/data-analytics/governance-context

เส้นทาง B: ฉันข้ามส่วนที่ 1 หรือลบแหล่งข้อมูล (ล้างข้อมูล)

ไม่มีปัญหา เราได้จัดเตรียมบล็อกคำสั่ง "Fast-Track" ไว้ด้านล่าง ซึ่งจะสร้างที่เก็บข้อมูลขนาดใหญ่ของ BigQuery ใหม่โดยอัตโนมัติ ลงทะเบียนประเภท Aspect และใช้ข้อมูลเมตาด้านการกำกับดูแลเหมือนกับที่เราทำในส่วนที่ 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 BigQuery datasets and tables
chmod +x ./setup_bq_tables.sh
./setup_bq_tables.sh

# 3. Register the Knowledge Catalog aspect type
gcloud dataplex aspect-types create official-data-product-spec \
    --location="${REGION}" \
    --project="${PROJECT_ID}" \
    --metadata-template-file-name="aspect_template.json"

# 4. Generate and apply aspects (governance rules)
chmod +x ./generate_payloads.sh ./apply_governance.sh
./generate_payloads.sh
./apply_governance.sh

3. ระนาบควบคุมข้อมูลแบบรวมศูนย์ (MCP ที่มีการจัดการ)

ในสภาพแวดล้อมขององค์กรจริง คุณต้องมีระนาบควบคุมข้อมูลที่ปลอดภัยและรวมศูนย์ แทนที่จะสร้างและติดตั้งใช้งานคอนเทนเนอร์ของเซิร์ฟเวอร์ MCP ที่กำหนดเองใน Cloud Run เราจะเชื่อมต่อ Agent กับเซิร์ฟเวอร์ MCP แคตตาล็อกความรู้ที่ Google จัดการโดยตรง

การใช้ปลายทางที่มีการจัดการนี้ช่วยให้เราทำสิ่งต่อไปนี้ได้

  1. ไม่ต้องบำรุงรักษา: ไม่จำเป็นต้องจัดการคอนเทนเนอร์ การปรับขนาด หรือการแก้ไขข้อบกพร่องสำหรับเซิร์ฟเวอร์ MCP
  2. การกำหนดมาตรฐาน: เอเจนต์เชื่อมต่อกับปลายทาง API มาตรฐานและปลอดภัยของ Google โดยใช้ Model Context Protocol (การรับส่ง SSE)
  3. ขอบเขตที่ควบคุม: เซิร์ฟเวอร์ MCP จะแสดงเฉพาะเครื่องมือข้อมูลเมตาที่จำเป็น (search_entries, lookup_context, lookup_entry) เพื่อบังคับใช้ลูปการให้เหตุผลแบบอ่านอย่างเดียวและเน้นการกำกับดูแลเป็นอันดับแรก

เซิร์ฟเวอร์ MCP แคตตาล็อกความรู้ที่ Google จัดการจะเข้าถึงได้ผ่าน URL ที่ปลอดภัยต่อไปนี้

https://dataplex.googleapis.com/mcp

เนื่องจากเป็น Google API ของบุคคลที่หนึ่ง เอเจนต์จึงต้องตรวจสอบสิทธิ์โดยใช้ OAuth2 Access Token มาตรฐานของ Google Cloud แทนโทเค็นรหัส เราจะจัดการการตรวจสอบสิทธิ์นี้โดยอัตโนมัติในโค้ดของแอปพลิเคชัน

4. สร้างแบ็กเอนด์ของ Agent ด้วย ADK

คุณมีระนาบควบคุมข้อมูลที่มีการจัดการและปลอดภัย ตอนนี้ AI Agent ของคุณต้องมีเฟรมเวิร์กเพื่อจัดระเบียบตรรกะ เช่น การประมวลผลอินพุตของผู้ใช้ การตัดสินใจว่าจะเรียกเซิร์ฟเวอร์ MCP เมื่อใด และการจัดรูปแบบเอาต์พุต

เราจะใช้ Agent Development Kit (ADK) ของ Google ADK เป็นเฟรมเวิร์กที่เน้นโค้ดเป็นหลักซึ่งจะห่อหุ้มตรรกะของ Agent ไว้ในแบ็กเอนด์ FastAPI โดยอัตโนมัติ และมีอินเทอร์เฟซเว็บในตัวสำหรับการทดสอบทันที

เปิดโค้ดของ Agent ใน Cloud Shell Editor

แทนที่จะทิ้งทั้งไฟล์ในเทอร์มินัล ให้เปิดไฟล์ใน Cloud Shell Editor เพื่อให้คุณตรวจสอบ แก้ไข และทำความเข้าใจโค้ดได้ง่ายๆ

เรียกใช้คำสั่งด้านล่างในเทอร์มินัลและดูโครงสร้างโค้ดในตัวแก้ไข แอปพลิเคชันสร้างขึ้นโดยใช้ Agent Development Kit (ADK) ของ Google ดังนี้

cd ~/devrel-demos/data-analytics/governance-context/mcp_server

# Copy the governance skill directory inside the application bundle so it packages during Cloud Run deployment
mkdir -p skills
cp -r ../.agents/skills/knowledge-catalog-governance skills/

cloudshell edit agent.py

(หมายเหตุ: agent.py มีโค้ดมาตรฐานที่ด้านบนเพื่อจัดการการตรวจสอบสิทธิ์ OAuth2 ของ Google Cloud และการรีเฟรชโทเค็น เพื่อให้มั่นใจว่าเอเจนต์จะสื่อสารกับ Knowledge Catalog API ที่มีการจัดการโดย Google ได้อย่างปลอดภัย)

1. การโหลดทักษะแบบเนทีฟ

เราโหลดวิธีการกำกับดูแลจากไดเรกทอรีทักษะของเอเจนต์ภายนอกโดยใช้ load_skill_from_dir ของ ADK เพื่อสร้างเอเจนต์ที่มีการเพิ่มประสิทธิภาพสูง แนวทางนี้ช่วยให้การเปิดเผยข้อมูลแบบค่อยเป็นค่อยไปเป็นไปได้ด้วยเหตุผลต่อไปนี้

  • ข้อมูลเมตาระดับ L1: เอเจนต์จะโหลดเฉพาะชื่อและคำอธิบายของทักษะเมื่อเริ่มต้น บริบทขั้นต่ำนี้ช่วยให้ LLM ระบุได้ว่าจะใช้ทักษะเมื่อใดโดยไม่ต้องใช้โทเค็นจำนวนมากตั้งแต่แรก
  • คำสั่ง L2: ระบบจะดึงชุดคำสั่งทั้งหมดภายใน SKILL.md แบบไดนามิกในเวลาที่รันเท่านั้น เมื่อโมเดลพิจารณาว่าเกี่ยวข้อง
base_dir = Path(__file__).parent
governance_skill = load_skill_from_dir(
    base_dir / "skills" / "knowledge-catalog-governance"
)

# Bundle the skill and MCP tools together into a SkillToolset
governance_skill_toolset = skill_toolset.SkillToolset(
    skills=[governance_skill],
    additional_tools=[tools]
)

2. การจัดการ Agent

ADK ช่วยให้คุณจัดการลักษณะการทำงานของเอเจนต์ที่ซับซ้อนได้ด้วยการเชื่อมโยงเอเจนต์หลายตัวเข้าด้วยกัน เรากำหนดSequentialAgentเวิร์กโฟลว์ที่ประกอบด้วย Agent ที่เชี่ยวชาญเฉพาะทาง 2 รายการดังนี้

  • governance_researcher: มี governance_skill_toolset และ MCP ของแคตตาล็อกความรู้ tools โดยจะตรวจสอบว่าคำค้นหาอยู่ในแคตตาล็อกข้อมูลและขอบเขตการปฏิบัติตามข้อกำหนดหรือไม่ จากนั้นจะค้นหาแคตตาล็อกความรู้โดยใช้ตัวแปรสภาพแวดล้อมที่แทรกลงในคำสั่งของระบบ
  • compliance_formatter: มีหน้าที่แปลผลการค้นหาข้อมูลเมตา JSON ดิบเป็นคำตอบที่ชัดเจน หรืออธิบายขอบเขตอย่างเหมาะสมหากคำขออยู่นอกขอบเขต
# 1. Researcher Agent (has access to the encapsulated SkillToolset)
governance_researcher = LlmAgent(
    name="governance_researcher",
    model=model_name,
    description="Dynamically interprets metadata schema (Booleans/Enums) and searches for assets using strict syntax.",
    instruction=f"""
    You are a governance researcher. Your job is to verify Knowledge Catalog metadata rules and find compliant assets for the user's query.
    
    YOUR ACTIVE ENVIRONMENT CONTEXT:
    - Google Cloud Project ID: {project_id}
    - Location (Region): {location}

    YOUR WORKFLOW:
    1. First, check if the user query is related to data analytics assets, database tables, or data compliance.
       - If YES: Call `load_skill` with `name="knowledge-catalog-governance"` to load the rules, then use search/lookup tools to locate a certified compliant table.
       - If NO (e.g., general chit-chat, unrelated tasks): Skip skill loading and output a JSON object indicating it is out of scope:
         {"error": "out_of_scope", "message": "The query does not pertain to data catalog search or governance compliance."}
    2. Populate the required projectId and location parameters in tool calls with the active environment parameters.
    3. Return the verified table's metadata in JSON format as your final research output.
    """,
    tools=[governance_skill_toolset, tools],
    output_key="research_data"
)

# 2. Formatter Agent (formats the output or explains out-of-scope errors)
compliance_formatter = LlmAgent(
    name="compliance_formatter",
    model=model_name,
    description="Formats the JSON research data into a helpful response for the user.",
    instruction="""
    You are the **Intelligent Data Governance Specialist**.
    Your job is to explain the findings of the governance research clearly to the user.

    **YOUR GOAL:**
    1. If the researcher found a matching table (valid JSON with table metadata):
       - Explain the logical connection between the User's Request, the Governance Schema (translated criteria), and the Recommended Table.
       - Use the following RESPONSE TEMPLATE:
         - **Analysis:** "I analyzed the metadata schema and translated your request into the following technical criteria:..."
         - **Recommendation:** "Based on this, I recommend the following table:"
           - **Table:** [Insert Table Name]
           - **Description:** [Insert Table Description]
         - **Verification:** "This asset is a verified match because: [Explain the verification details]."
    2. If the researcher returned an 'out_of_scope' error or no matching tables were found:
       - Apologize politely and explain that no data asset currently matches the strict governance criteria defined in `official-data-product-spec`.
       - Clearly state what domain of questions this agent is certified to answer (e.g., Data Catalog Search and Data Governance compliance).
    """
)

# 3. Orchestrated Workflow (Exported as root_agent)
root_agent = SequentialAgent(
    name="governance_workflow",
    description="Workflow to learn metadata rules, search with strict syntax, and recommend assets.",
    sub_agents=[
        governance_researcher,
        compliance_formatter,
    ]
)

กำหนดค่าตัวแปรรันไทม์

หากต้องการเรียกใช้ Agent เราต้องแจ้งให้ Agent ทราบตำแหน่งของเซิร์ฟเวอร์ MCP ที่มีการจัดการ และกำหนดค่าโปรเจ็กต์และภูมิภาคของเซิร์ฟเวอร์ เราจะบันทึกตัวแปรเหล่านี้ลงในไฟล์ .env ซึ่ง ADK จะอ่านในขณะรันไทม์

เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างไฟล์ .env โปรดทราบว่า MCP_SERVER_URL ชี้ไปยังปลายทาง API ของแคตตาล็อกความรู้ที่ Google จัดการโดยตรง

export MCP_SERVER_URL="https://dataplex.googleapis.com/mcp"

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

5. เรียกใช้และทดสอบ Agent ในเครื่อง

ก่อนที่จะนำ Agent ไปใช้งานในระบบคลาวด์ คุณควรดำเนินการในเครื่องใน Cloud Shell เพื่อยืนยันลักษณะการทำงานของ Agent เนื่องจาก Agent ต้องใช้แพ็กเกจ Python หลายแพ็กเกจ (รวมถึงไลบรารีการบันทึกของ Google Cloud และ ADK) เราจึงจะตั้งค่าสภาพแวดล้อมเสมือนในเครื่องเพื่อติดตั้งทรัพยากร Dependency เหล่านี้

เมื่อเรียกใช้ในเครื่องใน Cloud Shell เอเจนต์จะใช้ข้อมูลเข้าสู่ระบบของผู้ใช้ Google Cloud ที่ใช้งานอยู่โดยอัตโนมัติ จึงมีสิทธิ์ที่จำเป็นในการเข้าถึง Vertex AI และ Knowledge Catalog อยู่แล้ว

  1. ไปที่ไดเรกทอรี mcp_server สร้างสภาพแวดล้อมเสมือน และติดตั้งทรัพยากร Dependency โดยใช้คำสั่งต่อไปนี้
cd ~/devrel-demos/data-analytics/governance-context/mcp_server

# Create a virtual environment using uv
uv venv
source .venv/bin/activate

# Install the dependencies listed in requirements.txt
uv pip install -r requirements.txt
  1. เริ่มเซสชันแชทแบบอินเทอร์แอกทีฟในเทอร์มินัลโดยทำดังนี้
adk run .
  1. เมื่อเซสชันเริ่มขึ้น คุณจะเห็นข้อความแจ้ง พิมพ์คำค้นหาเพื่อทดสอบตรรกะการกำกับดูแลของเอเจนต์
I need the Q1 revenue summary for our internal board meeting.

เอเจนต์จะประมวลผลคำขอของคุณ ค้นหาแคตตาล็อกความรู้ผ่านเซิร์ฟเวอร์ MCP ที่มีการจัดการ และแสดงผลคำแนะนำและเหตุผลในเทอร์มินัลโดยตรง

  1. หากต้องการออกจากเซสชันแบบอินเทอร์แอกทีฟ ให้พิมพ์ exit หรือ quit (หรือกด Ctrl+C) หลังจากออกจากเซสชันแล้ว คุณจะปิดใช้งานสภาพแวดล้อมเสมือนได้โดยทำดังนี้
deactivate

6. ทำให้ Agent ใช้งานได้ในเวอร์ชันที่ใช้งานจริง

ตอนนี้เมื่อยืนยัน Agent ในเครื่องแล้ว คุณก็พร้อมที่จะติดตั้งใช้งานใน Google Cloud เพื่อใช้ในการผลิต

สร้างบัญชีบริการ

เพื่อความปลอดภัย เอเจนต์ที่ติดตั้งใช้งานไม่ควรทำงานภายใต้ข้อมูลเข้าสู่ระบบส่วนตัวของคุณ เราจะสร้างข้อมูลประจำตัวแยกต่างหาก (knowledge-catalog-agent-sa) สำหรับเอเจนต์ตามหลักการให้สิทธิ์ขั้นต่ำที่สุด

เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างบัญชีบริการ

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"

ให้สิทธิ์

แม้ว่า Agent จะมอบหมายการตรวจสอบการกำกับดูแลให้กับเซิร์ฟเวอร์ MCP แต่ก็ยังต้องมีสิทธิ์พื้นฐานในการดำเนินการ

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/aiplatform.user"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/dataplex.catalogAdmin"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/bigquery.dataViewer"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/mcp.toolUser"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/viewer"

ทำให้ใช้งานได้กับ Cloud Run

สุดท้าย เราจะติดตั้งใช้งาน Agent ใน Cloud Run คำสั่งต่อไปนี้จะสร้างอิมเมจคอนเทนเนอร์โดยใช้ Dockerfile ในไดเรกทอรีปัจจุบัน อัปโหลดไปยัง Artifact Registry และทําให้ใช้งานได้ใน Cloud Run ขั้นตอนนี้อาจใช้เวลา 1-3 นาที

gcloud run deploy knowledge-catalog-agent \
  --source . \
  --project=$PROJECT_ID \
  --region=$REGION \
  --service-account=$AGENT_SERVICE_ACCOUNT \
  --allow-unauthenticated \
  --clear-base-image \
  --labels created-by=adk

เมื่อคำสั่งนี้เสร็จสมบูรณ์แล้ว ระบบจะแสดงURL ของบริการ (เช่น https://knowledge-catalog-agent-xyz.run.app) คลิกที่ลิงก์ดังกล่าวเพื่อเปิดอินเทอร์เฟซแชท GenAI ที่มีการควบคุมอย่างเต็มรูปแบบ

12a5fa4c2aaf381f.png

7. ทดสอบเจ้าหน้าที่บริการลูกค้า

เมื่อเอเจนต์พร้อมใช้งานแล้ว เรามาทดสอบสถานการณ์การกำกับดูแลกัน ตรรกะยังคงเหมือนเดิม แต่ตอนนี้คุณกำลังโต้ตอบกับ ADK Web Playground ที่ติดตั้งใช้งานแล้ว ซึ่งจะแสดงภาพสถานะภายในและการดำเนินการของเครื่องมือ

เปิด URL ของบริการที่คุณสร้างขึ้นในขั้นตอนก่อนหน้า (เช่น https://knowledge-catalog-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 สำหรับนักพัฒนาแอป

  1. การจดจำเจตนา: เอเจนต์จะแยกวิเคราะห์คำว่า "ตอนนี้" และ "รอข้ามคืนไม่ได้"
  2. การค้นหาข้อมูลเมตา: เรียกใช้เครื่องมือ MCP search_entries ด้วยการค้นหา [PROJECT_ID].us-central1.official-data-product-spec.update_frequency=REALTIME_STREAMING
  3. การเลือก: ระบุว่าตาราง mkt_realtime_campaign_performance เป็นไปตามเกณฑ์เหล่านี้
  4. คำตอบ: เจ้าหน้าที่แนะนำตารางแบบเรียลไทม์

e0da615724199e.png

ความสำคัญ:

หากไม่มีข้อมูลเมตาการกำกับดูแลนี้ 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?"

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

โปรดทำตามขั้นตอนต่อไปนี้เพื่อทำลายโครงสร้างพื้นฐานทั้งหมดที่สร้างขึ้นใน Codelab นี้เพื่อหลีกเลี่ยงการเรียกเก็บเงินจากบัญชี Google Cloud

ทำลายที่เก็บข้อมูลขนาดใหญ่

ใช้สคริปต์ล้างข้อมูลเพื่อลบตาราง BigQuery, ชุดข้อมูล และคำจำกัดความของแง่มุมแคตตาล็อกความรู้

cd ~/devrel-demos/data-analytics/governance-context
chmod +x ./cleanup_data_lake.sh
./cleanup_data_lake.sh

ลบบริการ Cloud Run

นำทรัพยากรการประมวลผลออกเพื่อหยุดการเรียกเก็บเงินที่ใช้งานอยู่สำหรับคอนเทนเนอร์ที่ทำงานอยู่

gcloud run services delete knowledge-catalog-agent --region=$REGION --quiet

ล้างอาร์ติแฟกต์บิลด์และพื้นที่เก็บข้อมูลการจัดเตรียม

เมื่อคุณติดตั้งใช้งานเอเจนต์ ADK ระบบจะสร้างอิมเมจคอนเทนเนอร์โดยอัตโนมัติและอัปโหลดซอร์สโค้ดไปยัง Bucket ของ Cloud Storage ชั่วคราว

นำที่เก็บของ 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 ออกก่อน แล้วจึงลบบัญชีบริการ

# 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

gcloud projects remove-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/dataplex.catalogViewer" --quiet

gcloud projects remove-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/mcp.toolUser" --quiet

gcloud projects remove-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:$AGENT_SERVICE_ACCOUNT" \
  --role="roles/bigquery.dataViewer" --quiet

# Delete the Service Account
gcloud iam service-accounts delete $AGENT_SERVICE_ACCOUNT --quiet

นำการกำหนดค่าในเครื่องออก

สุดท้าย ให้ล้างไฟล์การกำหนดค่าในเครื่องและตัวแปรสภาพแวดล้อมใน Cloud Shell

# Uninstall the AGY CLI plugin
agy plugin uninstall dataplex

# Remove local repository files and unset variables
cd ~
rm -rf ~/devrel-demos
unset MCP_SERVER_URL
unset AGENT_SERVICE_ACCOUNT

9. ยินดีด้วย

คุณได้ติดตั้งใช้งานเอเจนต์ GenAI ที่คำนึงถึงการกำกับดูแลแบบครบวงจรเรียบร้อยแล้ว

ใน Codelab 2 ส่วนนี้ คุณได้ก้าวข้ามวิศวกรรมพรอมต์ (Prompt Engineering) อย่างง่ายเพื่อใช้สถาปัตยกรรมที่แข็งแกร่งและพร้อมใช้งานจริง การถือว่าการกำกับดูแลข้อมูลเป็นข้อกำหนดเบื้องต้นสำหรับ GenAI ทำให้คุณได้สร้างวิธีการที่เป็นระบบเพื่อป้องกันไม่ให้โมเดลดึงข้อมูลที่ไม่ได้รับการรับรองหรือข้อมูลที่โมเดลแต่งขึ้น

สรุปประเด็นสำคัญ

  • AI ที่กำหนดได้ผ่านข้อมูลเมตา: แทนที่จะพึ่งพา LLM ในการคาดเดาตารางที่ถูกต้องตามชื่อคอลัมน์ คุณได้บังคับใช้ลูปการให้เหตุผลที่เข้มงวดโดยใช้เซิร์ฟเวอร์ MCP แคตตาล็อกความรู้ที่ Google จัดการ ซึ่งบังคับให้โมเดลตรวจสอบการรับรองข้อมูลก่อนที่จะแนะนำตาราง
  • สถาปัตยกรรมที่แยกส่วน: Agent ส่วนหน้าไม่จำเป็นต้องมีตรรกะของฐานข้อมูล เพียงแค่ต้องสื่อสารผ่านมาตรฐาน MCP ซึ่งหมายความว่าคุณสามารถเสียบโมเดลหรือไคลเอ็นต์ AI ในอนาคตเข้ากับแบ็กเอนด์ที่ควบคุมเดียวกันได้
  • การแบ่งแยกหน้าที่: คุณใช้หลักการให้สิทธิ์ขั้นต่ำที่สุดโดยการแยกข้อมูลประจำตัว IAM เอเจนต์ ADK ที่ติดต่อกับผู้ใช้จะทำงานโดยมีสิทธิ์ที่จำกัดไว้สำหรับการเรียกใช้โมเดลและการกำหนดเส้นทาง API
  • การประสานงานเอเจนต์แบบเน้นโค้ดเป็นอันดับแรก: คุณใช้ Agent Development Kit (ADK) ของ Google เพื่อห่อหุ้มตรรกะของเอเจนต์ Python ในแบ็กเอนด์ FastAPI ที่ปรับขนาดได้ทันที โดยใช้ UI สำหรับนักพัฒนาซอฟต์แวร์ในตัวเพื่อแสดงภาพและแก้ไขข้อบกพร่องของการดำเนินการเครื่องมือภายในของเอเจนต์

ขั้นตอนต่อไปคืออะไร