1. ভূমিকা
এই কোডল্যাবটি একটি দুই-পর্বের সিরিজের অংশ যেখানে গভর্নেন্স-সচেতন GenAI এজেন্ট কীভাবে তৈরি করা যায় তা অন্বেষণ করা হয়েছে।
(আপনি এই সিরিজের প্রথম অংশটি পড়তে পারেন, যেখানে BigQuery টেবিলে Dataplex Aspects প্রয়োগ করে এবং Gemini CLI এর মাধ্যমে স্থানীয়ভাবে নিয়মগুলি পরীক্ষা করে ডেটা ভিত্তি কীভাবে স্থাপন করা যায় তা আলোচনা করা হয়েছে। 👉 পর্ব ১ পড়ুন )
তবে, স্থানীয় CLI-তে পরীক্ষা করা কেবল শুরু। আপনার পুরো কোম্পানিতে এটি চালু করতে, আপনার কেন্দ্রীভূত নিরাপত্তা, মানসম্মত AI টুল সংযোগ এবং এজেন্টের যুক্তিকে সুসংগঠিত করার জন্য এবং একটি পরিচিত চ্যাট ইন্টারফেস প্রদানের জন্য একটি সঠিক অ্যাপ্লিকেশন কাঠামো প্রয়োজন।
এই দ্বিতীয় অংশে, আপনি এই চ্যালেঞ্জগুলি সমাধান করবেন এবং উৎপাদনের স্কেল তৈরি করবেন। আপনি আপনার গভর্নেন্স নিয়মগুলিকে ক্লাউড রানে হোস্ট করা একটি কেন্দ্রীয় MCP সার্ভারে স্থাপন করবেন। তারপর, আপনি প্রকৃত এজেন্ট অ্যাপ্লিকেশন তৈরি করতে এবং এটিকে আপনার MCP সরঞ্জামগুলির সাথে সংযুক্ত করতে Google এর এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করবেন, একটি পেশাদার ওয়েব UI সহ।

পূর্বশর্ত
- বিলিং সক্ষম করা একটি Google ক্লাউড প্রকল্প।
- ক্লাউড রান, আইএএম সার্ভিস অ্যাকাউন্ট এবং পাইথন সম্পর্কে প্রাথমিক ধারণা।
- পর্ব ১-এ তৈরি করা BigQuery ডেটাসেট এবং ডেটাপ্লেক্স দিকগুলি। (আপনি যদি এগুলি মুছে ফেলে থাকেন তবে চিন্তা করবেন না; আমরা সেগুলি পুনরায় তৈরি করার জন্য নীচে একটি দ্রুত-ট্র্যাক স্ক্রিপ্ট প্রদান করছি!)
তুমি কি শিখবে
- গুগল ক্লাউড ডেটার সাথে এআই এজেন্টরা কীভাবে ইন্টারঅ্যাক্ট করে তা মানসম্মত করার জন্য মডেল কনটেক্সট প্রোটোকল (এমসিপি) কীভাবে ব্যবহার করবেন।
- ক্লাউড রানে কীভাবে একটি নিরাপদ MCP সার্ভার স্থাপন করবেন।
- এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে কীভাবে একটি AI এজেন্ট তৈরি করবেন এবং এটি আপনার MCP ব্যাকএন্ডের সাথে সংযুক্ত করবেন।
- আপনার নিয়ন্ত্রিত এজেন্টের সাথে ইন্টারঅ্যাক্ট করার জন্য ADK-এর অন্তর্নির্মিত ডেভেলপার UI কীভাবে চালাবেন।
তোমার যা লাগবে
- গুগল ক্লাউড শেল অ্যাক্সেস
মূল ধারণা
- মডেল কনটেক্সট প্রোটোকল (MCP): MCP কে AI এজেন্টদের জন্য একটি "ইউনিভার্সাল USB-C কেবল" হিসেবে ভাবুন। প্রতিটি AI মডেলের জন্য কাস্টম API ইন্টিগ্রেশন কোড লেখার পরিবর্তে, MCP AI কে আপনার এন্টারপ্রাইজ ডেটা টুলের (যেমন Dataplex এবং BigQuery) সাথে নিরাপদে সংযোগ করার জন্য একটি আদর্শ উপায় প্রদান করে।
- এজেন্ট ডেভেলপমেন্ট কিট (ADK): গুগলের একটি নমনীয়, ওপেন-সোর্স ফ্রেমওয়ার্ক যা এআই এজেন্টদের এন্ড-টু-এন্ড ডেভেলপমেন্টকে সহজ করার জন্য ডিজাইন করা হয়েছে। এটি এজেন্ট তৈরিতে সফটওয়্যার ইঞ্জিনিয়ারিং নীতি প্রয়োগ করে, আপনাকে জটিল সরঞ্জামগুলি সাজানোর, অবস্থা পরিচালনা করার এবং সহজেই পরীক্ষা এবং স্থাপনের জন্য একটি বিল্ট-ইন ডেভেলপার UI চালু করার অনুমতি দেয়।
2. সেটআপ এবং প্রয়োজনীয়তা
ক্লাউড শেল শুরু করুন
যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।
গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি সম্পন্ন হলে, আপনি এরকম কিছু দেখতে পাবেন:

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সকল ডেভেলপমেন্ট টুল রয়েছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি অফার করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারেই করা যেতে পারে। আপনাকে কিছু ইনস্টল করার প্রয়োজন নেই।
পরিবেশ শুরু করুন
ক্লাউড শেল খুলুন এবং আপনার প্রোজেক্ট ভেরিয়েবল সেট করুন যাতে সমস্ত কমান্ড সঠিক পরিকাঠামোকে লক্ষ্য করে।
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-এ করেছিলাম।
# 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
৩. এমসিপি দিয়ে স্কেল: ডেটা কন্ট্রোল প্লেন তৈরি করা
এখন পর্যন্ত, আপনি জেমিনি সিএলআই ব্যবহার করে আপনার গভর্নেন্স লজিক সফলভাবে পরীক্ষা করেছেন। দ্রুত প্রোটোটাইপিংয়ের জন্য এটি চমৎকার, তবে এটি আপনার ব্যক্তিগত ব্যবহারকারীর শংসাপত্র ব্যবহার করে স্থানীয়ভাবে চলে।
একটি বাস্তব এন্টারপ্রাইজ পরিবেশে, আপনার একটি কেন্দ্রীভূত ডেটা নিয়ন্ত্রণ সমতল প্রয়োজন। এটি তৈরি করতে, আমরা GenAI টুলবক্স ফর ডেটাবেস ব্যবহার করব, যা গুগলের একটি অফিসিয়াল ওপেন-সোর্স প্রকল্প। এই টুলবক্সটি একটি পূর্ব-নির্মিত MCP সার্ভার প্রদান করে যা বিশেষভাবে AI এজেন্টদের নিরাপদে গুগল ক্লাউড ডাটাবেস এবং ডেটাপ্লেক্সের মতো মেটাডেটা পরিষেবার সাথে সংযুক্ত করার জন্য ডিজাইন করা হয়েছে।
ক্লাউড রানে আমাদের MCP সার্ভার হিসেবে এই টুলবক্সটি স্থাপন করে, আমরা অর্জন করি:
- কেন্দ্রীভূত পরিচয়: এজেন্টটি আপনার ব্যক্তিগত ব্যবহারকারী অ্যাকাউন্ট হিসেবে নয়, একটি সীমাবদ্ধ পরিষেবা অ্যাকাউন্ট হিসেবে চলে।
- স্ট্যান্ডার্ডাইজেশন: যেকোনো ক্লায়েন্ট (ADK, Gemini, কাস্টম অ্যাপস) স্ট্যান্ডার্ড MCP প্রোটোকল ব্যবহার করে এই সার্ভারে "প্লাগ ইন" করতে পারে।
- নিয়ন্ত্রিত সুযোগ (সর্বনিম্ন সুবিধা): আমরা LLM কে BigQuery-তে ওপেন-এন্ডেড অ্যাক্সেস দিই না। আমরা প্রথমে ডেটাপ্লেক্স মেটাডেটা ক্যাটালগের মাধ্যমে নেভিগেট করতে বাধ্য করি।
টুলের সংজ্ঞা ( 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 ক্লাউড প্রকল্প আইডির সাথে মেলে।
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
এই তিনটি হাতিয়ার সংজ্ঞায়িত করে, আমরা AI কে "শুধুমাত্র পঠনযোগ্য" এবং "প্রশাসন-প্রথম" হতে বাধ্য করতে পারি।
কনফিগারেশনটি সুরক্ষিত করুন (সিক্রেট ম্যানেজার)
এন্টারপ্রাইজ আর্কিটেকচারে, আপনার কখনই কনফিগারেশন ফাইলগুলিকে সরাসরি কন্টেইনার ছবিতে বেক করা উচিত নয়। আমরা tools.yaml Google Cloud Secret Manager- এ নিরাপদে সংরক্ষণ করব।
gcloud services enable secretmanager.googleapis.com
gcloud secrets create dataplex-tools-config --data-file=tools.yaml
ন্যূনতম সুযোগ-সুবিধা (IAM) বাস্তবায়ন করুন
এরপর, আমরা GenAI টুলবক্স MCP সার্ভারের জন্য একটি ডেডিকেটেড সার্ভিস অ্যাকাউন্ট তৈরি করব। এই পরিচয়পত্রে কেবলমাত্র ডেটাপ্লেক্স ক্যাটালগ পড়ার এবং 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 সার্ভার স্থাপন করুন
এখন, আমরা 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-এর সাথে সংযুক্ত হবে। এজেন্ট কেবল সেই জিনিসগুলি দেখতে পাবে যা এই টুলবক্সটি দেখতে দেয়।
৪. ADK দিয়ে এজেন্ট ব্যাকএন্ড তৈরি করুন
আপনি ক্লাউড রানে চলমান একটি নিরাপদ, নিয়ন্ত্রিত ডেটা কন্ট্রোল প্লেন (MCP) স্থাপন করেছেন। এখন আপনার AI এজেন্টের লজিক সাজানোর জন্য একটি কাঠামোর প্রয়োজন, যেমন ব্যবহারকারীর ইনপুট প্রক্রিয়াকরণ, MCP সার্ভার কখন কল করবেন তা নির্ধারণ এবং আউটপুট ফর্ম্যাট করা।
এই সমস্ত বয়লারপ্লেট কোডটি শুরু থেকে লেখার পরিবর্তে, আমরা গুগলের এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করব। ADK হল একটি কোড-ফার্স্ট ফ্রেমওয়ার্ক যা স্বয়ংক্রিয়ভাবে আপনার এজেন্ট লজিককে একটি FastAPI ব্যাকএন্ডে মোড়ানো হয়। তদুপরি, এটি একটি অন্তর্নির্মিত ডেভেলপার UI সহ আসে, যা আপনাকে প্রথমে একটি কাস্টম ফ্রন্টএন্ড তৈরি না করেই এজেন্টের যুক্তি প্রক্রিয়া এবং টুল কলগুলি তাৎক্ষণিকভাবে কল্পনা করতে দেয়।
এজেন্ট লজিক পরীক্ষা করুন (agent.py)
পরিকাঠামো কনফিগার করার আগে, আসুন এই অ্যাপ্লিকেশনটির মূল বিষয়গুলি দেখি।
ডিরেক্টরিতে নেভিগেট করুন এবং agent.py এর বিষয়বস্তু আউটপুট করুন। এই ফাইলটি আপনার ADK স্থাপনার "মস্তিষ্ক"।
cd ~/devrel-demos/data-analytics/governance-context/mcp_server
cat agent.py
কোড স্ট্রাকচারটি দেখুন। এটি ন্যূনতম বয়লারপ্লেট সহ তিনটি গুরুত্বপূর্ণ ফাংশন সম্পাদন করে:
- MCPToolset ইন্টিগ্রেশন: আপনার ডেটাপ্লেক্স টুলের সাথে ইন্টারঅ্যাক্ট করার জন্য কাস্টম HTTP ক্লায়েন্ট লেখার পরিবর্তে, ADK
MCPToolset(server_url=mcp_url)ব্যবহার করে। এটি আপনার মোতায়েন করা MCP সার্ভার থেকেtools.yamlসংজ্ঞাটি গতিশীলভাবে আনে এবং LLM-এর জন্য নেটিভ ফাংশন কলে অনুবাদ করে। - সিস্টেম নির্দেশাবলী:
instructionsপ্যারামিটারে কঠোর শাসন নিয়ম রয়েছে (CLIGEMINI.mdতে আমরা যে একই যুক্তি ব্যবহার করেছি)। এটি স্পষ্টভাবে মডেলটিকে ফেজ 1 (মেটাডেটা লুকআপ) থেকে ফেজ 2 (ডেটা কোয়েরি) রিজনিং লুপ কার্যকর করার নির্দেশ দেয়। - এজেন্ট অর্কেস্ট্রেশন:
Agent(...)ক্লাসটি জেমিনি মডেল, সিস্টেম প্রম্পট এবং MCP টুলগুলিকে একসাথে আবদ্ধ করে। স্থাপন করা হলে, ADK স্বয়ংক্রিয়ভাবে এই অবজেক্টটিকে একটি স্কেলেবল FastAPI এন্ডপয়েন্টে রূপান্তর করে।
কর্তব্য পৃথকীকরণ: ফ্রন্টএন্ড পরিচয় কনফিগার করুন
এই কোডটি নিরাপদে চালানোর জন্য, আমাদের এজেন্টকে অবশ্যই জানাতে হবে যে আপনার 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 ফ্রেমওয়ার্কটি এর প্রেক্ষাপট বোঝার জন্য পরিবেশগত ভেরিয়েবলের উপর নির্ভর করে। আমাদের স্পষ্টভাবে প্রজেক্ট আইডি, অঞ্চল সেট করতে হবে এবং ভার্টেক্স এআই ব্যবহার সক্ষম করতে হবে। আমরা এগুলি একই .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 সার্ভারে গভর্নেন্স চেক অর্পণ করে, তবুও এটি পরিচালনা করার জন্য মৌলিক অনুমতির প্রয়োজন। আমরা ঠিক দুটি ভূমিকা প্রদান করি:
- ভার্টেক্স এআই ব্যবহারকারী: প্রাকৃতিক ভাষা প্রতিক্রিয়া তৈরির জন্য জেমিনি মডেল ব্যবহার করা।
- ক্লাউড রান ইনভোকার: আপনার MCP সার্ভার 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"
ক্লাউড রানে স্থাপন করুন
অবশেষে, আমরা ক্লাউড রানে সম্পূর্ণ স্ট্যাক স্থাপন করব।
আমরা ADK টুলটি ম্যানুয়ালভাবে নির্ভরতা ইনস্টল না করেই চালানোর জন্য uvx ব্যবহার করি। নিচের কমান্ডটি আপনার agent.py লজিক প্যাকেজ করে, একটি কন্টেইনার ইমেজ তৈরি করে, আপনার পরিষেবা অ্যাকাউন্ট ইনজেক্ট করে এবং একটি FastAPI সার্ভার চালু করে। --with_ui ফ্ল্যাগ যোগ করে, এটি ডিবাগিংয়ের জন্য ADK ওয়েব প্লেগ্রাউন্ডকেও একত্রিত করে।
এই কমান্ডটি কন্টেইনারটি তৈরি করে এবং স্থাপন করে। এটি সম্পূর্ণ হতে ১-৩ মিনিট সময় লাগতে পারে।
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 আউটপুট করবে ( eg, https://dataplex-agent-xyz.run.app )। আপনার সম্পূর্ণরূপে নিয়ন্ত্রিত GenAI চ্যাট ইন্টারফেস খুলতে সেই লিঙ্কটিতে ক্লিক করুন।

এন্ড-টু-এন্ড স্থাপত্য প্রবাহ
আপনি এখন সিস্টেমটি সম্পন্ন করেছেন। যখন একজন ব্যবহারকারী ADK UI এর সাথে ইন্টারঅ্যাক্ট করেন, তখন নিম্নলিখিত ক্রমটি ঘটে:
- ব্যবহারকারী ADK এজেন্ট (Dev UI) তে একটি প্রম্পট জমা দেন।
- ADK এজেন্ট (agent.py) ইনপুট প্রক্রিয়া করে এবং জেমিনি মডেলকে কল করে।
- জেমিনি নির্ধারণ করে যে এর প্রেক্ষাপট প্রয়োজন এবং MCP সার্ভারকে ডেটাপ্লেক্স টুলগুলি কার্যকর করতে বলে।
- এমসিপি সার্ভার ডেটাপ্লেক্স গভর্নেন্স নিয়ম প্রয়োগ করে এবং মেটাডেটা ফেরত দেয়।
- জেমিনি মেটাডেটার উপর ভিত্তি করে বিশ্বস্ত উত্তর সংশ্লেষণ করে এবং ব্যবহারকারীকে ফেরত দেয়।
৫. এন্টারপ্রাইজ এজেন্ট পরীক্ষা করুন
এখন যেহেতু আপনার এজেন্ট লাইভ, আসুন CLI দিয়ে পূর্বে পরীক্ষিত গভর্নেন্স পরিস্থিতিগুলি আবার দেখি। যুক্তিটি একই রয়ে গেছে, তবে আপনি এখন মোতায়েন করা ADK ওয়েব প্লেগ্রাউন্ডের সাথে ইন্টারঅ্যাক্ট করছেন, যা অভ্যন্তরীণ অবস্থা এবং সরঞ্জাম সম্পাদনের দৃশ্যায়ন করে।
- অর্কেস্ট্রেশন: ADK এজেন্ট (ক্লাউড রানে চলমান) আপনার লেখা গ্রহণ করে।
- টুল রাউটিং: জেমিনি বুঝতে পারে যে আপনার প্রশ্নের জন্য ডেটা প্রসঙ্গ প্রয়োজন এবং অনুরোধটি MCP সার্ভারে ফরোয়ার্ড করে।
- গভর্নেন্স চেক: MCP সার্ভার (একটি পৃথক ক্লাউড রান ইনস্ট্যান্সে চলমান) নির্দিষ্ট অ্যাসপেক্ট টাইপের জন্য ডেটাপ্লেক্সকে জিজ্ঞাসা করে।
- সংশ্লেষণ: চূড়ান্ত উত্তর তৈরি করার জন্য প্রাসঙ্গিক মেটাডেটা জেমিনিকে ফেরত পাঠানো হয়।
শাসন যুক্তি যাচাই করুন
আপনার ব্রাউজারে পূর্ববর্তী ধাপে তৈরি করা পরিষেবা URL ( eg, 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?"
ডেভেলপার UI-তে এজেন্টের যুক্তি প্রক্রিয়াটি পর্যবেক্ষণ করুন:
- অভিপ্রায় স্বীকৃতি: এজেন্ট "এখনই" বিশ্লেষণ করে এবং "রাতের জন্য অপেক্ষা করতে পারে না।"
- মেটাডেটা লুকআপ: এটি MCP টুল
search_aspect_typesকে কল করে। এটি এমন ডেটা অ্যাসেট অনুসন্ধান করে যেখানেupdate_frequencyAspect DAILY বা MONTHLY এর পরিবর্তে REALTIME বা STREAMING এ সেট করা থাকে। - নির্বাচন: এটি সনাক্ত করে যে
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?"
৬. পরিষ্কার করা
এই কোডল্যাবে ব্যবহৃত রিসোর্সের জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, পার্ট ১ এবং পার্ট ২-এ তৈরি সমস্ত অবকাঠামো ধ্বংস করতে এই পদক্ষেপগুলি অনুসরণ করুন।
ডেটালেক ধ্বংস করুন (টেরাফর্ম)
BigQuery টেবিল, ডেটাসেট এবং Dataplex Aspect সংজ্ঞাগুলি ভেঙে ফেলার জন্য Terraform ব্যবহার করুন।
cd ~/devrel-demos/data-analytics/governance-context/terraform
terraform destroy -var="project_id=${PROJECT_ID}" -var="region=${REGION}" -auto-approve
ক্লাউড রান পরিষেবাগুলি মুছুন
চলমান কন্টেইনারগুলির জন্য যেকোনো সক্রিয় বিলিং বন্ধ করতে কম্পিউট রিসোর্সগুলি সরান।
gcloud run services delete governance-mcp --region=$REGION --quiet
gcloud run services delete dataplex-agent --region=$REGION --quiet
বিল্ড আর্টিফ্যাক্ট এবং স্টেজিং স্টোরেজ পরিষ্কার করুন
যখন আপনি uvx ব্যবহার করে ADK এজেন্ট স্থাপন করেন, তখন সিস্টেমটি স্বয়ংক্রিয়ভাবে একটি কন্টেইনার ইমেজ তৈরি করে এবং আপনার সোর্স কোডটি একটি অস্থায়ী ক্লাউড স্টোরেজ বাকেটে আপলোড করে। ক্লাউড রান পরিষেবা মুছে ফেলার পরেও এই শিল্পকর্মগুলি টিকে থাকে এবং চলমান স্টোরেজ খরচ বহন করতে হবে।
আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি এবং ক্লাউড স্টোরেজ স্টেজিং বাকেটটি সরান:
# 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 পৃষ্ঠায় "tombstone" এন্ট্রি (অনাথ রেকর্ড) যাতে না থাকে, তার জন্য প্রথমে 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
স্থানীয় কনফিগারেশন সরান
অবশেষে, ক্লাউড শেলের স্থানীয় কনফিগারেশন ফাইল এবং পরিবেশ ভেরিয়েবলগুলি পরিষ্কার করুন।
# 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
৭. অভিনন্দন!
আপনি সফলভাবে একটি এন্ড-টু-এন্ড, গভর্নেন্স-অ্যাওয়ার GenAI এজেন্ট মোতায়েন করেছেন।
এই দুই-অংশের কোডল্যাবে, আপনি একটি শক্তিশালী, উৎপাদন-প্রস্তুত স্থাপত্য বাস্তবায়নের জন্য সহজ প্রম্পট ইঞ্জিনিয়ারিং-এর বাইরে চলে গেছেন। GenAI-এর জন্য ডেটা গভর্নেন্সকে পূর্বশর্ত হিসেবে বিবেচনা করে, আপনি মডেলটিকে অপ্রত্যয়িত বা বিভ্রান্তিকর ডেটা পুনরুদ্ধার থেকে বিরত রাখার জন্য একটি পদ্ধতিগত পদ্ধতি প্রতিষ্ঠা করেছেন।
কী Takeaways
- মেটাডেটার মাধ্যমে নির্ধারক এআই: কলামের নামের উপর ভিত্তি করে সঠিক টেবিল অনুমান করার জন্য LLM-এর উপর নির্ভর করার পরিবর্তে, আপনি ডেটাবেসের জন্য GenAI টুলবক্স ব্যবহার করে একটি কঠোর যুক্তি লুপ প্রয়োগ করেছেন। শুধুমাত্র তিনটি ডেটাপ্লেক্স টুল (
search_aspect_types,search_entries,lookup_entry), স্পষ্টভাবে প্রকাশ করে, আপনি মডেলটিকে উত্তর সংশ্লেষণের আগে ডেটা সার্টিফিকেশন যাচাই করতে বাধ্য করেছেন। - ডিকপলড আর্কিটেকচার (MCP): ক্লাউড রানে মডেল কনটেক্সট প্রোটোকল (MCP) সার্ভার স্থাপন করে, আপনি আপনার ডেটা গভর্নেন্স নিয়মগুলিকে একটি কেন্দ্রীভূত, মানসম্মত API-তে রূপান্তরিত করেছেন। ফ্রন্টএন্ড এজেন্টের ডাটাবেস লজিক ধারণ করার প্রয়োজন নেই; এটিকে কেবল MCP স্ট্যান্ডার্ডের মাধ্যমে যোগাযোগ করতে হবে। এর অর্থ হল আপনি ভবিষ্যতের যেকোনো AI মডেল বা ক্লায়েন্টকে একই নিয়ন্ত্রিত ব্যাকএন্ডে প্লাগ করতে পারবেন।
- কর্তব্য পৃথকীকরণ: আপনি IAM পরিচয় পৃথক করে সর্বনিম্ন সুবিধার নীতি প্রয়োগ করেছেন। ব্যবহারকারী-মুখী ADK এজেন্ট মডেল ইনভোকেশন এবং API রাউটিংয়ের মধ্যে সীমাবদ্ধ অনুমতি নিয়ে কাজ করে, যখন ব্যাকএন্ড MCP সার্ভার নিরাপদে ডেটাপ্লেক্স ক্যাটালগ কোয়েরি এবং BigQuery ডেটা পুনরুদ্ধার পরিচালনা করে।
- কোড-ফার্স্ট এজেন্ট অর্কেস্ট্রেশন: আপনি গুগল এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে আপনার পাইথন এজেন্ট লজিককে তাৎক্ষণিকভাবে একটি স্কেলেবল FastAPI ব্যাকএন্ডে মোড়ানোর জন্য, এর অন্তর্নির্মিত ডেভেলপার UI ব্যবহার করে এজেন্টের অভ্যন্তরীণ টুল এক্সিকিউশনগুলি ভিজ্যুয়ালাইজ এবং ডিবাগ করেছেন।
এরপর কী?
- ডেটাপ্লেক্স ফাউন্ডেশনাল গভর্নেন্স কোডল্যাব : এআই লেয়ার যোগ করার আগে ডেটাপ্লেক্সে ডেটা গভর্নেন্সের মৌলিক বিষয়গুলি আয়ত্ত করুন।
- ডেটাপ্লেক্স টুলস ডকুমেন্টেশন : এই ল্যাবে ব্যবহৃত পূর্ব-নির্মিত ডেটাপ্লেক্স টুলস এবং এক্সটেনশনের অফিসিয়াল ডকুমেন্টেশনগুলি অন্বেষণ করুন।
- জেমিনি সিএলআই এক্সটেনশন দিয়ে শুরু করা : আপনার জেনাএআই এজেন্টদের আরও বেশি ক্ষমতা প্রদানের জন্য কীভাবে নিজস্ব কাস্টম এক্সটেনশন তৈরি করবেন তা শিখুন।
- MCP-তে গভীরভাবে ডুব দিন : আপনার অভ্যন্তরীণ এন্টারপ্রাইজ API-এর জন্য কাস্টম সার্ভার কীভাবে তৈরি করবেন তা বুঝতে অফিসিয়াল MCP স্পেসিফিকেশনটি দেখুন।