১. ভূমিকা
জেমিনি এন্টারপ্রাইজ এজেন্ট প্ল্যাটফর্ম হলো আপনার ডেটার উপর ভিত্তি করে এন্টারপ্রাইজ-গ্রেড এআই এজেন্ট তৈরি, পরিবর্ধন, পরিচালনা এবং অপ্টিমাইজ করার জন্য একটি উন্মুক্ত প্ল্যাটফর্ম।
এজেন্ট রানটাইম, ওপেন-সোর্স এজেন্ট ডেভেলপমেন্ট কিট (ADK)- এর মতো উপকরণ দিয়ে তৈরি এজেন্টগুলোকে গুগল ক্লাউডের মধ্যে নিরাপদে চালানোর জন্য একটি পরিচালিত এক্সিকিউশন এনভায়রনমেন্ট প্রদান করে।
এই কোডল্যাবটি অন্বেষণ করে যে, কীভাবে এই মূল উপাদানগুলি ব্যবহার করে জেমিনি এন্টারপ্রাইজে একজন ব্যবহারকারী দ্বারা শুরু করা একটি এজেন্টকে নিয়ন্ত্রণ করা যায়, যখন এটি নিরাপদে অভ্যন্তরীণ টুলগুলির সাথে যোগাযোগ করে।
এজেন্ট গেটওয়ে সম্পর্কে
এজেন্ট গেটওয়ে হলো প্ল্যাটফর্মের এজেন্ট গভর্নেন্স স্যুটের নেটওয়ার্কিং উপাদান। এটি সমস্ত এজেন্ট ইন্টারঅ্যাকশনের জন্য নেটওয়ার্কে প্রবেশ এবং প্রস্থানের পয়েন্ট হিসেবে কাজ করে, যা নিরাপত্তা প্রশাসকদের ডেভেলপারদের জটিল নেটওয়ার্কিং প্রিমিটিভ পরিচালনা করার প্রয়োজন ছাড়াই কেন্দ্রীভূত গভর্নেন্স প্রয়োগ করতে সক্ষম করে।
এটি দুটি প্রধান নিয়ন্ত্রিত প্রবেশ পথকে সহজতর করে:
- ক্লায়েন্ট-টু-এজেন্ট (ইনগ্রেস): বাহ্যিক ক্লায়েন্ট (যেমন কার্সর বা জেমিনি সিএলআই) এবং আপনার এজেন্টদের মধ্যেকার যোগাযোগ সুরক্ষিত করে।
- এজেন্ট-টু-এনিহোয়্যার (ইগ্রেস): গুগল ক্লাউডে চলমান এজেন্ট এবং যেকোনো স্থানে চলমান সার্ভার, টুল বা এপিআই-এর মধ্যেকার যোগাযোগ সুরক্ষিত করে।
এই কোডল্যাবে, আপনি এজেন্ট-টু-এনিহোয়্যার (ইগ্রেস) মোডের উপর মনোযোগ দেবেন।

নিরাপত্তা নীতিমালা কার্যকর করতে, এজেন্ট গেটওয়ে ইকোসিস্টেমের বাকি অংশের সাথে নিবিড়ভাবে সমন্বিত হয়:
- এজেন্ট রেজিস্ট্রি : অনুমোদিত এজেন্ট ও টুলসমূহের একটি কেন্দ্রীয় লাইব্রেরি (তৃতীয় পক্ষের এমসিপি সার্ভার সহ)।
- এজেন্ট আইডেন্টিটি : প্রতিটি এজেন্টের জন্য একটি অনন্য, ট্র্যাকযোগ্য পার্সোনা, যা এন্ড-টু-এন্ড এমটিএলএস (mTLS) দ্বারা স্বয়ংক্রিয়ভাবে সুরক্ষিত।
- আইডেন্টিটি-অ্যাওয়্যার প্রক্সি (IAP) ও IAM: এটি হলো ডিফল্ট এনফোর্সমেন্ট লেয়ার, যা নির্দিষ্ট টুলগুলিতে কল করার অনুমতি দেওয়ার আগে সূক্ষ্ম IAM পারমিশনের সাথে এজেন্টের পরিচয় যাচাই করে।
- মডেল আর্মার : সার্ভিস এক্সটেনশনের মাধ্যমে সমন্বিত একটি এআই নিরাপত্তা ব্যবস্থা, যা কন্টেন্ট পরিশুদ্ধ করে এবং প্রম্পট ইনজেকশন অ্যাটাক বা ডেটা লিকেজ থেকে সুরক্ষা প্রদান করে।
ডেপ্লয়মেন্ট মোড (ক্লাউড রানের জন্য পাবলিক বনাম প্রাইভেট নেটওয়ার্কিং)
এই কোডল্যাবটি অ্যাক্সেসযোগ্য করতে, আপনি ক্লাউড রানে ডেপ্লয় করা আপনার অভ্যন্তরীণ টুলগুলির (এমসিপি সার্ভার) জন্য দুটি নেটওয়ার্কিং পাথের মধ্যে একটি বেছে নিতে পারেন:
- ডিফল্ট (পাবলিক ইনগ্রেস): MCP সার্ভারগুলো পাবলিক হোস্টনেম (
ingress=all) সহ ক্লাউড রান-এ ডেপ্লয় করা হয়। ট্র্যাফিক এজেন্ট থেকে স্ট্যান্ডার্ড*.run.appURL-এর মাধ্যমে টুলগুলোতে রাউট করা হয়। এর জন্য কোনো কাস্টম DNS ডোমেইনের প্রয়োজন হয় না এবং এটি গভর্নেন্সের ধারণাগুলো শেখার সবচেয়ে দ্রুততম উপায়। - সুরক্ষিত (প্রাইভেট নেটওয়ার্কিং): একটি ঐচ্ছিক, সম্পূর্ণ প্রাইভেট আর্কিটেকচার। MCP সার্ভারগুলো সীমাবদ্ধ (
ingress=internal-and-cloud-load-balancing) এবং একটি সার্ভারলেস NEG সহ ইন্টারনাল অ্যাপ্লিকেশন লোড ব্যালান্সারের মাধ্যমে উন্মুক্ত থাকে। এর জন্য একটি গুগল-পরিচালিত সার্টিফিকেট প্রোভিশন করতে আপনার একটি পাবলিক DNS ডোমেইন থাকা প্রয়োজন।
টেরাফর্ম কনফিগার করার সময় আপনি আপনার পছন্দের পাথ নির্বাচন করবেন।
Cloud Run-এর জন্য নেটওয়ার্ক এন্ডপয়েন্ট ইনগ্রেস সম্পর্কে আরও জানতে, অনুগ্রহ করে আমাদের ডক্স পড়ুন ।
আপনি যা করবেন
- টেরাফর্ম ব্যবহার করে মূল অবকাঠামো স্ট্যাকটি সরবরাহ করুন
- ক্লাউড রানে অভ্যন্তরীণ টুলগুলোকে এমসিপি সার্ভার হিসেবে তৈরি ও স্থাপন করুন।
- PSC ইন্টারফেস ইগ্রেস ব্যবহার করে এজেন্ট রানটাইমে একটি ADK এজেন্ট স্থাপন করুন
- পরিচয়-ভিত্তিক অ্যাক্সেস (IAM) এবং কন্টেন্ট স্ক্রিনিং (মডেল আর্মার)-এর জন্য এজেন্ট গেটওয়ে পরিষেবা এক্সটেনশনগুলি কনফিগার করুন।
- এজেন্টের নিরাপদ এন্ড-টু-এন্ড কার্যসম্পাদন পর্যবেক্ষণ ও যাচাই করুন।
আপনার যা যা লাগবে
- ক্রোমের মতো একটি ওয়েব ব্রাউজার
- বিলিং সক্ষম এবং মালিকের অ্যাক্সেস সহ একটি গুগল ক্লাউড প্রজেক্ট
- সংস্থা-স্তরের IAM অনুমতি (কোডল্যাবটি সংস্থা-ভিত্তিক ভূমিকা প্রদান করে)
- আপনার নিয়ন্ত্রিত একটি ডোমেইন যা ক্লাউড ডিএনএস-কে অর্পণ করা হয়েছে (পাবলিক ম্যানেজড সার্টিফিকেটের জন্য)
- টেরাফর্ম,
gcloudএবং গুগল ক্লাউড নেটওয়ার্কিং-এর প্রাথমিক জ্ঞান সম্পর্কে ধারণা।
কোডল্যাব টপোলজি

এই কোডল্যাবে, আপনি একটি এন্ড-টু-এন্ড মর্টগেজ আন্ডাররাইটিং এজেন্ট ডেপ্লয় করবেন যা তিনটি অভ্যন্তরীণ টুলের সাথে নিরাপদে যোগাযোগ করে।
আপনি প্রথমে ভিত্তিগত নেটওয়ার্কিং ব্যবস্থা স্থাপন করে শুরু করবেন, যার মধ্যে একটি ভিপিসি (VPC) এবং আপনার এজেন্ট গেটওয়ে (Agent Gateway) হিসেবে কনফিগার করা একটি অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালেন্সার (Application Load Balancer) অন্তর্ভুক্ত থাকবে। এরপর, আপনি ক্লাউড রান-এ (Cloud Run) তিনটি মডেল কনটেক্সট প্রোটোকল (MCP) সার্ভার স্থাপন করবেন। এগুলো আপনার অভ্যন্তরীণ নিজস্ব টুল হিসেবে কাজ করে:
- ডকুমেন্ট ম্যানেজমেন্ট (
legacy-dms) - কর্পোরেট ইমেল (
corporate-email) - আয় যাচাইকরণ (
income-verification)
প্রয়োজনীয় টুলগুলো প্রস্তুত হয়ে গেলে, আপনি ADK দিয়ে তৈরি একটি মর্টগেজ অ্যাসিস্ট্যান্ট ( mortgage-agent ) এজেন্ট রানটাইমে ডেপ্লয় করবেন। প্রাইভেট ইগ্রেসের জন্য একটি PSC ইন্টারফেস ব্যবহার করতে এবং এজেন্ট রেজিস্ট্রির মাধ্যমে রানটাইম টুল ডিসকভারি সক্ষম করতে আপনি এই এজেন্টটিকে কনফিগার করবেন।
প্রবাহ সুরক্ষিত করতে, আপনাকে দুটি সার্ভিস এক্সটেনশন দিয়ে আপনার এজেন্ট গেটওয়ে কনফিগার করতে হবে। প্রথমত, একটি REQUEST_AUTHZ এক্সটেনশন প্রতিটি টুলের জন্য নির্ধারিত IAM পলিসির সাথে এজেন্টের পরিচয় যাচাই করবে, যা নিশ্চিত করবে যে এজেন্ট শুধুমাত্র অনুমোদিত টুলগুলোই অ্যাক্সেস করতে পারে। দ্বিতীয়ত, Model Armor ব্যবহার করে একটি CONTENT_AUTHZ এক্সটেনশন এজেন্টের প্রম্পট এবং প্রতিক্রিয়াগুলো স্ক্রিন করবে।
অবশেষে, আপনি জেমিনি এন্টারপ্রাইজে এজেন্টটিকে রেজিস্টার করবেন, একজন এন্ড ইউজার হিসেবে একটি মর্টগেজ-আন্ডাররাইটিং টাস্ক ট্রিগার করবেন এবং ক্লাউড ট্রেস ব্যবহার করে এর নিরাপদ ও নিয়ন্ত্রিত সম্পাদন যাচাই করবেন।
এই কোডল্যাবটি সকল স্তরের প্ল্যাটফর্ম ও নিরাপত্তা প্রকৌশলীদের জন্য। এটি সম্পন্ন করতে আনুমানিক ১০০ মিনিট সময় লাগবে বলে আশা করা যায়।
২. শুরু করার আগে
একটি প্রকল্প তৈরি করুন এবং প্রমাণীকরণ করুন
বিলিং সক্ষম করা একটি নতুন GCP প্রজেক্ট তৈরি করুন (অথবা পুরোনোটি পুনরায় ব্যবহার করুন), তারপর ক্লাউড শেল বা আপনার স্থানীয় মেশিনে প্রমাণীকরণ করুন:
gcloud auth login
gcloud auth application-default login
gcloud config set project <your-project-id>
বুটস্ট্র্যাপ এপিআই সক্রিয় করুন
টেরাফর্মের ফাউন্ডেশন মডিউল প্রথমবার প্রয়োগ করার সময় প্রায় ৩০টি এপিআই সক্ষম করে, কিন্তু terraform init এবং জিসিএস স্টেট বাকেটের জন্য একটি ছোট বুটস্ট্র্যাপ সেট প্রয়োজন হয়:
gcloud services enable \
compute.googleapis.com \
serviceusage.googleapis.com \
cloudresourcemanager.googleapis.com \
iam.googleapis.com \
storage.googleapis.com \
dns.googleapis.com
প্রয়োজনীয় সরঞ্জাম ইনস্টল করুন।
টুলচেইনটি ইনস্টল করুন। ক্লাউড শেলে এগুলোর বেশিরভাগই আগে থেকেই উপস্থিত থাকে; একটি ওয়ার্কস্টেশনে:
# uv (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# skaffold
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/
# envsubst (gettext)
sudo apt-get install -y gettext-base
এছাড়াও আপনার Terraform >= 1.12.2 , Python 3.12+ এবং Google Cloud SDK ( gcloud ) প্রয়োজন হবে।
পরিবেশ ভেরিয়েবল সেট করুন
কোডল্যাবের বাকি অংশে ধরে নেওয়া হয়েছে যে এগুলো আপনার শেলে এক্সপোর্ট করা আছে।
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export ORG_ID=$(gcloud projects get-ancestors $PROJECT_ID | awk '$2 == "organization" {print $1}')
export REGION="us-central1"
# Only required if using the secure private networking path
export DOMAIN_NAME="agw.example.com"
আপনার সমস্ত ভেরিয়েবল সঠিকভাবে পূরণ করা হয়েছে কিনা তা যাচাই করুন, তিনটি মান ফেরত আসা উচিত।
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $ORG_ID
যদি আপনার অর্গানাইজেশন আইডি স্বয়ংক্রিয়ভাবে পূরণ না হয়, তবে আপনি এটি খুঁজে বের করে ম্যানুয়ালি সেট করতে পারেন।
gcloud organizations list
export ORG_ID=ID_FROM_OUTPUT
৩. রিপোজিটরিটি ক্লোন করুন
git clone https://github.com/GoogleCloudPlatform/cloud-networking-solutions.git
cd cloud-networking-solutions
cd demos/agent-gateway
ডেমো ডিরেক্টরিতে কী কী আছে তার একটি সংক্ষিপ্ত বিবরণ:
src/ MCP servers (legacy-dms, corporate-email, income-verification-api) + mortgage-agent
terraform/ Root Terraform config + modules (foundation, networking, agent-gateway, model-armor, ...)
cloudrun/ Cloud Run service definitions (rendered from .yaml.tmpl via envsubst)
scripts/ grant_agent_mcp_egress.sh — per-MCP IAP egressor binding
skaffold.yaml.tmpl Skaffold pipeline that builds + deploys all three MCP services to Cloud Run
৪. টেরাফর্ম স্টেট বাকেট এবং ব্যাকএন্ড কনফিগারেশন তৈরি করুন
রিমোট স্টেট সংরক্ষণের জন্য একটি GCS বাকেট তৈরি করুন, তারপর ব্যাকএন্ড টেমপ্লেটটি কপি করুন:
gcloud storage buckets create gs://${PROJECT_ID}-tfstate \
--location=${REGION} \
--uniform-bucket-level-access
cp terraform/example.backend.conf terraform/backend.conf
আপনার মানগুলি দিয়ে terraform/backend.conf সম্পাদনা করুন:
bucket = "<your-project-id>-tfstate"
prefix = "agent-gateway"
৫. (ঐচ্ছিক) একটি পাবলিক ক্লাউড ডিএনএস জোন তৈরি করুন।
ডিফল্টরূপে এই ল্যাবের জন্য ক্লাউড রানের ইনগ্রেস কনফিগারেশন ' all এ সেট করা থাকে এবং এজেন্ট রেজিস্ট্রি প্রতিটি MCP সার্ভারকে তার পাবলিক *.run.app URL-এ রেজিস্টার করে — এর জন্য কোনো অতিরিক্ত DNS, সার্টিফিকেট বা লোড ব্যালেন্সারের প্রয়োজন হয় না। আপনি যদি প্রাইভেট নেটওয়ার্কিং-এ (একটি অভ্যন্তরীণ অ্যাপ্লিকেশন লোড ব্যালেন্সারের পিছনে ingress = internal-and-cloud-load-balancing সহ ক্লাউড রান) যেতে চান, তাহলে আপনার একটি পাবলিক ক্লাউড DNS জোনেরও প্রয়োজন হবে, যাতে সার্টিফিকেট ম্যানেজার লোড ব্যালেন্সারের সার্টিফিকেটটি ভ্যালিডেট করতে পারে।
ব্যক্তিগত নেটওয়ার্কিং এর উচ্চ স্তরের প্রবাহ

ব্যক্তিগত নেটওয়ার্কিং পদ্ধতি ব্যবহার করতে:
- পাবলিক ক্লাউড ডিএনএস জোন তৈরি করুন — সার্টিফিকেট ম্যানেজার এতে CNAME লিখে আঞ্চলিক পরিচালিত সার্টিফিকেটটি যাচাই করে:
gcloud dns managed-zones create agw-example-com \
--dns-name="${DOMAIN_NAME}." \
--description="Public zone for ${DOMAIN_NAME}" \
--visibility=public
mcp.${DOMAIN_NAME} এর জন্য সংশ্লিষ্ট প্রাইভেট জোনটি (যা MCP-এর অভ্যন্তরীণ লোড ব্যালেন্সার এবং এজেন্ট রানটাইম থেকে DNS পিয়ারিং-এর জন্য ব্যবহৃত হয়) Terraform স্বয়ংক্রিয়ভাবে তৈরি করে দেয় — এটি আপনাকে হাতে তৈরি করতে হবে না। প্রাইভেট নেটওয়ার্কিং বন্ধ থাকলে, পাবলিক বা প্রাইভেট কোনো জোনই প্রোভিশন করা হয় না।
৬. টেরাফর্ম ভেরিয়েবল কনফিগার করুন
উদাহরণ tfvars-টি কপি করে সম্পাদনা করুন:
cp terraform/example.tfvars terraform/terraform.tfvars
দুটি ডেমো পাথ রয়েছে, যেগুলো enable_cloud_run_private_networking দ্বারা নিয়ন্ত্রিত।
ডিফল্ট পাথ: পাবলিক ইনগ্রেস সহ ক্লাউড রান
সবচেয়ে সহজ সেটআপ। ডিফল্ট পাথের জন্য আপনাকে terraform.tfvars ফাইলে শুধুমাত্র তিনটি ভ্যালু এডিট করতে হবে। ফাইলটির বাকি সব ভ্যারিয়েবলের জন্য আগে থেকেই ডেমো-বান্ধব একটি ডিফল্ট মান দেওয়া আছে।
# GCP project ID where all resources will be created.
project_id = "my-gcp-project-id"
# GCP organization ID (numeric).
organization_id = "123456789012"
# Members granted demo-wide roles
platform_admin_members = ["user:admin@example.com"]
# IAP Enforcement Mode ("DRY_RUN" or null)
agent_gateway_iap_iam_enforcement_mode = "DRY_RUN"
ব্যক্তিগত নেটওয়ার্কিং (ঐচ্ছিক)
সম্পূর্ণ সুরক্ষিত স্ট্যাকটি প্রোভিশন করতে enable_cloud_run_private_networking = true সেট করুন এবং নিচের ভেরিয়েবলগুলো যোগ করুন:
- অভ্যন্তরীণ আবেদন এলবি
- গুগল-পরিচালিত সার্টিফিকেট
-
ingress = internal-and-cloud-load-balancing - এজেন্ট গেটওয়ে ডিএনএস পিয়ারিং।
enable_cloud_run_private_networking = true
# DNS — must end with a trailing dot, must match a Cloud DNS zone you own
dns_zone_domain = "agw.example.com."
enable_certificate_manager = true
# mcp_internal_dns_zone.domain MUST be a real subdomain of dns_zone_domain so
# Certificate Manager can issue a Google-managed cert.
mcp_internal_dns_zone = {
name = "mcp-server-internal"
domain = "mcp.agw.example.com."
}
# Must match mcp_internal_dns_zone.domain so Agent Engine resolves MCP
# hostnames over the PSC interface peering.
psc_interface_dns_zone = {
name = "mcp-server-internal"
domain = "mcp.agw.example.com."
}
mcp_lb_protocol = "HTTPS"
৭. টেরাফর্ম ব্যবহার করে ইনফ্রাস্ট্রাকচার ডেপ্লয় করুন
প্রারম্ভিকীকরণ, পর্যালোচনা এবং প্রয়োগ করুন:
cd terraform
terraform init -backend-config=backend.conf
terraform plan
terraform apply
terraform apply ডিফল্ট পাথে প্রায় ৪০টি রিসোর্স প্রোভিশন করে এবং একটি নতুন প্রোজেক্টে ৮-১০ মিনিট সময় নেয় (যখন enable_cloud_run_private_networking = true থাকে তখন প্রায় ৬০টি রিসোর্সের জন্য ১৫-২০ মিনিট সময় লাগে)। এটি তৈরি করে:
- প্রকল্পের ভিত্তি (এপিআই, পরিষেবা পরিচয়, কোটা)
- VPC, সাবনেট (প্রাইমারি, প্রক্সি-অনলি, PSC, PSC-ইন্টারফেস, এজেন্ট গেটওয়ে কো-লোকেশন), ক্লাউড NAT, ফায়ারওয়াল নিয়মাবলী
- ক্লাউড রান ইমেজের জন্য আর্টিফ্যাক্ট রেজিস্ট্রি রিপো
- তিনটি ক্লাউড রান পরিষেবা + পরিষেবা-ভিত্তিক রানটাইম SA (ডিফল্টরূপে ইনগ্রেস =
all; প্রাইভেট নেটওয়ার্কিং চালু থাকলেinternal-and-cloud-load-balancing) - মডেল আর্মার টেমপ্লেট + আইএএম
- এজেন্ট গেটওয়ে, পিএসসি-আই নেটওয়ার্ক অ্যাটাচমেন্ট, আইএপি এবং মডেল আর্মার এক্সটেনশন, উভয় অনুমোদন নীতি, এবং প্রজেক্ট-স্তরের
roles/iap.egressorগ্রান্ট - এজেন্ট রেজিস্ট্রি এন্ডপয়েন্ট (ভার্টেক্স এআই, আইএপি, ডিসকভারি ইঞ্জিন, ...) এবং তিনটি এমসিপি সার্ভার (ডিফল্টরূপে
*.run.app/mcpএ নিবন্ধিত; যেখানেযখন প্রাইভেট নেটওয়ার্কিং চালু থাকে). /mcp
শুধুমাত্র যখন enable_cloud_run_private_networking = true :
- সার্ভারবিহীন NEG (URL-মাস্ক রাউটিং) এবং ব্যক্তিগত DNS A রেকর্ড সহ অভ্যন্তরীণ আঞ্চলিক অ্যাপ্লিকেশন লোড ব্যালেন্সার।
- এমসিপি ব্যক্তিগত ডিএনএস জোন (
mcp.VPC-এর সাথে সংযুক্ত. mcp.). - পাবলিক ডিএনএস জোন মডিউল (সার্টিফিকেট ম্যানেজার ডিএনএস অনুমোদন) + আঞ্চলিক গুগল-পরিচালিত সার্টিফিকেট
- PSC ইন্টারফেস DNS জোন (যখন সমাধান করার জন্য কোনো ব্যক্তিগত হোস্টনেম থাকে না তখন এটি অনাথ হয়ে যায়, তাই এটি মাস্টার ফ্ল্যাগের উপরও নিয়ন্ত্রিত থাকে)
-
mcp.(স্বয়ংক্রিয়ভাবে শুরুতে যুক্ত).
৮. এজেন্ট রেজিস্ট্রি এন্ডপয়েন্টগুলো পরিদর্শন করুন
এজেন্ট রেজিস্ট্রি হলো প্রতিটি প্রজেক্টের জন্য তৈরি সার্ভিসগুলোর (গুগল এপিআই এবং আপনার নিজস্ব এমসিপি সার্ভার) একটি ক্যাটালগ, যা একটি এজেন্ট রানটাইমে খুঁজে পায়। মর্টগেজ-এজেন্ট চালু হওয়ার সময় এটি পড়ে এবং ডাইনামিকভাবে টুলগুলোকে যুক্ত করে — এজেন্টের কোড বা এর ডিপ্লয় কমান্ডে কোনো এমসিপি ইউআরএল আগে থেকে অন্তর্ভুক্ত থাকে না।
এন্ডপয়েন্ট
Terraform আপনার হয়ে যা চালিয়েছে — agent_registry_google_apis এ থাকা প্রতিটি Google API-এর জন্য এটি পাঁচটি ভ্যারিয়েন্ট (global, mTLS global, regional, regional mTLS, regional REP) রেজিস্টার করেছে। উদাহরণস্বরূপ, aiplatform জন্য:
gcloud alpha agent-registry services create aiplatform \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create aiplatform-mtls \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform mTLS" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.mtls.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create ${REGION}-aiplatform \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform Locational" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://${REGION}-aiplatform.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create aiplatform-${REGION}-rep \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform Regional (REP)" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.${REGION}.rep.googleapis.com,protocolBinding=JSONRPC"
এমসিপি সার্ভার
টেরাফর্ম আপনার জন্য ৩টি এমসিপি সার্ভারও রেজিস্টার করে দেয়, অন্যান্য এমসিপি সার্ভার রেজিস্টার করার জন্য আপনি ডকুমেন্টেশনে দেওয়া ধাপগুলো অনুসরণ করতে পারেন।
gcloud alpha agent-registry services create legacy-dms \
--project=${PROJECT_ID} \
--location=${REGION} \
--display-name="Legacy DMS" \
--mcp-server-spec-type=tool-spec \
--mcp-server-spec-content=src/legacy-dms/toolspec.json \
--interfaces=url=https://dms.${DOMAIN_NAME}/mcp,protocolBinding=JSONRPC
নিবন্ধিত এন্ডপয়েন্ট এবং এমসিপি সার্ভারগুলো যাচাই করুন।
gcloud alpha agent-registry services list \
--project=${PROJECT_ID} --location=${REGION} \
--format="value(displayName,name)"
gcloud alpha agent-registry mcp-servers list \
--project=${PROJECT_ID} --location=${REGION} \
--format="value(displayName,name)"
উৎস: terraform/modules/agent-registry-endpoints/scripts/register_endpoints.sh.tpl .
৯. এজেন্ট গেটওয়ে কনফিগারেশন পর্যালোচনা করুন।
এজেন্ট গেটওয়ে হলো এজেন্ট রানটাইম এবং আপনার টুলগুলোর মধ্যে একটি গুগল-পরিচালিত গভর্নেন্স প্লেন। AGENT_TO_ANYWHERE মোডে এটি প্রোজেক্টের এজেন্ট রেজিস্ট্রির সাথে আবদ্ধ থাকে এবং একটি গ্রাহক-মালিকানাধীন PSC ইন্টারফেসের মাধ্যমে বহির্গমন করে, যাতে এটি আপনার VPC-তে থাকা প্রাইভেট MCP সার্ভারগুলোতে পৌঁছাতে পারে।
আপনি যদি এই গেটওয়েটি হাতে করে ইম্পোর্ট করতেন, তাহলে YAML-টি দেখতে এইরকম হতো:
# agent-gateway.yaml — for reference only, Terraform already created this
name: agent-gateway
protocols: [MCP]
googleManaged:
governedAccessPath: AGENT_TO_ANYWHERE
registries:
- "//agentregistry.googleapis.com/projects/${PROJECT_ID}/locations/${REGION}"
networkConfig:
egress:
networkAttachment: projects/${PROJECT_ID}/regions/${REGION}/networkAttachments/agent-gateway-na
dnsPeeringConfig:
domains:
- mcp.${DOMAIN_NAME}.
targetProject: ${PROJECT_ID}
targetNetwork: projects/${PROJECT_ID}/global/networks/gateway-vpc
gcloud alpha network-services agent-gateways import agent-gateway \
--source=agent-gateway.yaml \
--location=${REGION}
Terraform দ্বারা তৈরি গেটওয়েটি যাচাই করুন:
gcloud alpha network-services agent-gateways describe agent-gateway \
--location=${REGION}
১০. আইএপি এবং মডেল আর্মার অনুমোদন পরীক্ষা করুন।
এজেন্ট গেটওয়ে সার্ভিস এক্সটেনশনগুলোকে অনুমোদনের ক্ষমতা অর্পণ করে। দুটি পলিসি প্রোফাইল এই ডেমোটিকে কভার করে:
- REQUEST_AUTHZ — হেডার পর্যায়ে প্রতি অনুরোধে একবার মূল্যায়ন করা হয়। এখানে এটি IAP-কে কল করতে ব্যবহৃত হয়, যা যাচাই করে দেখে যে কলিং এজেন্ট আইডেন্টিটির টার্গেট MCP সার্ভারে
roles/iap.egressorআছে কি না। - CONTENT_AUTHZ — কন্টেন্ট স্যানিটাইজেশনের জন্য এক্সটেনশনে বডি ইভেন্ট স্ট্রিম করে। এখানে এটি Model Armor-কে কল করতে ব্যবহৃত হয়, যা প্রম্পট ইনজেকশন, জেলব্রেক, RAI লঙ্ঘন এবং (ঐচ্ছিকভাবে) Sensitive Data Protection (SDP)-এর মাধ্যমে PII স্ক্রিন করে।
IAP REQUEST_AUTHZ এক্সটেনশন
cat > iap-authz-extension.yaml <<EOF
name: agent-gateway-iap-authz
service: iap.googleapis.com
failOpen: true
timeout: 1s
EOF
gcloud beta service-extensions authz-extensions import agent-gateway-iap-authz \
--source=iap-authz-extension.yaml \
--location=${REGION} \
--project=${PROJECT_ID}
এটিকে একটি REQUEST_AUTHZ পলিসি দিয়ে এজেন্ট গেটওয়ের সাথে সংযুক্ত করুন:
curl -fsS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST "https://networksecurity.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/${REGION}/authzPolicies?authz_policy_id=agent-gateway-iap-policy" \
-d '{
"name": "agent-gateway-iap-policy",
"policyProfile": "REQUEST_AUTHZ",
"action": "CUSTOM",
"target": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/agentGateways/agent-gateway"
]
},
"customProvider": {
"authzExtension": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/authzExtensions/agent-gateway-iap-authz"
]
}
}
}'
মডেল আর্মার CONTENT_AUTHZ এক্সটেনশন
এক্সটেনশনটির metadata.model_armor_settings এ সেই রিকোয়েস্ট এবং রেসপন্স টেমপ্লেট আইডিগুলো থাকে, যা Model Armor প্রতিটি কলআউট মূল্যায়ন করতে ব্যবহার করে:
cat > ma-extension.yaml <<EOF
name: agent-gateway-ma-authz
service: modelarmor.${REGION}.rep.googleapis.com
failOpen: true
timeout: 1s
metadata:
model_armor_settings: '[
{
"request_template_id": "projects/${PROJECT_ID}/locations/${REGION}/templates/agw-request-template",
"response_template_id": "projects/${PROJECT_ID}/locations/${REGION}/templates/agw-response-template"
}
]'
EOF
gcloud beta service-extensions authz-extensions import agent-gateway-ma-authz \
--source=ma-extension.yaml \
--location=${REGION} \
--project=${PROJECT_ID}
curl -fsS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST "https://networksecurity.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/${REGION}/authzPolicies?authz_policy_id=agent-gateway-ma-policy" \
-d '{
"name": "agent-gateway-ma-policy",
"policyProfile": "CONTENT_AUTHZ",
"action": "CUSTOM",
"target": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/agentGateways/agent-gateway"
]
},
"customProvider": {
"authzExtension": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/authzExtensions/agent-gateway-ma-authz"
]
}
}
}'
কাস্টম ডিএলপি টেমপ্লেট
Model Armor-এর sdpSettings.basicConfig একটি বিল্ট-ইন ইনফো-টাইপ তালিকা ব্যবহার করে। আরও সূক্ষ্ম নিয়ন্ত্রণের জন্য (কাস্টম ইনফো-টাইপ, আংশিক মাস্কিং, সারোগেট প্রতিস্থাপন, সম্ভাব্যতা অনুসারে গোপনীয়তা রক্ষা) sdpSettings.advancedConfig এর মাধ্যমে Model Armor-কে আপনার নিজস্ব ক্লাউড ডিএলপি ইন্সপেক্ট এবং ডি-আইডেন্টিফাই টেমপ্লেটের দিকে নির্দেশ করুন।
এমন একটি পরিদর্শন টেমপ্লেট তৈরি করুন যা POSSIBLE সম্ভাবনা বা তার উপরের স্তরে মার্কিন সোশ্যাল সিকিউরিটি নম্বরগুলিকে চিহ্নিত করে:
curl -fsS -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "x-goog-user-project: ${PROJECT_ID}" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/inspectTemplates" \
-d '{
"templateId": "agw-ssn-inspect-template",
"inspectTemplate": {
"displayName": "SSN Inspect Template",
"inspectConfig": {
"infoTypes": [
{ "name": "US_SOCIAL_SECURITY_NUMBER" }
],
"minLikelihood": "POSSIBLE"
}
}
}'
একটি ডি-আইডেন্টিফাই টেমপ্লেট তৈরি করুন যা প্রতিটি ফাইন্ডিংকে তার ইনফো-টাইপ টোকেন (যেমন [US_SOCIAL_SECURITY_NUMBER] ) দিয়ে প্রতিস্থাপন করে:
curl -fsS -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "x-goog-user-project: ${PROJECT_ID}" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates" \
-d '{
"templateId": "agw-ssn-redaction-template",
"deidentifyTemplate": {
"displayName": "SSN Redaction Template",
"deidentifyConfig": {
"infoTypeTransformations": {
"transformations": [{
"primitiveTransformation": { "replaceWithInfoTypeConfig": {} }
}]
}
}
}
}'
তারপর একটি মডেল আর্মার টেমপ্লেটের রেসপন্স কনফিগকে sdpSettings.advancedConfig এর মাধ্যমে ওই পেয়ারটির দিকে নির্দেশ করুন (যদি আপনি Terraform-এর model_armor মডিউলটি সংযোগ করতেন, তবে এটি এখানেই advanced_config সেট করত):
{
"filterConfig": {
"sdpSettings": {
"advancedConfig": {
"inspectTemplate": "projects/${PROJECT_ID}/locations/${REGION}/inspectTemplates/agw-ssn-inspect-template",
"deidentifyTemplate": "projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates/agw-ssn-redaction-template"
}
}
}
}
IAP বহির্গামী IAM (শুধুমাত্র প্রতি-MCP-সার্ভারের জন্য)
টেরাফর্ম অন্তর্নিহিত IAP এজেন্ট রেজিস্ট্রিতে কোনো প্রজেক্ট-ব্যাপী roles/iap.egressor বাইন্ডিং তৈরি করে না । IAP REQUEST_AUTHZ আসলে যে বাইন্ডিংটি মূল্যায়ন করে, তা প্রতি-MCP-সার্ভার এবং প্রতি-রিজনিং-ইঞ্জিন ভিত্তিক, যা এজেন্ট ডেপ্লয় করার পরে এবং আপনি এজেন্ট আইডি জানার পর মঞ্জুর করা হয়। এর জন্য "Grant the agent per-MCP-server egress" ধাপটি scripts/grant_agent_mcp_egress.sh চালায়।
১১. ক্লাউড রানে এমসিপি সার্ভারগুলো তৈরি ও স্থাপন করুন।
cloudrun/*.yaml.tmpl এবং skaffold.yaml.tmpl ফাইলগুলো ${PROJECT_ID} , ${REGION} , এবং ${MCP_INGRESS} (ক্লাউড রান ইনগ্রেস অ্যানোটেশন)-কে রেফারেন্স করে। Terraform আউটপুট থেকে MCP_INGRESS সোর্স করুন, যাতে রেন্ডার করা ম্যানিফেস্টগুলো enable_cloud_run_private_networking সাথে সিঙ্ক থাকে, তারপর envsubst দিয়ে রেন্ডার করুন:
আপনার ক্লাউড রান ইনগ্রেস কনফিগারেশন এক্সপোর্ট করুন।
-
all -
internal-and-cloud-load-balancing(প্রাইভেট নেটওয়ার্কিং পদ্ধতি ব্যবহার করার সময়)
export MCP_INGRESS=all
envsubst '${PROJECT_ID} ${REGION} ${MCP_INGRESS}' < skaffold.yaml.tmpl > skaffold.yaml
for f in cloudrun/*.yaml.tmpl; do
envsubst '${PROJECT_ID} ${REGION} ${MCP_INGRESS}' < "$f" > "${f%.tmpl}"
done
প্রতিটি ক্লাউড রান সার্ভিস টেরাফর্ম দ্বারা তৈরি একটি পার-সার্ভিস রানটাইম SA (যেমন mcp-legacy-dms@${PROJECT_ID}.iam.gserviceaccount.com ) হিসেবে চলে। সেই SA হিসেবে ডিপ্লয় করতে আপনার নিজের উপর roles/iam.serviceAccountUser প্রয়োজন:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$(gcloud config get-value account)" \
--role="roles/iam.serviceAccountUser"
ক্লাউড বিল্ড দিয়ে বিল্ড করুন এবং স্ক্যাফোল্ড দিয়ে ডেপ্লয় করুন:
skaffold run
স্ক্যাফোল্ড আপনার আর্টিফ্যাক্ট রেজিস্ট্রি রেপোতে তিনটি ইমেজ ( legacy-dms , corporate-email , income-verification-api ) তৈরি করে এবং প্রতিটি ক্লাউড রান সার্ভিসকে নতুন ডাইজেস্টের দিকে নির্দেশ করার জন্য আপডেট করে।
যাচাই করুন:
gcloud run services list --region=${REGION}
আপনি তিনটি পরিষেবারই স্ট্যাটাস ACTIVE দেখতে পাবেন।
১২. মর্টগেজ এজেন্টকে এজেন্ট রানটাইমে স্থাপন করুন।
এজেন্টের নির্ভরতাগুলো ইনস্টল করুন এবং স্থাপন করুন:
cd src/mortgage-agent
uv sync
uv run python deploy_agent.py \
--project=${PROJECT_ID} \
--region=${REGION} \
--enable-agent-identity \
--agent-name=mortgage-agent \
--agent-gateway=projects/${PROJECT_ID}/locations/${REGION}/agentGateways/agent-gateway \
--model-endpoint-location=global
স্ক্রিপ্টটি সম্পূর্ণ হলে, প্রিন্ট করা reasoningEngines/ কপি করুন। reasoningEngines/ তোমার খোলসের মধ্যে:
export AGENT_ID=<numeric-id-from-output>
cd ../..
১৩. এজেন্টকে প্রতি-এমসিপি-সার্ভার বহির্গমনের অনুমতি দিন।
IAP REQUEST_AUTHZ এক্সটেনশনটি, যে নির্দিষ্ট MCP সার্ভার বা এন্ডপয়েন্টে এজেন্টকে কল করা হচ্ছে, সেখানে তার roles/iap.egressor যাচাই করার মাধ্যমে প্রতিটি টুল কলকে অনুমোদন দেয়। একটি এজেন্ট-টু-MCP সার্ভার ইগ্রেস পলিসি তৈরি করুন দেখুন।
স্ক্রিপ্টটি ( scripts/grant_agent_mcp_egress.sh ) এজেন্ট রেজিস্ট্রি-তে projects/${PROJECT_ID}/locations/${REGION} এর অধীনে থাকা MCP সার্ভারগুলোকে তালিকাভুক্ত করে এবং এজেন্ট প্রিন্সিপালের জন্য একটি roles/iap.egressor বাইন্ডিং প্রতিটি সার্ভারের IAM পলিসিতে একীভূত করে (যা gcloud add-iam-policy-binding অর্থকে প্রতিফলিত করে)।
ব্যবহারের ক্ষেত্র ১ — নির্দিষ্ট এমসিপি সার্ভারগুলিতে সীমাবদ্ধ শর্তহীন অনুমোদন
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID} \
--mcp-filter "legacy-dms income-verification"
ব্যবহারের ক্ষেত্র ২ — একটি নির্দিষ্ট এমসিপি সার্ভারের জন্য শর্তসাপেক্ষ অনুমোদন (সিইএল)।
একটি একক MCP সার্ভারে এজেন্টকে টুলগুলির একটি উপসেটে সীমাবদ্ধ করতে, একটি IAM শর্ত সংযুক্ত করুন। এজেন্ট গেটওয়ে প্রতি-টুল অ্যাট্রিবিউট প্রকাশ করে যা IAP REQUEST_AUTHZ, CEL-এর কাছে উন্মুক্ত করে, যার মধ্যে রয়েছে:
-
iap.googleapis.com/mcp.toolName -
iap.googleapis.com/mcp.tool.isReadOnly -
iap.googleapis.com/request.auth.type.
corporate-email এজেন্টকে শুধুমাত্র পঠন-যোগ্য টুল ব্যবহারের জন্য সীমাবদ্ধ করুন:
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID} \
--mcp-filter "corporate-email" \
--condition-expression "api.getAttribute('iap.googleapis.com/mcp.tool.isReadOnly', false) == true" \
--condition-title "ReadOnlyToolsOnly" \
--condition-description "Restrict ${AGENT_ID} to read-only tools on corporate-email"
এটি চলার পর, corporate-email রাইট টুলগুলো IAP REQUEST_AUTHZ থেকে 403 PermissionDenied দেখায়; কিন্তু রিড-অনলি টুলগুলো কাজ করতে থাকে।
বাইন্ডিংগুলি যাচাই করুন
পলিসি ট্যাবে যান এবং আপনি এন্ডপয়েন্ট ও এমসিপি সার্ভারগুলোর জন্য তৈরি করা পলিসিগুলোর তালিকা দেখতে পাবেন।
অতিরিক্ত ব্যবহারের ক্ষেত্রসমূহ:
প্রতিটি এমসিপি সার্ভারে শর্তহীন অনুমোদন, যা একটি এজেন্টের জন্য প্রযোজ্য।
প্রতিবার এজেন্ট পুনঃস্থাপনের পর এটি চালান। কোনো ফিল্টার এবং শর্ত ছাড়া, নির্দিষ্ট এজেন্টটি রেজিস্ট্রির প্রতিটি MCP সার্ভারে roles/iap.egressor পেয়ে যায়:
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID}
১৪. এজেন্ট প্ল্যাটফর্ম কনসোলে এজেন্টটি পরীক্ষা করুন।
এজেন্ট প্ল্যাটফর্ম কনসোলের সাথে একটি প্লেগ্রাউন্ড থাকে, যা আপনাকে ডেপ্লয় করা এজেন্টের সাথে সরাসরি চ্যাট করার সুযোগ দেয়। এজেন্টকে জেমিনি এন্টারপ্রাইজের সাথে সংযুক্ত করার আগে টুল কলগুলোর স্মোক-টেস্ট করা এবং ট্রেসগুলো পরীক্ষা করার এটিই দ্রুততম উপায়।
- গুগল ক্লাউড কনসোলে এজেন্ট প্ল্যাটফর্ম ডিপ্লয়মেন্টস পৃষ্ঠাটি খুলুন।
- রানটাইম তালিকাটি সংকুচিত করতে চাইলে ফিল্টার ফিল্ডটি ব্যবহার করুন, তারপর আপনার
mortgage-agentরানটাইমটিতে ক্লিক করুন। - প্লেগ্রাউন্ড ট্যাবটি খুলুন।
- এজেন্টের সাথে চ্যাট করার জন্য একটি প্রম্পট টাইপ করুন:
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
এর ফলে ডকুমেন্ট ম্যানেজমেন্ট টুল এবং ইনকাম ভেরিফিকেশন টুল থেকে একটি প্রতিক্রিয়া আসা উচিত, এই প্রতিক্রিয়ায় SSN-গুলোও গোপন রাখা উচিত। ৫. একটি ফলো-আপ প্রম্পট টাইপ করুন:
Can you send a summary of this to my email jane@example.com
এজেন্টটির এটা শনাক্ত করা উচিত যে তার কাছে `send_email` টুলটির অ্যাক্সেস নেই এবং সেই অনুযায়ী প্রতিক্রিয়া জানানো উচিত।
যেহেতু এজেন্টটি ওপেনটেলিমেট্রি ইন্সট্রুমেন্টেশন সহ স্থাপন করা হয়েছিল, তাই প্লেগ্রাউন্ডটি চারটি সাইড-প্যানেল ভিউ প্রদর্শন করে, যেগুলোর মধ্যে এজেন্ট সাড়া দেওয়ার সাথে সাথে আপনি পরিবর্তন করতে পারেন:
- ট্রেস — কথোপকথনের সম্পূর্ণ বিবরণ, যার মধ্যে এজেন্ট গেটওয়ে, IAP REQUEST_AUTHZ, এবং মডেল আর্মার CONTENT_AUTHZ স্প্যান অন্তর্ভুক্ত।
- ইভেন্ট — বর্তমান টার্নের জন্য ব্যবহৃত টুল এবং ইভেন্টের বিবরণের একটি গ্রাফ।
- অবস্থা — এজেন্টের সেশন অবস্থা এবং টুলের ইনপুট/আউটপুট
- সেশন — এই রানটাইমের বিপরীতে আপনার শুরু করা প্রতিটি সেশন
১৫. আইএপি অনুমোদন বলবৎ করুন
এখন যেহেতু আমরা ডেপ্লয়মেন্টটি ভ্যালিডেট করেছি, পলিসিগুলো এনফোর্স করার জন্য আমরা IAP এনফোর্সমেন্ট মোডটি null এ আপডেট করতে পারি। terraform.tfvars খুলুন এবং মোডটি DRY_RUN থেকে null এ আপডেট করুন।
# IAP Enforcement Mode ("DRY_RUN" or null)
agent_gateway_iap_iam_enforcement_mode = null
পরিবর্তনটি প্রয়োগ করুন।
terraform apply
প্লেগ্রাউন্ডে ফিরে যান এবং কথোপকথনটি আবার চেষ্টা করুন।
- গুগল ক্লাউড কনসোলে এজেন্ট প্ল্যাটফর্ম ডিপ্লয়মেন্টস পৃষ্ঠাটি খুলুন।
- রানটাইম তালিকাটি সংকুচিত করতে চাইলে ফিল্টার ফিল্ডটি ব্যবহার করুন, তারপর আপনার
mortgage-agentরানটাইমটিতে ক্লিক করুন। - প্লেগ্রাউন্ড ট্যাবটি খুলুন।
- এজেন্টের সাথে চ্যাট করার জন্য একটি প্রম্পট টাইপ করুন:
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
এর ফলে ডকুমেন্ট ম্যানেজমেন্ট টুল এবং ইনকাম ভেরিফিকেশন টুল থেকে একটি প্রতিক্রিয়া আসা উচিত, এই প্রতিক্রিয়ায় SSN-গুলোও গোপন রাখা উচিত। ৫. একটি ফলো-আপ প্রম্পট টাইপ করুন:
Can you send a summary of this to my email jane@example.com
যদি সবকিছু সঠিকভাবে সেটআপ করা হয়ে থাকে, তাহলে এজেন্টটি জানাবে যে অনুমোদন নীতির কারণে এটি ইমেল পাঠাতে পারছে না।
১৬. জেমিনি এন্টারপ্রাইজ সেটআপ ও টেস্টিং
জেমিনি এন্টারপ্রাইজ সেটআপ করুন
জেমিনি এন্টারপ্রাইজ দিয়ে শুরু করার নির্দেশিকাটি অনুসরণ করুন।
জেমিনি এন্টারপ্রাইজে আমাদের ADK এজেন্ট নিবন্ধন করুন
জেমিনি এন্টারপ্রাইজে আমাদের এজেন্ট নিবন্ধন করতে, আপনি এখানে দেওয়া ধাপগুলো অনুসরণ করতে পারেন।
- গুগল ক্লাউড কনসোলে, জেমিনি এন্টারপ্রাইজ পৃষ্ঠায় যান।
- জেমিনি এন্টারপ্রাইজ অ্যাপটি নির্বাচন করুন যেখানে এজেন্ট নিবন্ধিত আছেন।
- "Your Gemini Enterprise webapp is ready" বিভাগে দেখানো URL-টি খুলুন।
- এজেন্ট গ্যালারি খুলতে বাম মেনু থেকে এজেন্ট ট্যাবটি নির্বাচন করুন।
- মর্টগেজ অ্যাসিস্ট্যান্ট এজেন্ট নির্বাচন করুন এবং চ্যাটিং শুরু করুন।
এজেন্ট রানটাইম প্লেগ্রাউন্ড থেকে একই প্রম্পটগুলো চেষ্টা করুন:
প্রাথমিক প্রম্পট:
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
পরবর্তী নির্দেশ:
Can you send a summary of this to my email jane@example.com
আপনি যদি কনসোলের এজেন্ট ডিপ্লয়মেন্ট বিভাগে ফিরে যান, আমাদের এজেন্ট ডিপ্লয়মেন্টটি নির্বাচন করেন এবং ট্রেসেস ট্যাবে যান, তাহলে আপনি এখন সেই স্প্যানে জেমিনি অ্যাসিস্ট্যান্ট এজেন্টকে দেখতে পাবেন যা দেখাচ্ছে যে কলটি জেমিনি এন্টারপ্রাইজ থেকে করা হয়েছিল।
১৭. সমস্যা সমাধান ও সাধারণ প্রতিকার
- এজেন্ট গেটওয়েতে "রিসোর্স তৈরি হচ্ছে এবং তাই আপডেট করা যাবে না" এই ত্রুটির কারণে
terraform applyব্যর্থ হয় — অথোরাইজেশন পলিসি সংযুক্ত হওয়ার আগে গেটওয়ের টেন্যান্ট প্রজেক্টটি স্থিতিশীল হতে প্রায় ৩০ সেকেন্ড সময় নেয়। মডিউলেরtime_sleep.wait_for_gatewayএই বিষয়টি সামাল দেয়; শুধুterraform applyপুনরায় চালান। - এজেন্ট "কোনো MCP সার্ভার খুঁজে পাওয়া যায়নি" রিপোর্ট করলে অথবা শুধু ইউটিলিটি টুল দিয়ে বুট করলে —
terraform.tfvarsএenable_agent_registry_endpoints = trueনিশ্চিত করুন, তারপর: আপনি তিনটি এন্ট্রি দেখতে পাবেন (প্রতিটি ক্লাউড রান এমসিপি পরিষেবার জন্য একটি করে)। তালিকাটি খালি থাকলে, পরীক্ষা করে দেখুন যে এমসিপি পরিষেবাগুলি ভিপিসির ভেতর থেকে অ্যাক্সেসযোগ্য কিনা এবং এজেন্ট গেটওয়ে রেজিস্ট্রিটি পূরণ করেছে কিনা (এটি প্রথম প্রক্সিড টুল তালিকায় অলসভাবে এই কাজটি করে থাকে)।gcloud alpha agent-registry mcp-servers list \ --project=${PROJECT_ID} --location=${REGION} - টুল কল করলে 403 PermissionDenied রিটার্ন আসে —
scripts/grant_agent_mcp_egress.shপুনরায় চালান। এর সবচেয়ে সাধারণ কারণ হলো এজেন্ট পুনরায় ডিপ্লয় করার পর আবার অনুমতি (grant) দিতে ভুলে যাওয়া (reasoningEngines/প্রতিটি ডেপ্লয়ের সময় পরিবর্তিত হয়)। - "সার্ভিস অ্যাকাউন্টে অনুমতি নেই" এই ত্রুটির কারণে
skaffold runব্যর্থ হচ্ছে — আপনারroles/iam.serviceAccountUserনেই। পূর্ববর্তী ধাপে সেলফ-গ্র্যান্ট প্রক্রিয়াটি পুনরায় চালান। - এজেন্ট গেটওয়ে থেকে এমসিপি এলবি-তে ডিএনএস পিয়ারিং ত্রুটি — যাচাই করুন যে
agent_gateway_dns_peering_config.target_networkহুবহুprojects/${PROJECT_ID}/global/networks/${VPC_NAME}সাথে মেলে, এবং প্রতিটিdomainsএন্ট্রির শেষে একটি ডট আছে। -
terraform planবারবার `Cloud Run` ইমেজ ট্যাগ আপডেট করতে চাইছে —lifecycle { ignore_changes }রুলের কারণে এমনটা হওয়া উচিত নয়। যদি এমনটা হয়, তাহলে নিশ্চিত করুন যেskaffold runপরে আপনিterraform.tfvarsএ থাকাmcp_services[*].imageফাইলটি এডিট করেননি।
১৮. পরিষ্কার করা
রিজনিং ইঞ্জিনটি টেরাফর্ম দ্বারা পরিচালিত হয় না (এডিকে এসডিকে এটি তৈরি করে)। এটি ম্যানুয়ালি মুছে ফেলুন:
gcloud beta ai reasoning-engines delete ${AGENT_ID} \
--region=${REGION} --project=${PROJECT_ID}
টেরাফর্ম যা কিছু তৈরি করেছে, সবকিছু ভেঙে ফেলুন:
cd terraform
terraform destroy
cd ..
যদি আপনি শুধুমাত্র এই কোডল্যাবের জন্য পাবলিক ডিএনএস জোন তৈরি করে থাকেন:
gcloud dns managed-zones delete agw-example-com
অবশেষে, Terraform স্টেট বাকেটটি ডিলিট করুন:
gcloud storage rm -r gs://${PROJECT_ID}-tfstate
১৯. অভিনন্দন
অভিনন্দন! আপনি এজেন্ট গেটওয়ে ব্যবহার করে একটি মাল্টি-টুল ADK এজেন্টের জন্য সফলভাবে ব্যাপক এজেন্ট গভর্নেন্স বাস্তবায়ন করেছেন। কেন্দ্রীভূত নেটওয়ার্ক কন্ট্রোল প্লেন হিসেবে কাজ করে, এজেন্ট গেটওয়ে আপনাকে প্রাইভেট টুলগুলিতে একটি নিরাপদ বহির্গমন পথ স্থাপন করতে, আইডেন্টিটি-অ্যাওয়্যার প্রক্সির মাধ্যমে সূক্ষ্ম পরিচয়-ভিত্তিক IAM পলিসি প্রয়োগ করতে এবং সমন্বিত মডেল আর্মার গার্ডরেল ব্যবহার করে কন্টেন্ট ইন্টারঅ্যাকশন স্যানিটাইজ করতে সক্ষম করেছে।
আপনি যা শিখেছেন
- এজেন্ট-টু-এনিহোয়্যার বহির্গামী ট্র্যাফিকের জন্য কেন্দ্রীয় গভর্নেন্স লেয়ার হিসেবে এজেন্ট গেটওয়ে কীভাবে স্থাপন এবং কনফিগার করতে হয়।
- নিয়ন্ত্রিত ও গতিশীল রানটাইম টুল আবিষ্কারের জন্য এজেন্ট রেজিস্ট্রি কীভাবে একীভূত করা যায়।
- এজেন্ট এক্সিকিউশন পাথ কঠোরভাবে নিয়ন্ত্রণ করতে টুল-ভিত্তিক এবং শর্ত-ভিত্তিক IAM পলিসি কীভাবে লিখতে ও প্রয়োগ করতে হয়।
- এজেন্ট গেটওয়ে সার্ভিস এক্সটেনশন ব্যবহার করে কীভাবে মডেল আর্মার পলিসি প্রয়োগ করা যায় এবং সংবেদনশীল এজেন্ট ট্র্যাফিক স্বয়ংক্রিয়ভাবে আটক ও গোপন করা যায়।