ADK ও Gemini CLI ব্যবহার করে একটি সাধারণ ট্রাভেল এজেন্ট তৈরি করা

১. ভূমিকা

9344c1d1a9f221b7.png

শেষবার আপডেট করা হয়েছে: ২২-০৬-২০২৬

ADK-এর মাধ্যমে একটি সাধারণ ট্রাভেল এজেন্ট তৈরি করা

এই ADK Python(*) ওয়ার্কশপে আপনাকে স্বাগত, Gemini CLI-এর জন্য ধন্যবাদ, কারণ এতে ব্যাটারি অন্তর্ভুক্ত আছে!

এই কোডল্যাব দুটি 🏅 মাইলস্টোনে বিভক্ত:

  1. একটি সাধারণ, সহজ শেখার পথ: সেটআপ + তাৎক্ষণিক তৃপ্তি।
  2. একটি পছন্দমতো পথ যেখানে আপনি Gemini CLI-এর সাহায্যে সমাধান করার জন্য একটি কোয়েস্ট বেছে নেন

দ্বিতীয় অংশটি এই কোডল্যাবকে হ্যাক্যাথন-এর জন্য উপযুক্ত করে তোলে (এবং সবচেয়ে ক্রিয়েটিভ সমাধানের জন্য পুরস্কার!)

মাইলস্টোন ১: ADK ও Gemini CLI ব্যবহার করে আপনার প্রথম এজেন্ট

এই মাইলস্টোনের লক্ষ্য হল ADK-এর মাধ্যমে ধাপে ধাপে একটি সাধারণ ট্রাভেল এজেন্ট তৈরি করা। এটি করার জন্য, আমরা প্রথমে Gemini CLI সেট-আপ করতে চাই যাতে এটি আমাদের ADK-এর মাধ্যমে কোড করতে সাহায্য করে; এটি আপনার লোকাল শেলকে Python ADK-এর লেটেস্ট ভার্সন বেছে নিতে, কোড এবং ডকুমেন্টগুলি ইনপুট করতে এবং আপনার লক্ষ্যের জন্য এটির সাথে কাজ করার জন্য লেটেস্ট/সেরা কোড প্রদান করতে সক্ষম করবে।

এটি একটি হ্যান্ড-গাইডেড অংশ যেখানে আমরা ছোট, সহজ, ইনক্রিমেন্টের মাধ্যমে একটি সম্পূর্ণ-কার্যকর অ্যাপ অর্জন করি। এতে সাধারণত এক ঘণ্টা (সাথে ইনস্টল করার সময়) সময় লাগে।

মাইলস্টোন ২: আপনার এজেন্টকে আরও উন্নত করা

তারপরে, আপনার পছন্দ অনুযায়ী অ্যাপটি আরও উন্নত করার জন্য আমরা আপনাকে এক ডজন বিকল্প (বিভিন্ন ধরনের অসুবিধা সহ) দিই। এটি আপনাকে বিভিন্ন দিক (UI, Ops, জটিল এজেন্ট ইন্টার‍্যাকশন, ..) এক্সপ্লোর করার অনুমতি দেয়

আপনি কী তৈরি করবেন

এই কোডল্যাবে, আপনি ADK ও Gemini CLI ব্যবহার করে একটি ট্রাভেল এজেন্ট অ্যাপ তৈরি করবেন। আপনার অ্যাপ যা যা করবে:

  • Airbnb MCP-এর মাধ্যমে Airbnb API-তে কানেক্ট করুন।
  • আপ-টু-ডেট তথ্যের জন্য অনলাইনে সার্চ করুন (আবহাওয়া, তারিখ, ..)
  • কাস্টম টুল এক্সিকিউট করা।
  • NanoBanana ব্যবহার করে অ্যাপার্টমেন্ট/রুমের ছবি তৈরি করুন।

Gemini CLI আপনাকে এই সবকিছুর মাধ্যমে গাইড করবে: কোড লিখুন/পর্যালোচনা করুন এবং ADK রেপোর (Python বা আপনার পছন্দের ভাষায়) লোকাল মিররে লেটেস্ট ডকুমেন্ট খুঁজুন।

আপনি কী শিখবেন

  • ADK-এর মাধ্যমে কীভাবে অ্যাপ তৈরি করবেন
  • লোকাল ডকুমেন্টের উপর ভিত্তি করে অ্যাপ কোড করার জন্য কীভাবে Gemini CLI ব্যবহার করবেন!
  • রিয়েল-টাইম এক্সটার্নাল ডেটা সোর্সের সাথে কানেক্ট করার জন্য MCP সার্ভারের সাথে কীভাবে ইন্টার‍্যাক্ট করতে হয়, যেমন:

আপনার যা প্রয়োজন হবে

  • এমন একটি কম্পিউটার যা আপনাকে প্যাকেজ ইনস্টল করার অনুমতি দেয় (যেমন npm install .. )
  • Python, TypeScript, Go, Java-এর মধ্যে যেকোনও একটিতে কোডিং করার প্রাথমিক দক্ষতা।
  • এক ধরনের IDE (Antigravity, vscode, IntelliJ, vim) ব্যবহার করার জন্য বিশেষভাবে উৎসাহিত করা হয়।

ADK + Gemini CLI কেন?

আপনাদের মধ্যে কেউ কেউ ভাবতে পারেন: লোকাল এজেন্ট কোড হেল্পারের (যেমন Gemini CLI) সাথে ADK (একটি এজেন্ট বিল্ডার SDK) ব্যবহার করার প্রয়োজন কী? কারণ হল, দুটি টুলই অবিশ্বাস্যভাবে শক্তিশালী, তবুও তাদের ইন্টার‍্যাকশন তুচ্ছ নয়; অনেক লোক একসাথে দুটির সাথে কাজ করার চেষ্টা করেছে এবং ব্যর্থ হয়েছে (বেশিরভাগই "লুপের মধ্যে লুপ" সমস্যার কারণে)। এই কোডল্যাব, কীভাবে এই সহাবস্থান সম্ভব করা যায় সেই বিষয়ে কিছু পরামর্শ শেয়ার করার চেষ্টা করছে।

২. সেট-আপ করা হচ্ছে

নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বেছে নিন: আপনি যদি নিজের মেশিনে এই কোডল্যাব চালাতে চান তাহলে সেল্ফ-পেসড এনভায়রনমেন্ট সেট-আপ, অথবা; আপনি যদি এই কোডল্যাব সম্পূর্ণভাবে ক্লাউডে চালাতে চান তাহলে Cloud Shell শুরু করুন।

নিজের গতিতে এনভায়রনমেন্ট সেট-আপ করা

  1. Google Cloud Console-এ সাইন-ইন করুন এবং নতুন প্রোজেক্ট তৈরি করুন অথবা আগে থেকে থাকা কোনও প্রোজেক্ট আবার ব্যবহার করুন। আপনার আগে থেকে কোনও Gmail বা Google Workspace অ্যাকাউন্ট না থাকলে, আপনাকে অবশ্যই একটি তৈরি করতে হবে।

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.png

  • প্রোজেক্টের নাম হল এই প্রোজেক্টের অংশগ্রহণকারীদের জন্য ডিসপ্লে নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা Google API ব্যবহার করে না। আপনি যেকোনও সময় এটি আপডেট করতে পারবেন।
  • প্রোজেক্ট আইডি সব Google Cloud প্রোজেক্টের ক্ষেত্রে অনন্য এবং অপরিবর্তনীয় (এটি সেট করার পরে পরিবর্তন করা যাবে না)। Cloud Console অটোমেটিক একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনি মাথা ঘামান না। বেশিরভাগ কোডল্যাবে, আপনাকে প্রোজেক্ট আইডি (সাধারণত PROJECT_ID হিসেবে চিহ্নিত) উল্লেখ করতে হবে। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি অন্য একটি র‍্যান্ডম আইডি তৈরি করতে পারেন। এছাড়াও, আপনি নিজের মতো করে চেষ্টা করতে পারেন এবং এটি উপলভ্য কিনা তা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রোজেক্টের সময়সীমা পর্যন্ত এটিই থাকবে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রজেক্ট নম্বর, যা কিছু API ব্যবহার করে। ডকুমেন্টেশন থেকে এই তিনটি ভ্যালু সম্পর্কে আরও জানুন।
  1. এরপর, Cloud রিসোর্স/API ব্যবহার করার জন্য আপনাকে Cloud Console-এ বিলিং চালু করতে হবে। এই কোডল্যাব ব্যবহার করতে খুব বেশি খরচ হবে না, যদি কিছু খরচ হয়ও। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে রিসোর্স বন্ধ করতে, আপনি তৈরি করা রিসোর্স বা প্রোজেক্ট মুছে ফেলতে পারেন। নতুন Google Cloud ব্যবহারকারীরা $৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য উপযুক্ত।

Cloud Shell শুরু করুন

Google Cloud আপনার ল্যাপটপ থেকে রিমোটলি অপারেট করা গেলেও, এই কোডল্যাবে আপনি Google Cloud Shell ব্যবহার করবেন, এটি হল ক্লাউডে চলা একটি কমান্ড লাইন এনভায়রনমেন্ট।

Google Cloud Console থেকে, উপরে ডানদিকের টুলবারে Cloud Shell আইকনে ক্লিক করুন:

Cloud Shell চালু করুন

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

Google Cloud Shell টার্মিনালের স্ক্রিনশট, যা দেখাচ্ছে যে এনভায়রনমেন্ট কানেক্ট করা হয়েছে

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

৩. পূর্বশর্ত (ইনস্টলেশন)

এই টিউটোরিয়ালের জন্য আপনাকে এগুলি ইনস্টল করতে হবে:

১. Python ও uv

python এবং uv (Python-এর জন্য প্যাকেজ ম্যানেজার)। এটি ADK-এর জন্য প্রয়োজন। আপনার ডিভাইসে uv ইনস্টল করা আছে কিনা তা নিশ্চিত করুন:

$ curl -LsSf https://astral.sh/uv/install.sh | sh

কেন uv? আপনি নিজের পছন্দমতো যেকোনও Python ম্যানেজার ব্যবহার করতে পারলেও, uv ব্যবহার করলে Python-এর জন্য ENV/PATH সেট-আপ আপনার ও Gemini CLI-এর জন্য একই থাকবে, তাই আপনার শেল অভিজ্ঞতা Gemini CLI-এর মতোই হবে। যেমন, আপনি virtualenv ব্যবহার করলে, Gemini CLI আপনার এনভায়রনমেন্ট নকল করার জন্য "source .env/venv/bin/activate && my-original-command"-এর মতো কাজ করতে বাধ্য হবে।

২. Gemini CLI

Gemini CLI-এর জন্য, এখানে ইনস্টলেশন সংক্রান্ত নির্দেশাবলী খুঁজুন: https://github.com/google-gemini/gemini-cli .

# Note: This requires having npm or npx installed.
npm install -g @google/gemini-cli
  1. Mac-এ, আপনি অফিসিয়াল ডকুমেন্ট অনুযায়ী brew ব্যবহার করতে পারবেন।
  2. Windows-এ, আপনি chocolatey ব্যবহার করতে পারেন অথবা https://nodejs.org/en/download থেকে এক্সিকিউটেবল ডাউনলোড করতে পারেন

ধাপ ৪-এর জন্য (পরে), আপনাকে npx ইনস্টল করতে হবে। npm ও npx, দুটিই Gemini CLI-এর অংশ হিসেবে স্বাভাবিকভাবেই আসা উচিত। যদি না থাকে, তাহলে Gemini CLI-কে এখানে আপনাকে সাহায্য করতে বলুন।

efade99623113f1.png

যাচাইকরণ

আপনার হয় Vertex AI চালু থাকা Google Cloud প্রোজেক্ট অথবা Google AI Studio API Key প্রয়োজন।

বিকল্প ক (ওয়ার্কশপের জন্য সাজেস্ট করা হয়েছে): আপনার API Key এক্সপোর্ট করুন:

export GOOGLE_API_KEY="your-api-key"

বিকল্প খ (Vertex AI): gcloud-এর মাধ্যমে যাচাই করুন:

export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
export GOOGLE_GENAI_USE_VERTEXAI=true
gcloud auth application-default login

আপনার কাজের পরিবেশ সেট-আপ করা

আপনি mysolution/-এর অধীনে নিজের সমাধান তৈরি করতে চলেছেন, তাই আসুন ফোল্ডার এবং আমাদের প্রয়োজনীয় দুটি ফাইল তৈরি করি।

এই মুহূর্তে আপনি IDE (Visual Studio Code, IntelliJ, RubyMine, ..) এবং ফোল্ডার খুলতে পারবেন।

# 1. Find an empty directory, and download this repo.
git clone https://github.com/palladius/adk-gemini-cli-workshop
cd adk-gemini-cli-workshop/

# 2. Create your solution empty skeleton
mkdir -p mysolution/
touch mysolution/__init__.py mysolution/agent.py

# 3. This installs ADK and MCP via `uv` by reading pyproject.toml
uv init
uv sync

# 4. Call Gemini CLI
gemini  # This runs Gemini CLI under the adk-gemini-cli-workshop/ folder.
# Login with your GMail account.

uv সিঙ্ক করা বাধ্যতামূলক নয়, তবে এটি কাজ না করলে, আপনাকে Python বা uv ইনস্টলেশন ঠিক করতে হবে। এটি ./.venv/bin/ ফোল্ডারে adk এবং অন্যান্য প্রয়োজনীয় স্ক্রিপ্ট ইনস্টল করবে।

আপনার সেট-আপ পরীক্ষা করতে, আপনি শুধু make test-step1 রান করতে পারেন এবং চেক করতে পারেন যে আপনি 403 PERMISSION DENIED. পাননি

সমাধান উপলভ্য

কোডটি 📂 steps/-এর মধ্যে রয়েছে। আপনি সেখান থেকে কোড কপি করতে পারবেন।

এই কোডল্যাবটি কীভাবে ভালো ADK কোড লিখতে হয় তা শেখার জন্য নয়; এটি আপনার নির্দেশনায় অটোমেটিক ভালো কোড লেখার জন্য আপনার এনভায়রনমেন্ট সেট-আপ করার বিষয়ে।

  1. সফ্টওয়্যার ইনস্টল করা হচ্ছে
  2. কনফিগার করা / এটি কাজ করানোর জন্য, এবং
  3. একটি সঠিক ফিডব্যাক লুপে প্রবেশ করা

আমরা চাই যে আপনি এখানে এই বিষয়টিই শিখুন। এছাড়াও, আপনি $ make web-4steps-এর মাধ্যমে একই সময়ে সবকটি পরীক্ষা করতে পারবেন!

৪. ধাপ ১: বেসিক এজেন্ট

abfef47ab2ff0c98.png

আসুন, কথোপকথন চালাতে পারে এমন একটি বেসিক এজেন্ট তৈরি করে শুরু করা যাক।

নিম্নলিখিত কন্টেন্ট যোগ করে mysolution/__init__.py নামের ফাইলটি এডিট করো:

from .agent import root_agent

ঠিক এতটাই সহজ! এর ফলে ADK জানতে পারে যে আপনার কোড কোথায় আছে: agent.py-এ।

নিম্নলিখিত কন্টেন্ট যোগ করে mysolution/agent.py নামের ফাইলটি এডিট করো:

from google.adk.agents import Agent

root_agent = Agent(
    name="travel_basic",
    model="gemini-2.5-flash",
    instruction="You are a helpful travel assistant." +
    "You can help with general travel advice based on your knowledge.",
)

এজেন্ট টেস্ট করা

সবকটি ধাপের ক্ষেত্রেই এটি প্রযোজ্য। ADK আপনাকে দুটি উপায়ে এজেন্ট টেস্ট করার সুবিধা দেয়: CLI এবং ওয়েব।

  • দ্রুত ও অটোমেটেড পরীক্ষার জন্য CLI সবচেয়ে ভালো
  • কী ঘটছে তা ভিজ্যুয়ালি দেখতে, মাইক্রোফোন (!) ব্যবহার করতে এবং সমস্যার সমাধান করতে ওয়েব হল সেরা।

পরামর্শ: এই অনুশীলনের উদ্দেশ্যে, যেকোনও কিছু (ইউনিট টেস্টিং ছাড়া) সম্পন্ন করতে, ওয়েব ব্যবহার করুন। এটি সত্যিই দারুণ! শুধু অটোমেটেড টেস্টিংয়ের জন্য CLI ব্যবহার করুন।

একটি ভালো প্রম্পট যা ১-২-৩-৪ ধাপগুলি সঠিকভাবে পরীক্ষা করে তা হতে পারে (স্মার্ট "লিটমাস প্রম্পট"):

হাই, আমি আগামীকাল সন্ধ্যার জন্য প্যারিসে একা থাকার জন্য একটি হোটেল বুক করতে চাই, এক রাতের জন্য, প্যারিস সিটি সেন্টারে। গ্যারে ডি লিয়নের কাছাকাছি। বাজেট: প্রতি রাতে ২০০ ইউরোর কম।

  1. আগামীকাল কোন YYYYMMDD এবং সপ্তাহের কোন দিন তা আমাকে বলো।
  2. আগামীকালের জন্য কোন হোটেল দেখতে পাচ্ছেন তা আমাকে বলুন (কমপক্ষে ৩টি)। আমি দেখতে চাই: > দাম, ঠিকানা, কিছু রেটিং (XX/YY ফর্ম্যাটে, যেমন "৪.৭/৫" - Google Hotels, Booking বা Airbnb থেকে), # রিভিউ। আমাকে সেগুলি সারণী ফর্ম্যাটে দাও। সাধারণত, হোটেলের নাম হোটেলের কোনও URL-এর সাথে লিঙ্ক করা উচিত (URL কলাম যোগ করার ব্যাপারে চিন্তা করবেন না)। লিঙ্কটি বৈধ কিনা তা নিশ্চিত করুন (এটি কাজ করে এবং পৃষ্ঠাটি হোটেল সম্পর্কে তথ্য দেখায়!)

এটি একটি স্মার্ট প্রম্পট কারণ এটি সময় এবং হোটেল পরীক্ষা করে এবং ১,২,৩ ধাপে আলাদাভাবে ব্যর্থ হবে এবং শুধুমাত্র ৪ ধাপে সম্পূর্ণভাবে সফল হবে। আপনি অবশ্যই আপনার পছন্দমতো যেকোনও প্রম্পট ব্যবহার করতে পারেন!

bash (CLI) থেকে এটি চালান:

# 1. If ADK was installed:
adk run mysolution/
# ... but if you get: -bash: adk: command not found"
# 2. Call ADK cli script through UV to avoid python install nightmares.
uv run adk run mysolution/

উপরে "লিটমাস প্রম্পট" ব্যবহার করে দেখুন।

এটি সম্ভবত নির্দিষ্ট তারিখ জানতে পারবে না। তারিখ জানার জন্য আমাদের এটিকে শেখাতে হবে!

ওয়েবের জন্য, আপনি এটি করতে পারবেন:

  1. uv run adk web . : এটি এই ফোল্ডারের অধীনে থাকা সব এজেন্টকে রান করে। আপনি এটি "mysolution/" সাবফোল্ডারে পয়েন্ট করতে চান
  2. স্ক্রিনের উপরে ডানদিকে mysolution/ বেছে নিন (পাশে দেখানো ছবি দেখুন)
  3. "লিটমাস প্রম্পট" অনুযায়ী টেক্সট বা মাইক্রোফোনের মাধ্যমে আপনার প্রশ্ন জিজ্ঞাসা করুন।

ADK ওয়েব UI ট্রাভেল এজেন্টের ফলাফল দেখাচ্ছে

মনে রাখবেন, CLI ভার্সনের ক্ষেত্রে আপনাকে উপরের ফোল্ডার থেকে adk web কল করতে হবে।

হলুদ রোবট - তারিখ ও হোটেল সাজেশন সহ ধাপ ১-এর ফলাফল

এখানে একটি সম্ভাব্য সমাধান দেওয়া হল, যেখানে তারিখের ক্ষেত্রে আংশিক হ্যালুসিনেশন রয়েছে। মনে রাখবেন, ৫টি বুকিং লিঙ্কের মধ্যে ৩টি কাজ করছে! খারাপ নয়।

৫. ধাপ ২: now() টুল যোগ করুন

Cloud Shell এডিটর agent.py-তে now() টুল ইমপ্লিমেন্টেশন দেখাচ্ছে

root_agent সংজ্ঞার ঠিক আগে agent.py-এ এই ফাংশন যোগ করুন:

from datetime import datetime

def now() -> dict:
    """Returns the current date and time."""
    my_datetime = ... # Ask Gemini CLI to help you!
    return {
        "status": "success",
        "current_time": my_datetime
    }

টুল অন্তর্ভুক্ত করতে এজেন্টের সংজ্ঞা আপডেট করুন:

  # file XXX.py

  root_agent = Agent(
        name="..",
        model="..",
        instruction="..",
        tools=[now] # <== This is the only line you want to add.
    )

এটি আবার চালান এবং একই প্রশ্ন জিজ্ঞাসা করুন। এখন এটি তারিখটি জানতে পারবে (ভাল), এবং হোটেল সম্পর্কে অস্পষ্ট হবে (খারাপ)!

এছাড়াও, আপনি এই ধরনের কিছু দিয়ে এটি পরীক্ষা করে দেখতে পারেন:

# Let's pretend we're in Milan. This should call the tool
# and respond correctly (possibly with some TZ math issues)
echo "What time is it in Milan?" | uv run adk run mysolution/

৬. ধাপ ৩: এবার অন্য কিছু করা যাক: google_search

google_search. এটি আমাদের এজেন্টকে ওয়েব থেকে রিয়েল-টাইম তথ্য অ্যাক্সেস করার অনুমতি দেয়।

3cd72c019b8b225f.png

আপনার টাস্ক হল ধাপ ২ থেকে এজেন্টকে পরিবর্তন করা। now টুল ব্যবহার করার পরিবর্তে, আপনি ADK লাইব্রেরি থেকে google_search টুল ইমপোর্ট ও ব্যবহার করবেন।

# Full Code: `steps/step03_search/agent.py`
# Remember to REMOVE the now() tool here. See above why.
from google.adk.agents import Agent
from google.adk.tools import google_search

root_agent = Agent(
    name="travel_agent",
    model="gemini-2.5-flash",
    tools=[google_search],
    instruction="""You are a travel agent.
Your job is to help the user plan a trip.
You have access to a search engine.
If you don't know the answer, you can use the search engine.
When you are done, reply with "DONE".""",
)

কীভাবে রান করবেন

ধাপ ১-এর মতোই।

শুধু বিশেষজ্ঞদের জন্য। আরও উন্নত ইন্টিগ্রেশনের জন্য (google_search ও now একসাথে ব্যবহার করে), steps/step03b_search_and_tool/agent.py-এ কোড চেক করে make run-step3b-এর সাথে রান করুন। এটি সম্পূর্ণ ঐচ্ছিক।

৭. ধাপ ৪: আরও উন্নত টুল: MCP

ADK লোগো

এখন আমরা কাস্টম ও বিল্ট-ইন টুল, দুটিই দেখেছি, এবার আরও শক্তিশালী কিছুতে যাওয়া যাক: মডেল কন্টেক্সট প্রোটোকল (MCP) ব্যবহার করে Model-as-a-Tool প্যাটার্ন।

এই ধাপটি MCP-এর শক্তিশালী ক্ষমতার উপর ফোকাস রাখতে, আমরা আরও একবার আমাদের আগের টুল (google_search) পরিবর্তন করব। airbnb_mcp টুলের পাশাপাশি চালানোর জন্য আমরা আমাদের সহজ now টুলটি আবার চালু করব। এটি দেখায় যে কীভাবে কোনও এজেন্ট জটিল টাস্ক পারফর্ম করার জন্য একাধিক, মানানসই টুল (এই ক্ষেত্রে, একটি FunctionTool এবং একটি MCPToolset) ব্যবহার করতে পারে।

# Full Code: steps/step04_mcp/agent.py
# ... Imports as before
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters

def now() -> dict:
    # ... as before

# Configure the Airbnb MCP Toolset
airbnb_mcp = MCPToolset(
    connection_params=StdioConnectionParams(
        server_params=StdioServerParameters(
            command='npx',
            args=["-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt"],
        ),
    )
)

root_agent = Agent(
    name="travel_mcp",
    model="gemini-2.5-flash",
    instruction="You are a helpful travel assistant. You can find accommodation using Airbnb, and have access to the current time.",
    tools=[now, airbnb_mcp],
)

কীভাবে রান করবেন

এই ধাপের জন্য আপনার সিস্টেমে npx ইনস্টল করা থাকতে হবে। বাকি সব ক্ষেত্রে, এটি উপরে উল্লেখ করা বিবরণের মতোই।

সতর্কতা/ত্রুটি

  1. আপনি robots.txt সংক্রান্ত বিধিনিষেধের কারণে কোনও সমস্যার মেসেজ পেলে, robots নির্দেশিকা উপেক্ষা করে MCP প্যাচ করতে পারবেন। আরও বিবরণের জন্য ডকুমেন্টেশন পড়ুন: https://github.com/openbnb-org/mcp-server-airbnb
  2. আপনি যদি timeout সংক্রান্ত সমস্যা (Airbnb-এর উত্তর পাওয়ার জন্য ৫ সেকেন্ড খুবই কম সময়) দেখতে পান, তাহলে টাইমআউট কীভাবে বাড়ানো যায় তা জানতে ADK ডকুমেন্টেশন দেখুন, যেমন ৩০ সেকেন্ড। অথবা.. এটি করতে Gemini CLI ব্যবহার করুন! মনে রাখবেন যে 3dec25m-এ Cloud Shell আমাকে টাইমআউট সংক্রান্ত সমস্যা দেখিয়েছে, আমি টাইমআউট সংক্রান্ত সমস্যা সমাধান করেছি এবং তারপরেও সমস্যা হয়েছে, যতক্ষণ না আমি এটিকে পূর্ববর্তী ভার্সনে ফোর্স করেছি: args=["-y", "@openbnb/mcp-server-airbnb@0.1.2", "--ignore-robots-txt"]।

৮. 🏅 মাইলস্টোন ১ সম্পূর্ণ হয়েছে!

🏅 অভিনন্দন! 🏅 আপনি এখন ADK বিশেষজ্ঞ! আপনি ওয়ার্কশপের প্রথম অংশ সম্পূর্ণ করেছেন এবং কাস্টম টুল, বিল্ট-ইন টুল ও উন্নত MCP টুলের সাহায্যে AI এজেন্ট তৈরি ও পরীক্ষা করেছেন। আপনি এখন Google Agent Development Kit-এর সাহায্যে নিজের অসাধারণ এজেন্ট তৈরি করার জন্য প্রস্তুত!

আপনার কাছে এখন একটি কার্যকরী ট্রাভেল এজেন্ট আছে যা সময় জানে এবং ওয়েব সার্চ করতে পারে। এখন আকাশই সীমা!

এখন "Gemini CLI"-এর সাথে অতিরিক্ত কার্যকারিতা যোগ করার সময় এসেছে।

৯. 🏅 মাইলস্টোন ২: Gemini CLI-এর মাধ্যমে ADK ব্যবহার করে আপনার পদ্ধতিতে ভাইব কোডিং করা

এবার আমরা ওয়ার্কশপের আকর্ষণীয় অংশে প্রবেশ করছি।

  1. নিশ্চিত করুন যে আপনি কোডটি নিরাপদ কোথাও git commit করেছেন। আপনি আসল কোড ফর্ক করতে বা ব্রাঞ্চ তৈরি করতে পারেন: চিন্তা করবেন না, Gemini CLI আপনাকে এখানে সাহায্য করার জন্য দারুণ!
  2. প্রয়োগ করার জন্য 💡 আইডিয়া খুঁজুন। আপনি নিচের আইডিয়াগুলি চেক করতে পারেন, নিজে একটি খুঁজে নিতে পারেন অথবা Gemini-কে rag/ ফোল্ডারে ডকুমেন্টেশন দেখতে এবং কিছু স্মার্ট আইডিয়া প্রস্তাব করতে বলতে পারেন।
  3. Gemini যাতে ADK ডকুমেন্ট পড়তে পারে তা নিশ্চিত করতে প্রয়োজনীয় শর্ত মেনে চলুন এবং তারপরেই আপনি ব্যবহার করার জন্য প্রস্তুত!

💡 আইডিয়া

  1. 🟢 [সহজ] আপনি কি বহুভাষী? আপনি কি go বা java বা TypeScript দিতে চান? আগে থেকে থাকা কোড রিফ্যাক্টর করা খুবই সহজ! শুধু সঠিক ADK ডাউনলোড করতে ভুলবেন না এবং Gemini CLI-কে অনুবাদ করতে বলুন!
  2. 🟢 [সহজ] ইমোজি যোগ করুন বা আপনার পছন্দের কিছু আউটপুট ফর্ম্যাট উল্লেখ করুন (যেমন, হোটেল ইমোজি সহ একটি টেবিল, তারপরে দাম, তারপরে 🌕🌕🌕🌗🌑-এর উপর ভিত্তি করে ১-৫ স্টার ইমোজি, যাতে অর্ধেকও করা যায়!)।
  3. 🟢 [সহজ] প্রম্পট পরিবর্তন করে এটিকে এমন জিনিস শেখান যা আপনি বিশেষভাবে খুঁজছেন বা খুঁজছেন না (পোষ্য-বান্ধব, গ্রাউন্ড ফ্লোর নয়, শান্ত, পাবলিক ট্রান্সপোর্টের কাছাকাছি, ..) এবং এটি পরীক্ষা করুন। উপরের তথ্যের ভিত্তিতে "১-১০-এর মধ্যে YOUR_NAME-রেটিং"-এর মতো ব্যক্তিগত রেটিং যোগ করে সেই রেটিং অনুযায়ী সাজান।
  4. 🟢 [easy] Any Operator in the room? Cloud Run-এ ডিপ্লয় করুন! অথবা Vertex AI Agent Engine-এ! আপনি কি জানেন যে আপনি এই এজেন্টকে ইন্টিগ্রেট করতে পারেন এবং নতুন Gemini Enterprise থেকে সরাসরি কল করতে পারেন?
  5. 🟢 [সহজ] 🍌 NanoBanana MCP-এর সাথে adk run ইন্টিগ্রেট করুন। Gemini API Key প্রয়োজন। এখানে আপনি ছবি তৈরি করতে পারবেন কিন্তু সেগুলি দেখতে পাবেন না। আরও কঠিন ভ্যারিয়েন্টের জন্য নিচে দেখুন।
  6. 🟡 [medium] এমন একটি সাবএজেন্ট তৈরি করুন যা HotelSearch করে এবং একটি BudgetAgent বা একটি LocationAgent তৈরি করে যা আপনার লোকেশন সংক্রান্ত প্রয়োজনীয়তা, যেমন "LOCATION থেকে X কিমির বেশি নয়" মেনে হোটেল খুঁজে দিতে পারে। API যদি এটির অনুমতি না দেয়, তাহলে GoogleSearch-এর সাহায্যে কিছু ব্যাক অ্যান্ড ফোর্থ হতে পারে। মনে রাখবেন: Gemini CLI আপনাকে সাহায্য করতে পারে।
  7. 🟡 [মাঝারি] একটি AirbnbReviewAgent প্রয়োগ করুন যা রিভিউতে যায় এবং সার্চের ফলে ১ বা N হোটেলের জন্য কয়েকটি রঙ-কোডেড বুলেটগুলিতে ইতিবাচক এবং নেতিবাচক সারসংক্ষেপ করে। আপনার কাছে আগে থেকেই ২টি উপাদান (GoogleSearch এবং MCP Airbnb) আছে, তারপর আপনাকে এটি মূল এজেন্টের সাথে কানেক্ট করতে হবে এবং হয়ত তাদের যোগাযোগের জন্য কোনও ধরনের প্রোটোকল তৈরি করতে হবে।
  8. 🟡 [medium] A2A-এর সাথে ইন্টিগ্রেট করুন। এটিকে A2A এজেন্ট হিসেবে তৈরি করুন! আবার, Gemini CLI-এর কাছে সাহায্য চান!
  9. 🔴 [complex] You can integrate with Flights or other MCP functionality to create a multi-faceted multi functional travel agent.
  10. 🔴 [complex] Integrate ADK web with 🍌 NanoBanana MCP. এটি উপরেরটির চেয়ে কঠিন এবং আপনি https://github.com/palladius/ai-friendly-agents/issues/11-এ কিছু পরামর্শ পেতে পারেন। এটি করতে লেখকের ৩ ঘণ্টা সময় লেগেছে, যার মধ্যে Gemini CLI, Gemini3-এর সাথে বারবার আলোচনা করা এবং আমরা দুজনেই rag/ থেকে ডকুমেন্ট/কোড পড়েছি!

আরও অনুপ্রেরণা খুঁজছেন?

  1. কিছু আইডিয়ার জন্য অফিসিয়াল ADK টিউটোরিয়াল চেক করুন।
  2. rag/-এর অধীনে ডকুমেন্টেশন দেখে Gemini CLI-কে আইডিয়া খুঁজতে বলুন: সম্ভাব্য প্রম্পট হতে পারে: Is there a feature in here which seems very succulent to you? Give me 3 proposals and let's implement together the one I choose।

"ADK "RAG"-এর জন্য পূর্বশর্ত

কোনও কার্যকারিতা ভাইব কোড করতে, আমরা আপনাকে সম্পূর্ণ ADK python ADK ডাউনলোড করার সাজেশন দিই (মনে রাখবেন: এটি আপনার পছন্দের ভাষায় খুব সহজেই মানিয়ে নেওয়া যেতে পারে, যেমন Java বা Go!)

কোডটি ./rag-এর অধীনে রয়েছে এবং ./download-adk.sh-এর মাধ্যমে ডাউনলোড করা যাবে।

যেহেতু rag ফোল্ডারটি আপনার .gitignore ফাইলে তালিকাভুক্ত আছে, তাই আপনার .gemini/settings.json-এ নিম্নলিখিতগুলি আছে কিনা তা নিশ্চিত করুন:

{
 "context": {
   "includeDirectories": ["rag"]
 }
}

কেন? আমরা চাই Gemini যেন সেইসব ফাইল পড়তে পারে, যদিও সেগুলি নিরাপদে git-ignored থাকে। টেকনিক্যালি আপনি context.fileFiltering.respectGitIgnore-কে false-এ সেট করে সব .gitignore ফাইল আনহাইড করতে পারেন, তবে এটি অনেক node_modules/ এবং __pycache__/ অপ্রয়োজনীয় ফাইল খুলে দেয় - তাই নির্দিষ্ট ফোল্ডার অন্তর্ভুক্ত করা হল পছন্দের বিকল্প।

১০. পরবর্তী ধাপ

কৌতূহল: এই ওয়ার্কশপ Gemini CLI-এর সাহায্যে তৈরি করা হয়েছে। আপনি যদি জানতে চান, তাহলে এই ফোল্ডারে GEMINI.md এবং WORKSHOP_PLAN.md দেখে আমি কীভাবে এটি করেছি তা খুঁজে পেতে পারেন।

যা যা শিখেছি

আমরা শিখেছি কীভাবে Gemini CLI-এর সাথে ADK পেয়ার করতে হয়

অতিরিক্ত রিডিং

6d05afb6b8b235d8.png