MCP और Cloud Run की मदद से, एंटरप्राइज़ गवर्नेंस के बारे में जानकारी रखने वाले एजेंट को डिप्लॉय करना

1. परिचय

यह कोडलैब, दो हिस्सों वाली सीरीज़ का हिस्सा है. इसमें बताया गया है कि नीति के बारे में जानकारी रखने वाला GenAI एजेंट कैसे बनाया जाता है.

(इस सीरीज़ का पहला हिस्सा पढ़ें. इसमें बताया गया है कि BigQuery टेबल पर Dataplex के पहलुओं को लागू करके, डेटा फ़ाउंडेशन कैसे बनाया जाता है. साथ ही, Gemini CLI के ज़रिए नियमों की जांच कैसे की जाती है. 👉 पहला पार्ट पढ़ें)

हालांकि, लोकल सीएलआई में टेस्टिंग सिर्फ़ एक शुरुआत है. इसे अपनी पूरी कंपनी के लिए रोल आउट करने के लिए, आपको इन चीज़ों की ज़रूरत होगी: एक ही जगह से सुरक्षा से जुड़ी सभी सेटिंग ऐक्सेस करने और सभी सेटिंग को एक ही जगह से कंट्रोल करने की सुविधा, एआई टूल के स्टैंडर्ड कनेक्शन, और एजेंट के लॉजिक को व्यवस्थित करने और चैट का जाना-पहचाना इंटरफ़ेस उपलब्ध कराने के लिए एक सही ऐप्लिकेशन फ़्रेमवर्क.

दूसरे हिस्से में, आपको इन चुनौतियों को हल करना होगा और प्रोडक्शन ट्रैक पर स्केल करना होगा. आपको अपने गवर्नेंस के नियमों को Cloud Run पर होस्ट किए गए, एमसीपी सर्वर में डिप्लॉय करना होगा. इसके बाद, आपको Google के Agent Development Kit (ADK) का इस्तेमाल करके, एजेंट ऐप्लिकेशन बनाना होगा. साथ ही, इसे अपने MCP टूल से कनेक्ट करना होगा. इसमें एक प्रोफ़ेशनल वेब यूज़र इंटरफ़ेस (यूआई) भी शामिल होगा.

be15d5f41f0d716c.png

ज़रूरी शर्तें

  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट.
  • Cloud Run, IAM सेवा खातों, और Python की बुनियादी जानकारी.
  • पहले हिस्से में बनाए गए BigQuery डेटासेट और Dataplex के पहलू. (अगर आपने उन्हें मिटा दिया है, तो चिंता न करें. हमने यहां एक फ़ास्ट-ट्रैक स्क्रिप्ट दी है, ताकि आप उन्हें फिर से बना सकें!)

आपको क्या सीखने को मिलेगा

  • एआई एजेंट, Google Cloud के डेटा के साथ कैसे इंटरैक्ट करते हैं, इसे स्टैंडर्ड बनाने के लिए मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) का इस्तेमाल कैसे करें.
  • Cloud Run पर सुरक्षित एमसीपी सर्वर को कैसे डिप्लॉय करें.
  • एजेंट डेवलपमेंट किट (एडीके) का इस्तेमाल करके, एआई एजेंट बनाने और उसे अपने एमसीपी बैकएंड से कनेक्ट करने का तरीका.
  • ADK में पहले से मौजूद डेवलपर यूज़र इंटरफ़ेस (यूआई) को चलाने का तरीका, ताकि आप अपने कंट्रोल किए गए एजेंट के साथ इंटरैक्ट कर सकें.

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud Shell का ऐक्सेस

मुख्य सिद्धांत

  • मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी): एमसीपी को एआई एजेंट के लिए "यूनिवर्सल यूएसबी-सी केबल" के तौर पर समझें. हर एआई मॉडल के लिए कस्टम एपीआई इंटिग्रेशन कोड लिखने के बजाय, MCP एआई को आपके एंटरप्राइज़ डेटा टूल (जैसे, Dataplex और BigQuery) से सुरक्षित तरीके से कनेक्ट करने का एक स्टैंडर्ड तरीका उपलब्ध कराता है.
  • एजेंट डेवलपमेंट किट (एडीके): यह Google का एक फ़्लेक्सिबल और ओपन-सोर्स फ़्रेमवर्क है. इसे एआई एजेंट के डेवलपमेंट की प्रोसेस को आसान बनाने के लिए डिज़ाइन किया गया है. यह एजेंट बनाने के लिए, सॉफ़्टवेयर इंजीनियरिंग के सिद्धांतों का इस्तेमाल करता है. इससे आपको जटिल टूल को व्यवस्थित करने, स्थिति को मैनेज करने, और टेस्टिंग और डिप्लॉयमेंट के लिए, डेवलपर के लिए उपलब्ध यूज़र इंटरफ़ेस (यूआई) को आसानी से लॉन्च करने की सुविधा मिलती है.

2. सेटअप और ज़रूरी शर्तें

Cloud Shell शुरू करें

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाएगा. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद टूलबार पर, Cloud Shell आइकॉन पर क्लिक करें:

Cloud Shell चालू करें

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

Google Cloud Shell टर्मिनल का स्क्रीनशॉट. इसमें दिखाया गया है कि एनवायरमेंट कनेक्ट हो गया है

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में मौजूद सभी टास्क, ब्राउज़र में किए जा सकते हैं. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

एनवायरमेंट शुरू करें

Cloud Shell खोलें और अपने प्रोजेक्ट के वैरिएबल सेट करें, ताकि यह पक्का किया जा सके कि सभी कमांड सही इंफ़्रास्ट्रक्चर को टारगेट कर रही हैं.

export PROJECT_ID=$(gcloud config get-value project)
gcloud config set project $PROJECT_ID
export REGION="us-central1"

चेकपॉइंट: क्या आपको ट्रेनिंग फिर से शुरू करनी है या मॉडल को फिर से बनाना है?

यह दूसरा हिस्सा है. इसलिए, आपके एजेंट को काम करने के लिए, पहले हिस्से का डेटा चाहिए. कृपया अपना रास्ता चुनें:

पाथ A: मैंने अभी पहला हिस्सा पूरा किया है और मेरे संसाधन अब भी चल रहे हैं.

बढ़िया! वर्किंग डायरेक्ट्री पर जाएं और आगे की प्रोसेस के लिए तैयार रहें.

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

पाथ B: मैंने पहला हिस्सा छोड़ दिया है या मैंने अपने संसाधन मिटा दिए हैं (साफ़ कर दिए हैं).

कोई बात नहीं! हमने यहां "फ़ास्ट-ट्रैक" कमांड ब्लॉक दिया है. इससे BigQuery डेटा लेक अपने-आप फिर से बन जाएगा. साथ ही, Dataplex के गवर्नेंस मेटाडेटा को ठीक उसी तरह लागू किया जाएगा जैसा हमने पहले हिस्से में किया था.

# 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. एमसीपी की मदद से बड़े पैमाने पर काम करना: डेटा कंट्रोल प्लेन बनाना

अब तक, आपने Gemini सीएलआई का इस्तेमाल करके, अपने गवर्नेंस लॉजिक की जांच कर ली है. यह तेज़ी से प्रोटोटाइप बनाने के लिए बेहतरीन है. हालांकि, यह आपके निजी उपयोगकर्ता क्रेडेंशियल का इस्तेमाल करके लोकल लेवल पर काम करता है.

किसी एंटरप्राइज़ एनवायरमेंट में, आपको डेटा कंट्रोल करने के लिए एक सेंट्रल सिस्टम की ज़रूरत होती है. इसे बनाने के लिए, हम डेटाबेस के लिए GenAI टूलबॉक्स का इस्तेमाल करेंगे. यह Google का आधिकारिक ओपन-सोर्स प्रोजेक्ट है. इस टूलबॉक्स में, पहले से बनाया गया एमसीपी सर्वर मौजूद होता है. इसे खास तौर पर, एआई एजेंट को Google Cloud डेटाबेस और Dataplex जैसी मेटाडेटा सेवाओं से सुरक्षित तरीके से कनेक्ट करने के लिए डिज़ाइन किया गया है.

इस टूलबॉक्स को Cloud Run पर एमसीपी सर्वर के तौर पर डिप्लॉय करके, हमें ये फ़ायदे मिलते हैं:

  1. सेंट्रलाइज़्ड आइडेंटिटी: एजेंट, आपके निजी उपयोगकर्ता खाते के तौर पर नहीं, बल्कि प्रतिबंधित सेवा खाते के तौर पर काम करता है.
  2. स्टैंडर्डाइज़ेशन: कोई भी क्लाइंट (एडीके, Gemini, कस्टम ऐप्लिकेशन), स्टैंडर्ड एमसीपी प्रोटोकॉल का इस्तेमाल करके इस सर्वर से "प्लग इन" कर सकता है.
  3. नियंत्रित स्कोप (कम से कम विशेषाधिकार): हम एलएलएम को BigQuery का ओपन-एंडेड ऐक्सेस नहीं देते हैं. हम इसे सबसे पहले Dataplex मेटाडेटा कैटलॉग में नेविगेट करने के लिए मजबूर करते हैं.

टूल की परिभाषा कॉन्फ़िगर करना (tools.yaml)

GenAI टूलबॉक्स के लिए, डिक्लेरेटिव कॉन्फ़िगरेशन फ़ाइल tools.yaml की ज़रूरत होती है. इस फ़ाइल में, sources (कहां कनेक्ट करना है) और tools (एआई को क्या करने की अनुमति है) के बारे में बताया गया है.

  1. सर्वर डायरेक्ट्री पर जाएं और कॉन्फ़िगरेशन फ़ाइल में अपना प्रोजेक्ट आईडी डालें:
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

इन तीन टूल को तय करके, हम एआई को "रीड-ओनली" और "गवर्नेंस-फ़र्स्ट" के तौर पर काम करने के लिए मजबूर कर सकते हैं.

कॉन्फ़िगरेशन को सुरक्षित करना (Secret Manager)

एंटरप्राइज़ आर्किटेक्चर में, कॉन्फ़िगरेशन फ़ाइलों को सीधे तौर पर कंटेनर इमेज में कभी भी शामिल नहीं करना चाहिए. हम tools.yaml को Google Cloud Secret Manager में सुरक्षित तरीके से सेव करेंगे.

gcloud services enable secretmanager.googleapis.com
gcloud secrets create dataplex-tools-config --data-file=tools.yaml

कम से कम विशेषाधिकार (आईएम) लागू करना

इसके बाद, हम 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"

एमसीपी सर्वर को Cloud Run पर डिप्लॉय करना

अब हम जेन एआई टूलबॉक्स को डिप्लॉय करते हैं. हम 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"

अब आपने एक ऐसा एपीआई बना लिया है जिसे मैनेज किया जा सकता है! आपके GenAI फ़्रंटएंड को डेटाबेस का ऐक्सेस सीधे तौर पर देने के बजाय, यह Cloud Run यूआरएल से कनेक्ट होगा. एजेंट सिर्फ़ वही जानकारी देख सकता है जो इस टूलबॉक्स में उपलब्ध है.

4. ADK की मदद से एजेंट का बैकएंड बनाना

आपने Cloud Run पर चलने वाला एक सुरक्षित और नियंत्रित डेटा कंट्रोल प्लेन (एमसीपी) बनाया हो. अब आपके एआई एजेंट को अपने लॉजिक को व्यवस्थित करने के लिए एक फ़्रेमवर्क की ज़रूरत होगी. जैसे, उपयोगकर्ता के इनपुट को प्रोसेस करना, यह तय करना कि एमसीपी सर्वर को कब कॉल करना है, और आउटपुट को फ़ॉर्मैट करना.

हम इस पूरे बॉयलरप्लेट कोड को शुरू से लिखने के बजाय, Google के एजेंट डेवलपमेंट किट (एडीके) का इस्तेमाल करेंगे. ADK, कोड-फ़र्स्ट फ़्रेमवर्क है. यह आपके एजेंट लॉजिक को FastAPI बैकएंड में अपने-आप रैप कर देता है. इसके अलावा, इसमें पहले से मौजूद डेवलपर यूज़र इंटरफ़ेस (यूआई) होता है. इससे, एजेंट के फ़ैसले लेने की प्रोसेस और टूल कॉल को तुरंत देखा जा सकता है. इसके लिए, आपको पहले कस्टम फ़्रंटएंड बनाने की ज़रूरत नहीं होती.

एजेंट लॉजिक (agent.py) की जांच करना

इंफ़्रास्ट्रक्चर को कॉन्फ़िगर करने से पहले, आइए इस ऐप्लिकेशन के मुख्य हिस्से पर नज़र डालते हैं.

डायरेक्ट्री पर जाएं और agent.py के कॉन्टेंट को आउटपुट करें. यह फ़ाइल, आपके ADK डिप्लॉयमेंट का "ब्रेन" होती है.

cd ~/devrel-demos/data-analytics/governance-context/mcp_server
cat agent.py

कोड के स्ट्रक्चर को देखें. यह कम से कम बॉयलरप्लेट के साथ तीन ज़रूरी फ़ंक्शन करता है:

  1. MCPToolset इंटिग्रेशन: ADK, Dataplex टूल के साथ इंटरैक्ट करने के लिए कस्टम एचटीटीपी क्लाइंट लिखने के बजाय MCPToolset(server_url=mcp_url) का इस्तेमाल करता है. यह आपके डिप्लॉय किए गए एमसीपी सर्वर से tools.yaml की परिभाषा को डाइनैमिक तौर पर फ़ेच करता है. साथ ही, उन्हें एलएलएम के लिए नेटिव फ़ंक्शन कॉल में बदलता है.
  2. सिस्टम के निर्देश: instructions पैरामीटर में, कड़े नियमों का पालन करने के निर्देश शामिल होते हैं. ये निर्देश, उसी लॉजिक पर आधारित होते हैं जिसका इस्तेमाल हमने सीएलआई GEMINI.md में किया था. इसमें मॉडल को साफ़ तौर पर यह निर्देश दिया जाता है कि वह फ़ेज़ 1 (मेटाडेटा लुकअप) से फ़ेज़ 2 (डेटा क्वेरी) तक के तर्क वाले लूप को पूरा करे.
  3. एजेंट ऑर्केस्ट्रेशन: Agent(...) क्लास, Gemini मॉडल, सिस्टम प्रॉम्प्ट, और MCP टूल को एक साथ जोड़ती है. डप्लॉय करने पर, ADK इस ऑब्जेक्ट को अपने-आप स्केलेबल FastAPI एंडपॉइंट में बदल देता है.

कामों का बंटवारा: फ़्रंटएंड आइडेंटिटी कॉन्फ़िगर करना

इस कोड को सुरक्षित तरीके से चलाने के लिए, हमें एजेंट को यह बताना होगा कि आपका एमसीपी सर्वर कहां है. हम यूआरएल को डाइनैमिक तरीके से बनाएंगे और इसे .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

अनुमतियां देना

भले ही, एजेंट एमसीपी सर्वर को नीति के उल्लंघन की जांच करने का काम सौंपता है, लेकिन उसे काम करने के लिए बुनियादी अनुमतियों की ज़रूरत होती है. हम सिर्फ़ दो भूमिकाएं असाइन करते हैं:

  1. Vertex AI का इस्तेमाल करने वाला व्यक्ति: Gemini मॉडल को नैचुरल लैंग्वेज में जवाब जनरेट करने के लिए.
  2. Cloud Run Invoker: इसका इस्तेमाल, एमसीपी सर्वर एपीआई को सुरक्षित तरीके से कॉल करने के लिए किया जाता है. इसे 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 टूल को मैन्युअल तरीके से डिपेंडेंसी इंस्टॉल किए बिना चलाया जा सके. नीचे दिए गए निर्देश से, आपके 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

यह कमांड पूरी होने के बाद, सेवा का यूआरएल (e.g., https://dataplex-agent-xyz.run.app) दिखेगा. इस लिंक पर क्लिक करके, पूरी तरह से कंट्रोल किया जाने वाला GenAI Chat Interface खोलें.

12a5fa4c2aaf381f.png

एंड-टू-एंड आर्किटेक्चरल फ़्लो

अब आपने सिस्टम को पूरा कर लिया है. जब कोई उपयोगकर्ता ADK के यूज़र इंटरफ़ेस (यूआई) से इंटरैक्ट करता है, तो यह क्रम होता है:

  1. उपयोगकर्ता, ADK एजेंट (डेवलपर यूज़र इंटरफ़ेस) में कोई प्रॉम्प्ट सबमिट करता है.
  2. ADK एजेंट (agent.py), इनपुट को प्रोसेस करता है और Gemini मॉडल को कॉल करता है.
  3. Gemini को लगता है कि क्वेरी के लिए कॉन्टेक्स्ट की ज़रूरत है. इसलिए, वह एमसीपी सर्वर से Dataplex टूल को लागू करने के लिए कहता है.
  4. एमसीपी सर्वर, Dataplex के गवर्नेंस के नियमों को लागू करता है और मेटाडेटा दिखाता है.
  5. Gemini, मेटाडेटा के आधार पर भरोसेमंद जवाब तैयार करता है और उसे उपयोगकर्ता को दिखाता है.

5. Enterprise Agent को टेस्ट करना

अब आपका एजेंट लाइव हो गया है. इसलिए, आइए उन गवर्नेंस के उदाहरणों पर फिर से नज़र डालें जिनकी जांच हमने पहले सीएलआई की मदद से की थी. लॉजिक पहले जैसा ही है, लेकिन अब आपको डिप्लॉय किए गए ADK Web Playground के साथ इंटरैक्ट करना है. यह इंटरनल स्टेट और टूल के एक्ज़ीक्यूशन को दिखाता है.

  1. ऑर्केस्ट्रेशन: ADK एजेंट (Cloud Run पर चल रहा है) को आपका टेक्स्ट मिलता है.
  2. टूल राउटिंग: Gemini को पता चलता है कि आपके सवाल के लिए डेटा कॉन्टेक्स्ट की ज़रूरत है. इसलिए, वह अनुरोध को एमसीपी सर्वर पर भेज देता है.
  3. गवर्नेंस की जांच: MCP सर्वर (अलग Cloud Run इंस्टेंस पर चल रहा है) Dataplex से, खास पहलू के टाइप के बारे में क्वेरी करता है.
  4. सिंथेसिस: काम का मेटाडेटा, Gemini को भेजा जाता है, ताकि वह फ़ाइनल जवाब जनरेट कर सके.

गवर्नेंस लॉजिक की पुष्टि करना

अपने ब्राउज़र में, पिछले चरण (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?"

डेवलपर यूज़र इंटरफ़ेस (यूआई) में, एजेंट की रीज़निंग प्रोसेस देखें:

  1. इरादे की पहचान करना: एजेंट, "अभी" और "रात भर इंतज़ार नहीं कर सकता" को पार्स करता है.
  2. मेटाडेटा लुकअप: यह MCP टूल search_aspect_types को कॉल करता है. यह उन डेटा ऐसेट को खोजता है जिनमें update_frequency पहलू को DAILY या MONTHLY के बजाय REALTIME या STREAMING पर सेट किया गया है.
  3. चुना गया: इससे पता चलता है कि टेबल mkt_realtime_campaign_performance इन शर्तों को पूरा करती है. वहीं, fin_monthly_closing_internal (अच्छी क्वालिटी का होने के बावजूद) आपके अनुरोध के लिए बहुत धीमा है.
  4. जवाब: एजेंट, रीयल-टाइम टेबल का सुझाव देता है.

e0da615724199e.png

यह ज़रूरी क्यों है:

इस गवर्नेंस मेटाडेटा के बिना, एलएलएम शायद 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. व्यवस्थित करें

इस कोडलैब में इस्तेमाल की गई संसाधनों के लिए, अपने Google Cloud खाते से शुल्क लिए जाने से बचने के लिए, पहले और दूसरे पार्ट में बनाए गए सभी इन्फ़्रास्ट्रक्चर को मिटाने के लिए यह तरीका अपनाएं.

डेटा लेक को डिस्ट्रॉय करना (Terraform)

BigQuery टेबल, डेटासेट, और Dataplex के पहलू की परिभाषाओं को हटाने के लिए, Terraform का इस्तेमाल करें.

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

बिल्ड आर्टफ़ैक्ट और स्टेजिंग स्टोरेज खाली करना

uvx का इस्तेमाल करके ADK एजेंट को डिप्लॉय करने पर, सिस्टम ने अपने-आप एक कंटेनर इमेज बनाई और आपके सोर्स कोड को Cloud Storage के अस्थायी बकेट में अपलोड कर दिया. Cloud Run सेवा को मिटाने के बाद भी ये आर्टफ़ैक्ट बने रहते हैं. साथ ही, इनके लिए स्टोरेज का शुल्क लगता रहता है.

Artifact Registry रिपॉज़िटरी और 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 एजेंट को सफलतापूर्वक डिप्लॉय कर लिया है.

दो हिस्सों वाले इस कोडलैब में, आपने प्रॉम्प्ट इंजीनियरिंग के सामान्य तरीके से आगे बढ़कर, एक मज़बूत और प्रोडक्शन के लिए तैयार आर्किटेक्चर लागू किया. आपने डेटा गवर्नेंस को GenAI के लिए ज़रूरी शर्त के तौर पर माना है. इससे, आपने मॉडल को बिना पुष्टि किए गए या बनावटी डेटा को ऐक्सेस करने से रोकने के लिए, एक व्यवस्थित तरीका बनाया है.

अहम जानकारी

  • मेटाडेटा के ज़रिए एआई को सटीक जवाब देने के लिए निर्देश देना: कॉलम के नामों के आधार पर सही टेबल का अनुमान लगाने के लिए एलएलएम पर भरोसा करने के बजाय, आपने डेटाबेस के लिए GenAI टूलबॉक्स का इस्तेमाल करके, एआई को सटीक जवाब देने के लिए निर्देश दिए. सिर्फ़ तीन Dataplex टूल (search_aspect_types, search_entries, lookup_entry) को साफ़ तौर पर दिखाने से, आपने मॉडल को जवाब तैयार करने से पहले डेटा सर्टिफ़िकेट की पुष्टि करने के लिए मजबूर किया.
  • डिकपल्ड आर्किटेक्चर (एमसीपी): Cloud Run पर मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) सर्वर को डिप्लॉय करके, आपने डेटा गवर्नेंस के नियमों को एक स्टैंडर्ड एपीआई में बदल दिया है. फ़्रंटएंड एजेंट में डेटाबेस लॉजिक शामिल करने की ज़रूरत नहीं होती. इसे सिर्फ़ एमसीपी स्टैंडर्ड के ज़रिए कम्यूनिकेट करना होता है. इसका मतलब है कि आने वाले समय में, किसी भी एआई मॉडल या क्लाइंट को एक ही नियंत्रित बैकएंड में प्लग किया जा सकता है.
  • ज़िम्मेदारियों का बंटवारा: आपने IAM आइडेंटिटी को अलग करके, कम से कम अधिकारों के सिद्धांत को लागू किया है. उपयोगकर्ता के लिए उपलब्ध ADK एजेंट, मॉडल इनवोकेशन और एपीआई राउटिंग के लिए सीमित अनुमतियों के साथ काम करता है. वहीं, बैकएंड MCP सर्वर, Dataplex कैटलॉग क्वेरी और BigQuery डेटा को सुरक्षित तरीके से ऐक्सेस करता है.
  • कोड-फ़र्स्ट एजेंट ऑर्केस्ट्रेशन: आपने Google Agent Development Kit (ADK) का इस्तेमाल करके, अपने Python एजेंट लॉजिक को तुरंत एक स्केलेबल FastAPI बैकएंड में रैप किया. साथ ही, इसके बिल्ट-इन डेवलपर यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, एजेंट के इंटरनल टूल के एक्ज़ीक्यूशन को विज़ुअलाइज़ और डीबग किया.

आगे क्या करना है?