1. ভূমিকা

শেষ আপডেট: ২০২৬-০২-০২
ADK এর সাথে একটি সহজ ট্রাভেল এজেন্ট তৈরি করা
এই ADK Python(*) কর্মশালায় আপনাকে স্বাগতম, যা ব্যাটারি সহ আসে, জেমিনি CLI কে ধন্যবাদ!
এই কোডল্যাবটি দুটি 🏅 মাইলফলকে বিভক্ত:
- একটি সাধারণ, সহজ শেখার পথ: সেটআপ + তাৎক্ষণিক তৃপ্তি।
- একটি ব্যক্তিগতকৃত পথ যেখানে আপনি জেমিনি সিএলআই-এর সহায়তায় সমাধানের জন্য একটি অনুসন্ধান বেছে নেবেন
দ্বিতীয় অংশটি এই কোডল্যাবটিকে হ্যাকাথনের জন্য নিখুঁত করে তোলে (এবং সবচেয়ে সৃজনশীল সমাধানের জন্য পুরষ্কার!)
মাইলস্টোন১: ADK এবং জেমিনি CLI এর সাথে আপনার প্রথম এজেন্ট
এই মাইলফলকের লক্ষ্য হল ধাপে ধাপে ADK-এর সাথে একটি সহজ ট্রাভেল এজেন্ট তৈরি করা।
এটি করার জন্য, আমরা প্রথমে জেমিনি সিএলআই সেট আপ করতে চাই যাতে এটি আমাদের ADK এর সাথে কোড করতে সাহায্য করে; এটি আপনার স্থানীয় শেলকে পাইথন ADK এর সর্বশেষ সংস্করণটি বেছে নিতে, কোড এবং ডক্সগুলিকে অক্ষম করতে এবং আপনার লক্ষ্যের জন্য এটির সাথে কাজ করার জন্য সর্বশেষ/সেরা কোড সরবরাহ করতে সক্ষম করবে।
এটি একটি হাতে-নির্দেশিত অংশ যেখানে আমরা ছোট, সহজ, ইনক্রিমেন্টের মাধ্যমে একটি পূর্ণাঙ্গ কাজ করা অ্যাপ অর্জন করি। এতে সাধারণত প্রায় এক ঘন্টা সময় লাগে (আর ইনস্টলেশনের সময়)।
মাইলস্টোন ২: আপনার এজেন্টের সংখ্যা বাড়ানো
এরপর, আমরা আপনাকে আপনার পছন্দ অনুযায়ী অ্যাপটি সম্প্রসারিত করার জন্য এক ডজন বিকল্প (বিভিন্ন অসুবিধার) দেব। এটি আপনাকে বিভিন্ন দিক (UI, Ops, জটিল এজেন্ট ইন্টারঅ্যাকশন, ..) অন্বেষণ করতে দেয়।
তুমি কী তৈরি করবে
এই কোডল্যাবে, আপনি ADK এবং Gemini CLI ব্যবহার করে একটি ট্র্যাভেল এজেন্ট অ্যাপ তৈরি করতে যাচ্ছেন। আপনার অ্যাপটি করবে:
- Airbnb MCP এর মাধ্যমে Airbnb API গুলির সাথে সংযোগ করুন।
- হালনাগাদ তথ্যের জন্য অনলাইনে অনুসন্ধান করুন (আবহাওয়া, তারিখ, ..)
- কাস্টম টুলগুলি কার্যকর করুন।
- ন্যানোবানানা ব্যবহার করে অ্যাপার্টমেন্ট/রুমের চিত্র তৈরি করুন।
জেমিনি সিএলআই আপনাকে এই সমস্ত কিছুর মাধ্যমে গাইড করবে: কোড লিখুন/পর্যালোচনা করুন এবং ADK রেপোর স্থানীয় আয়নাতে (পাইথনে, অথবা আপনার প্রিয় ভাষায়) সর্বশেষ ডক্স খুঁজুন।
তুমি কি শিখবে
- ADK দিয়ে কিভাবে একটি অ্যাপ তৈরি এবং তৈরি করবেন
- স্থানীয় ডক্সের উপর ভিত্তি করে অ্যাপ কোড করার জন্য জেমিনি সিএলআই কীভাবে ব্যবহার করবেন!
- রিয়েল-টাইম বহিরাগত ডেটা উৎসের সাথে সংযোগ স্থাপনের জন্য একটি MCP সার্ভারের সাথে কীভাবে ইন্টারঅ্যাক্ট করবেন, যেমন:
তোমার যা লাগবে
- একটি কম্পিউটার যা আপনাকে প্যাকেজ ইনস্টল করতে দেয় (যেমন
npm install ..) - পাইথন, টাইপস্ক্রিপ্ট, গো, জাভা যেকোনো একটিতে মৌলিক কোডিং দক্ষতা।
- একটি ধরণের IDE ( Antigravity , vscode, IntelliJ, vim) জোরালোভাবে উৎসাহিত করা হয়।
কেন ADK + জেমিনি CLI?
আপনাদের মধ্যে কেউ কেউ হয়তো ভাবতে পারেন: কেন আমাকে স্থানীয় এজেন্টিক কোড হেল্পারের (যেমন জেমিনি সিএলআই) সাথে ADK (একটি এজেন্ট বিল্ডার SDK) ব্যবহার করতে হবে ? কারণ হল উভয় টুলই অবিশ্বাস্যভাবে শক্তিশালী, তবুও তাদের মিথস্ক্রিয়া তুচ্ছ নয়; অনেকেই উভয়ের সাথে একসাথে কাজ করার চেষ্টা করেছেন এবং ব্যর্থ হয়েছেন (বেশিরভাগই "লুপের মধ্যে লুপ" সমস্যার কারণে)। এই কোডল্যাব এই সহাবস্থানকে কীভাবে সম্ভব করে তোলা যায় সে সম্পর্কে কয়েকটি টিপস শেয়ার করার চেষ্টা করছে।
2. সেট আপ করা
নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বেছে নিন: যদি আপনি এটি চালাতে চান তবে স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
আপনার নিজের মেশিনে কোডল্যাব ব্যবহার করুন, অথবা; যদি আপনি এই কোডল্যাবটি সম্পূর্ণরূপে ক্লাউডে চালাতে চান তবে ক্লাউড শেল শুরু করুন ।
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- গুগল ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। যদি আপনার ইতিমধ্যেই একটি জিমেইল বা গুগল ওয়ার্কস্পেস অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রজেক্টের নামটি প্রদর্শন করা হবে। এটি একটি অক্ষর স্ট্রিং যা Google API গুলি ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- সমস্ত Google ক্লাউড প্রোজেক্টে প্রোজেক্ট আইডি অনন্য এবং অপরিবর্তনীয় (সেট করার পরে এটি পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটি কী তা নিয়ে চিন্তা করেন না। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রোজেক্ট আইডি (সাধারণত
PROJECT_IDহিসাবে চিহ্নিত) উল্লেখ করতে হবে। যদি আপনি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি র্যান্ডম তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন, এবং এটি উপলব্ধ কিনা তা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে। - আপনার তথ্যের জন্য, তৃতীয় একটি মান আছে, একটি Project Number , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপর, ক্লাউড রিসোর্স/API ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবটি চালানোর জন্য খুব বেশি খরচ হবে না, এমনকি কিছু খরচও হবে না। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে রিসোর্স বন্ধ করতে, আপনি আপনার তৈরি রিসোর্সগুলি মুছে ফেলতে পারেন অথবা প্রকল্পটি মুছে ফেলতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা $300 USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড শেল শুরু করুন
যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।
গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

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

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সকল ডেভেলপমেন্ট টুল রয়েছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি অফার করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারেই করা যেতে পারে। আপনাকে কিছু ইনস্টল করার প্রয়োজন নেই।
পূর্বশর্ত (ইনস্টলেশন)
এই টিউটোরিয়ালের জন্য, আপনাকে ইনস্টল করতে হবে:
১. পাইথন এবং ইউভি
python এবং uv ( পাইথনের প্যাকেজ ম্যানেজার)। এটি ADK এর জন্য প্রয়োজন। নিশ্চিত করুন যে আপনি ইউভি ইনস্টল করেছেন:
$ 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" এর মতো জিনিসগুলি করতে বাধ্য হবে।
২. জেমিনি সিএলআই
জেমিনি সিএলআই-এর জন্য, ইনস্টলেশন নির্দেশাবলী এখানে পাবেন: https://github.com/google-gemini/gemini-cli ।
দ্রষ্টব্য: এর জন্য npm অথবা npx ইনস্টল করা প্রয়োজন।
npm ইনস্টল -g @google/gemini-cli
- Mac এ, আপনি অফিসিয়াল ডক্স অনুসারে
brewব্যবহার করতে পারেন। - উইন্ডোজে , আপনি
chocolateyব্যবহার করতে পারেন অথবা https://nodejs.org/en/download থেকে এক্সিকিউটেবল ডাউনলোড করতে পারেন।
চতুর্থ ধাপের জন্য (পরবর্তীতে), আপনার npx ইনস্টল করাও প্রয়োজন হবে। npm এবং npx উভয়ই স্বাভাবিকভাবেই Gemini CLI-এর অংশ হিসেবে আসা উচিত। যদি না হয়, তাহলে এখানে Gemini CLI-কে সাহায্য করতে বলুন।
ঐচ্ছিকভাবে, আপনি কেবল ইনস্টল করতে চাইতে পারেন, এটি একটি আরও উন্নত এবং স্ব-নথিভুক্ত Makefile । এছাড়াও এখানে: এটি ইনস্টল করতে আপনাকে সাহায্য করার জন্য Gemini CLI কে বলুন, তিনি আপনার জন্য এটি করতে পারেন!

প্রমাণীকরণ।
আপনার হয় Vertex AI সক্ষম একটি Google Cloud Project, অথবা একটি Google AI Studio API Key প্রয়োজন।
বিকল্প A (ওয়ার্কশপের জন্য প্রস্তাবিত): আপনার API কী রপ্তানি করুন:
export GOOGLE_API_KEY="your-api-key"
বিকল্প B (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/ai-friendly-agents/
cd ai-friendly-agents/adk/workshops/simple-travel-agent/
# 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 sync
# 4. Call Gemini CLI
gemini # This runs Gemini CLI under the simple-travel-agent/ folder.
# Login with your GMail account.
uv sync কঠোরভাবে বাধ্যতামূলক নয়, তবে যদি এটি ব্যর্থ হয়, তাহলে আপনি জানেন যে আপনার Python বা uv ইনস্টলেশন ঠিক করতে হবে।
সমাধান উপলব্ধ
কোডটি সম্পূর্ণ 📂 steps/ অধীনে রয়েছে। আপনি সেখান থেকে কোডটি কপি করতে পারেন।
এই কোডল্যাবটি ভালো ADK কোড লেখা শেখার বিষয়ে নয়; এটি আপনার পরিবেশ সেট আপ করার বিষয়ে যাতে আপনার নির্দেশনায় ভালো কোড স্বয়ংক্রিয়ভাবে লেখা হয়।
- সফটওয়্যার ইনস্টল করা হচ্ছে
- এটি কনফিগার করা / কাজ করানো, এবং
- একটি ন্যায়সঙ্গত প্রতিক্রিয়া লুপে প্রবেশ করানো
আমরা আসলে চাই তুমি এখানে এটাই শিখো। তুমি $ just web-4steps মাধ্যমে একই সাথে এগুলো পরীক্ষা করতে পারো!
৩. ধাপ ১: মৌলিক এজেন্ট

চলুন শুরু করা যাক এমন একটি মৌলিক এজেন্ট তৈরি করে যা আলোচনা করতে পারে।
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 রাখুন।
১-২-৩-৪ ধাপ সঠিকভাবে পরীক্ষা করে এমন একটি ভালো প্রম্পট এটি হতে পারে (স্মার্ট "লিটমাস প্রম্পট"):
#!– লিটমাস প্রম্পট –> হাই, আমি আগামীকাল সন্ধ্যার জন্য প্যারিসে একটি হোটেল বুক করতে চাই, এক রাতের জন্য, প্যারিস শহরের কেন্দ্রস্থলে। গ্যারে ডি লিওনের কাছেই আদর্শ। বাজেট: প্রতি রাতে ২০০ ইউরোর নিচে।
- আগামীকাল কোন YYYYMMDD এবং সপ্তাহের দিনটি তা আমাকে বলো।
- আগামীকাল (কমপক্ষে ৩টি) কোন হোটেল দেখবেন বলুন। আমি দেখতে চাই: > দাম, ঠিকানা, কিছু রেটিং (XX/YY আকারে, যেমন "4.7/5" - গুগল হোটেল, বুকিং বা 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/
উপরে "লিটমাস প্রম্পট" ব্যবহার করে দেখুন।
এটি সম্ভবত নির্দিষ্ট তারিখগুলি জানতে ব্যর্থ হবে। আমাদের এটিকে তারিখটি জানা শেখাতে হবে!
ওয়েবের জন্য, আপনি এটি করতে পারেন:
-
uv run adk web .: এটি এই ফোল্ডারের অধীনে সমস্ত এজেন্ট চালায়। আপনি এটিকে "mysolution/" সাবফোল্ডারে নির্দেশ করতে চান। - উপরে ডানদিকে
mysolution/নির্বাচন করুন ( পাশের ছবিটি দেখুন ) - "লিটমাস প্রম্পট" এর মতো করে টেক্সট বা মাইক্রোফোনের মাধ্যমে আপনার প্রশ্ন জিজ্ঞাসা করুন।
TODO(ricc): <চিত্র এখানে>
মনে রাখবেন, CLI ভার্সনের ক্ষেত্রে, উপরের ফোল্ডার থেকে আপনাকে adk web কল করতে হবে।
এখানে একটি সম্ভাব্য সমাধান দেওয়া হল, ডেট সেমি-হ্যালুসিনেশন সহ। ৫টি বুকিং লিঙ্কের মধ্যে ৩টি নোট কাজ করছে! খারাপ না।
৪. ধাপ ২: now() টুলটি যোগ করুন
এজেন্ট জানে না "আজ" কী। আসুন এটিকে একটি হাতিয়ার দেই।
TODO(image): ricc এখানে ধাপ ২ এর ছবি রাখো।
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
travel_agent = LlmAgent(
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
এখন যেহেতু আমরা একটি কাস্টম টুল তৈরি করতে জানি, আসুন ADK দ্বারা প্রদত্ত শক্তিশালী বিল্ট-ইন টুলগুলির মধ্যে একটি কীভাবে ব্যবহার করতে হয় তা অন্বেষণ করি: google_search । এটি আমাদের এজেন্টকে ওয়েব থেকে রিয়েল-টাইম তথ্য অ্যাক্সেস করতে দেয়।

আপনার কাজ হল ধাপ ২ থেকে এজেন্ট পরিবর্তন করা। 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 তে কোডটি পরীক্ষা করুন এবং এটি just run-step3b দিয়ে চালান। এটি সম্পূর্ণ ঐচ্ছিক।
৬. ধাপ ৪: আরও পরিশীলিত একটি টুল: MCP
TODO(ricc): ছবি ৪ যোগ করুন
এখন যেহেতু আমরা কাস্টম এবং বিল্ট-ইন উভয় টুলই দেখেছি, আসুন আরও শক্তিশালী কিছুতে স্নাতক হই: মডেল কনটেক্সট প্রোটোকল (MCP) ব্যবহার করে মডেল-অ্যাজ-এ-টুল প্যাটার্ন।
এই ধাপটি 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 ইনস্টল করা প্রয়োজন। বাকিগুলোর জন্য, এটি উপরের মতোই।
সতর্কতা/ত্রুটি
- যদি আপনি একটি
robots.txtসীমাবদ্ধতা ত্রুটি পান, তাহলে আপনি MCP-তে একটি ignore robots নির্দেশিকা দিয়ে প্যাচ করতে পারবেন। আরও বিস্তারিত জানার জন্য ডকুমেন্টগুলি পড়ুন: https://github.com/openbnb-org/mcp-server-airbnb - যদি আপনার
timeoutত্রুটি দেখা দেয় (Airbnb-এর জন্য ৫ সেকেন্ড খুব কম সময় সাড়া পাওয়ার সময়), তাহলে ADK ডকুমেন্টেশন দেখুন কিভাবে টাইমআউট ৩০ সেকেন্ডে বাড়ানো যায়। অথবা.. এটি করার জন্য Gemini CLI ব্যবহার করুন! মনে রাখবেন যে 3dec25m-এ Cloud Shell আমাকে একটি টাইমআউট ত্রুটি দিয়েছে, আমি টাইমআউট ত্রুটিটি ঠিক করেছি, এবং এখনও ত্রুটিগুলি পাচ্ছি, যতক্ষণ না আমি এটিকে পূর্ববর্তী সংস্করণে জোর করে ব্যবহার করি:args=["-y", "@openbnb/mcp-server-airbnb@0.1.2", "--ignore-robots-txt"]।
৭. 🏅 মাইলস্টোন ১ সম্পূর্ণ!
🏅 অভিনন্দন! 🏅 আপনি এখন একজন ADK বিশেষজ্ঞ! আপনি কর্মশালার প্রথম অংশটি সম্পন্ন করেছেন এবং কাস্টম টুলস, বিল্ট-ইন টুলস এবং উন্নত MCP টুলস দিয়ে সফলভাবে AI এজেন্ট তৈরি এবং পরীক্ষা করেছেন। আপনি এখন Google এজেন্ট ডেভেলপমেন্ট কিট দিয়ে আপনার নিজস্ব আশ্চর্যজনক এজেন্ট তৈরি করতে প্রস্তুত!
এখন আপনার কাছে একজন কার্যকরী ট্রাভেল এজেন্ট আছে যে সময় জানে এবং ওয়েবে অনুসন্ধান করতে পারে। আকাশ এখন সীমা!
"জেমিনি সিএলআই" এর সাথে অতিরিক্ত কার্যকারিতা যোগ করার সময় আসেনি।
৮. 🏅 মাইলস্টোন ২: জেমিনি সিএলআই এর মাধ্যমে ADK এর মাধ্যমে আপনার পথ কোডিং করুন
এবার আমরা কর্মশালার আকর্ষণীয় অংশে প্রবেশ করি।
- নিশ্চিত করুন যে আপনি
git commit। আপনি মূল কোডটি তৈরি করতে পারেন, অথবা একটি শাখা তৈরি করতে পারেন: চিন্তা করবেন না, জেমিনি CLI আপনাকে এখানে সাহায্য করার জন্য দুর্দান্ত! - বাস্তবায়নের জন্য একটি 💡 ধারণা খুঁজে বের করুন। আপনি নীচের ধারণাগুলি পরীক্ষা করে দেখতে পারেন, নিজে একটি খুঁজে পেতে পারেন, অথবা জেমিনিকে র্যাগ/-এর ডকুমেন্টেশন দেখতে এবং কিছু স্মার্ট ধারণা প্রস্তাব করতে বলতে পারেন।
- জেমিনি ADK ডকুমেন্টগুলি পড়তে পারে তা নিশ্চিত করার জন্য পূর্বশর্তগুলি অনুসরণ করুন, এবং তারপরে আপনি যেতে পারেন!
💡 ধারণা
এখানে কিছু জটিল ধারণা সহ একটি মেনু রয়েছে।
- 🟢 [সহজ] আপনি কি একজন ভাষা বহুভাষী? আপনি
javagoTypescriptব্যবহার করতে চান? বিদ্যমান কোডটি পুনর্নির্মাণ করা খুবই সহজ! শুধু সঠিক ADK ডাউনলোড করতে ভুলবেন না এবং Gemini CLI কে অনুবাদ করতে বলুন! - 🟢 [সহজ] ইমোজি যোগ করুন অথবা আপনার পছন্দের কিছু আউটপুট ফর্ম্যাট নির্দিষ্ট করুন (যেমন, হোটেল ইমোজি সহ একটি টেবিল, তারপরে দাম, তারপরে 🌕🌕🌕🌗🌑 এর উপর ভিত্তি করে ১-৫ তারকা ইমোজি, যাতে অর্ধেকও করা যায়!)।
- 🟢 [সহজ] আপনি যে জিনিসগুলি বিশেষভাবে খুঁজছেন বা চান না (পোষা প্রাণীর জন্য উপযুক্ত, কোনও তল নেই, নীরব, পাবলিক ট্রান্সপোর্টের কাছাকাছি, ..) তা শেখানোর জন্য প্রম্পটটি পরিবর্তন করুন এবং এটি পরীক্ষা করুন। উপরের উপর ভিত্তি করে "YOUR_NAME-এর রেটিং 1-10" এর মতো একটি ব্যক্তিগত রেটিং যোগ করুন এবং সেই রেটিং অনুসারে সাজান।
- 🟢 [সহজ] রুমে কোন অপারেটর আছে? ক্লাউড রানে মোতায়েন করুন! অথবা ভার্টেক্স এআই এজেন্ট ইঞ্জিনে ! আপনি কি জানেন যে আপনি এই এজেন্টটিকে ইন্টিগ্রেট করতে পারবেন এবং নতুন জেমিনি এন্টারপ্রাইজ থেকে সরাসরি কল করতে পারবেন?
- 🟢 [সহজ] `adk run`` কে 🍌 NanoBanana MCP এর সাথে একীভূত করুন। একটি Gemini API Key প্রয়োজন। এখানে আপনি ছবি তৈরি করতে পারবেন কিন্তু কল্পনা করতে পারবেন না। আরও কঠিন রূপের জন্য নিচে দেখুন।
- 🟡 [মাধ্যম]
HotelSearchজন্য একটি সাবএজেন্ট তৈরি করুন এবং একটিBudgetAgentবা একটিLocationAgentতৈরি করুন যা আপনার অবস্থানের চাহিদা অনুসারে হোটেলগুলিতে দ্বিগুণ এবং পুনরাবৃত্তি করতে পারে, যেমন "LOCATION থেকে X কিলোমিটারের বেশি নয়"। যদি API এটির অনুমতি না দেয়, তাহলে GoogleSearch দ্বারা কিছু সাহায্য পেতে পারেন। দ্রষ্টব্য: জেমিনি CLI আপনাকে সাহায্য করতে পারে। - 🟡 [মাধ্যম] একটি
AirbnbReviewAgentপ্রয়োগ করুন যা পর্যালোচনাগুলিতে যায় এবং কয়েকটি রঙ-কোডেড বুলেটে ইতিবাচক এবং নেতিবাচক দিকগুলি সংক্ষিপ্ত করে, একটি অনুসন্ধান থেকে প্রাপ্ত 1 বা N হোটেলের জন্য। আপনার কাছে ইতিমধ্যেই 2টি উপাদান রয়েছে (GoogleSearch এবং MCP Airbnb), তারপর আপনাকে এটিকে প্রধান এজেন্টের সাথে সংযুক্ত করতে হবে এবং তাদের যোগাযোগের জন্য কোনও ধরণের প্রোটোকল আবিষ্কার করতে হবে। - 🟡 [মাঝারি] A2A এর সাথে একীভূত করুন। এটিকে A2A এজেন্ট করুন! আবারও, জেমিনি CLI-এর সাহায্য নিন!
- 🔴 [জটিল] আপনি একটি বহুমুখী বহুমুখী ভ্রমণ এজেন্ট তৈরি করতে ফ্লাইট বা অন্যান্য MCP কার্যকারিতার সাথে একীভূত করতে পারেন।
- 🔴 [জটিল] ADK ওয়েবকে 🍌 NanoBanana MCP এর সাথে একীভূত করুন। এটি উপরেরটির চেয়ে কঠিন, এবং আপনি https://github.com/palladius/ai-friendly-agents/issues/11 এ কিছু টিপস পেতে পারেন। এতে লেখককে Gemini CLI, Gemini3 এবং আমাদের দুজনের সাথে
rag/থেকে ডক্স/কোড পড়তে 3 ঘন্টা সময় লেগেছে!
আরও অনুপ্রেরণা খুঁজছেন?
- কিছু ধারণার জন্য মরিজিওর দুর্দান্ত ADK টিউটোরিয়ালে দেখুন।
- জেমিনি সিএলআই-কে
rag/: এর অধীনে ডকুমেন্টেশন দেখে ধারণা খুঁজে পেতে বলুন: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 পাইথন ADK ডাউনলোড করার পরামর্শ দিচ্ছি (দ্রষ্টব্য: এটি আপনার পছন্দের ভাষা, যেমন জাভা বা গো- তে খুব সহজেই অভিযোজিত করা যেতে পারে!)
কোডটি ./rag এর অধীনে এবং ./download-adk.sh দিয়ে ডাউনলোড করা যেতে পারে।
যেহেতু rag ফোল্ডারটি আপনার .gitignore ফাইলে তালিকাভুক্ত, তাই নিশ্চিত করুন যে আপনার .gemini/settings.json এ নিম্নলিখিতগুলি রয়েছে:
{
"context": {
"includeDirectories": ["rag"]
}
}
কেন? আমরা চাই যে Gemini সেই ফাইলগুলি নিরাপদে git-ignored থাকা অবস্থায় পড়তে সক্ষম হোক। টেকনিক্যালি আপনি context.fileFiltering.respectGitIgnore কে false এ সেট করে সমস্ত .gitignore ফাইল আনহাইড করতে পারেন কিন্তু এটি অনেক node_modules/ এবং __pycache__/ garbage খুলে দেয় - তাই স্পষ্ট ফোল্ডার অন্তর্ভুক্তিই পছন্দের বিকল্প।
৯. পরবর্তী পদক্ষেপ
কিউরিওসিটি : এই কর্মশালাটি জেমিনি সিএলআই-এর সাহায্যে তৈরি করা হয়েছে। যদি আপনি কৌতূহলী হন, তাহলে এই ফোল্ডারে GEMINI.md এবং WORKSHOP_PLAN.md দেখে আমি কীভাবে এটি করেছি তা জানতে পারবেন।
শেখা শিক্ষা
আমরা শিখেছি কিভাবে ADK কে Gemini CLI এর সাথে যুক্ত করতে হয়।
অতিরিক্ত রিডিং
- রোমিন এবং মেটের এই দুটি আশ্চর্যজনক অ্যান্টিগ্র্যাভিটি কোডল্যাব দেখুন:
- গুগল অ্যান্টিগ্র্যাভিটি দিয়ে শুরু করা
- গুগল অ্যান্টিগ্র্যাভিটি দিয়ে নির্মাণ
- অ্যান্টিগ্র্যাভিটি ব্যবহার করে গুগল ক্লাউডে তৈরি এবং স্থাপন করুন
- কিছু ধারণার জন্য মরিজিওর দুর্দান্ত ADK টিউটোরিয়ালে দেখুন।
