জেমিনি 3 এবং ADK এর সাথে আপনার নিজস্ব 'দর কষাকষি দোকানদার' এজেন্ট তৈরি করুন,জেমিনি 3 এবং ADK এর সাথে আপনার নিজস্ব 'দর কষাকষি দোকানদার' এজেন্ট তৈরি করুন

1. সংক্ষিপ্ত বিবরণ

এই কোডল্যাবে, আমরা মজার কিছু তৈরি করতে যাচ্ছি। কল্পনা করুন এমন একটি ডিজিটাল বাজার যেখানে আপনার এআই এজেন্ট সবচেয়ে বুদ্ধিমান, বুদ্ধিমান দোকানদার।

তোমার নতুন AI দোকানদার রাজুর সাথে দেখা করো। সে অসাধারণ ডিজিটাল শিল্পকর্ম বিক্রি করে, কিন্তু সেগুলো পেতে তোমাকে তার সাথে দর কষাকষি করতে হবে!

রাজুকে জীবন্ত করে তুলতে আমরা জেমিনি ৩ (মস্তিষ্ক), এডিকে (এজেন্ট ডেভেলপমেন্ট কিট - শরীর), এবং গুগল ক্লাউড রান (দোকানের অবস্থান) ব্যবহার করব।

দোকানদার রাজু

তুমি কি শিখবে

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

রাজু এজেন্ট আর্কিটেকচার

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

তুমি শিখবে কিভাবে:

  • আপনার "ডিজিটাল ডুকান" (গুগল ক্লাউড এনভায়রনমেন্ট) সেট আপ করুন।
  • "ভাড়া" রাজু (জেমিনি 3 API কী পান)।
  • রাজুকে দর কষাকষি করতে শেখান (সিস্টেম নির্দেশাবলী এবং ব্যক্তিত্ব)।
  • রাজুকে একটি তালিকা (ADK টুলস) দিন।
  • একটি শপফ্রন্ট (ফ্রন্টেন্ড UI) তৈরি করুন।
  • ব্যবসার জন্য উন্মুক্ত (ক্লাউড রানে স্থাপন করুন)।

তোমার যা দরকার

  • একটি গুগল ক্লাউড প্রকল্প।
  • রসবোধ (দর কষাকষির জন্য)।
  • পাইথনের মৌলিক জ্ঞান।

২. ডুকান (ক্লাউড প্রজেক্ট) সেট আপ করা

রাজু তৈরির আগে, আমাদের একটি দোকানের অবস্থান প্রয়োজন। ক্লাউডে, এর অর্থ হল একটি বিলিং অ্যাকাউন্ট সহ একটি প্রকল্প

ধাপ ১: বিলিং সক্রিয় করুন

ধাপ ১: বিলিং সক্রিয় করুন

  1. একটি ছদ্মবেশী উইন্ডোতে রিডেম্পশন লিঙ্কটি খুলুন।
  2. আপনার ব্যক্তিগত জিমেইল অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
  3. ক্রেডিট অ্যাক্সেস করতে বোতামে ক্লিক করুন।
  4. আপনার ট্রায়াল সক্রিয় করতে আপনার ইমেল নিশ্চিত করুন এবং শর্তাবলীতে সম্মত হন।

ধাপ ২: প্রকল্প তৈরি করুন

ধাপ ২: প্রকল্প তৈরি করুন

  1. প্রকল্প তৈরি করুন পৃষ্ঠায় যান।
  2. একটি অনন্য প্রকল্পের নাম লিখুন (যেমন, raju-shop-agent )।
  3. "বিলিং অ্যাকাউন্ট" ড্রপ-ডাউনে, আপনার ট্রায়াল বিলিং অ্যাকাউন্ট নির্বাচন করুন।
  4. তৈরি করুন এ ক্লিক করুন এবং প্রকল্পটি প্রস্তুত হওয়ার জন্য অপেক্ষা করুন।

ধাপ ৩: বিলিং লিঙ্ক যাচাই করুন

  1. লিঙ্কড বিলিং অ্যাকাউন্ট পৃষ্ঠায় যান।
  2. যদি আপনি "একটি বিলিং অ্যাকাউন্ট লিঙ্ক করুন" বিকল্পটি দেখতে পান, তাহলে এটিতে ক্লিক করুন।
  3. নিশ্চিত করুন যে ট্রায়াল বিলিং অ্যাকাউন্টটি নির্বাচিত আছে।
  4. তুমি এখন তৈরি করতে প্রস্তুত!

সারাংশ

এই ধাপে, আপনি আপনার গুগল ক্লাউড প্রজেক্ট এবং বিলিং অ্যাকাউন্ট সেট আপ করবেন, যা আপনার অ্যাপ্লিকেশনের ভিত্তি তৈরি করবে।

এরপর, আমরা কর্মক্ষেত্র সেট আপ করব যেখানে আপনি "আপনার পরিবেশ প্রস্তুত করুন" বিভাগে কোড তৈরি করবেন।

৩. স্টল তৈরি (পরিবেশগত ব্যবস্থা)

আপনার কোড চালানোর জন্য একটি জায়গা প্রয়োজন। আপনার কাছে দুটি পছন্দ আছে:

ক্লাউড শেল বনাম স্থানীয় টার্মিনাল

ক্লাউড শেল একটি ব্রাউজার-ভিত্তিক টার্মিনাল যা আপনার প্রয়োজনীয় সবকিছু ( পাইথন , জিক্লাউড সিএলআই , গিট ) সহ আগে থেকে ইনস্টল করা থাকে। এটির স্থায়ী স্টোরেজ রয়েছে এবং এটি যেকোনো জায়গা থেকে কাজ করে।

১. ক্লাউড শেল সক্রিয় করুন

গুগল ক্লাউড কনসোল হেডারের উপরের ডানদিকে 'অ্যাক্টিভেট ক্লাউড শেল' আইকনে (একটি টার্মিনাল প্রতীক) ক্লিক করুন।

ক্লাউড শেল সক্রিয় করুন

ক্লাউড শেল এখন আরম্ভ হবে। এর মধ্যে রয়েছে:

  • অনুমোদন: যদি অনুরোধ করা হয়, তাহলে Cloud Shell কে আপনার পক্ষ থেকে Google Cloud API গুলিতে কল করার অনুমতি দিতে Authorize এ ক্লিক করুন।
  • প্রভিশনিং: ক্লাউড শেল আপনার সেশনের জন্য একটি অস্থায়ী ভার্চুয়াল মেশিনের ব্যবস্থা করে।
  • সংযোগ: এরপর এটি এই VM-এর সাথে সংযুক্ত হয়। এই সম্পূর্ণ প্রক্রিয়াটি এক বা দুই মিনিট সময় নিতে পারে।

কমান্ড প্রম্পট ( user@cloudshell:~ $ ) না দেখা পর্যন্ত অপেক্ষা করুন।

2. প্রকল্প সেটআপ যাচাই করুন

ক্লাউড শেল সাধারণত আপনার বর্তমান প্রকল্পটি স্বয়ংক্রিয়ভাবে নির্বাচন করে। নিরাপদ থাকার জন্য, এটি যাচাই করুন:

gcloud config get-value project

যদি এটি আপনার প্রজেক্ট আইডি ( raju-shop-agent ) ফেরত না দেয়, তাহলে এটি ম্যানুয়ালি সেট করুন:

gcloud config set project raju-shop-agent

বিকল্প ২: স্থানীয় টার্মিনাল

যদি আপনি নিজের ল্যাপটপের টার্মিনাল (iTerm, PowerShell, ইত্যাদি) পছন্দ করেন, তাহলে আপনাকে আরও কিছু সেটআপ করতে হবে।

১. পূর্বশর্ত ইনস্টল করুন

নিশ্চিত করুন যে আপনি নিম্নলিখিতগুলি ইনস্টল করেছেন:

2. লগইন করুন এবং gcloud কনফিগার করুন

গুগল ক্লাউড সিএলআই শুরু করুন এবং আপনার অ্যাকাউন্টে সাইন ইন করুন:

gcloud auth login

আপনার প্রকল্পটি সেট করুন ( raju-shop-agent আপনার প্রকৃত প্রকল্প আইডি দিয়ে প্রতিস্থাপন করুন):

gcloud config set project raju-shop-agent

অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র সেট আপ করুন (এটি স্থানীয় সরঞ্জামগুলিকে Google ক্লাউডের সাথে কথা বলতে সহায়তা করে):

gcloud auth application-default login

সারাংশ

এই ধাপে, আপনি আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট (ক্লাউড শেল অথবা লোকাল) বেছে নিয়েছেন এবং এটি কনফিগার করেছেন।

এরপর, আমরা সেই টুলের সাথে পরিচিত হব যা আমাদের মিটিং জেমিনি সিএলআই- এ দ্রুত তৈরি করতে সাহায্য করবে।

৪. আপনার সহকারীর সাথে দেখা করুন (মিথুন সিএলআই)

এখন, AI ডেভেলপমেন্টের জন্য আপনার নতুন সেরা বন্ধুর সাথে দেখা করুন: জেমিনি CLI !

জেমিনি সিএলআই ভূমিকা

জেমিনি সিএলআই একটি শক্তিশালী কমান্ড-লাইন ইন্টারফেস যা আপনাকে সাহায্য করে:

  • স্বয়ংক্রিয় কর্মপ্রবাহ: আপনার AI প্রকল্পগুলি দক্ষতার সাথে পরিচালনা করুন।
  • কোড জেনারেশন: কোড, UI, এমনকি সম্পূর্ণ ফাইলও জেনারেট করুন।
  • এক্সটেনশন ইকোসিস্টেম: বিভিন্ন এক্সটেনশনের মাধ্যমে এর ক্ষমতা বৃদ্ধি করুন (যেমন ক্লাউড রান যা আমরা পরে ব্যবহার করব)।

১. জেমিনি সিএলআই ইনস্টল করুন (শুধুমাত্র স্থানীয় টার্মিনাল)

আপনি যদি আপনার স্থানীয় ল্যাপটপ টার্মিনাল ব্যবহার করেন:

npm install -g @google/gemini-cli

আপনি যদি গুগল ক্লাউড শেল ব্যবহার করেন:

জেমিনি সিএলআই ক্লাউড শেলে আগে থেকে ইনস্টল করা থাকে, তাই আপনাকে কিছু ইনস্টল করার দরকার নেই!

2. লঞ্চ এবং প্রমাণীকরণ করুন

আপনার ক্লাউড শেল (অথবা স্থানীয় টার্মিনালে) একটি নতুন টার্মিনাল উইন্ডো (অথবা ট্যাব) খুলুন এবং জেমিনি সিএলআই চালু করুন:

gemini

প্রথম রান সেটআপ: যদি আপনি এটি প্রথমবার চালান, তাহলে CLI আপনাকে একটি দ্রুত সেটআপ প্রক্রিয়ার মধ্য দিয়ে নিয়ে যাবে।

  • প্রমাণীকরণ: এটি আপনাকে সাইন ইন করতে বলবে। জেমিনি মডেলগুলির জন্য উপলব্ধ উদার বিনামূল্যের কোটার সুবিধা নিতে আমরা আপনার ব্যক্তিগত জিমেইল অ্যাকাউন্ট ব্যবহার করার পরামর্শ দিচ্ছি।
  • প্রজেক্ট কনটেক্সট: আপনার প্রোজেক্ট ফোল্ডারের ভেতর থেকে gemini চালানো সবচেয়ে ভালো অভ্যাস যাতে এটি আপনার কোড কনটেক্সট বুঝতে পারে। (যেহেতু আমরা এখনও ফোল্ডারটি তৈরি করিনি, তাই আপনার হোম ডিরেক্টরি থেকে এটি চালানো আপাতত ঠিক আছে)।

৩. হ্যালো বলো!

একবার আপনি gemini> প্রম্পটটি দেখতে পেলে, আপনার মস্তিষ্ক সংযুক্ত আছে কিনা তা নিশ্চিত করার জন্য একটি পরীক্ষা করে দেখুন:

Hi

মডেলটির কাছ থেকে আপনার বন্ধুত্বপূর্ণ প্রতিক্রিয়া পাওয়া উচিত।

৪. প্রয়োজনীয় আদেশ

  • /quit : জেমিনি CLI থেকে বেরিয়ে আপনার স্ট্যান্ডার্ড টার্মিনালে ফিরে যেতে এটি টাইপ করুন।
  • /help : সমস্ত উপলব্ধ কমান্ডের একটি তালিকা দেখুন।

সারাংশ

এই ধাপে, আপনি জেমিনি সিএলআই ইনস্টল, প্রমাণীকরণ এবং যাচাই করেছেন।

এরপর, আমরা Opening Shop (The Code) তে আমাদের দোকানের কঙ্কাল তৈরি করতে এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করব।

৫. তাক মজুদ করা (প্রকল্প সেটআপ)

আমরা একেবারে শুরু থেকে নির্মাণ করব না (বুদ্ধিমান দোকানদাররা সময় বাঁচায়)। আমরা এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করব।

ADK কি?

তাক মজুদ করা

ADK হল আপনার "দোকান ব্যবস্থাপনা ব্যবস্থা"। এটি একটি নমনীয় কাঠামো যা পরিচালনা করে:

  • সাজানো : জটিল কাজ পরিচালনা করা (যেমন রাজু গ্রাহকের সাথে কথা বলার সময় মজুদ পরীক্ষা করা)।
  • রাজ্য ব্যবস্থাপনা : গ্রাহকের নাম এবং ৫ মিনিট আগে তারা কী চেয়েছিল তা মনে রাখা।
  • টুলিং : বাহ্যিক সিস্টেমের সাথে সংযোগ স্থাপন (যেমন আপনার ইনভেন্টরি ডাটাবেস)।

আমরা এজেন্ট স্টার্টার প্যাক ব্যবহার করে তাৎক্ষণিকভাবে একটি উৎপাদন-প্রস্তুত "দুকান" সেট আপ করব। এটি আমাদের একটি নিরাপদ, স্কেলেবল ভিত্তি দেয় যাতে আমরা বিক্রির উপর মনোযোগ দিতে পারি।

আপনার ক্লাউড শেল টার্মিনালে (অথবা স্থানীয় টার্মিনালে), আপনার এজেন্ট তৈরি করতে এই কমান্ডটি চালান:

uvx agent-starter-pack create raju-shop

আপনার দোকানটি কনফিগার করার জন্য CLI আপনাকে কয়েকটি প্রশ্ন জিজ্ঞাসা করবে। নিম্নলিখিত বিকল্পগুলি নির্বাচন করুন (নম্বরটি টাইপ করুন এবং এন্টার টিপুন):

  1. এজেন্টের ধরণ: 1 বেছে নিন ( adk_base - একটি বেস রিঅ্যাক্ট এজেন্ট)।
  2. স্থাপনার লক্ষ্য: 2 বেছে নিন ( Cloud Run - সার্ভারলেস কন্টেইনার এক্সিকিউশন)।
  3. সেশনের ধরণ: 1 বেছে নিন ( In-memory session - সহজ এবং দ্রুত)।
  4. 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 পোর্টে একটি স্থানীয় ওয়েব সার্ভার শুরু করে।

যদি ক্লাউড শেল ব্যবহার করেন:

  1. ওয়েব প্রিভিউ বোতামে ক্লিক করুন (উপরে ডানদিকে, চোখের মতো দেখাচ্ছে)।
  2. পোর্ট পরিবর্তন করুন নির্বাচন করুন।
  3. 8000 লিখুন এবং পরিবর্তন এবং পূর্বরূপ ক্লিক করুন।

যদি স্থানীয় টার্মিনাল ব্যবহার করেন:

  1. আপনার ব্রাউজারটি খুলুন এবং http://localhost:8000 এ যান।

একবার UI খুললে:

  1. "অ্যাপ" নির্বাচন করুন : উপরের বাম দিকের ড্রপ-ডাউনে, নিশ্চিত করুন যে আপনি অ্যাপ নামের এজেন্টটি নির্বাচন করেছেন ( root_agent অথবা test_agent দেখা গেলে উপেক্ষা করুন)।
  2. হ্যালো বলো : "হ্যালো!" টাইপ করো এবং দেখো এটি সাড়া দেয় কিনা।

কাজ শেষ হয়ে গেলে adk web সার্ভার বন্ধ করতে আপনার টার্মিনালে Ctrl+C টিপুন।

সারাংশ

এই ধাপে, আপনি আপনার প্রকল্পটি তৈরি করেছেন, এটিকে জেমিনি 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."

2. কোডটি যাচাই করুন

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."

2. জাদু যাচাই করুন

আবার app/agent.py খুলুন। আপনি দেখতে পাবেন যে Gemini তে আছে:

  1. INVENTORY অভিধান তৈরি করেছেন।
  2. check_inventory পাইথন ফাংশনটি লেখা হয়েছে।
  3. এজেন্ট সংজ্ঞায় tools=[...] তালিকা আপডেট করা হয়েছে।

৩. ইনভেন্টরি পরীক্ষা করুন

  1. সার্ভারটি পুনরায় চালু করুন (Ctrl+C, তারপর adk web )।
  2. রাজুকে জিজ্ঞাসা করো:
    • "তোমার কি কোন তাজমহল আছে?" (তার না বলা উচিত, স্টক ০)।
    • "সিল্ক স্কার্ফের দাম কত?" (তার আসল দামটা পরীক্ষা করা উচিত)।

সারাংশ

এই ধাপে, আপনি একটি check_inventory টুল প্রয়োগ করেছেন, ডিফল্ট ক্লাটারটি সরিয়েছেন এবং টুলটিকে আপনার এজেন্টের সাথে সংযুক্ত করেছেন।

এরপর, আমরা রাজু'স শপ গোজ লাইভ (ব্যাকএন্ড স্থাপন) -এ রাজুকে ক্লাউডে লাইভে নিয়ে যাব।

৮. রাজুর দোকানটি লাইভ হয়ে গেল (ব্যাকএন্ড স্থাপন করা)

বিশ্বের জন্য উন্মুক্ত হওয়ার সময়! দোকানের সামনের অংশ তৈরি করার আগে, আমরা রাজুর মস্তিষ্ক এবং ইনভেন্টরি (আপনার এজেন্ট) ক্লাউডে স্থাপন করব।

রাজু লাইভে আসে

গুরুত্বপূর্ণ: টার্মিনাল ব্যবস্থাপনা

আপনার বর্তমান টার্মিনালে পূর্ববর্তী ধাপ থেকে adk web চালু থাকতে পারে।

  • স্থানীয়ভাবে পরীক্ষা চালিয়ে যেতে চাইলে এটি চালু রাখুন
  • পরবর্তী স্থাপনার ধাপগুলির জন্য একটি নতুন টার্মিনাল উইন্ডো/ট্যাব খুলুন
  • দ্রষ্টব্য: যখনই আপনি agent.py পরিবর্তন করবেন, পরিবর্তনগুলি কার্যকর করার জন্য আপনাকে অবশ্যই থামাতে হবে (Ctrl+C) এবং adk web পুনরায় চালু করতে হবে !

১. জেমিনি সিএলআই প্রস্তুত করুন

আপনার নতুন টার্মিনাল উইন্ডোতে:

  1. আপনি ইতিমধ্যেই Gemini CLI-তে আছেন কিনা তা পরীক্ষা করুন ( gemini> প্রম্পটটি দেখুন)।
  2. যদি হয়, তাহলে স্ট্যান্ডার্ড শেল থেকে প্রস্থান করতে /quit টাইপ করুন।
  3. নিশ্চিত করুন যে আপনি প্রকল্প ফোল্ডারে আছেন:
    cd raju-shop
    

2. ক্লাউড রান এক্সটেনশন ইনস্টল করুন

আপনার ক্লাউড শেল টার্মিনালে (অথবা স্থানীয় টার্মিনালে) জেমিনি সিএলআই-এর জন্য ক্লাউড রান এক্সটেনশনটি ইনস্টল করুন :

gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp

৩. জেমিনি সিএলআই পুনরায় চালু করুন

নতুন এক্সটেনশনটি ব্যবহার করতে আবার জেমিনি সিএলআই চালু করুন:

gemini

তুমি জেমিনি সিএলআই প্রম্পট দেখতে পাবে।

৪. এজেন্ট মোতায়েন করুন

জেমিনি সিএলআই এক্সটেনশন ব্যবহার করার দুটি উপায় রয়েছে:

বিকল্প ১: স্ল্যাশ কমান্ড (ম্যানুয়াল) আপনি স্পষ্টভাবে কমান্ড এবং ফ্ল্যাগ টাইপ করতে পারেন:

/deploy --source . --name raju-agent --region us-central1 --allow-unauthenticated

বিকল্প ২: প্রাকৃতিক ভাষা (প্রস্তাবিত) এটি সহজ এবং আরও শক্তিশালী উপায়! আপনি কেবল জেমিনিকে এটি করতে বলতে পারেন, এবং এটি সঠিক সরঞ্জামগুলি কল করার জন্য MCP সার্ভার ব্যবহার করবে।

এই প্রম্পটটি জেমিনি সিএলআই-তে পেস্ট করার চেষ্টা করুন:

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 (...)

৫. স্থাপনা যাচাই করুন

স্থাপনা সম্পন্ন হলে, জেমিনি সিএলআই একটি পরিষেবা URL প্রদান করবে। এই URL টি অনুলিপি করুন।

ব্রাউজার চেক (এটি কি জীবিত?) আপনার ব্রাউজারে URL টি পেস্ট করুন।

  • সাফল্য: আপনার FastAPI ডকুমেন্টেশন (Swagger UI) অথবা একটি জেনেরিক ADK ল্যান্ডিং পৃষ্ঠা দেখা উচিত। এটি নিশ্চিত করে যে আপনার ক্লাউড রান পরিষেবাটি চলছে এবং অ্যাক্সেসযোগ্য।
  • ব্যর্থতা: যদি আপনি 403 Forbidden পান, তাহলে আপনি হয়তো আপনার ডিপ্লয়মেন্ট প্রম্পটে "unauthenticated invocations" মঞ্জুর করতে ভুলে গেছেন।

পরবর্তী ধাপে আমরা একটি সঠিক ফ্রন্টএন্ড তৈরি করে প্রকৃত দর কষাকষির যুক্তি পরীক্ষা করব!

সারাংশ

এই ধাপে, আপনি জেমিনি সিএলআই এক্সটেনশন ব্যবহার করে আপনার এজেন্ট ব্যাকএন্ডটি গুগল ক্লাউড রানে স্থাপন করেছেন, যা এটি একটি পাবলিক ইউআরএল ব্যবহার করে অ্যাক্সেসযোগ্য করে তুলেছে।

এরপর, আমরা গ্রাহকদের জন্য একটি সুন্দর স্টোরফ্রন্ট তৈরি করব যাতে তারা রাজুর সাথে Building the Shopfront (Frontend UI) -এ কথা বলতে পারেন।

৯. দোকান সাজানো (ফ্রন্টেন্ড UI)

টেক্সট টার্মিনাল বিরক্তিকর। আমরা একটি প্রাণবন্ত দোকানের জানালা চাই!

শপ ইউআই মকআপ

ADK API কিভাবে কাজ করে

একটি কাস্টম UI তৈরি করতে, আপনাকে বুঝতে হবে কিভাবে আপনার এজেন্ট ব্যাকএন্ডের সাথে কথা বলতে হয়। এটি একটি 2-পদক্ষেপ প্রবাহ অনুসরণ করে:

  1. সেশন শুরু করুন: চ্যাট করার আগে, আপনাকে একটি সেশন আইডি তৈরি করতে হবে (যেমন একটি শপিং কার্ট)।
    • POST /apps/app/users/{user_id}/sessions/{session_id}
  2. বার্তা পাঠান: কথা বলার জন্য, আপনি আপনার টেক্সট রান এন্ডপয়েন্টে পাঠান।
    • POST /run (পেলোডে appName , userId , sessionId এবং আপনার text অন্তর্ভুক্ত থাকে)।
  3. আরও জানুন: ADK রানটাইম API এবং Python API রেফারেন্স ডক্স পরীক্ষা করুন।

আমরা আমাদের ফ্রন্টএন্ড তৈরি করতে এই যুক্তিটি ব্যবহার করব।

এই ইন্টারফেসটি তৈরি করার দুটি উপায় আপনার কাছে আছে:

যদি আপনি আপনার স্থানীয় মেশিনে কাজ করেন, তাহলে গুগল অ্যান্টিগ্রাভিটি হল সেরা অভিজ্ঞতা। এটি একটি এআই-নেটিভ আইডিই যা আপনাকে পুরো ইউআই "ভাইব কোড" করতে দেয়।

1. ডাউনলোড এবং ইনস্টল করুন

গুগল অ্যান্টিগ্রাভিটি ডাউনলোড পৃষ্ঠা থেকে আপনার অপারেটিং সিস্টেমের ইনস্টলারটি ডাউনলোড করুন এবং এটি ইনস্টল করুন।

2. আপনার কর্মক্ষেত্র খুলুন

অ্যান্টিগ্রাভিটি চালু করুন। আপনার raju-shop ফোল্ডারটি ওয়ার্কস্পেস হিসেবে খুলুন। এটি আপনার পুরো প্রকল্প সম্পর্কে AI প্রেক্ষাপট দেয়।

৩. এজেন্ট ম্যানেজার দিয়ে UI তৈরি করুন

লাইন-বাই-লাইন কোড লেখার পরিবর্তে, আমরা এজেন্ট ম্যানেজার ব্যবহার করে একজন AI এজেন্টকে আমাদের জন্য এটি করতে বলব।

  1. এজেন্ট ম্যানেজার চ্যাট ইন্টারফেসটি সনাক্ত করুন (সাধারণত ডান দিকে)।
  2. চ্যাটে নিম্নলিখিত প্রম্পটটি পেস্ট করুন:
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 দিয়ে প্রতিস্থাপন করতে ভুলবেন না!)

  1. এজেন্ট আপনার জন্য কোডটি কীভাবে লিখছে তা দেখুন! রিয়েল-টাইমে ফাইলটি তৈরি হচ্ছে তা দেখতে আপনি এডিটর ভিউতে স্যুইচ করতে পারেন।

৪. আপনার দোকানের সামনের অংশ পরীক্ষা করুন

গুগল অ্যান্টিগ্রাভিটিতে বিল্ট-ইন প্রিভিউ ক্ষমতা রয়েছে। আপনার দোকানের সামনের অংশটি লাইভ দেখতে "প্রিভিউ" বোতামে (প্রায়শই চোখের আইকন হিসেবে ব্যবহার করা হয়) ক্লিক করুন! বিকল্পভাবে, 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

(পরিবর্তন করতে মনে রাখবেন

আপনার আসল ক্লাউড রান URL সহ!)

সারাংশ

এই ধাপে, আপনি Google Antigravity ব্যবহার করে একটি কাস্টম HTML ফ্রন্টএন্ড "ভাইব কোড" করেছেন যা আপনার লাইভ এজেন্ট ব্যাকএন্ডের সাথে সংযুক্ত।

এরপর, আমরা "Taking the Shopfront Live" -এ ওয়েবে এই শপফ্রন্টটি হোস্ট করে ছবিটি সম্পূর্ণ করব।

১০. গ্র্যান্ড ওপেনিং (ফ্রন্টএন্ড স্থাপন)

রাজু অনলাইনে আছে (ব্যাকএন্ড), কিন্তু তার দোকানের একটি পাবলিক ঠিকানা (ফ্রন্টএন্ড) প্রয়োজন! গুগল অ্যান্টিগ্রাভিটিকে আমাদের UI ক্লাউডে স্থাপন করতে বলুন।

ফ্রন্টএন্ড ডিপ্লয়মেন্ট

১. এজেন্ট ম্যানেজারকে মোতায়েন করতে বলুন

আমাদের IDE ত্যাগ করার দরকার নেই। শুধু এজেন্ট ম্যানেজারকে আপনার হয়ে স্থাপনার কাজটি পরিচালনা করতে বলুন।

এই প্রম্পটটি চ্যাটে পেস্ট করুন:

"আমার index.html Google Cloud Run-এ একটি স্ট্যাটিক ওয়েবসাইট হিসেবে স্থাপন করুন। পরিষেবাটির নাম দিন raju-shop-frontend । নিশ্চিত করুন যে এটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য।"

2. জাদু দেখুন

এজেন্ট সম্ভবত:

  1. স্ট্যাটিক ফাইল পরিবেশনের জন্য একটি Dockerfile বা কনফিগারেশন তৈরি করুন (যেমন nginx বা python ব্যবহার করা)।
  2. কন্টেইনার ইমেজ তৈরি করুন।
  3. আপনার জন্য gcloud run deploy কমান্ডটি চালান।

৩. আপনার দোকানে যান!

এজেন্ট কাজ শেষ করলে, এটি আপনাকে একটি URL দেবে (যেমন, https://raju-shop-frontend-xyz.run.app )। এটিতে ক্লিক করুন।

অভিনন্দন! এখন আপনার কাছে একটি সম্পূর্ণরূপে ব্যবহৃত, AI-চালিত দর কষাকষি দোকানদার অ্যাপ রয়েছে। আপনার বন্ধুদের লিঙ্কটি পাঠান এবং দেখুন তারা ছাড় পেতে পারে কিনা!

সারাংশ

এই ধাপে, আপনি আপনার ফ্রন্টএন্ড অ্যাপ্লিকেশনটিকে ক্লাউড রানে কন্টেইনারাইজ এবং স্থাপন করতে অ্যান্টিগ্র্যাভিটি এজেন্ট ম্যানেজার ব্যবহার করেছেন।

তুমি এখন সম্পূর্ণ স্ট্যাক তৈরি করে ফেলেছো! আমরা সমাপনী সময়ের (উপসংহার) মধ্যে শেষ করব।

১১. বন্ধের সময় (উপসংহার)

মিশন সম্পন্ন

অভিনন্দন! আপনি 'দর কষাকষি দোকানদার' এজেন্ট চ্যালেঞ্জ সফলভাবে সম্পন্ন করেছেন! আপনি রাজুকে একটি সাধারণ ধারণা থেকে ডিজিটাল বাজারে একজন সম্পূর্ণরূপে নিয়োজিত, ইন্টারেক্টিভ এআই দোকানদারে পরিণত করেছেন। আপনি এজেন্টিক বিকাশের শক্তি সরাসরি অভিজ্ঞতা অর্জন করেছেন।

আপনার যাত্রার সংক্ষিপ্তসার:

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

আপনার ডিজিটাল ডুকানের পরবর্তী পদক্ষেপ:

  • ভাঙা পরীক্ষাগুলি ঠিক করুন: আপনি কোড পরিবর্তন করেছেন, কিন্তু পরীক্ষাগুলির কী হবে? ডিফল্ট পরীক্ষাগুলি ( 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 রিফাইন করে একটি লাইভ রসিদ দেখাতে বলতে পারেন?
  • আপনার দোকানটি শেয়ার করুন: রাজুর দোকানটি ইন্টারনেটে লাইভ! আপনার বন্ধুদের সাথে ফ্রন্টএন্ড URL টি শেয়ার করুন এবং দেখুন তারা আপনার চেয়ে ভাল দর কষাকষি করতে পারে কিনা!

রিসোর্স

১২. পরিষ্কার-পরিচ্ছন্নতা

এই কোডল্যাবে ব্যবহৃত রিসোর্সের জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে অপ্রয়োজনীয় চার্জ এড়াতে, এই পদক্ষেপগুলি অনুসরণ করুন।

১. ক্লাউড রান পরিষেবাগুলি আনডিপ্লয় করুন (ঐচ্ছিক খরচ সাশ্রয়)

আপনার প্রকল্প এবং অন্যান্য কনফিগারেশন অক্ষত রেখে যদি আপনি আপনার স্থাপন করা পরিষেবাগুলির সাথে সম্পর্কিত কোনও সম্ভাব্য চার্জ বন্ধ করতে চান, তাহলে আপনি আপনার ক্লাউড রান পরিষেবাগুলি আনডিপ্লয় করতে পারেন।

আপনার ক্লাউড শেল টার্মিনাল (অথবা স্থানীয় টার্মিনাল) খুলুন এবং নিম্নলিখিত 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

২. গুগল ক্লাউড প্রজেক্ট মুছে ফেলুন (সম্পূর্ণ খরচ বন্ধ)

যদি আপনি নিশ্চিত করতে চান যে আর কোনও খরচ নেই এবং এই কোডল্যাবের সময় তৈরি সমস্ত সংস্থান সম্পূর্ণরূপে মুছে ফেলা উচিত, তাহলে সবচেয়ে নিশ্চিত পদক্ষেপ হল সম্পূর্ণ গুগল ক্লাউড প্রজেক্ট মুছে ফেলা।

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট পৃষ্ঠায় যান।
  2. আপনার প্রকল্প ( raju-shop-agent ) নির্বাচন করুন এবং Delete এ ক্লিক করুন।
  3. প্রকল্প মুছে ফেলার বিষয়টি নিশ্চিত করতে প্রম্পটগুলি অনুসরণ করুন।