MCP এবং Cloud Run-এর সাথে একটি এন্টারপ্রাইজ গভর্নেন্স-সচেতন এজেন্ট স্থাপন করুন

১. ভূমিকা

এই কোডল্যাবটি একটি দুই-পর্বের সিরিজের অংশ, যেখানে শাসনব্যবস্থা-সচেতন একটি এআই এজেন্ট কীভাবে তৈরি করা যায় তা অন্বেষণ করা হয়েছে।

(আপনি এই সিরিজের প্রথম পর্বটি পড়তে পারেন, যেখানে একটি নলেজ ক্যাটালগ অ্যাসপেক্ট টাইপ রেজিস্টার করে ডেটার ভিত্তি স্থাপন, BigQuery টেবিলগুলিতে অ্যাসপেক্ট প্রয়োগ এবং AGY CLI-এর মাধ্যমে স্থানীয়ভাবে নিয়মগুলি পরীক্ষা করার পদ্ধতি আলোচনা করা হয়েছে। 👉 পর্ব ১ পড়ুন )

তবে, স্থানীয় CLI-তে পরীক্ষা করাটা কেবল শুরু। আপনার পুরো কোম্পানিতে এটি চালু করতে হলে, আপনার প্রয়োজন কেন্দ্রীভূত নিরাপত্তা, মানসম্মত AI টুল সংযোগ এবং এজেন্টের লজিক পরিচালনা ও একটি পরিচিত চ্যাট ইন্টারফেস প্রদানের জন্য একটি যথাযথ অ্যাপ্লিকেশন ফ্রেমওয়ার্ক।

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

.

যখন কোনো ব্যবহারকারী ADK UI-এর সাথে ইন্টারঅ্যাক্ট করেন, তখন নিম্নলিখিত ক্রমটি ঘটে:

8912d1983c34ee8e.png

আপনি যা শিখবেন

  • এআই এজেন্টরা গুগল ক্লাউড ডেটার সাথে যেভাবে যোগাযোগ করে, তার মান নির্ধারণ করতে মডেল কনটেক্সট প্রোটোকল (MCP) কীভাবে ব্যবহার করবেন।
  • ADK এজেন্ট কীভাবে গুগল-পরিচালিত নলেজ ক্যাটালগ MCP সার্ভারের সাথে সংযোগ স্থাপন করে।
  • শেয়ার্ড এজেন্ট স্কিল থেকে কীভাবে আপনার গভর্নেন্স রুলগুলো ডায়নামিকভাবে লোড করবেন
  • আপনার এজেন্টকে ক্লাউড রানে কীভাবে ডেপ্লয় করবেন এবং ADK-এর বিল্ট-ইন ওয়েব প্লেগ্রাউন্ডটি কীভাবে চালাবেন।

আপনার যা যা লাগবে

  • বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
  • গুগল ক্লাউড শেল-এ প্রবেশাধিকার।
  • ক্লাউড রান, আইএএম সার্ভিস অ্যাকাউন্ট এবং পাইথন সম্পর্কে প্রাথমিক ধারণা।
  • পার্ট ১-এ তৈরি করা BigQuery ডেটাসেট এবং নলেজ ক্যাটালগ অ্যাস্পেক্টগুলো। (আপনি যদি এগুলো মুছে ফেলে থাকেন তবে চিন্তা করবেন না; এগুলো পুনরায় তৈরি করার জন্য আমরা নিচে একটি ফাস্ট-ট্র্যাক স্ক্রিপ্ট দিয়েছি!)

মূল ধারণা

  • মডেল কনটেক্সট প্রোটোকল (MCP): MCP-কে AI এজেন্টদের জন্য একটি 'সার্বজনীন USB-C কেবল' হিসেবে ভাবা যেতে পারে। প্রতিটি AI মডেলের জন্য আলাদা করে কাস্টম API ইন্টিগ্রেশন কোড লেখার পরিবর্তে, MCP AI-কে আপনার এন্টারপ্রাইজ ডেটা টুলগুলোর (যেমন নলেজ ক্যাটালগ এবং বিগকোয়েরি) সাথে নিরাপদে সংযোগ করার একটি আদর্শ উপায় প্রদান করে।
  • এজেন্ট ডেভেলপমেন্ট কিট (ADK): গুগলের তৈরি একটি নমনীয়, ওপেন-সোর্স ফ্রেমওয়ার্ক, যা এআই এজেন্টের শুরু থেকে শেষ পর্যন্ত উন্নয়ন প্রক্রিয়াকে সহজ করার জন্য ডিজাইন করা হয়েছে। এটি এজেন্ট তৈরিতে সফটওয়্যার ইঞ্জিনিয়ারিং নীতি প্রয়োগ করে, যার ফলে আপনি জটিল টুলগুলো পরিচালনা করতে, স্টেট ম্যানেজ করতে এবং টেস্টিং ও ডেপ্লয়মেন্টের জন্য সহজেই একটি বিল্ট-ইন ডেভেলপার UI চালু করতে পারেন।
  • জেমিনি এন্টারপ্রাইজ এজেন্ট প্ল্যাটফর্ম (GEAP) : গুগল ক্লাউডে এআই এজেন্ট স্থাপনের জন্য এন্টারপ্রাইজ-গ্রেড হোস্টিং এবং অর্কেস্ট্রেশন পরিবেশ।

২. সেটআপ এবং প্রয়োজনীয়তা

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনটিতে ক্লিক করুন:

ক্লাউড শেল সক্রিয় করুন

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

গুগল ক্লাউড শেল টার্মিনালের স্ক্রিনশট, যা দেখাচ্ছে যে পরিবেশটি সংযুক্ত হয়েছে।

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।

পরিবেশ প্রারম্ভিক করুন

ক্লাউড শেল খুলুন এবং আপনার প্রোজেক্ট ভেরিয়েবলগুলো সেট করুন, যাতে সমস্ত কমান্ড সঠিক ইনফ্রাস্ট্রাকচারকে টার্গেট করে।

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

প্রয়োজনীয় এপিআইগুলি সক্রিয় করুন

আপনার ডেটা ফাউন্ডেশন পরিচালনা করতে, ভার্টেক্স এআই মডেল চালাতে এবং ক্লাউড রানে এডিকে এজেন্ট হোস্ট করতে প্রয়োজনীয় ন্যূনতম গুগল ক্লাউড এপিআইগুলো সক্রিয় করুন।

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

চেকপয়েন্ট: পুনরায় শুরু করবেন নাকি পুনর্গঠন করবেন?

যেহেতু এটি পর্ব ২, আপনার এজেন্টের কাজ করার জন্য পর্ব ১-এর নিয়ন্ত্রিত ডেটা প্রয়োজন। অনুগ্রহ করে আপনার পথ বেছে নিন:

পথ A: আমি এইমাত্র প্রথম পর্ব শেষ করেছি এবং আমার রিসোর্সগুলো এখনও চলছে।

চমৎকার! ওয়ার্কিং ডিরেক্টরিতে যান এবং আপনি এগিয়ে যাওয়ার জন্য প্রস্তুত।

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

পথ B: আমি প্রথম অংশটি বাদ দিয়েছি অথবা আমি আমার রিসোর্সগুলো মুছে ফেলেছি (পরিষ্কার করেছি)

কোনো সমস্যা নেই! আমরা নিচে একটি "ফাস্ট-ট্র্যাক" কমান্ড ব্লক দিয়েছি। এটি স্বয়ংক্রিয়ভাবে BigQuery ডেটা লেক পুনর্নির্মাণ করবে, অ্যাস্পেক্ট টাইপ রেজিস্টার করবে এবং গভর্নেন্স মেটাডেটা প্রয়োগ করবে, ঠিক যেমনটি আমরা পার্ট ১-এ করেছিলাম।

# 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

৩. কেন্দ্রীভূত ডেটা নিয়ন্ত্রণ প্লেন (পরিচালিত এমসিপি)

একটি বাস্তব এন্টারপ্রাইজ পরিবেশে, আপনার একটি সুরক্ষিত, কেন্দ্রীভূত ডেটা কন্ট্রোল প্লেন প্রয়োজন। ক্লাউড রানে একটি কাস্টম এমসিপি সার্ভার কন্টেইনার তৈরি ও স্থাপন করার পরিবর্তে, আমরা আমাদের এজেন্টকে সরাসরি গুগল-পরিচালিত নলেজ ক্যাটালগ এমসিপি সার্ভারের সাথে সংযুক্ত করব।

এই পরিচালিত এন্ডপয়েন্টটি ব্যবহার করে আমরা যা অর্জন করি:

  1. রক্ষণাবেক্ষণহীন: MCP সার্ভারের জন্য কন্টেইনার, স্কেলিং বা প্যাচিং পরিচালনা করার কোনো প্রয়োজন নেই।
  2. মানসম্মতকরণ: এজেন্টটি মডেল কনটেক্সট প্রোটোকল (SSE ট্রান্সপোর্ট) ব্যবহার করে একটি মানসম্মত ও সুরক্ষিত গুগল এপিআই এন্ডপয়েন্টের সাথে সংযুক্ত হয়।
  3. নিয়ন্ত্রিত পরিধি: MCP সার্ভার শুধুমাত্র প্রয়োজনীয় মেটাডেটা টুলগুলো ( search_entries , lookup_context , lookup_entry ) প্রকাশ করে, যা একটি পঠন-সীমাবদ্ধ এবং শাসন-প্রথম যুক্তি প্রক্রিয়া প্রয়োগ করে।

গুগল-পরিচালিত নলেজ ক্যাটালগ এমসিপি সার্ভারটি নিম্নলিখিত সুরক্ষিত ইউআরএল-এর মাধ্যমে অ্যাক্সেস করা যায়:

https://dataplex.googleapis.com/mcp

যেহেতু এটি একটি ফার্স্ট-পার্টি গুগল এপিআই, তাই এজেন্টকে আইডি টোকেনের পরিবর্তে একটি স্ট্যান্ডার্ড গুগল ক্লাউড OAuth2 অ্যাক্সেস টোকেন ব্যবহার করে প্রমাণীকরণ করতে হবে। আমরা আমাদের অ্যাপ্লিকেশন কোডে এই প্রমাণীকরণটি স্বয়ংক্রিয়ভাবে পরিচালনা করব।

৪. ADK দিয়ে এজেন্ট ব্যাকএন্ড তৈরি করুন।

আপনার একটি সুরক্ষিত ও পরিচালিত ডেটা কন্ট্রোল প্লেন আছে। এখন আপনার এআই এজেন্টের তার লজিক পরিচালনা করার জন্য একটি ফ্রেমওয়ার্ক প্রয়োজন, যেমন—ব্যবহারকারীর ইনপুট প্রসেস করা, কখন এমসিপি সার্ভারকে কল করতে হবে সেই সিদ্ধান্ত নেওয়া এবং আউটপুট ফরম্যাট করা।

আমরা গুগলের এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করব। ADK হলো একটি কোড-ফার্স্ট ফ্রেমওয়ার্ক যা স্বয়ংক্রিয়ভাবে আপনার এজেন্ট লজিককে একটি FastAPI ব্যাকএন্ডে আবদ্ধ করে এবং তাৎক্ষণিক পরীক্ষার জন্য একটি বিল্ট-ইন ওয়েব ইন্টারফেস প্রদান করে।

ক্লাউড শেল এডিটরে এজেন্ট কোডটি খুলুন

টার্মিনালে পুরো ফাইলটি না খুলে, চলুন এটি ক্লাউড শেল এডিটরে খুলি, যাতে আপনি সহজেই কোডটি পরীক্ষা, সম্পাদনা এবং বুঝতে পারেন।

টার্মিনালে নিচের কমান্ডটি চালান এবং এডিটরে কোডের গঠনটি দেখুন। অ্যাপ্লিকেশনটি গুগলের এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে তৈরি করা হয়েছে:

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 অথেন্টিকেশন এবং টোকেন রিফ্রেশ পরিচালনার জন্য বয়লারপ্লেট কোড রয়েছে, যা এজেন্টকে গুগল-পরিচালিত নলেজ ক্যাটালগ এপিআই-এর সাথে নিরাপদে যোগাযোগ করতে সক্ষম করে।)

১. স্থানীয় দক্ষতা লোডিং

একটি অত্যন্ত অপ্টিমাইজড এজেন্ট তৈরি করতে, আমরা ADK-এর নিজস্ব load_skill_from_dir ব্যবহার করে এক্সটার্নাল এজেন্ট স্কিল ডিরেক্টরি থেকে গভর্নেন্স নির্দেশাবলী লোড করি। এই পদ্ধতিটি প্রগতিশীল প্রকাশকে সক্ষম করে:

  • 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]
)

২. এজেন্ট অর্কেস্ট্রেশন

ADK আপনাকে একাধিক এজেন্টকে একসাথে শৃঙ্খলিত করার মাধ্যমে জটিল এজেন্ট আচরণ পরিচালনা করার সুযোগ দেয়। আমরা দুটি বিশেষায়িত এজেন্ট নিয়ে গঠিত একটি SequentialAgent ওয়ার্কফ্লো সংজ্ঞায়িত করি:

  • governance_researcher: governance_skill_toolset এবং নলেজ ক্যাটালগ এমসিপি 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,
    ]
)

রানটাইম ভেরিয়েবল কনফিগার করুন

এজেন্টটি চালানোর জন্য, আমাদের অবশ্যই জানাতে হবে আপনার পরিচালিত এমসিপি সার্ভারটি কোথায় অবস্থিত এবং এর প্রজেক্ট ও অঞ্চল কনফিগার করতে হবে। আমরা এই ভেরিয়েবলগুলো একটি .env ফাইলে সংরক্ষণ করব, যা ADK রানটাইমে পড়বে।

.env ফাইলটি তৈরি করতে নিম্নলিখিত কমান্ডটি চালান। লক্ষ্য করুন যে MCP_SERVER_URL সরাসরি গুগল-পরিচালিত নলেজ ক্যাটালগ এপিআই এন্ডপয়েন্টকে নির্দেশ করে:

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

৫. এজেন্টটিকে স্থানীয়ভাবে চালান এবং পরীক্ষা করুন।

ক্লাউডে আপনার এজেন্ট স্থাপন করার আগে, এর আচরণ যাচাই করার জন্য আপনার উচিত ক্লাউড শেলে এটিকে স্থানীয়ভাবে চালানো। যেহেতু এজেন্টটি বেশ কয়েকটি পাইথন প্যাকেজের (গুগল ক্লাউড লগিং এবং ADK লাইব্রেরি সহ) উপর নির্ভরশীল, তাই আমরা এই নির্ভরতাগুলো ইনস্টল করার জন্য একটি স্থানীয় ভার্চুয়াল পরিবেশ তৈরি করব।

ক্লাউড শেলে স্থানীয়ভাবে চালানোর সময়, এজেন্টটি স্বয়ংক্রিয়ভাবে আপনার সক্রিয় গুগল ক্লাউড ব্যবহারকারীর ক্রেডেনশিয়াল ব্যবহার করে, ফলে ভার্টেক্স এআই এবং নলেজ ক্যাটালগ অ্যাক্সেস করার জন্য এটির প্রয়োজনীয় অনুমতি আগে থেকেই থাকে।

  1. mcp_server ডিরেক্টরিতে যান, একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন এবং ডিপেন্ডেন্সিগুলো ইনস্টল করুন:
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.

এজেন্টটি আপনার অনুরোধটি প্রসেস করবে, পরিচালিত এমসিপি সার্ভারের মাধ্যমে নলেজ ক্যাটালগ থেকে তথ্য সংগ্রহ করবে এবং এর সুপারিশ ও তার কারণ সরাসরি টার্মিনালে প্রদর্শন করবে।

  1. ইন্টারেক্টিভ সেশন থেকে বের হতে, exit বা quit টাইপ করুন (অথবা Ctrl+C চাপুন)। বের হওয়ার পর, আপনি ভার্চুয়াল এনভায়রনমেন্টটি নিষ্ক্রিয় করতে পারেন:
deactivate

৬. এজেন্টটিকে প্রোডাকশনে স্থাপন করুন

এখন যেহেতু আপনি এজেন্টটিকে স্থানীয়ভাবে যাচাই করে নিয়েছেন, আপনি এটিকে প্রোডাকশন ব্যবহারের জন্য গুগল ক্লাউডে ডেপ্লয় করতে প্রস্তুত।

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

নিরাপত্তার স্বার্থে, স্থাপন করা এজেন্টটি আপনার ব্যক্তিগত ক্রেডেনশিয়াল ব্যবহার করে চালানো উচিত নয়। আমরা সর্বনিম্ন বিশেষাধিকারের নীতি মেনে এজেন্টের জন্য একটি পৃথক আইডেন্টিটি ( 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"

অনুমতি দিন

যদিও এজেন্ট গভর্নেন্স চেকের দায়িত্ব এমসিপি সার্ভারকে অর্পণ করে, তবুও এটির কাজ করার জন্য মৌলিক অনুমতির প্রয়োজন হয়।

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"

ক্লাউড রানে স্থাপন করুন

অবশেষে, আমরা এজেন্টটিকে ক্লাউড রান-এ ডেপ্লয় করি। নিম্নলিখিত কমান্ডটি আপনার বর্তমান ডিরেক্টরিতে থাকা Dockerfile ব্যবহার করে কন্টেইনার ইমেজ তৈরি করে, সেটিকে আর্টিফ্যাক্ট রেজিস্ট্রি-তে (Artifact Registry) আপলোড করে এবং ক্লাউড রান-এ ডেপ্লয় করে। এটি সম্পন্ন হতে ১-৩ মিনিট সময় লাগতে পারে।

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

এই কমান্ডটি সম্পন্ন হলে, এটি একটি সার্ভিস ইউআরএল (যেমন, https://knowledge-catalog-agent-xyz.run.app ) আউটপুট করবে। আপনার সম্পূর্ণ নিয়ন্ত্রিত জেনএআই চ্যাট ইন্টারফেসটি খুলতে সেই লিঙ্কে ক্লিক করুন।

12a5fa4c2aaf381f.png

৭. লাইভ এজেন্টকে পরীক্ষা করুন

এখন যেহেতু আপনার এজেন্ট লাইভ হয়েছে, চলুন গভর্নেন্স সিনারিওগুলো পরীক্ষা করা যাক। লজিক একই থাকছে, কিন্তু এখন আপনি ডেপ্লয় করা ADK ওয়েব প্লেগ্রাউন্ডের সাথে ইন্টারঅ্যাক্ট করছেন, যা অভ্যন্তরীণ অবস্থা এবং টুল এক্সিকিউশনগুলো ভিজ্যুয়ালাইজ করে।

পূর্ববর্তী ধাপে তৈরি করা সার্ভিস ইউআরএলটি (যেমন, 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?"

ডেভেলপার UI-তে এজেন্টের যুক্তি প্রক্রিয়াটি পর্যবেক্ষণ করুন:

  1. অভিপ্রায় শনাক্তকরণ: এজেন্ট 'এখনই' এবং 'সারারাত অপেক্ষা করতে পারব না' এই অর্থ বিশ্লেষণ করে।
  2. মেটাডেটা অনুসন্ধান: এটি [PROJECT_ID].us-central1.official-data-product-spec.update_frequency=REALTIME_STREAMING কোয়েরিটি দিয়ে MCP টুল search_entries-কে কল করে।
  3. নির্বাচন: এটি শনাক্ত করে যে mkt_realtime_campaign_performance টেবিলটি এই মানদণ্ডগুলো পূরণ করে।
  4. প্রতিক্রিয়া: এজেন্ট রিয়েল-টাইম টেবিলটির সুপারিশ করে।

e0da615724199e.png

কেন এটি গুরুত্বপূর্ণ:

এই গভর্নেন্স মেটাডেটা ছাড়া, একজন এলএলএম সম্ভবত fin_monthly_closing_internal টেবিলটি সুপারিশ করতেন শুধুমাত্র এই কারণে যে এতে "ad_spend" নামের একটি কলাম আছে, এবং ডেটা যে ২৪ ঘণ্টা পুরোনো সেই বিষয়টি উপেক্ষা করতেন। আপনার মেটাডেটা কনটেক্সট একটি ব্যবসায়িক ত্রুটি প্রতিরোধ করেছে।

ডেটা প্রোডাক্ট টিয়ার অ্যাস্পেক্টের উপর ভিত্তি করে এজেন্ট কীভাবে বিভিন্ন টেবিলে পিভট করে, তা দেখতে আপনি 'বোর্ড মিটিং' প্রম্পটটিও পরীক্ষা করতে পারেন:

"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?"

৮. পরিষ্কার করুন

আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, এই কোডল্যাবে তৈরি করা সমস্ত পরিকাঠামো ধ্বংস করতে এই পদক্ষেপগুলি অনুসরণ করুন।

ডেটা লেক ধ্বংস করুন

BigQuery টেবিল, ডেটাসেট এবং নলেজ ক্যাটালগ অ্যাসপেক্ট ডেফিনিশনগুলো ভেঙে ফেলার জন্য ক্লিন-আপ স্ক্রিপ্টটি ব্যবহার করুন।

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

ক্লাউড রান পরিষেবাগুলি মুছে ফেলুন

চলমান কন্টেইনারটির জন্য সক্রিয় বিলিং বন্ধ করতে কম্পিউট রিসোর্সগুলো সরিয়ে ফেলুন।

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

বিল্ড আর্টিফ্যাক্ট এবং স্টেজিং স্টোরেজ পরিষ্কার করুন

যখন আপনি 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 পলিসি বাইন্ডিংগুলো সরান, তারপর সার্ভিস অ্যাকাউন্টগুলো ডিলিট করুন।

# 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

স্থানীয় কনফিগারেশন সরান

অবশেষে, ক্লাউড শেলে স্থানীয় কনফিগারেশন ফাইল এবং এনভায়রনমেন্ট ভেরিয়েবলগুলো পরিষ্কার করুন।

# 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

৯. অভিনন্দন!

আপনি সফলভাবে একটি এন্ড-টু-এন্ড, গভর্নেন্স-সচেতন GenAI এজেন্ট স্থাপন করেছেন।

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

মূল বিষয়বস্তু

  • মেটাডেটার মাধ্যমে ডিটারমিনিস্টিক এআই: কলামের নামের উপর ভিত্তি করে সঠিক টেবিল অনুমান করার জন্য এলএলএম-এর উপর নির্ভর করার পরিবর্তে, আপনি গুগল-পরিচালিত নলেজ ক্যাটালগ এমসিপি সার্ভার ব্যবহার করে একটি কঠোর রিজনিং লুপ প্রয়োগ করেছেন, যা মডেলটিকে টেবিল সুপারিশ করার আগে ডেটার সার্টিফিকেশন যাচাই করতে বাধ্য করে।
  • বিচ্ছিন্ন স্থাপত্য: ফ্রন্টএন্ড এজেন্টের ডাটাবেস লজিক রাখার প্রয়োজন নেই; এটিকে শুধুমাত্র MCP স্ট্যান্ডার্ডের মাধ্যমে যোগাযোগ করতে হবে। এর মানে হলো, আপনি ভবিষ্যতের যেকোনো এআই মডেল বা ক্লায়েন্টকে একই নিয়ন্ত্রিত ব্যাকএন্ডে যুক্ত করতে পারবেন।
  • দায়িত্বের বিভাজন: আপনি IAM আইডেন্টিটিগুলোকে পৃথক করে সর্বনিম্ন বিশেষাধিকারের নীতি প্রয়োগ করেছেন। ব্যবহারকারীর কাছে উন্মুক্ত ADK এজেন্টটি শুধুমাত্র মডেল আহ্বান এবং API রাউটিং-এর মধ্যে সীমাবদ্ধ অনুমতি নিয়ে কাজ করে।
  • কোড-ফার্স্ট এজেন্ট অর্কেস্ট্রেশন: আপনি গুগল এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে আপনার পাইথন এজেন্ট লজিককে তাৎক্ষণিকভাবে একটি স্কেলেবল FastAPI ব্যাকএন্ডে আবদ্ধ করেছেন এবং এর বিল্ট-ইন ডেভেলপার UI ব্যবহার করে এজেন্টের অভ্যন্তরীণ টুল এক্সিকিউশনগুলো ভিজ্যুয়ালাইজ ও ডিবাগ করেছেন।

এরপর কী?