১. ভূমিকা

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



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

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

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।
৩. পূর্বশর্ত (স্থাপন)
এই টিউটোরিয়ালটির জন্য আপনাকে ইনস্টল করতে হবে:
১. পাইথন এবং ইউভি
python এবং uv ( পাইথনের প্যাকেজ ম্যানেজার)। এডিকে (ADK )-এর জন্য এটি প্রয়োজন। নিশ্চিত করুন যে আপনার সিস্টেমে ইউভি (uv) ইনস্টল করা আছে:
$ curl -LsSf https://astral.sh/uv/install.sh | sh
কেন uv? যদিও আপনি আপনার পছন্দের যেকোনো পাইথন ম্যানেজার ব্যবহার করতে পারেন, uv ব্যবহার করলে আপনার এবং Gemini CLI-এর জন্য পাইথনের ENV/PATH সেটআপ একই থাকবে, ফলে আপনার শেল অভিজ্ঞতাও Gemini CLI-এর মতোই হবে। উদাহরণস্বরূপ, আপনি যদি virtualenv ব্যবহার করেন, তাহলে আপনার পরিবেশ অনুকরণ করার জন্য Gemini CLI "source .env/venv/bin/activate && my-original-command"-এর মতো কাজগুলো করতে বাধ্য হবে।
২. জেমিনি সিএলআই
gemini CLI ইনস্টলেশনের নির্দেশাবলী এখানে দেখুন: https://github.com/google-gemini/gemini-cli ।
# Note: This requires having npm or npx installed. npm install -g @google/gemini-cli
- ম্যাকে , আপনি অফিসিয়াল ডকুমেন্টেশন অনুযায়ী
brewব্যবহার করতে পারেন। - উইন্ডোজে , আপনি
chocolateyব্যবহার করতে পারেন অথবা https://nodejs.org/en/download থেকে এক্সিকিউটেবলটি ডাউনলোড করতে পারেন।
ধাপ ৪-এর জন্য (যা পরে দেখানো হবে), আপনার npx ও ইনস্টল করা প্রয়োজন হবে। npm এবং npx উভয়ই Gemini CLI-এর অংশ হিসেবে স্বাভাবিকভাবেই থাকার কথা। যদি তা না হয়, তবে এক্ষেত্রে 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/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 sync একান্তভাবে আবশ্যক নয়, কিন্তু যদি এটি ব্যর্থ হয়, তাহলে বুঝবেন যে আপনার Python বা uv ইনস্টলেশন ঠিক করতে হবে। এটি ./.venv/bin/ ফোল্ডারে adk এবং অন্যান্য প্রয়োজনীয় স্ক্রিপ্ট ইনস্টল করবে।
আপনার সেটআপ পরীক্ষা করার জন্য, আপনি make test-step1 চালিয়ে দেখতে পারেন যে আপনি 403 PERMISSION DENIED.
উপলব্ধ সমাধান
কোডটি 📂 steps/ ভেতরে রয়েছে। আপনি সেখান থেকে কোডটি কপি করতে পারেন।
এই কোডল্যাবটি ভালো ADK কোড লেখা শেখানোর জন্য নয়; বরং এটি আপনার পরিবেশ এমনভাবে প্রস্তুত করার জন্য, যাতে আপনার নির্দেশনায় স্বয়ংক্রিয়ভাবে ভালো কোড লেখা হয়।
- সফটওয়্যার ইনস্টল করা হচ্ছে
- কনফিগার করা / এটিকে চালু করা, এবং
- একটি ন্যায়সঙ্গত প্রতিক্রিয়া চক্রে প্রবেশ করা
এটাই আমরা এখানে আপনাকে শেখাতে চাই। আপনি $ make 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 আকারে, যেমন "৪.৭/৫" - গুগল হোটেলস, বুকিং বা এয়ারবিএনবি থেকে), রিভিউর সংখ্যা। এগুলো আমাকে সারণি আকারে দিন। সবচেয়ে ভালো হয় যদি হোটেলের নামটি হোটেলের কোনো URL-এর সাথে লিঙ্ক করা থাকে (URL কলাম যোগ করার দরকার নেই)। নিশ্চিত করুন যে লিঙ্কটি আসল (এটি কাজ করে এবং পেজটি হোটেল সম্পর্কিত তথ্যে নিয়ে যায়!)।
এটি একটি স্মার্ট প্রম্পট, কারণ এটি সময় ও হোটেল পরীক্ষা করে এবং ধাপ ১, ২, ৩-এ ভিন্ন ভিন্ন উপায়ে ব্যর্থ হবে ও শুধুমাত্র ধাপ ৪-এ সম্পূর্ণরূপে সফল হবে। আপনি অবশ্যই আপনার পছন্দমতো যেকোনো প্রম্পট ব্যবহার করতে পারেন!
ব্যাশ (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/বেছে নিন ( পাশের ছবিটি দেখুন ) - আপনার প্রশ্নটি টেক্সটে অথবা মাইক্রোফোনের মাধ্যমে 'লিটমাস প্রম্পট'-এর মতো করে জিজ্ঞাসা করুন।

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

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

এই ফাংশনটি agent.py ফাইলে root_agent সংজ্ঞার ঠিক আগে যোগ করুন:
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 । এটি আমাদের এজেন্টকে ওয়েব থেকে রিয়েল-টাইম তথ্য অ্যাক্সেস করার সুযোগ দেয়।

আপনার কাজ হলো ধাপ ২-এর এজেন্টটিকে পরিবর্তন করা। 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) ব্যবহার করে মডেল-অ্যাজ-এ-টুল প্যাটার্ন।
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বিধিনিষেধের ত্রুটি পান, তাহলে আপনি একটি 'ignore robots' নির্দেশিকা দিয়ে MCP প্যাচ করতে পারেন। আরও বিস্তারিত জানতে ডক্স পড়ুন: https://github.com/openbnb-org/mcp-server-airbnb - যদি আপনি একটি
timeoutত্রুটি পান (এয়ারবিএনবি-র প্রতিক্রিয়া পাওয়ার জন্য ৫ সেকেন্ড খুব কম সময়), তাহলে টাইমআউট কীভাবে বাড়ানো যায়, যেমন ৩০ সেকেন্ড, তা জানতে 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-তে ভাইব কোডিং করুন
এখন আমরা কর্মশালার আকর্ষণীয় অংশে প্রবেশ করছি।
- নিশ্চিত করুন যে আপনি কোডটি কোনো নিরাপদ স্থানে
git commit। আপনি মূল কোডটি ফর্ক করতে পারেন, অথবা একটি ব্রাঞ্চ তৈরি করতে পারেন: চিন্তা করবেন না, এক্ষেত্রে আপনাকে সাহায্য করার জন্য জেমিনি সিএলআই (Gemini CLI) খুবই চমৎকার! - বাস্তবায়নের জন্য একটি 💡 দারুণ আইডিয়া খুঁজুন। আপনি নীচের আইডিয়াগুলো দেখতে পারেন, নিজে থেকে একটি খুঁজে নিতে পারেন, অথবা জেমিনিকে rag/ ফোল্ডারের ডকুমেন্টেশন দেখে কয়েকটি চমৎকার আইডিয়া প্রস্তাব করতে বলতে পারেন।
- জেমিনি যাতে ADK ডক্স পড়তে পারে , তা নিশ্চিত করতে পূর্বশর্তগুলো অনুসরণ করুন, তাহলেই আপনি কাজ শুরু করতে পারবেন!
💡 ধারণা
- 🟢 [সহজ] আপনি কি বহুভাষী? আপনি কি
go,javaবাTypeScriptনিয়ে কাজ করতে চান? বিদ্যমান কোড রিফ্যাক্টরিং করা খুবই সহজ! শুধু সঠিক ADK ডাউনলোড করে নিন এবং Gemini CLI-কে অনুবাদের কাজটি করতে বলুন! - 🟢 [সহজ] ইমোজি যোগ করুন অথবা আপনার পছন্দের কোনো আউটপুট ফরম্যাট নির্দিষ্ট করে দিন (যেমন, একটি টেবিল যেখানে হোটেলের ইমোজি থাকবে, তারপরে দাম, এবং তারপরে ১-৫ স্টার ইমোজি, সাথে 🌕🌕🌕🌗🌑 ব্যবহার করে অর্ধেকও দেখানো যাবে!)।
- 🟢 [সহজ] আপনি বিশেষভাবে কী খুঁজছেন বা কী চান না (যেমন: পোষ্যবান্ধব, নিচতলা নেই, নিরিবিলি, গণপরিবহনের কাছাকাছি, ইত্যাদি) তা শেখানোর জন্য প্রম্পটটি পরিবর্তন করুন এবং পরীক্ষা করে দেখুন। চাইলে উপরের তথ্যের উপর ভিত্তি করে "আপনার_নাম-এর ১-১০ এর মধ্যে একটি রেটিং" এর মতো একটি ব্যক্তিগত রেটিং যোগ করতে পারেন এবং সেই রেটিং অনুসারে সাজাতে পারেন।
- 🟢 [সহজ] এখানে কি কোনো অপারেটর আছেন? ক্লাউড রান -এ ডেপ্লয় করুন! অথবা ভার্টেক্স এআই এজেন্ট ইঞ্জিন-এ ! আপনি কি জানেন যে আপনি এই এজেন্টটিকে ইন্টিগ্রেট করতে পারেন এবং নতুন জেমিনি এন্টারপ্রাইজ থেকে সরাসরি এটিকে কল করতে পারেন?
- 🟢 [সহজ] 🍌 NanoBanana MCP-এর সাথে
adk runইন্টিগ্রেট করুন। এর জন্য একটি Gemini API Key প্রয়োজন। এখানে আপনি ইমেজ তৈরি করতে পারবেন কিন্তু সেগুলো ভিজ্যুয়ালাইজ করতে পারবেন না। আরও কঠিন একটি সংস্করণের জন্য নিচে দেখুন। - 🟡 [মাঝারি] একটি সাব-এজেন্ট তৈরি করুন যা
HotelSearchকরবে এবং একটিBudgetAgentবাLocationAgentতৈরি করুন যা আপনার অবস্থানের চাহিদা অনুযায়ী হোটেলগুলোর উপর আরও ভালোভাবে নজর রাখতে পারবে, যেমন "অবস্থান থেকে X কিমি-র বেশি দূরে নয়"। যদি এপিআই (API) এটি করতে না দেয়, তাহলে গুগলসার্চ (GoogleSearch)-এর সাহায্যে কিছু পারস্পরিক আদান-প্রদান করা যেতে পারে। দ্রষ্টব্য: জেমিনি সিএলআই (Gemini CLI) আপনাকে সাহায্য করতে পারে। - 🟡 [মাঝারি] একটি
AirbnbReviewAgentতৈরি করুন যা একটি সার্চের ফলে প্রাপ্ত ১ বা N সংখ্যক হোটেলের রিভিউগুলো থেকে ইতিবাচক এবং নেতিবাচক দিকগুলো কয়েকটি রঙ-কোডযুক্ত বুলেট পয়েন্টে সংক্ষিপ্ত আকারে তুলে ধরবে। আপনার কাছে ইতিমধ্যেই ২টি উপাদান (GoogleSearch এবং MCP Airbnb) আছে, এরপর আপনাকে এটিকে মূল এজেন্টের সাথে সংযুক্ত করতে হবে এবং সম্ভবত তাদের যোগাযোগের জন্য কোনো এক ধরনের প্রোটোকল তৈরি করতে হবে। - 🟡 [মাঝারি] A2A-এর সাথে একীভূত করুন। এটিকে একটি A2A এজেন্ট বানান! আবারও, সাহায্যের জন্য Gemini CLI-কে বলুন!
- 🔴 [জটিল] একটি বহুমুখী ও বহুকার্যকরী ট্র্যাভেল এজেন্ট তৈরি করতে আপনি ফ্লাইটস বা অন্যান্য এমসিপি (MCP) কার্যকারিতার সাথে এটিকে একীভূত করতে পারেন।
- 🔴 [জটিল] ADK ওয়েব-কে 🍌 ন্যানোবানানা এমসিপি (NanoBanana MCP) -এর সাথে একীভূত করুন। এটি উপরেরটির চেয়েও কঠিন, এবং আপনি https://github.com/palladius/ai-friendly-agents/issues/11 -এ কিছু টিপস খুঁজে পেতে পারেন। এর জন্য লেখককে Gemini CLI, Gemini3-এর সাথে ৩ ঘন্টা ধরে আলোচনা করতে হয়েছে এবং আমরা দুজনেই
rag/থেকে ডক্স/কোড পড়েছি!
আরও অনুপ্রেরণা খুঁজছেন?
- কিছু ধারণা পেতে অফিসিয়াল ADK টিউটোরিয়ালটি দেখে নিন।
- Gemini CLI-কে
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 ডাউনলোড করার পরামর্শ দিই (দ্রষ্টব্য: এটি খুব সহজেই আপনার পছন্দের ভাষায়, যেমন জাভা বা গো-তে , মানিয়ে নেওয়া যায়!)
কোডটি ./rag এর অধীনে রয়েছে এবং ./download-adk.sh দিয়ে ডাউনলোড করা যাবে।
যেহেতু rag ফোল্ডারটি আপনার .gitignore ফাইলে তালিকাভুক্ত আছে, তাই নিশ্চিত করুন যে আপনার .gemini/settings.json ফাইলে নিম্নলিখিত বিষয়গুলো রয়েছে:
{
"context": {
"includeDirectories": ["rag"]
}
}
কেন? আমরা চাই জেমিনি যেন ফাইলগুলো পড়তে পারে, যখন সেগুলো নিরাপদে গিট-ইগনোর করা থাকবে। টেকনিক্যালি আপনি context.fileFiltering.respectGitIgnore কে false সেট করে সব .gitignore ফাইল আনহাইড করতে পারেন, কিন্তু এতে node_modules/ এবং __pycache__/ এর মতো অনেক অপ্রয়োজনীয় ফাইল তৈরি হয় - তাই সরাসরি ফোল্ডার অন্তর্ভুক্ত করাই শ্রেয়।
১০. পরবর্তী পদক্ষেপ
কৌতূহল : এই ওয়ার্কশপটি Gemini CLI-এর সাহায্যে তৈরি করা হয়েছে। আপনি যদি আগ্রহী হন, তবে এই ফোল্ডারে থাকা GEMINI.md এবং WORKSHOP_PLAN.md ফাইলগুলো দেখে জানতে পারবেন আমি এটি কীভাবে করেছি।
শিক্ষা গ্রহণ
আমরা শিখেছি কিভাবে ADK-কে Gemini CLI-এর সাথে যুক্ত করতে হয়।
অতিরিক্ত পাঠ
- এই দুটি অফিসিয়াল অ্যান্টিগ্র্যাভিটি কোডল্যাব দেখুন:
- কিছু ধারণা পেতে অফিসিয়াল ADK টিউটোরিয়ালটি দেখে নিন।
