১. ভূমিকা
আপনি যা শিখবেন
- এজেন্ট প্ল্যাটফর্মে জেমিনি সহ এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে কীভাবে একটি এআই এজেন্ট তৈরি করবেন।
- BigQuery MCP সার্ভার ব্যবহার করে কীভাবে AI এজেন্টদের BigQuery-এর স্ট্রাকচার্ড ডেটাতে অ্যাক্সেস দেওয়া যায়।
ক্লাউড রান হলো একটি সম্পূর্ণভাবে পরিচালিত, সার্ভারবিহীন কম্পিউট প্ল্যাটফর্ম যা আপনাকে কোনো অন্তর্নিহিত পরিকাঠামো পরিচালনা না করেই কন্টেইনারাইজড অ্যাপ্লিকেশন এবং পরিষেবা চালাতে দেয়।
এজেন্ট ডেভেলপমেন্ট কিট (ADK) হলো একটি ওপেন-সোর্স এজেন্ট ডেভেলপমেন্ট ফ্রেমওয়ার্ক যা আপনাকে এন্টারপ্রাইজ স্কেলে নির্ভরযোগ্য এআই এজেন্ট তৈরি, ডিবাগ এবং স্থাপন করতে দেয়।
BigQuery হলো একটি সম্পূর্ণভাবে পরিচালিত, সার্ভারবিহীন এন্টারপ্রাইজ ডেটা ওয়্যারহাউস যা আপনাকে বিশাল ডেটাসেট সংরক্ষণ, কোয়েরি এবং বিশ্লেষণ করতে দেয়।
মডেল কনটেক্সট প্রোটোকল (MCP) বৃহৎ ল্যাঙ্গুয়েজ মডেল (LLM) এবং এআই অ্যাপ্লিকেশন বা এজেন্টরা কীভাবে বাহ্যিক ডেটা উৎসের সাথে সংযোগ স্থাপন করে, তার একটি মান নির্ধারণ করে। MCP সার্ভার আপনাকে তাদের টুলস, রিসোর্স এবং প্রম্পট ব্যবহার করে বিভিন্ন পদক্ষেপ নিতে এবং তাদের ব্যাকএন্ড পরিষেবা থেকে হালনাগাদ ডেটা পেতে সাহায্য করে। BigQuery MCP সার্ভার আপনার এআই এজেন্টদের BigQuery-তে ডেটা বিশ্লেষণ করার জন্য একটি সরাসরি ও নিরাপদ উপায় প্রদান করে। এই সম্পূর্ণভাবে পরিচালিত MCP সার্ভারটি ব্যবস্থাপনার বাড়তি চাপ দূর করে, যার ফলে আপনি ইন্টেলিজেন্ট এজেন্ট তৈরির দিকে মনোযোগ দিতে পারেন।
২. সেটআপ এবং প্রয়োজনীয়তা
ডিফল্ট প্রজেক্ট এবং ক্লাউড রান রিজিয়ন সেট করা থেকে শুরু করুন:
# set the project
gcloud config set project YOUR_PROJECT_ID
YOUR_PROJECT_ID- এর জায়গায় আপনার গুগল ক্লাউড প্রজেক্ট আইডি বসান।
# set Cloud Run region
gcloud config set run/region CLOUD-RUN-REGION
CLOUD-RUN-REGION-এর পরিবর্তে Cloud Run দ্বারা সমর্থিত অঞ্চলগুলোর মধ্যে একটি ব্যবহার করুন।
এই কোডল্যাব জুড়ে যে এনভায়রনমেন্ট ভেরিয়েবলগুলো ব্যবহার করা হবে, সেগুলো এখানে দেওয়া হলো। আপনি এগুলো একটি এনভায়রনমেন্ট ফাইলে সেভ করে "সোর্স" করতে পারেন। আপনার প্রজেক্ট আইডি এবং ঐচ্ছিকভাবে অঞ্চলের মান সঠিকভাবে সেট করতে ভুলবেন না।
# Cloud Project Id and Cloud Run region
export GOOGLE_CLOUD_PROJECT="${GOOGLE_CLOUD_PROJECT:-$(gcloud config get-value project -q)}"
export GOOGLE_CLOUD_REGION="${GOOGLE_CLOUD_REGION:-$(CR_REGION=$(gcloud config get-value run/region -q 2>/dev/null); echo "${CR_REGION:-us-central1}")}"
# Gemini API in Agent Platform
export GOOGLE_GENAI_USE_ENTERPRISE="True" # Use Agent Platform
export GOOGLE_CLOUD_LOCATION="global" # Use global Gemini API endpoint
এই কোডল্যাবের জন্য প্রয়োজনীয় এপিআইগুলো সক্রিয় করুন। এপিআই-এর পরিবর্তন কার্যকর হতে ২-৩ মিনিট সময় লাগতে পারে।
gcloud services enable --project "${GOOGLE_CLOUD_PROJECT}" \
run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
bigquery.googleapis.com \
aiplatform.googleapis.com
৩. এজেন্ট ডেভেলপমেন্ট কিট ব্যবহার করে একটি ডেটা এজেন্ট তৈরি করুন।
এজেন্টের কোড লিখুন
ক্লাউড শেল টার্মিনাল অথবা আপনার লোকাল টার্মিনাল থেকে, আপনার agentic অ্যাপের জন্য রুট ডিরেক্টরি তৈরি করুন:
mkdir data_agent
Cloud Shell Editor বা অন্য কোনো টেক্সট এডিটর খুলুন এবং data_agent ডিরেক্টরিতে agent.py তৈরি করুন:
data_agent/
agent.py
agent.py
import os
from google.adk.agents import LlmAgent
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
import google.auth
from google.auth.transport.requests import Request
# Fetch Application Default Credentials (ADC)
# to use as agent's own identity for accessing BigQuery MCP Server
_application_default_credentials, project_id = google.auth.default()
_request = Request()
_application_default_credentials.refresh(_request)
# Retrieve Google Cloud project to use.
project_id = os.getenv("GOOGLE_CLOUD_PROJECT", project_id)
if not project_id:
raise ValueError("GOOGLE_CLOUD_PROJECT environment variable is not set.")
# Builds authentication headers for MCP Server requests,
# and refreshes credentials if needed.
def _adc_auth_header_provider(context = None) -> dict[str, str]:
if not _application_default_credentials.valid:
_application_default_credentials.refresh(_request)
return {
"Authorization": f"Bearer {_application_default_credentials.token}",
"x-goog-user-project": project_id
}
# Initialize the MCP Toolset with the connection parameters
bigquery_toolset = McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://bigquery.googleapis.com/mcp",
tool_filter=[
'get_dataset_info',
'list_table_ids',
'get_table_info',
# Using readonly is a security measure to prevent accidental data modification.
'execute_sql_readonly',
]
),
header_provider=_adc_auth_header_provider # Auth header provider function
)
# Configure the agent
system_instruction = f"""
You are a helpful assistant that can answer questions about data in BigQuery.
To answer the user's question, use data you have access to by using tools `list_table_ids` and `get_table_info`.
Your data is in `bigquery-public-data.new_york_citibike` dataset (Citi Bike trips and stations in the NYC area.)
Plan of action:
0. ALWAYS start by analyzing dataset.
1. Analyze your data, investigate schema and dimensions by querying distrinct values of columns using `execute_sql_readonly`.
Output information about tables, columns, their data types and sets of values (for dimensions).
Note which columns can be joined or used in aggregations/filters, and what type conversion may be needed for joining or aggregating.
DO NOT MAKE ASSUMPTIONS ABOUT DATA (structure, type, values, relationships) BASED ON YOUR PRIOR KNOWLEDGE. ALWAYS VERIFY YOUR ASSUMPTIONS.
2. Understand and interpret the user's question.
3. Formulate a plan to answer the user's question.
4. Write a SQL query to retrieve relevant data in necessary form.
This is where you must pay extra attention to column types and dimensions' sets of values.
5. Retrieve data by generating BigQuery SQL and using `execute_sql_readonly`.
Always use Dry Run to verify SQL correctness.
Use `{project_id}` to run BigQuery queries (`project_id` parameter of `execute_sql_readonly`).
Do not use LaTeX in your responses. When giving a final answer, use Markdown.
"""
root_agent = LlmAgent(
model="gemini-3.6-flash",
name="data_agent",
instruction=system_instruction,
description="A helpful assistant that can answer questions using NYC Citibike data.",
tools=[bigquery_toolset]
)
ADK ডেপ্লয়মেন্টের জন্য __init__.py এবং requirements.txt ও প্রয়োজন হয়:
-
__init__.pyফাইলে এজেন্টের জন্য একটি ইম্পোর্ট অবশ্যই থাকতে হবে। -
requirements.txtফাইলে পাইথন নির্ভরতাগুলোর তালিকা রয়েছে: এজেন্ট ডেভেলপমেন্ট কিট-এর জন্যgoogle-adkএবং মডেল কনটেক্সট প্রোটোকল ক্লায়েন্ট-এর জন্যmcp।
এই কমান্ডগুলো আপনাকে __init__.py এবং requirements.txt তৈরি করতে সাহায্য করে:
echo "from . import agent" > data_agent/__init__.py
echo -e "google-adk==2.4.*\nmcp==1.29.*" > data_agent/requirements.txt
চূড়ান্ত ফোল্ডার কাঠামোটি দেখতে এইরকম হবে:
data_agent/
__init__.py
agent.py
requirements.txt
স্থানীয় এজেন্টের সাথে যোগাযোগ করুন।
এজেন্ট ডেভেলপমেন্ট কিটের সাথে adk CLI টুল আসে – যা আপনার এজেন্ট পরীক্ষা করার জন্য একটি ইন্টারেক্টিভ টার্মিনাল ইন্টারফেস। এটি দ্রুত পরীক্ষা, স্ক্রিপ্টেড ইন্টারঅ্যাকশন এবং CI/CD পাইপলাইনের জন্য উপযোগী। এর অন্যতম একটি ফিচার হলো adk web – ADK ওয়েব ইন্টারফেস – যা আপনার এজেন্টগুলোকে ইন্টারেক্টিভভাবে ডেভেলপ এবং ডিবাগ করার একটি সহজ উপায়। ADK ওয়েব প্রোডাকশন ডেপ্লয়মেন্টে ব্যবহারের জন্য নয়, তবে এটি এজেন্ট পরীক্ষা করাকে অত্যন্ত সহজ করে তোলে।
এই কমান্ডটি adk web চালু করে, যা ৮০৮০ পোর্টে একটি লোকাল ওয়েব সার্ভার শুরু করে।
uv tool run --with "mcp==1.29.*" --from "google-adk[mcp]==2.4.*" adk web --allow_origins="*" --port 8080 .
সার্ভিসটি চালু হয়ে গেলে, স্থানীয় ADK ওয়েব পেজটি খুলুন: http://localhost:8080/।
আপনি যদি গুগল ক্লাউড শেল ব্যবহার করেন , তাহলে ওয়েব প্রিভিউ-তে ক্লিক করুন। বোতামে ক্লিক করুন এবং 'পোর্ট ৮০৮০-তে প্রিভিউ' মেনু আইটেমটি নির্বাচন করুন।
ADK ওয়েব UI-তে, এজেন্টকে তার অ্যাক্সেস আছে এমন ডেটা সম্পর্কে জিজ্ঞাসা করুন:
What data do you have?
এজেন্টটি সিটিবাইক ডেটাসেটটি অন্বেষণ করতে BigQuery MCP টুলস ব্যবহার করবে। এটি আপনাকে সিটিবাইক ডেটাসেটে উপলব্ধ টেবিল এবং ফিল্ডগুলির একটি সার্বিক ধারণা দেবে।
৪. এজেন্টটিকে ক্লাউড রান-এ স্থাপন করুন
এই কমান্ডটি ADK CLI ব্যবহার করে ক্লাউড রান-এ এজেন্টটি স্থাপন করবে।
uv tool run --from google-adk==2.4.0 \
adk deploy cloud_run \
--with_ui \
--project $GOOGLE_CLOUD_PROJECT \
--region $GOOGLE_CLOUD_REGION \
--service_name bq-data-agent \
--app_name data_agent \
data_agent \
-- \
--allow-unauthenticated \
--max-instances 1 \
--labels dev-tutorial=codelab-cloud-run-adk-gemini-bq-mcp \
--set-env-vars GOOGLE_GENAI_USE_ENTERPRISE=True,GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT},GOOGLE_CLOUD_LOCATION=${GOOGLE_CLOUD_LOCATION}
এজেন্টের সাথে যোগাযোগ করুন
আমরা আমাদের এজেন্ট ডেপ্লয়মেন্টের জন্য --with_ui অপশনটি ব্যবহার করেছি। এটি ADK ওয়েব ইন্টারফেস সহ এজেন্টটিকে ডেপ্লয় করেছে।
- ওয়েব ব্রাউজারে এজেন্ট URL-টি খুলুন।
adk deployকমান্ডটি এটি রিটার্ন করেছে, এবং আপনিgcloud run servicesকমান্ডটি চালিয়েও URL-টি পুনরুদ্ধার করতে পারেন:
gcloud run services describe bq-data-agent \
--project $GOOGLE_CLOUD_PROJECT \
--region $GOOGLE_CLOUD_REGION \
--format 'value(status.url)'
- এজেন্টকে উপলব্ধ সিটিবাইক ডেটার উপর যুক্তি দিতে বলুন:
We have budget for 3 coffee trucks.
We want to find the best city bike stations to place our coffee trucks.
এজেন্টকে BigQuery MCP সার্ভার ব্যবহার করে Citibike ডেটাসেট অন্বেষণ করতে হবে, কয়েকটি SQL কোয়েরি চালাতে হবে এবং ৩টি সিটিবাইক স্টেশনের একটি তালিকা ফেরত দিতে হবে।
৫. অভিনন্দন!
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন!
আমরা ক্লাউড রান ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই।
আমরা যা আলোচনা করেছি
- এজেন্ট ডেভেলপমেন্ট কিট এবং জেমিনি ব্যবহার করে কীভাবে একটি এআই এজেন্ট তৈরি করবেন
- এজেন্টকে BigQuery MCP সার্ভারের সাথে কীভাবে সংযুক্ত করবেন
- ক্লাউড রান-এ এজেন্টটি কীভাবে স্থাপন করবেন।
৬. পরিষ্কার করুন
এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, আপনি প্রজেক্টটি অথবা স্বতন্ত্র রিসোর্সগুলো ডিলিট করে দিতে পারেন।
বিকল্প ১: পরিষেবাটি মুছে ফেলুন
ক্লাউড রান পরিষেবাটি মুছে ফেলুন
gcloud run services delete bq-data-agent \
--project "${GOOGLE_CLOUD_PROJECT}" \
--region "${GOOGLE_CLOUD_REGION}" \
--quiet
বিকল্প ২: প্রজেক্টটি মুছে ফেলুন
সম্পূর্ণ প্রজেক্টটি ডিলিট করতে, 'Manage Resources'- এ যান, ধাপ ২-এ তৈরি করা প্রজেক্টটি সিলেক্ট করুন এবং 'Delete' বেছে নিন। প্রজেক্টটি ডিলিট করলে, আপনাকে আপনার Cloud SDK-তে প্রজেক্ট পরিবর্তন করতে হবে। gcloud projects list ' কমান্ডটি চালিয়ে আপনি সমস্ত উপলব্ধ প্রজেক্টের তালিকা দেখতে পারেন। আপনি যদি কমান্ড লাইন ব্যবহার করতে চান, তাহলে এই কমান্ডটিও ব্যবহার করতে পারেন:
gcloud projects delete ${GOOGLE_CLOUD_PROJECT}