১. সংক্ষিপ্ত বিবরণ
এই কোডল্যাবে আমরা মজার কিছু একটা তৈরি করতে যাচ্ছি। একটি ডিজিটাল বাজারের কথা ভাবুন, যেখানে আপনার এআই এজেন্টই হলো সেখানকার সবচেয়ে বুদ্ধিমান ও রসিক দোকানদার।
রাজুর সাথে পরিচিত হোন, আপনার নতুন এআই দোকানদার। সে চমৎকার সব ডিজিটাল সামগ্রী বিক্রি করে, কিন্তু সেগুলো পেতে হলে আপনাকে তার সাথে দর কষাকষি করতে হবে!
রাজুকে জীবন্ত করে তুলতে আমরা জেমিনি ৩ (মস্তিষ্ক), এডিকে (এজেন্ট ডেভেলপমেন্ট কিট - দেহ), এবং গুগল ক্লাউড রান (দোকানের ঠিকানা) ব্যবহার করব।

আপনি যা শিখবেন
আমরা একটি আধুনিক এজেন্টিক অ্যাপ্লিকেশনের জন্য সম্পূর্ণ স্ট্যাকটি তৈরি করব:

- দ্য শপ (ক্লাউড রান) : ইন্টারনেটে আপনার অ্যাপের ঠিকানা।
- মস্তিষ্ক (মিথুন ৩) : সেই বুদ্ধিমত্তা যা রাজুকে শক্তি জোগায়।
- দেহ (ADK) : মস্তিষ্ককে বিভিন্ন উপকরণের সাথে সংযুক্তকারী কাঠামো।
- ইনভেন্টরি (টুলস) : স্টক পরীক্ষা করার জন্য রাজু যে পাইথন কোডটি ব্যবহার করে।
- স্টোরফ্রন্ট (ইউআই) : আপনার গ্রাহকরা যে ইন্টারফেসটি দেখেন।
আপনি শিখবেন কীভাবে:
- আপনার "ডিজিটাল দোকান" (গুগল ক্লাউড এনভায়রনমেন্ট) সেট আপ করুন।
- রাজুকে "নিয়োগ" করুন (জেমিনি ৩ এপিআই কী পান)।
- রাজুকে দর কষাকষি করতে শেখান (সিস্টেম নির্দেশাবলী ও পারসোনা)।
- রাজুকে একটি ইনভেন্টরি (ADK টুলস) দিন।
- একটি শপফ্রন্ট (ফ্রন্টএন্ড UI) তৈরি করুন।
- ব্যবসার জন্য উন্মুক্ত (ক্লাউডে স্থাপন করুন)
আপনার যা প্রয়োজন
- একটি গুগল ক্লাউড প্রজেক্ট।
- (দর কষাকষির জন্য) রসবোধ।
- পাইথনের প্রাথমিক জ্ঞান।
২. ডুকান (ক্লাউড প্রজেক্ট) স্থাপন করা
রাজু তৈরি করার আগে, আমাদের একটি শপ লোকেশন প্রয়োজন। ক্লাউডের ক্ষেত্রে, এর জন্য একটি বিলিং অ্যাকাউন্টসহ একটি প্রজেক্ট প্রয়োজন।
ধাপ ১: বিলিং সক্রিয় করুন

- রিডেম্পশন লিঙ্কটি একটি ইনকগনিটো উইন্ডোতে খুলুন।
- আপনার ব্যক্তিগত জিমেইল অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
- ক্রেডিট অ্যাক্সেস করতে বাটনটিতে ক্লিক করুন।
- আপনার ট্রায়ালটি সক্রিয় করতে আপনার ইমেল নিশ্চিত করুন এবং শর্তাবলী মেনে নিন।
ধাপ ২: প্রজেক্ট তৈরি করুন

- প্রজেক্ট তৈরি করার পেজে যান।
- একটি অনন্য প্রজেক্টের নাম লিখুন (যেমন,
raju-shop-agent)। - "বিলিং অ্যাকাউন্ট" ড্রপ-ডাউন থেকে আপনার ট্রায়াল বিলিং অ্যাকাউন্টটি নির্বাচন করুন।
- CREATE-এ ক্লিক করুন এবং প্রজেক্টটি প্রস্তুত হওয়া পর্যন্ত অপেক্ষা করুন।
ধাপ ৩: বিলিং লিঙ্ক যাচাই করুন

- লিঙ্ক করা বিলিং অ্যাকাউন্ট পেজে যান।
- যদি "বিলিং অ্যাকাউন্ট লিঙ্ক করুন" বিকল্পটি দেখতে পান, তাহলে সেটিতে ক্লিক করুন।
- ট্রায়াল বিলিং অ্যাকাউন্টটি নির্বাচন করা হয়েছে কিনা তা নিশ্চিত করুন।
- আপনি এখন নির্মাণের জন্য প্রস্তুত!
সারসংক্ষেপ
এই ধাপে, আপনি আপনার গুগল ক্লাউড প্রজেক্ট এবং বিলিং অ্যাকাউন্ট সেট আপ করে আপনার অ্যাপ্লিকেশনের ভিত্তি তৈরি করবেন।
এরপরে, 'আপনার পরিবেশ প্রস্তুত করা' অংশে আমরা সেই ওয়ার্কস্পেসটি সেট আপ করব যেখানে আপনি কোড বিল্ড করবেন।
৩. স্টল তৈরি করা (পরিবেশ প্রস্তুতি)
আপনার কোড চালানোর জন্য একটি জায়গা প্রয়োজন। আপনার কাছে দুটি বিকল্প আছে:

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

ক্লাউড শেল এখন চালু হবে। এর মধ্যে রয়েছে:
- অনুমোদন: অনুরোধ করা হলে, আপনার পক্ষ থেকে গুগল ক্লাউড এপিআই-তে কল করার জন্য ক্লাউড শেলকে অনুমতি দিতে 'অনুমোদন করুন' (Authorize) বোতামে ক্লিক করুন।
- প্রোভিশনিং: ক্লাউড শেল আপনার সেশনের জন্য একটি অস্থায়ী ভার্চুয়াল মেশিন প্রস্তুত করে।
- সংযোগ স্থাপন: এরপর এটি এই ভিএম-এর সাথে সংযোগ স্থাপন করে। এই সম্পূর্ণ প্রক্রিয়াটিতে এক বা দুই মিনিট সময় লাগতে পারে।
কমান্ড প্রম্পট ( user@cloudshell:~ $ ) দেখতে পাওয়া পর্যন্ত অপেক্ষা করুন।
২. প্রজেক্ট সেটআপ যাচাই করুন
ক্লাউড শেল সাধারণত আপনার বর্তমান প্রজেক্টটি স্বয়ংক্রিয়ভাবে নির্বাচন করে। নিশ্চিত হওয়ার জন্য, এটি যাচাই করে নিন:
gcloud config get-value project
যদি এটি আপনার প্রজেক্ট আইডি ( raju-shop-agent ) ফেরত না দেয়, তাহলে এটি ম্যানুয়ালি সেট করুন:
gcloud config set project raju-shop-agent
বিকল্প ২: স্থানীয় টার্মিনাল
আপনি যদি আপনার নিজের ল্যাপটপের টার্মিনাল (যেমন iTerm, PowerShell ইত্যাদি) ব্যবহার করতে পছন্দ করেন, তাহলে আপনাকে আরও কিছু সেটআপ করতে হবে।
১. পূর্বশর্তসমূহ ইনস্টল করুন
নিম্নলিখিতগুলি ইনস্টল করা আছে কিনা তা নিশ্চিত করুন:
২. লগইন করুন এবং gcloud কনফিগার করুন
Google Cloud CLI চালু করুন এবং আপনার অ্যাকাউন্টে সাইন ইন করুন:
gcloud auth login
আপনার প্রজেক্ট সেট করুন ( raju-shop-agent জায়গায় আপনার আসল প্রজেক্ট আইডি বসান):
gcloud config set project raju-shop-agent
অ্যাপ্লিকেশনটির ডিফল্ট ক্রেডেনশিয়াল সেট আপ করুন (এটি স্থানীয় টুলগুলিকে গুগল ক্লাউডের সাথে যোগাযোগ করতে সাহায্য করে):
gcloud auth application-default login
সারসংক্ষেপ
এই ধাপে, আপনি আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট (ক্লাউড শেল বা লোকাল) বেছে নিয়েছেন এবং তা কনফিগার করেছেন।
এরপরে, আমরা এমন একটি টুলের সাথে পরিচিত হব যা আমাদেরকে মিটিং জেমিনি সিএলআই (Meeting Gemini CLI)- তে আরও দ্রুত নির্মাণ করতে সাহায্য করবে।
৪. আপনার সহকারীর সাথে পরিচিত হন (জেমিনি সিএলআই)
এখন, এআই ডেভেলপমেন্টের জন্য আপনার নতুন সেরা বন্ধুর সাথে পরিচিত হোন: জেমিনি সিএলআই !

জেমিনি সিএলআই একটি শক্তিশালী কমান্ড-লাইন ইন্টারফেস যা আপনাকে সাহায্য করে:
- ওয়ার্কফ্লো স্বয়ংক্রিয় করুন: আপনার এআই প্রোজেক্টগুলো দক্ষতার সাথে পরিচালনা করুন।
- কোড জেনারেশন: কোড, ইউআই, এমনকি সম্পূর্ণ ফাইলও তৈরি করুন।
- এক্সটেনশন ইকোসিস্টেম: বিভিন্ন এক্সটেনশনের মাধ্যমে এর কার্যক্ষমতা বাড়ান (যেমন ক্লাউড রান এক্সটেনশন, যা আমরা পরে ব্যবহার করব)।
১. Gemini CLI ইনস্টল করুন (শুধুমাত্র লোকাল টার্মিনালে)
আপনি যদি আপনার স্থানীয় ল্যাপটপ টার্মিনাল ব্যবহার করেন:
npm install -g @google/gemini-cli
আপনি যদি গুগল ক্লাউড শেল ব্যবহার করেন:
ক্লাউড শেলে জেমিনি সিএলআই আগে থেকেই ইনস্টল করা থাকে, তাই আপনাকে আলাদা করে কিছু ইনস্টল করতে হবে না!
২. চালু করুন এবং প্রমাণীকরণ করুন
আপনার ক্লাউড শেল (বা স্থানীয় টার্মিনাল)-এ একটি নতুন টার্মিনাল উইন্ডো (বা ট্যাব) খুলুন এবং জেমিনি সিএলআই চালু করুন:
gemini
প্রথমবার চালানোর সেটআপ: আপনি যদি এটি প্রথমবার চালান, তাহলে CLI আপনাকে একটি দ্রুত সেটআপ প্রক্রিয়ার মাধ্যমে পথ দেখাবে।
- প্রমাণীকরণ: এটি আপনাকে সাইন ইন করতে বলবে। জেমিনি মডেলগুলোর জন্য উপলব্ধ উদার বিনামূল্যের কোটার সুবিধা নিতে আমরা আপনার ব্যক্তিগত জিমেইল অ্যাকাউন্ট ব্যবহার করার পরামর্শ দিই।
- প্রজেক্টের প্রেক্ষাপট:
geminiআপনার প্রজেক্ট ফোল্ডারের ভেতর থেকে চালানোই উত্তম, যাতে এটি আপনার কোডের প্রেক্ষাপট বুঝতে পারে। (যেহেতু আমরা এখনও ফোল্ডারটি তৈরি করিনি, তাই আপাতত আপনার হোম ডিরেক্টরি থেকে এটি চালালেও চলবে)।
৩. হ্যালো বলুন!
একবার আপনি gemini> প্রম্পটটি দেখলে, আপনার মস্তিষ্ক সংযুক্ত আছে কিনা তা নিশ্চিত করতে একটি পরীক্ষা করে দেখুন:
Hi
আপনি মডেলের কাছ থেকে একটি বন্ধুত্বপূর্ণ প্রতিক্রিয়া পাবেন।
৪. অপরিহার্য নির্দেশাবলী
-
/quit: Gemini CLI থেকে বেরিয়ে আপনার স্ট্যান্ডার্ড টার্মিনালে ফিরে যেতে এটি টাইপ করুন। -
/help: উপলব্ধ সকল কমান্ডের তালিকা দেখুন।
সারসংক্ষেপ
এই ধাপে, আপনি Gemini CLI ইনস্টল, প্রমাণীকরণ এবং যাচাই করেছেন।
এরপরে, আমরা এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে ওপেনিং শপ (দ্য কোড) -এ আমাদের দোকানের কাঠামো তৈরি করব।
৫. তাকগুলোতে পণ্য সাজানো (প্রকল্প স্থাপন)
আমরা একেবারে গোড়া থেকে তৈরি করব না (চতুর দোকানদাররা সময় বাঁচায়)। আমরা এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করব।
ADK কী?

ADK হলো আপনার 'শপ ম্যানেজমেন্ট সিস্টেম'। এটি একটি নমনীয় ফ্রেমওয়ার্ক যা নিম্নলিখিত বিষয়গুলো পরিচালনা করে:
- সমন্বয় : জটিল কাজ পরিচালনা করা (যেমন রাজু গ্রাহকের সাথে কথা বলার সময় ইনভেন্টরি পরীক্ষা করছে)।
- অবস্থা ব্যবস্থাপনা : গ্রাহকের নাম এবং ৫ মিনিট আগে তিনি কী চেয়েছিলেন তা মনে রাখা।
- টুলিং : বাহ্যিক সিস্টেমের সাথে সংযোগ স্থাপন (যেমন আপনার ইনভেন্টরি ডেটাবেস)।
আমরা এজেন্ট স্টার্টার প্যাকটি ব্যবহার করে তাৎক্ষণিকভাবে একটি প্রোডাকশন-রেডি 'ডুকান' সেট আপ করব। এটি আমাদের একটি নিরাপদ ও সম্প্রসারণযোগ্য ভিত্তি প্রদান করে, যাতে আমরা বিক্রয়ের উপর মনোযোগ দিতে পারি।
আপনার ক্লাউড শেল টার্মিনালে (বা স্থানীয় টার্মিনালে) আপনার এজেন্ট তৈরি করতে এই কমান্ডটি চালান:
uvx agent-starter-pack create raju-shop
আপনার শপ কনফিগার করার জন্য CLI আপনাকে কয়েকটি প্রশ্ন জিজ্ঞাসা করবে। নিচের অপশনগুলো থেকে বেছে নিন (নম্বরটি টাইপ করে এন্টার চাপুন):
- এজেন্টের ধরণ:
1বেছে নিন (adk_base- একটি বেস রিঅ্যাক্ট এজেন্ট)। - ডেপ্লয়মেন্ট টার্গেট:
2নির্বাচন করুন (Cloud Run- সার্ভারলেস কন্টেইনার এক্সিকিউশন)। - সেশনের ধরণ:
1বেছে নিন (In-memory session- সহজ এবং দ্রুত)। - CI/CD রানার:
3বেছে নিন (Skip- আমরা আপাতত ম্যানুয়ালি ডেপ্লয় করব)।
প্রক্রিয়াটি সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন। হয়ে গেলে, আপনার শপ ডিরেক্টরিতে প্রবেশ করুন এবং প্রয়োজনীয় ডিপেন্ডেন্সিগুলো ইনস্টল করুন:
cd raju-shop
make install
source .venv/bin/activate
এজেন্ট অন্বেষণ এবং কনফিগার করুন
এখন যেহেতু স্টার্টার প্যাকটি প্রস্তুত করা হয়েছে, এর কাঠামোটি পর্যালোচনা করুন।
১. ফোল্ডারের গঠন পরীক্ষা করুন
আপনার দোকানটি কীভাবে সাজানো আছে তা দেখতে নিম্নলিখিত কমান্ডটি চালান:
tree .
আপনি এইরকম একটি কাঠামো দেখতে পাবেন:
.
├── app
│ ├── __init__.py
│ ├── agent.py
│ ├── app_utils
│ │ ├── telemetry.py
│ │ └── typing.py
│ └── fast_api_app.py
├── Dockerfile
├── GEMINI.md
├── Makefile
├── pyproject.toml
├── README.md
├── tests
│ ├── integration
│ │ ├── test_agent.py
│ │ └── test_server_e2e.py
│ └── unit
│ └── test_dummy.py
└── uv.lock
সবচেয়ে গুরুত্বপূর্ণ ফাইলটি হলো app/agent.py । এখানেই রাজুর মস্তিষ্ক বাস করে!
২. কোডটি ধাপে ধাপে ব্যাখ্যা করুন
আপনার ক্লাউড শেল এডিটর (বা স্থানীয় IDE)-তে app/agent.py খুলুন এবং দ্রুত একবার দেখে নিন:
-
root_agent = Agent(...): এটি আপনার AI-কে সংজ্ঞায়িত করে। এর একটিmodel(মস্তিষ্ক) এবংtools(হাত) রয়েছে। - টুলস : আপনি
get_weatherমতো পাইথন ফাংশন দেখতে পাবেন। এগুলো হলো সেইসব টুল যা এজেন্ট ব্যবহার করতে পারে। -
app = App(...): এটি আপনার এজেন্টকে একটি ওয়েব সার্ভারে পরিণত করে, যাতে আমরা এটির সাথে যোগাযোগ করতে পারি।
স্থানীয়ভাবে পরীক্ষা করুন
আপনার ক্লাউড শেল টার্মিনালে (বা স্থানীয় টার্মিনালে) এজেন্টটি চালান:
adk web
এই কমান্ডটি ৮০০০ পোর্টে একটি স্থানীয় ওয়েব সার্ভার চালু করে।
ক্লাউড শেল ব্যবহার করলে:
- ওয়েব প্রিভিউ বাটনটিতে (উপরে ডানদিকে, দেখতে চোখের মতো) ক্লিক করুন।
- পোর্ট পরিবর্তন নির্বাচন করুন।
-
8000প্রবেশ করান এবং 'পরিবর্তন ও পূর্বরূপ' এ ক্লিক করুন।
লোকাল টার্মিনাল ব্যবহার করলে:
- আপনার ব্রাউজার খুলুন এবং
http://localhost:8000এ যান।
UI খোলার পর:
- 'অ্যাপ' নির্বাচন করুন : উপরের-বামের ড্রপ-ডাউন থেকে, 'অ্যাপ' নামের এজেন্টটি নির্বাচন করুন (যদি
root_agentবাtest_agentদেখা যায়, তবে সেগুলি উপেক্ষা করুন)। - হ্যালো বলুন : "Hello!" টাইপ করুন এবং দেখুন এটি সাড়া দেয় কিনা।
কাজ শেষ হলে adk web সার্ভারটি বন্ধ করতে আপনার টার্মিনালে Ctrl+C চাপুন।
সারসংক্ষেপ
এই ধাপে, আপনি আপনার প্রজেক্টের কাঠামো তৈরি করেছেন, জেমিনি এপিআই (Gemini API)-এর জন্য এটি কনফিগার করেছেন এবং সফলভাবে আপনার প্রথম এজেন্টটি স্থানীয়ভাবে চালিয়েছেন!
এরপরে, আমরা ট্রেনিং রাজু (দ্য পার্সোনা) -তে আমাদের এজেন্টকে একটি ব্যক্তিত্ব এবং একটি নাম দেব।
৬. রাজুকে (চরিত্রটিকে) প্রশিক্ষণ দেওয়া
এই মুহূর্তে এজেন্টটা একঘেয়ে। আমরা তাকে একটা ব্যক্তিত্ব দেব!

কোড লেখার পরিবর্তে, আমরা জেমিনিকে শুধু বলে দেবো আমরা কী চাই।
১. ব্যক্তিত্ব নির্ধারণ করুন
রাজুকে তার পরিচয় "শেখানোর" জন্য আপনার টার্মিনালে এই কমান্ডটি চালান:
gemini "In agent.py, update the root_agent instruction. You are Raju, a bargaining shopkeeper in a digital bazaar. You sell: Brass Lamp (50 coins), Silk Scarf (500 coins). Your goal is to sell high and be funny. Speak with an Indian-English flair."
২. কোডটি যাচাই করুন
app/agent.py খুলুন। আপনি দেখতে পাবেন যে জেমিনি আপনার জন্য সিস্টেমের নির্দেশাবলী লিখে রেখেছে!
৩. স্থানীয়ভাবে পরীক্ষা করুন
এখন, রাজুর সাথে চ্যাট করুন! আপনার ক্লাউড শেল টার্মিনালে (অথবা লোকাল টার্মিনালে):
adk web
ওয়েব UI খুলুন (ওয়েব প্রিভিউ পোর্ট 8000 অথবা localhost:8000) , অ্যাপ এজেন্টটি নির্বাচন করুন এবং এই প্রম্পটগুলো চেষ্টা করুন:
- আমি পিতলের প্রদীপটা চাই কিন্তু ৫০টা মুদ্রা অনেক বেশি!
- তুমি কী বিক্রি করো, বন্ধু?
দেখুন সে কেমন প্রতিক্রিয়া দেখায়! তাকে মজাদার ও নাটকীয় হতে হবে, কিন্তু একেবারে সস্তায় বিক্রি হতে রাজি হওয়া যাবে না।
সারসংক্ষেপ
এই ধাপে, আপনি এজেন্টের সিস্টেম নির্দেশাবলী পরিবর্তন করে 'রাজু' নামে একজন অনন্য ব্যক্তিত্বসম্পন্ন দর কষাকষি করা দোকানদার তৈরি করেছেন।
এরপরে, আমরা রাজুকে ইনভেন্টরিতে (সরঞ্জাম যোগ করার মাধ্যমে) তার প্রকৃত মজুত পরীক্ষা করার ক্ষমতা দেব।
৭. মজুদ তালিকা (সরঞ্জাম যোগ করা)
রাজুকে জানতে হবে তার কাছে আসলে কী মজুত আছে। আমরা তাকে একটি 'ডাটাবেস' এবং তা যাচাই করার জন্য একটি টুল দেব।

১. টুলটি তৈরি করুন
ইনভেন্টরি ও টুল তৈরি করতে এবং সেটিকে রাজুর সাথে সংযুক্ত করতে এই একটিমাত্র কমান্ডটি চালান:
gemini "In agent.py, create a dictionary INVENTORY with items: Brass Lamp (price 50, stock 5), Silk Scarf (price 500, stock 2), Taj Mahal (price 2000, stock 0). Then create a tool function check_inventory(item_name) that checks this dict. Finally, update the root_agent to use this tool and remove the default weather tools."
২. জাদুটি যাচাই করুন
app/agent.py আবার খুলুন। আপনি দেখতে পাবেন যে Gemini-তে রয়েছে:
-
INVENTORYডিকশনারিটি তৈরি করা হয়েছে। -
check_inventoryপাইথন ফাংশনটি লেখা হয়েছে। - এজেন্ট সংজ্ঞায়
tools=[...]তালিকাটি আপডেট করা হয়েছে।
৩. মজুদ পরীক্ষা করুন
- সার্ভারটি পুনরায় চালু করুন (Ctrl+C, তারপর
adk web)। - রাজুকে জিজ্ঞাসা করুন:
- "আপনার কাছে কি কোনো তাজমহল আছে?" (তার বলা উচিত 'না', কারণ মজুত শূন্য)।
- সিল্কের স্কার্ফটার দাম কত? (তার আসল দামটা যাচাই করে দেখা উচিত)।
সারসংক্ষেপ
এই ধাপে, আপনি একটি check_inventory টুল ইমপ্লিমেন্ট করেছেন, ডিফল্ট অপ্রয়োজনীয় অংশগুলো সরিয়ে দিয়েছেন এবং টুলটিকে আপনার এজেন্টের সাথে সংযুক্ত করেছেন।
এরপরে, আমরা 'রাজুর শপ লাইভ হচ্ছে (ব্যাকএন্ড স্থাপন)' অংশে রাজুকে ক্লাউডে লাইভ করব।
৮. রাজুর শপ চালু হলো (ব্যাকএন্ড ডেপ্লয় করা হচ্ছে)
এবার বিশ্বের জন্য উন্মুক্ত হওয়ার পালা! দোকানের সম্মুখভাগ তৈরি করার আগে, আমরা রাজুর মস্তিষ্ক এবং ইনভেন্টরি (আপনার এজেন্ট) ক্লাউডে স্থাপন করে দেব।

গুরুত্বপূর্ণ: টার্মিনাল ব্যবস্থাপনা
আগের ধাপ থেকে আপনার বর্তমান টার্মিনালে adk web চালু থাকতে পারে।
- স্থানীয়ভাবে পরীক্ষা চালিয়ে যেতে চাইলে এটি চালু রাখুন ।
- পরবর্তী ডেপ্লয়মেন্ট ধাপগুলোর জন্য একটি নতুন টার্মিনাল উইন্ডো/ট্যাব খুলুন ।
- দ্রষ্টব্য: যখনই আপনি
agent.pyফাইলে কোনো পরিবর্তন করবেন, পরিবর্তনগুলো কার্যকর হওয়ার জন্য আপনাকে অবশ্যইadk webবন্ধ (Ctrl+C) করে পুনরায় চালু করতে হবে!
১. জেমিনি সিএলআই প্রস্তুত করুন
আপনার নতুন টার্মিনাল উইন্ডোতে:
- আপনি ইতিমধ্যেই Gemini CLI-এর ভিতরে আছেন কিনা তা পরীক্ষা করুন (
gemini>প্রম্পটটি খুঁজুন)। - যদি তাই হয়, স্ট্যান্ডার্ড শেলে ফিরে যেতে
/quitটাইপ করুন। - নিশ্চিত করুন যে আপনি প্রজেক্ট ফোল্ডারে আছেন:
cd raju-shop
২. ক্লাউড রান এক্সটেনশন ইনস্টল করুন
আপনার ক্লাউড শেল টার্মিনালে (বা স্থানীয় টার্মিনালে) Gemini CLI-এর জন্য ক্লাউড রান এক্সটেনশনটি ইনস্টল করুন :
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
৩. জেমিনি সিএলআই পুনরায় চালু করুন
নতুন এক্সটেনশনটি ব্যবহার করতে Gemini CLI আবার চালু করুন:
gemini
আপনি জেমিনি সিএলআই প্রম্পটটি দেখতে পাবেন।
৪. এজেন্টটি স্থাপন করুন
জেমিনি সিএলআই এক্সটেনশন ব্যবহার করার দুটি উপায় আছে:
বিকল্প ১: স্ল্যাশ কমান্ড (ম্যানুয়াল) আপনি কমান্ড এবং ফ্ল্যাগগুলো স্পষ্টভাবে টাইপ করতে পারেন:
/deploy --source . --name raju-agent --region us-central1 --allow-unauthenticated
বিকল্প ২: স্বাভাবিক ভাষা (প্রস্তাবিত) এটি আরও সহজ এবং শক্তিশালী উপায়! আপনি শুধু জেমিনিকে এটি আপনার জন্য করতে বলতে পারেন, এবং এটি সঠিক টুলগুলোকে কল করার জন্য এমসিপি সার্ভার ব্যবহার করবে।
এই প্রম্পটটি Gemini CLI-তে পেস্ট করে দেখুন:
Deploy this agent app to cloud run on google cloud using the cloud-run MCP server.
Use project raju-shop-agent in us-central1 region.
Name the service raju-agent.
IMPORTANT: Make sure to allow unauthenticated invocations so my frontend can talk to it.
cloud-run টুলটি ব্যবহার করার জন্য CLI নিশ্চিতকরণ চাইতে পারে। অনুমোদন করতে Enter চাপুন (অথবা y টাইপ করুন)।
জাদুর জন্য অপেক্ষা করুন: এতে ২-৩ মিনিট সময় লাগবে। সম্পন্ন হলে, আপনি এইরকম একটি সফলতার বার্তা দেখতে পাবেন:
✦ I've successfully deployed your agent app to Cloud Run.
Service Details:
* Service Name: raju-agent
* Project: raju-shop-agent
* Region: us-central1
* URL: https://raju-agent-xyz123-uc.a.run.app
* Console: View in Google Cloud Console (...)
৫. ডেপ্লয়মেন্ট যাচাই করুন
ডেপ্লয়মেন্ট সম্পন্ন হলে, Gemini CLI একটি সার্ভিস ইউআরএল (Service URL) প্রদান করবে। এই ইউআরএলটি কপি করুন।
ব্রাউজার চেক (এটি কি সচল আছে?) আপনার ব্রাউজারে URL-টি পেস্ট করুন।
- সফল হলে: আপনি FastAPI ডকুমেন্টেশন (Swagger UI) অথবা একটি জেনেরিক ADK ল্যান্ডিং পেজ দেখতে পাবেন। এটি নিশ্চিত করে যে আপনার Cloud Run পরিষেবাটি চালু এবং অ্যাক্সেসযোগ্য।
- ব্যর্থতা: যদি আপনি 403 Forbidden ত্রুটি পান, তাহলে সম্ভবত আপনি আপনার ডিপ্লয়মেন্ট প্রম্পটে 'unauthenticated invocations'-এর অনুমতি দিতে ভুলে গেছেন।
পরবর্তী ধাপে একটি যথাযথ ফ্রন্টএন্ড তৈরি করার মাধ্যমে আমরা প্রকৃত দর কষাকষির যুক্তিটি পরীক্ষা করব!
সারসংক্ষেপ
এই ধাপে, আপনি Gemini CLI এক্সটেনশন ব্যবহার করে আপনার এজেন্ট ব্যাকএন্ডকে Google Cloud Run-এ ডেপ্লয় করেছেন এবং একটি পাবলিক URL ব্যবহার করে এটিকে অ্যাক্সেসযোগ্য করে তুলেছেন।
এরপরে, আমরা 'বিল্ডিং দ্য শপফ্রন্ট (ফ্রন্টএন্ড ইউআই)' অংশে গ্রাহকদের রাজুর সাথে কথা বলার জন্য একটি সুন্দর দোকান তৈরি করব।
৯. দোকান সাজানো (ফ্রন্টএন্ড UI)
টেক্সট টার্মিনাল একঘেয়ে। আমরা একটি প্রাণবন্ত শো-কেস চাই!

ADK API কীভাবে কাজ করে
একটি কাস্টম UI তৈরি করতে হলে, আপনার এজেন্ট ব্যাকএন্ডের সাথে কীভাবে যোগাযোগ করতে হয় তা বুঝতে হবে। এটি দুটি ধাপে সম্পন্ন হয়:
- সেশন শুরু করুন: চ্যাট করার আগে, আপনাকে অবশ্যই একটি সেশন আইডি তৈরি করতে হবে (শপিং কার্টের মতো)।
-
POST /apps/app/users/{user_id}/sessions/{session_id}
-
- বার্তা পাঠান: কথা বলার জন্য, আপনাকে রান এন্ডপয়েন্টে আপনার টেক্সট পাঠাতে হবে।
-
POST /run(পেলোডেappName,userId,sessionIdএবং আপনারtextঅন্তর্ভুক্ত থাকবে)।
-
- আরও জানুন: ADK রানটাইম এপিআই এবং পাইথন এপিআই রেফারেন্স ডকুমেন্টেশন দেখুন।
আমরা এই যুক্তি ব্যবহার করে আমাদের ফ্রন্টএন্ড তৈরি করব।
এই ইন্টারফেসটি তৈরি করার জন্য আপনার কাছে দুটি উপায় আছে:
বিকল্প ১: গুগল অ্যান্টিগ্র্যাভিটি (সুপারিশকৃত - শুধুমাত্র স্থানীয়দের জন্য)
আপনি যদি আপনার লোকাল মেশিনে কাজ করেন, তবে গুগল অ্যান্টিগ্র্যাভিটি সেরা অভিজ্ঞতা দেয়। এটি একটি এআই-নেটিভ আইডিই যা আপনাকে সম্পূর্ণ ইউআই-কে "ভাইব কোড" করতে দেয়।
১. ডাউনলোড ও ইনস্টল করুন
গুগল অ্যান্টিগ্র্যাভিটি ডাউনলোড পেজ থেকে আপনার অপারেটিং সিস্টেমের জন্য ইনস্টলারটি ডাউনলোড করে ইনস্টল করুন।
২. আপনার কর্মক্ষেত্র খুলুন
অ্যান্টিগ্র্যাভিটি চালু করুন। আপনার raju-shop ফোল্ডারটিকে একটি ওয়ার্কস্পেস হিসেবে খুলুন। এটি AI-কে আপনার সম্পূর্ণ প্রোজেক্ট সম্পর্কে ধারণা দেবে।
৩. এজেন্ট ম্যানেজার দিয়ে UI তৈরি করুন
লাইন-বাই-লাইন কোড লেখার পরিবর্তে, আমরা এজেন্ট ম্যানেজার ব্যবহার করে একটি এআই এজেন্টকে আমাদের হয়ে কাজটি করতে বলব।
- এজেন্ট ম্যানেজার চ্যাট ইন্টারফেসটি খুঁজুন (সাধারণত ডানদিকে থাকে)।
- নিম্নলিখিত প্রম্পটটি চ্যাটে পেস্ট করুন:
Create a single file HTML chat interface named `index.html`. It should have a colorful header that says 'Raju's Royal Artifacts'. It should look like an Indian market stall with orange and pink colors.
**Backend Integration:**
The chat should send messages to my deployed agent at: <YOUR_DEPLOYED_AGENT_URL>
**API Logic:**
1. **On Load:** Generate a random userId and sessionId. Call `POST /apps/app/users/{userId}/sessions/{sessionId}` to initialize.
2. **On Send:** Call `POST /run` with a JSON payload containing `appName: "app"`, `userId`, `sessionId`, and `newMessage: { role: "user", parts: [{ text: userInput }] }`.
3. **Display:** Show the user's message and the agent's response (from `content.parts[0].text`).
(ডিপ্লয়মেন্ট ধাপ থেকে পাওয়া আপনার আসল সার্ভিস URL দিয়ে প্লেসহোল্ডার URL-টি অবশ্যই প্রতিস্থাপন করবেন!)
- দেখুন কীভাবে এজেন্ট আপনার জন্য কোড লেখে! ফাইলটি রিয়েল-টাইমে তৈরি হতে দেখার জন্য আপনি এডিটর ভিউতে যেতে পারেন।
৪. আপনার দোকানের সম্মুখভাগ পরীক্ষা করুন
গুগল অ্যান্টিগ্র্যাভিটিতে অন্তর্নির্মিত প্রিভিউ করার সুবিধা রয়েছে। আপনার শপফ্রন্টটি সরাসরি দেখতে "প্রিভিউ" বোতামে (যা প্রায়শই একটি চোখের আইকন) ক্লিক করুন! বিকল্পভাবে, python3 -m http.server 8000 . কমান্ড দিয়ে এটি স্থানীয়ভাবে পরিবেশন করুন।
বিকল্প ২: জেমিনি সিএলআই (ক্লাউড শেল সামঞ্জস্যপূর্ণ)
আপনি ক্লাউড শেলে থাকলে, আপনার নির্ভরযোগ্য জেমিনি সিএলআই ব্যবহার করে কয়েক সেকেন্ডের মধ্যেই ফ্রন্টএন্ড বিল্ড করতে পারবেন।
আপনার টার্মিনালে এই কমান্ডটি চালান:
gemini "Create a single file HTML chat interface named index.html. Header: 'Raju\'s Royal Artifacts', Indian market theme (orange/pink). Backend: <YOUR_DEPLOYED_AGENT_URL>. Logic: On load, generate random user/session IDs and POST to /apps/app/users/{uid}/sessions/{sid}. On chat, POST to /run with appName='app', userId, sessionId, and newMessage structure. Parse the JSON response to show the agent text." > index.html
(পূর্ববর্তী টেক্সটে থাকা প্লেসহোল্ডার - <YOUR_DEPLOYED_AGENT_URL> এর পরিবর্তে আপনার আসল ক্লাউড রান URL বসাতে ভুলবেন না!)
সারসংক্ষেপ
এই ধাপে, আপনি গুগল অ্যান্টিগ্র্যাভিটি ব্যবহার করে একটি কাস্টম এইচটিএমএল ফ্রন্টএন্ড "ভাইব কোড" করেছেন, যা আপনার লাইভ এজেন্ট ব্যাকএন্ডের সাথে সংযুক্ত হয়।
এরপরে, ‘টেকিং দ্য শপফ্রন্ট লাইভ’- এর মাধ্যমে আমরা এই শপফ্রন্টটিকে ওয়েবে হোস্ট করে চিত্রটি সম্পূর্ণ করব।
১০. শুভ উদ্বোধন (ফ্রন্টএন্ড স্থাপন)
রাজু অনলাইনে আছে (ব্যাকএন্ড), কিন্তু তার দোকানের জন্য একটি পাবলিক অ্যাড্রেস প্রয়োজন (ফ্রন্টএন্ড)! আমাদের UI ক্লাউডে ডেপ্লয় করার জন্য গুগল অ্যান্টিগ্র্যাভিটিকে বলুন।

১. এজেন্ট ম্যানেজারকে ডিপ্লয় করতে বলুন
আমাদের IDE থেকে বের হওয়ার প্রয়োজন নেই। আপনার হয়ে ডেপ্লয়মেন্টের কাজটি করার জন্য শুধু এজেন্ট ম্যানেজারকে বলুন।
এই প্রম্পটটি চ্যাটে পেস্ট করুন:
আমার index.html গুগল ক্লাউড রান-এ একটি স্ট্যাটিক ওয়েবসাইট হিসেবে ডেপ্লয় করুন। সার্ভিসটির নাম দিন raju-shop-frontend । নিশ্চিত করুন যেন এটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য হয়।
২. জাদু দেখুন
এজেন্ট সম্ভবত:
- স্ট্যাটিক ফাইল পরিবেশন করার জন্য একটি
Dockerfileবা কনফিগারেশন তৈরি করুন (যেমন এনজিনএক্স বা পাইথন ব্যবহার করে)। - কন্টেইনার ইমেজটি তৈরি করুন।
- আপনার জন্য
gcloud run deployকমান্ডটি চালান।
৩. আপনার দোকান পরিদর্শন করুন!
এজেন্টটির কাজ শেষ হলে, এটি আপনাকে একটি URL দেবে (যেমন, https://raju-shop-frontend-xyz.run.app )। সেটিতে ক্লিক করুন।
অভিনন্দন! আপনার এখন একটি সম্পূর্ণরূপে চালু, এআই-চালিত দর কষাকষির দোকানদার অ্যাপ রয়েছে। আপনার বন্ধুদের কাছে লিঙ্কটি পাঠান এবং দেখুন তারা কোনো ছাড় পেতে পারে কিনা!
সারসংক্ষেপ
এই ধাপে, আপনি আপনার ফ্রন্টএন্ড অ্যাপ্লিকেশনটিকে কন্টেইনারাইজ করে ক্লাউড রান-এ ডেপ্লয় করার জন্য অ্যান্টিগ্র্যাভিটি এজেন্ট ম্যানেজার ব্যবহার করেছেন।
আপনি এখন সম্পূর্ণ স্ট্যাকটি তৈরি করে ফেলেছেন! আমরা সমাপনী পর্বে (উপসংহার) আলোচনাটি শেষ করব।
১১. সমাপ্তির সময় (উপসংহার)

অভিনন্দন! আপনি সফলভাবে 'বারগেইনিং শপকিপার' এজেন্ট চ্যালেঞ্জটি সম্পন্ন করেছেন! আপনি রাজুকে একটি সাধারণ ধারণা থেকে ডিজিটাল বাজারের একজন সম্পূর্ণরূপে সক্রিয়, ইন্টারেক্টিভ এআই দোকানদারে পরিণত করেছেন। আপনি এজেন্টিক ডেভেলপমেন্টের শক্তি সরাসরি অনুভব করেছেন।
আপনার যাত্রার সারসংক্ষেপ:
- গুগল ক্লাউড: আপনার প্রজেক্ট ও বিলিং অ্যাকাউন্ট সেট আপ করুন এবং ক্লাউড রান- এ আপনার এজেন্ট ডেপ্লয় করুন।
- মিথুন ৩: সেই বুদ্ধিদীপ্ত মস্তিষ্ক যা রাজুর ব্যক্তিত্ব এবং দর কষাকষির দক্ষতাকে চালিত করে।
- এজেন্ট ডেভেলপমেন্ট কিট (ADK): এমন একটি ফ্রেমওয়ার্ক যা অন্তর্নির্মিত অবজার্ভেবিলিটি (টেলিমেট্রি) সহ একটি প্রোডাকশন-রেডি ভিত্তি প্রদান করে, যা আপনার এজেন্টকে প্রথম দিন থেকেই শক্তিশালী করে তোলে।
- জেমিনি সিএলআই: দ্রুত কাজ, পরীক্ষা এবং এক্সটেনশনের জন্য আপনার কমান্ড-লাইন সহকারী।
- গুগল অ্যান্টিগ্র্যাভিটি: পরবর্তী প্রজন্মের আইডিই, যেখানে আপনি আপনার ইউআই 'ভাইব কোড' করেছেন এবং ডেপ্লয়মেন্ট পরিচালনা করেছেন।
আপনার ডিজিটাল দোকানের পরবর্তী পদক্ষেপ:
- ত্রুটিপূর্ণ টেস্টগুলো ঠিক করুন: আপনি কোড পরিবর্তন করেছেন, কিন্তু টেস্টগুলোর কী হবে? ডিফল্ট টেস্টগুলো (
tests/unit/test_agent.py) এখনও আবহাওয়া খোঁজে! এগুলো স্বয়ংক্রিয়ভাবে আপডেট করতে Gemini CLI ব্যবহার করুন। চেষ্টা করুন:gemini "Update the tests in tests/unit/test_agent.py to test the new check_inventory tool instead of weather." - ডাইনামিক ইনভেন্টরি: কোনো আইটেম "বিক্রি" হলে রাজুর ইনভেন্টরির পরিমাণ আপডেট করার ব্যবস্থা করুন। সফলভাবে "ক্রয়" করার পর আপনার
INVENTORYডিকশনারিতেstockকমানোর জন্য লজিক যোগ করতে পারবেন কি? - পেমেন্ট গেটওয়ে টুল: একটি নকল
process_paymentটুল তৈরি করুন। তাহলে কোনো চুক্তি সম্পন্ন হলে রাজু এই টুলটি কল করতে পারবে! - অ্যান্টিগ্র্যাভিটি অন্বেষণ করুন: অ্যান্টিগ্র্যাভিটির এজেন্ট ম্যানেজার এবং ওয়ার্কস্পেস সম্পর্কে আরও গভীরে জানুন। আপনি কি এজেন্টকে আপনার
index.htmlপরিমার্জন করে একটি লাইভ রসিদ দেখানোর জন্য বলতে পারেন? - আপনার দোকান শেয়ার করুন: রাজুর দোকান এখন ইন্টারনেটে চালু! আপনার বন্ধুদের সাথে ফ্রন্টএন্ড ইউআরএলটি শেয়ার করুন এবং দেখুন তারা আপনার চেয়ে ভালো দামে জিনিসটি কিনতে পারে কিনা!
সম্পদ
১২. পরিচ্ছন্নতা
এই কোডল্যাবে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে অপ্রয়োজনীয় চার্জ এড়ানোর জন্য, এই ধাপগুলো অনুসরণ করুন।
১. ক্লাউড রান সার্ভিসগুলো আনডিপ্লয় করুন (ঐচ্ছিক, খরচ সাশ্রয়)
আপনার প্রজেক্ট এবং অন্যান্য কনফিগারেশন অক্ষত রেখে, ডেপ্লয় করা সার্ভিসগুলো সম্পর্কিত যেকোনো সম্ভাব্য চার্জ বন্ধ করতে চাইলে, আপনি আপনার ক্লাউড রান সার্ভিসগুলো আনডেপ্লয় করতে পারেন।
আপনার ক্লাউড শেল টার্মিনাল (বা লোকাল টার্মিনাল) খুলুন এবং নিম্নলিখিত gcloud কমান্ডগুলি চালান:
# Undeploy the backend agent
gcloud run services delete raju-agent --region us-central1
# Undeploy the frontend shop (if you deployed it)
gcloud run services delete raju-shop-frontend --region us-central1
২. গুগল ক্লাউড প্রজেক্ট ডিলিট করুন (সম্পূর্ণ ব্যয় বন্ধ করুন)
আপনি যদি আর কোনো খরচ একেবারেই না হওয়া নিশ্চিত করতে চান এবং এই কোডল্যাব চলাকালীন তৈরি হওয়া সমস্ত রিসোর্স সম্পূর্ণরূপে মুছে ফেলতে চান, তাহলে সবচেয়ে নিশ্চিত পদক্ষেপ হলো পুরো গুগল ক্লাউড প্রজেক্টটি ডিলিট করে দেওয়া।
- গুগল ক্লাউড কনসোলের প্রজেক্টস পৃষ্ঠায় যান।
- আপনার প্রজেক্ট (
raju-shop-agent) নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন। - প্রজেক্ট মুছে ফেলা নিশ্চিত করতে নির্দেশাবলী অনুসরণ করুন।