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

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

- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
ক্লাউড শেল শুরু করুন
ক্লাউড শেল হলো গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ, যা প্রয়োজনীয় টুলস সহ আগে থেকেই লোড করা থাকে।
- Google Cloud কনসোলের শীর্ষে থাকা Activate Cloud Shell-এ ক্লিক করুন:

- ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনার প্রমাণীকরণ যাচাই করতে এই কমান্ডটি চালান:
gcloud auth list
- আপনার প্রজেক্টটি gcloud ব্যবহারের জন্য কনফিগার করা হয়েছে কিনা তা নিশ্চিত করতে নিম্নলিখিত কমান্ডটি চালান:
gcloud config get project
- যদি আপনার প্রজেক্টটি প্রত্যাশিতভাবে কনফিগার করা না থাকে, তাহলে আপনার প্রজেক্টটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
এপিআই সক্ষম করুন
- প্রয়োজনীয় সকল এপিআই এবং সার্ভিস সক্রিয় করতে এই কমান্ডটি চালান:
gcloud services enable bigquery.googleapis.com \
cloudresourcemanager.googleapis.com \
aiplatform.googleapis.com
- কমান্ডটি সফলভাবে কার্যকর হলে, আপনি নিচে দেখানো বার্তার মতো একটি বার্তা দেখতে পাবেন:
"অপারেশন/..." সফলভাবে সম্পন্ন হয়েছে।
৩. ইনস্টলেশন ও সেটআপ
ক্লাউড শেলে ফিরে যান এবং নিশ্চিত করুন যে আপনি আপনার হোম ডিরেক্টরিতে আছেন।
BigQuery-তে adk_logs নামে একটি নতুন ডেটাসেট তৈরি করতে Cloud Shell-এ নিম্নলিখিত কমান্ডটি চালান:
bq mk --dataset --location=US adk_logs
এখন, চলুন একটি ভার্চুয়াল পাইথন এনভায়রনমেন্ট তৈরি করি এবং প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করি।
- ক্লাউড শেলে একটি নতুন টার্মিনাল ট্যাব খুলুন এবং
adk-agent-observabilityনামের একটি ফোল্ডার তৈরি করতে ও সেখানে যেতে এই কমান্ডটি চালান:
mkdir adk-agent-observability
cd adk-agent-observability
- একটি ভার্চুয়াল পাইথন পরিবেশ তৈরি করুন:
python -m venv .venv
- ভার্চুয়াল পরিবেশ সক্রিয় করুন:
source .venv/bin/activate
- ADK ইনস্টল করুন:
pip install --upgrade google-adk
৪. একটি ADK অ্যাপ্লিকেশন তৈরি করুন
এখন, চলুন আমাদের রিটেইল অ্যাসিস্ট্যান্ট এজেন্ট তৈরি করি। এই এজেন্টকে এমনভাবে ডিজাইন করা হবে যাতে...
- প্রয়োজনীয় ফোল্ডার ও ফাইলসহ একটি নতুন এজেন্ট অ্যাপ্লিকেশন তৈরি করতে adk create ইউটিলিটি কমান্ডটি চালান:
adk create retail_assistant_app
নির্দেশনাগুলো অনুসরণ করুন:
- মডেলের জন্য gemini-2.5-flash নির্বাচন করুন।
- ব্যাকএন্ডের জন্য ভার্টেক্স এআই বেছে নিন।
- আপনার ডিফল্ট গুগল ক্লাউড প্রজেক্ট আইডি এবং অঞ্চল নিশ্চিত করুন।
নীচে একটি নমুনা মিথস্ক্রিয়া দেখানো হলো:

- ক্লাউড শেল এডিটর খুলতে এবং নতুন তৈরি করা ফোল্ডার ও ফাইলগুলো দেখতে, ক্লাউড শেলের ওপেন এডিটর বাটনে ক্লিক করুন :

তৈরি হওয়া ফাইলগুলো লক্ষ্য করুন:
retail_assistant_app/
├── .venv/
└── retail_assistant_app/
├── __init__.py
├── agent.py
└── .env
- init.py: ফোল্ডারটিকে একটি পাইথন মডিউল হিসেবে চিহ্নিত করে।
- agent.py: এতে এজেন্টের প্রাথমিক সংজ্ঞা রয়েছে।
- . env: এই ফাইলটি দেখার জন্য আপনাকে ভিউ > লুকানো ফাইল টগল করুন-এ ক্লিক করতে হতে পারে।

- .env ফাইলে আপনার প্রোজেক্টের এনভায়রনমেন্ট ভেরিয়েবলগুলো থাকে, প্রম্পট থেকে যে ভেরিয়েবলগুলো সঠিকভাবে সেট করা হয়নি সেগুলো আপডেট করুন:
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=<YOUR_GOOGLE_PROJECT_ID>
GOOGLE_CLOUD_LOCATION=<YOUR_GOOGLE_CLOUD_REGION>
৫. আপনার এজেন্ট নির্ধারণ করুন
এবার আমরা একটি স্তরক্রমিক বহু-এজেন্ট সিস্টেমকে সংজ্ঞায়িত করব।
- রিয়েল টাইম ট্রেন্ড এজেন্ট: বর্তমান ফ্যাশন ট্রেন্ড খুঁজে বের করতে গুগল সার্চ ব্যবহার করে।
- ইনভেন্টরি ডেটা এজেন্ট: উপলব্ধ পণ্যগুলির জন্য পাবলিক thelook_ecommerce ডেটাসেট কোয়েরি করতে BigQuery টুলসেট ব্যবহার করে।
- রিটেইল অ্যাসিস্ট্যান্ট (রুট) এজেন্ট: ট্রেন্ড এজেন্টের কাছে পরামর্শ এবং ইনভেন্টরি এজেন্টের কাছে উপযুক্ত পণ্য চাওয়ার মাধ্যমে কর্মপ্রবাহকে সুসংহত করে।
retail_assistant_app/agent.py ফাইলের সম্পূর্ণ বিষয়বস্তু নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন।
import os
import uuid
import asyncio
import google.auth
import dotenv
from google.genai import types
from google.adk.agents import Agent
from google.adk.apps import App
from google.adk.runners import InMemoryRunner
from google.adk.tools import AgentTool, google_search
from google.adk.tools.bigquery import BigQueryCredentialsConfig, BigQueryToolset
from google.adk.plugins.bigquery_agent_analytics_plugin import BigQueryAgentAnalyticsPlugin
dotenv.load_dotenv()
# --- Configuration ---
PROJECT_ID = os.getenv('GOOGLE_CLOUD_PROJECT', 'project_not_set')
DATASET_ID = "adk_logs"
TABLE_ID = "retail_assistant_agent_logs"
APP_NAME = "retail_assistant_agent"
USER_ID = "test_user"
# --- Toolsets ---
credentials, _ = google.auth.default()
credentials_config = BigQueryCredentialsConfig(credentials=credentials)
bigquery_toolset = BigQueryToolset(
credentials_config=credentials_config
)
# --- Agents ---
# 1. Trend Spotter
real_time_agent = Agent(
name="real_time_agent",
model="gemini-2.5-flash",
description="Researches external factors like weather, local events, and current fashion trends.",
instruction="""
You are a real-time research agent.
Use Google Search to find real-time information relevant to the user's request,
such as the current weather in their location or trending styles.
""",
tools=[google_search]
)
# 2. Inventory Manager
inventory_data_agent = Agent(
name="inventory_data_agent",
model="gemini-2.5-flash",
description="Oversees product inventory in the BigQuery `thelook_ecommerce` dataset to find available items and prices.",
instruction=f"""
You manage the inventory. You have access to the `bigquery-public-data.thelook_ecommerce` dataset via the BigQuery toolset.
Run all BigQuery queries the project id of: '{PROJECT_ID}'
Your workflow:
1. Look at the products table.
2. Find items that match the requirements, factor in the results from the trend_setter agent if there are any.
3. Return with a user friendly response, including the list of specific products and prices.
""",
tools=[bigquery_toolset]
)
# 3. Root Orchestrator
root_agent = Agent(
name="retail_assistant",
model="gemini-2.5-flash",
description="The primary orchestrator, responsible for handling user input, delegating to sub-agents, and synthesizing the final product recommendation.",
instruction="""
You are a Retail Assistant.
You can ask the 'real_time_agent' agent for any realtime information needed, or style advice, include any information provided by the user.
You should ask the 'inventory_data_agent' agent to find a maximum of 3 available items matching that style.
Combine the results into a recommendation.
""",
tools=[AgentTool(agent=real_time_agent)],
sub_agents=[inventory_data_agent]
)
৬. BigQuery Agent Analytics Plugin ব্যবহার করে লগ তৈরি করুন।
এখন, এক্সিকিউশন ডেটা ক্যাপচার করার জন্য BigQuery Agent Analytics Plugin-টি কনফিগার করা যাক।
এটি করার জন্য, আপনাকে App ক্লাসের একটি ইনস্ট্যান্স তৈরি করতে হবে। এই ক্লাসটি আপনার এজেন্টের জন্য রানটাইম কন্টেইনার হিসেবে কাজ করে; এটি কনভারসেশন লুপ পরিচালনা করে, ব্যবহারকারীর অবস্থা সামলায় এবং এর সাথে সংযুক্ত যেকোনো প্লাগইন (যেমন আমাদের এজেন্ট অ্যানালিটিক্স লগার) সমন্বয় করে।
নিচের কোডটি:
- লগিং প্লাগইন চালু করে: প্রয়োজনীয় সংযোগের বিবরণ সহ
BigQueryAgentAnalyticsPluginতৈরি করে। - প্লাগইন একীভূত করে: ইনিশিয়ালাইজ করা BigQuery প্লাগইনটিকে
Appকনস্ট্রাক্টরে পাস করে, যা এজেন্ট এক্সিকিউশন ইভেন্টগুলো স্বয়ংক্রিয়ভাবে ক্যাপচার ও লগ করা নিশ্চিত করে। - এজেন্ট এক্সিকিউশন চালায় এবং লগ করে: এটি
runner.run_asyncমাধ্যমে কথোপকথনমূলক প্রবাহটি সম্পাদন করে এবং প্লাগইনটি তার রিসোর্স বন্ধ করার আগে একই সাথে সম্পূর্ণ ঘটনাক্রম সংগ্রহ করে BigQuery-তে পাঠিয়ে দেয়।
agent.py ফাইলে এজেন্ট ডেফিনিশনগুলোর নিচে এই কোডটি কপি করে পেস্ট করুন:
async def main(prompt: str):
"""Runs a conversation with the BigQuery agent using the ADK Runner."""
bq_logger_plugin = BigQueryAgentAnalyticsPlugin(
project_id=PROJECT_ID, dataset_id=DATASET_ID, table_id=TABLE_ID
)
app = App(name=APP_NAME, root_agent=root_agent, plugins=[bq_logger_plugin])
runner = InMemoryRunner(app=app)
try:
session_id = f"{USER_ID}_{uuid.uuid4().hex[:8]}"
my_session = await runner.session_service.create_session(
app_name=APP_NAME, user_id=USER_ID, session_id=session_id
)
async for event in runner.run_async(
user_id=USER_ID,
new_message=types.Content(
role="user", parts=[types.Part.from_text(text=prompt)]
),
session_id=my_session.id,
):
if event.content.parts and event.content.parts[0].text:
print(f"** {event.author}: {event.content.parts[0].text}")
except Exception as e:
print(f"Error in main: {e}")
finally:
print("Closing BQ Plugin...")
await bq_logger_plugin.close()
print("BQ Plugin closed.")
async def run_all_prompts():
"""Runs all prompts in a single event loop."""
prompts = [
"what outfits do you have available that are suitable for the weather in london this week?",
"You are such a cool agent! I need a gift idea for my friend who likes yoga.",
"I'd like to complain - the products sold here are not very good quality!"
]
for prompt in prompts:
await main(prompt)
if __name__ == "__main__":
asyncio.run(run_all_prompts())
ইনস্ট্রুমেন্টেশন প্রস্তুত হয়ে গেলে, এবার এজেন্টকে কাজে দেখতে হবে। কথোপকথনের কার্যপ্রবাহ চালু করতে স্ক্রিপ্টটি চালান।
python retail_assistant_app/agent.py
আপনার রিটেইল অ্যাসিস্ট্যান্টকে কর্মপ্রবাহ পরিচালনা করতে দেখা উচিত:
- এটি রিয়েল টাইম ট্রেন্ড এজেন্টকে (real_time_agent) লন্ডনের আবহাওয়া শনাক্ত করতে এবং উপযুক্ত ফ্যাশন ট্রেন্ড অনুসন্ধান করতে বলে।
- এরপর এটি সেই ট্রেন্ডগুলোর সাথে মেলে এমন নির্দিষ্ট পণ্যগুলোর জন্য
thelook_ecommerceBigQuery ডেটাসেটটি কোয়েরি করতে Inventory Data Agent (inventory_data_agent)- কে দায়িত্ব অর্পণ করে। - অবশেষে, রুট অর্কেস্ট্রেটর ফলাফলগুলোকে সংশ্লেষণ করে একটি চূড়ান্ত সুপারিশ তৈরি করে।
এই পুরো সময় জুড়ে, প্লাগইনটি এজেন্টের এক্সিকিউশন ট্রেস BigQuery-তে স্ট্রিম করতে থাকে।
৭. এজেন্ট লগ বিশ্লেষণ করুন
টুল ব্যবহার
আমাদের এজেন্ট পর্দার আড়ালে কী করছিল, তা এখন আমরা দেখতে পাচ্ছি! ডেটা BigQuery-তে স্ট্রিম করা হয়েছে এবং বিশ্লেষণের জন্য প্রস্তুত:
- গুগল ক্লাউড কনসোলে BigQuery লিখে অনুসন্ধান করুন।
- এক্সপ্লোরার প্যানে আপনার প্রজেক্টটি খুঁজুন।
-
adk_logsডেটাসেটটি প্রসারিত করুন। -
retail_assitant_agent_logsটেবিলটি খুলুন এবং Query-তে ক্লিক করুন।

আপনার এজেন্ট কী কী টুল কল করেছে তা দেখতে এবং টুলের কোনো ত্রুটি ধরতে, BigQuery Editor-এ নিম্নলিখিত কোয়েরিটি চালান:
SELECT
-- Extract the tool name directly from the JSON key "tool"
JSON_VALUE(content, '$.tool') AS tool_name,
-- Count every time a tool finished (successfully or with an error)
COUNT(*) AS total_finished_runs,
-- Count as a failure if event_type is ERROR, result object contains a status of 'ERROR', or error_details exist
COUNTIF(
event_type = 'TOOL_ERROR' OR
JSON_VALUE(content, '$.result.status') = 'ERROR' OR
JSON_VALUE(content, '$.result.error_details') IS NOT NULL
) AS failure_count
FROM
`adk_logs.retail_assistant_agent_logs`
WHERE
event_type IN ('TOOL_COMPLETED', 'TOOL_ERROR')
GROUP BY
1;
ফলাফলগুলো চার্ট আকারে দেখতে ভিজ্যুয়ালাইজেশন-এ ক্লিক করুন ( আপনার ফলাফল ভিন্ন হতে পারে ):

টোকেন ব্যবহার
আপনার এজেন্টদের খরচ অনুমান করার জন্য, আপনি প্রতিটি স্বতন্ত্র এজেন্ট দ্বারা ব্যবহৃত প্রম্পট টোকেন এবং ক্যান্ডিডেট টোকেনগুলিকে একত্রিত করতে পারেন:
SELECT
t.agent,
SUM(LAX_INT64(t.content.usage.prompt)) AS prompt_tokens,
SUM(LAX_INT64(t.content.usage.completion)) AS completion_tokens
FROM
`adk_logs.retail_assistant_agent_logs` AS t
WHERE
t.event_type = 'LLM_RESPONSE'
-- Filter for records that actually contain usage metadata
AND t.content.usage IS NOT NULL
GROUP BY 1;
ফলাফলগুলো চার্ট আকারে দেখতে ভিজ্যুয়ালাইজেশন-এ ক্লিক করুন ( আপনার ফলাফল ভিন্ন হতে পারে ):

৮. [বোনাস] ব্যবহারকারীর মনোভাব বিশ্লেষণ করুন
এখন এজেন্টের কাছে ব্যবহারকারীর দেওয়া ইনপুটের ভাবার্থ বিশ্লেষণ করা যাক।
- Cloud Shell-এ, BigQuery-কে Vertex AI পরিষেবাগুলির সাথে যোগাযোগ করতে সক্ষম করার জন্য একটি ক্লাউড রিসোর্স সংযোগ তৈরি করুন:
bq mk --connection --location=us \
--connection_type=CLOUD_RESOURCE test_connection
আপনি এইরকম একটি প্রতিক্রিয়া দেখতে পাবেন:
517325854360.us.test_connection সংযোগটি সফলভাবে তৈরি হয়েছে।
- একটি ক্লাউড রিসোর্স সংযোগ তৈরি করুন:
export SERVICE_ACCOUNT_EMAIL=$(bq show --format=prettyjson --connection us.test_connection | grep "serviceAccountId" | cut -d '"' -f 4)
- সার্ভিস অ্যাকাউন্টটি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করতে এই কমান্ডটি চালান:
echo $SERVICE_ACCOUNT_EMAIL
আপনার পরিষেবা অ্যাকাউন্টটি প্রদর্শিত হতে দেখবেন:

- Vertex AI-এর সাথে যোগাযোগ করার জন্য রিসোর্স কানেকশন সার্ভিস অ্যাকাউন্টকে প্রয়োজনীয় প্রজেক্ট-স্তরের অনুমতি প্রদান করুন:
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
--role='roles/bigquery.connectionUser' && \
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
--role='roles/aiplatform.user'
অনুমতিগুলো কার্যকর হওয়ার জন্য কয়েক মিনিট অপেক্ষা করুন। তারপর BigQuery-তে ফিরে আসুন এবং ব্যবহারকারীর মনোভাব বিশ্লেষণ করার জন্য AI.SCORE ফাংশন সম্বলিত নিম্নলিখিত কোয়েরিটি চালান:
SELECT
timestamp,
user_id,
content,
AI.SCORE((
'What is the sentiment of the user in this text:', JSON_VALUE(content.text_summary),
'Use a scale from 1 to 5.'),
connection_id => 'us.test_connection') AS user_sentiment
FROM
`adk_logs.retail_assistant_agent_logs`
WHERE
event_type = 'USER_MESSAGE_RECEIVED'
ORDER BY
user_sentiment DESC;
AI.SCORE ফাংশনটি ব্যবহারকারীর প্রতিটি ইনপুটের জন্য ১ থেকে ৫ এর মধ্যে একটি সেন্টিমেন্ট ভ্যালু নির্ধারণ করবে। আপনি এইগুলোর মতো ফলাফল দেখতে পাবেন:

৯. পরিষ্কার করা
আপনার গুগল ক্লাউড অ্যাকাউন্টে চলমান চার্জ এড়াতে, এই কর্মশালার সময় তৈরি করা রিসোর্সগুলো মুছে ফেলুন।
স্ক্রিপ্ট দ্বারা তৈরি লগিং ডেটাসেটটি মুছে ফেলুন:
bq rm -r -f -d $PROJECT_ID:adk_logs
ক্লাউড রিসোর্স সংযোগটি মুছে ফেলুন:
bq rm --connection --project_id=$PROJECT_ID --location=us test_connection
bigquery-adk-codelab ডিরেক্টরি এবং এর ভেতরের সবকিছু মুছে ফেলতে:
cd ..
rm -rf adk-agent-observability
১০. অভিনন্দন
অভিনন্দন! আপনি এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে একটি মাল্টি-এজেন্ট সিস্টেম তৈরি করেছেন এবং আপনার এজেন্টের আচরণ ট্র্যাক ও নিরীক্ষা করার জন্য BigQuery এজেন্ট অ্যানালিটিক্স প্লাগইনটি সফলভাবে সংযুক্ত করেছেন।