ADK দিয়ে মাল্টি এজেন্ট সিস্টেম তৈরি করুন, এজেন্ট ইঞ্জিনে স্থাপন করুন এবং A2A প্রোটোকল দিয়ে শুরু করুন

১. এই ল্যাবের উদ্দেশ্য

এই হ্যান্ডস-অন ল্যাবে আপনি ADK (এজেন্ট ডেভেলপমেন্ট কিট) ব্যবহার করে একটি মাল্টি-এজেন্ট অ্যাপ্লিকেশন তৈরি করবেন, যা আপনার দেওয়া নির্দেশনার উপর ভিত্তি করে একটি ছবি তৈরি করবে এবং সেটিকে নির্দেশনার সাথে মিলিয়ে মূল্যায়ন করবে। যদি ছবিটি নির্দেশনায় বর্ণিত প্রয়োজনীয়তাগুলো সন্তোষজনকভাবে পূরণ না করে, তবে এজেন্টটি ততক্ষণ পর্যন্ত ক্রমাগত ছবি তৈরি করতে থাকবে যতক্ষণ না আপনার প্রয়োজনীয়তা পূরণকারী ছবিটি তৈরি হয়। এই হ্যান্ডস-অনের প্রতিটি এজেন্টের একটিই উদ্দেশ্য রয়েছে; সামগ্রিক লক্ষ্য অর্জনের জন্য এজেন্টগুলো একে অপরের সাথে সহযোগিতা করে। আপনি শিখবেন কীভাবে অ্যাপ্লিকেশনটি স্থানীয়ভাবে পরীক্ষা করতে হয় এবং Vertex AI Agent Engine- এ স্থাপন করতে হয়।

আপনি যা শিখবেন

২. প্রকল্প স্থাপন

  • আপনার যদি আগে থেকে ব্যবহারযোগ্য কোনো প্রজেক্ট না থাকে, তাহলে আপনাকে GCP কনসোলে একটি নতুন প্রজেক্ট তৈরি করতে হবে।
  • এই ল্যাবে আমরা আমাদের কাজগুলো করার জন্য জিসিপি ক্লাউড শেল (GCP Cloud Shell) ব্যবহার করব। ক্লাউড শেলটি খুলুন এবং এর মাধ্যমে প্রজেক্টটি সেট করুন।
  • এখানে ক্লিক করে GCP ক্লাউড শেল খুলুন, ক্লাউড শেল । যদি "Authorize Shell" পপআপটি দেখতে পান, তাহলে ক্লাউড শেল এডিটরকে অনুমোদন দিতে ক্লিক করুন।
  • ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনি যাচাই করতে পারেন যে প্রজেক্টটি ইতিমধ্যেই প্রমাণীকৃত কিনা।
gcloud auth list
  • আপনার প্রজেক্টটি নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  • প্রজেক্ট আইডিটি কপি করুন এবং এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।
gcloud config set project <YOUR_PROJECT_ID>
  • আপনি যদি আপনার প্রজেক্ট আইডি মনে রাখতে না পারেন, তাহলে আপনি আপনার সমস্ত প্রজেক্ট আইডি তালিকাভুক্ত করতে পারেন।
gcloud projects list

৩. এপিআই সক্রিয় করুন

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

gcloud services enable aiplatform.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com

এপিআইগুলো চালু করা হচ্ছে

  • ভার্টেক্স এআই এপিআই ( aiplatform.googleapis.com ) ভার্টেক্স এআই প্ল্যাটফর্মে প্রবেশের সুযোগ করে দেয়, যার ফলে আপনার অ্যাপ্লিকেশন টেক্সট জেনারেশন, চ্যাট সেশন এবং ফাংশন কলিংয়ের জন্য জেমিনি মডেলের সাথে যোগাযোগ করতে পারে।
  • ক্লাউড রিসোর্স ম্যানেজার এপিআই ( cloudresourcemanager.googleapis.com ) আপনাকে আপনার গুগল ক্লাউড প্রোজেক্টের মেটাডেটা, যেমন প্রোজেক্ট আইডি এবং নাম, প্রোগ্রাম্যাটিকভাবে পরিচালনা করার সুযোগ দেয়, যা প্রায়শই অন্যান্য টুল এবং এসডিকে-র প্রোজেক্টের পরিচয় ও অনুমতি যাচাই করার জন্য প্রয়োজন হয়।

৪. এজেন্ট ডেভেলপমেন্ট কিট-এর পরিচিতি

এজেন্টিক অ্যাপ্লিকেশন নির্মাণকারী ডেভেলপারদের জন্য এজেন্ট ডেভেলপমেন্ট কিট বেশ কিছু গুরুত্বপূর্ণ সুবিধা প্রদান করে:

  1. মাল্টি-এজেন্ট সিস্টেম : একটি শ্রেণিবিন্যাসে একাধিক বিশেষায়িত এজেন্টকে একত্রিত করে মডিউলার এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করুন। জটিল সমন্বয় এবং দায়িত্ব অর্পণ সক্ষম করুন।
  2. সমৃদ্ধ টুল ইকোসিস্টেম : এজেন্টদের বিভিন্ন ক্ষমতা দিয়ে সজ্জিত করুন: আগে থেকে তৈরি টুল (সার্চ, কোড এক্সিকিউশন, ইত্যাদি) ব্যবহার করুন, কাস্টম ফাংশন তৈরি করুন, থার্ড-পার্টি এজেন্ট ফ্রেমওয়ার্ক (LangChain, CrewAI) থেকে টুল ইন্টিগ্রেট করুন, অথবা এমনকি অন্যান্য এজেন্টকেও টুল হিসেবে ব্যবহার করুন।
  3. নমনীয় অর্কেস্ট্রেশন : অনুমানযোগ্য পাইপলাইনের জন্য ওয়ার্কফ্লো এজেন্ট ( SequentialAgent , ParallelAgent , এবং LoopAgent ) ব্যবহার করে ওয়ার্কফ্লো নির্ধারণ করুন, অথবা অভিযোজিত আচরণের জন্য এলএলএম-চালিত ডাইনামিক রাউটিং ( LlmAgent ট্রান্সফার) কাজে লাগান।
  4. সমন্বিত ডেভেলপার অভিজ্ঞতা : একটি শক্তিশালী CLI এবং একটি ইন্টারেক্টিভ ডেভ UI ব্যবহার করে স্থানীয়ভাবে ডেভেলপ, টেস্ট এবং ডিবাগ করুন। ইভেন্ট, স্টেট এবং এজেন্ট এক্সিকিউশন ধাপে ধাপে পর্যবেক্ষণ করুন।
  5. অন্তর্নির্মিত মূল্যায়ন : পূর্বনির্ধারিত টেস্ট কেসগুলোর সাথে চূড়ান্ত প্রতিক্রিয়ার গুণমান এবং ধাপে ধাপে কার্য সম্পাদনের গতিপথ উভয়ই মূল্যায়ন করে এজেন্টের কর্মক্ষমতা পদ্ধতিগতভাবে যাচাই করুন।
  6. ডেপ্লয়মেন্টের জন্য প্রস্তুত : আপনার এজেন্টগুলোকে কন্টেইনারাইজ করে যেকোনো জায়গায় ডেপ্লয় করুন – স্থানীয়ভাবে চালান, Vertex AI Agent Engine-এর সাহায্যে স্কেল করুন, অথবা Cloud Run বা Docker ব্যবহার করে কাস্টম ইনফ্রাস্ট্রাকচারে ইন্টিগ্রেট করুন।

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

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

e97ad3e26ceb7a2f.png

চিত্র ১: এডিকে (এজেন্ট ডেভেলপমেন্ট কিট) -এর অবস্থান

৫. ভার্টেক্স এআই এজেন্ট ইঞ্জিনের পরিচিতি

ভার্টেক্স এআই এজেন্ট ইঞ্জিন হলো গুগল ক্লাউডে এজেন্ট স্থাপন করার জন্য একটি সম্পূর্ণ পরিচালিত পরিষেবা। ভার্টেক্স এআই এজেন্ট ইঞ্জিনের সাহায্যে ডেভেলপাররা ভার্টেক্স এআই-তে ওপেন সোর্স এআই এজেন্ট ( যেমন ADK (এজেন্ট ডেভেলপমেন্ট কিট) , LangChain, LangGraph, CrewAI, AutoGen এবং আরও অনেক কিছু!) তৈরি, কাস্টমাইজ, স্থাপন, পরিবেশন এবং পরিচালনা করতে পারেন।

এজেন্ট ইঞ্জিন ব্যবহারকারীর ডেটা, যা এজেন্ট মেমরি নামেও পরিচিত, তা পরিচালনা করার জন্য পরিষেবা প্রদান করে। বর্তমানে দুই ধরনের মেমরি পরিষেবা উপলব্ধ রয়েছে।

  • স্বল্পমেয়াদী স্মৃতি : এজেন্ট ইঞ্জিন সেশনের মাধ্যমে আপনি একটি একক সেশনের মধ্যে চলমান কথোপকথনের ইতিহাস (অবস্থা) স্বল্পমেয়াদী স্মৃতি হিসেবে সংরক্ষণ, পরিচালনা এবং পুনরুদ্ধার করতে পারেন।
  • দীর্ঘমেয়াদী স্মৃতি : এজেন্ট ইঞ্জিন মেমরি ব্যাংকের সাহায্যে স্মৃতি (অবস্থা) সংরক্ষণ, রূপান্তর এবং পুনরুদ্ধার করুন, বিশেষত একাধিক সেশন জুড়ে দীর্ঘমেয়াদী স্মৃতি হিসেবে।

আপনি ক্লাউড রান বা জিকেই-এর মতো অন্যান্য গুগল ক্লাউড পরিষেবাগুলিতেও এজেন্ট স্থাপন করতে পারেন, তবে নিম্নলিখিত ব্যবহারের ক্ষেত্রগুলির জন্য আপনার ভার্টেক্স এআই এজেন্ট ইঞ্জিন ব্যবহার করার কথা বিবেচনা করা উচিত।

  • স্টেটফুল পরিচালিত রানটাইম : আপনার এজেন্ট ডেপ্লয়মেন্টের জন্য যদি একটি স্টেটফুল, সম্পূর্ণ পরিচালিত রানটাইমের প্রয়োজন হয় , তবে ভার্টেক্স এআই এজেন্ট ইঞ্জিন একটি ভালো বিকল্প, কারণ এটি এআই এজেন্টদের জন্য সেশন ম্যানেজমেন্ট, পার্সিস্টেন্সের মতো সাধারণ কাজগুলোকে অ্যাবস্ট্রাক্ট করে।
  • কোড এক্সিকিউশন : ব্যবহারকারীর সেশন চলাকালীন যদি আপনার এজেন্টের ডায়নামিকভাবে তৈরি হওয়া কোনো কোড এক্সিকিউট করার প্রয়োজন হয়, তবে এজেন্ট ইঞ্জিন একটি সুরক্ষিত স্যান্ডবক্স প্রদান করে যেখানে আপনি কোডটি এক্সিকিউট করতে পারেন।
  • নমনীয় দীর্ঘমেয়াদী স্মৃতি : আপনার এজেন্টদের জন্য যদি নমনীয় দীর্ঘমেয়াদী স্মৃতির প্রয়োজন হয়, তবে Vertex AI Agent Engine-এর সাথে ব্যবহারযোগ্য Vertex AI Memory Bank আপনার ব্যবহারকারীর তথ্য মনে রাখার একটি নমনীয় উপায় প্রদান করতে পারে, যা বিভিন্ন সেশন জুড়ে ব্যবহার করা যায়।

একটি নমনীয় অ্যাপ্লিকেশন আর্কিটেকচার তৈরি করতে আপনি ভার্টেক্স এআই এজেন্ট ইঞ্জিনকে ক্লাউড রানের মতো অন্যান্য রানটাইমের সাথেও যুক্ত করতে পারেন। নিচে বিভিন্ন সার্ভিস ব্যবহার করে একটি এজেন্ট তৈরির রেফারেন্স আর্কিটেকচারের উদাহরণ দেওয়া হলো।

d8eb74a6d8a055f9.png

চিত্র ২: একাধিক পরিষেবা ব্যবহার করে এজেন্ট তৈরির একটি নমুনা রেফারেন্স আর্কিটেকচার।

৬. এ২এ-এর পরিচিতি

এজেন্ট২এজেন্ট (A2A) প্রোটোকল হলো একটি উন্মুক্ত মান, যা বিভিন্ন ফ্রেমওয়ার্ক, ভেন্ডর এবং ডোমেইনের স্বায়ত্তশাসিত এআই এজেন্টদের মধ্যে নির্বিঘ্ন ও নিরাপদ যোগাযোগ এবং সহযোগিতা সক্ষম করার জন্য ডিজাইন করা হয়েছে।

  1. সার্বজনীন আন্তঃকার্যক্ষমতা: A2A এজেন্টদেরকে তাদের অন্তর্নিহিত প্রযুক্তি নির্বিশেষে একসাথে কাজ করার সুযোগ দেয়, যা একটি সত্যিকারের মাল্টি-এজেন্ট ইকোসিস্টেম গড়ে তোলে। এর অর্থ হলো, বিভিন্ন প্ল্যাটফর্মে বিভিন্ন কোম্পানির তৈরি এজেন্টরা একে অপরের সাথে যোগাযোগ ও সমন্বয় করতে পারে।
  2. সক্ষমতা আবিষ্কার: এজেন্টরা "এজেন্ট কার্ড" (JSON ডকুমেন্ট) ব্যবহার করে তাদের সক্ষমতা প্রচার করতে পারে, যেখানে তাদের পরিচয়, সমর্থিত A2A বৈশিষ্ট্য, দক্ষতা এবং প্রমাণীকরণের প্রয়োজনীয়তা বর্ণনা করা থাকে। এটি অন্যান্য এজেন্টদের একটি নির্দিষ্ট কাজের জন্য সবচেয়ে উপযুক্ত এজেন্টকে খুঁজে বের করতে এবং নির্বাচন করতে সাহায্য করে।
  3. ডিফল্টরূপে সুরক্ষিত: নিরাপত্তা একটি মূল নীতি। A2A নিরাপদ মিথস্ক্রিয়া নিশ্চিত করতে এবং সংবেদনশীল ডেটা সুরক্ষিত রাখতে HTTPS/TLS, JWT, OIDC এবং API কী-এর মতো স্ট্যান্ডার্ড ব্যবহার করে এন্টারপ্রাইজ-গ্রেড প্রমাণীকরণ এবং অনুমোদন ব্যবস্থা অন্তর্ভুক্ত করে।
  4. মাধ্যম-নিরপেক্ষ: এই প্রোটোকলটি টেক্সট, অডিও এবং ভিডিও স্ট্রিমিং-এর পাশাপাশি ইন্টারেক্টিভ ফর্ম ও এমবেডেড আইফ্রেমসহ বিভিন্ন যোগাযোগ মাধ্যম সমর্থন করে। এই নমনীয়তা এজেন্টদেরকে কাজ এবং ব্যবহারকারীর জন্য সবচেয়ে উপযুক্ত ফরম্যাটে তথ্য আদান-প্রদান করতে সাহায্য করে।
  5. কাঠামোগত টাস্ক ম্যানেজমেন্ট: A2A টাস্ক অর্পণ, পর্যবেক্ষণ এবং সম্পন্ন করার জন্য সুস্পষ্ট প্রোটোকল নির্ধারণ করে। এটি সম্পর্কিত টাস্কগুলোকে একত্রিত করতে এবং অনন্য টাস্ক আইডি ব্যবহার করে বিভিন্ন এজেন্টের মধ্যে সেগুলোকে পরিচালনা করতে সহায়তা করে। টাস্কগুলো নির্দিষ্ট জীবনচক্রের (যেমন, জমা দেওয়া, চলমান, সম্পন্ন) মধ্য দিয়ে পরিবর্তিত হতে পারে।
  6. অস্বচ্ছ কার্যসম্পাদন: এর একটি উল্লেখযোগ্য বৈশিষ্ট্য হলো, এজেন্টদের অন্য এজেন্টদের কাছে তাদের অভ্যন্তরীণ যুক্তি প্রক্রিয়া, স্মৃতি বা নির্দিষ্ট সরঞ্জাম প্রকাশ করার প্রয়োজন হয় না। তারা কেবল তাদের আহ্বানযোগ্য পরিষেবাগুলোই প্রকাশ করে, যা মডুলারিটি এবং গোপনীয়তাকে উৎসাহিত করে।
  7. বিদ্যমান মানদণ্ডের উপর ভিত্তি করে নির্মিত: A2A রিয়েল-টাইম স্ট্রিমিংয়ের জন্য HTTP, সার্ভার-সেন্ট ইভেন্টস (SSE) এবং কাঠামোগত ডেটা আদান-প্রদানের জন্য JSON-RPC-এর মতো প্রতিষ্ঠিত ওয়েব প্রযুক্তি ব্যবহার করে, যা এটিকে বিদ্যমান আইটি পরিকাঠামোর সাথে একীভূত করা সহজ করে তোলে।
  8. অ্যাসিঙ্ক্রোনাস কমিউনিকেশন: প্রোটোকলটি অ্যাসিঙ্ক্রোনাস কমিউনিকেশনকে প্রাথমিক বিবেচনায় রেখে ডিজাইন করা হয়েছে, যা নমনীয়ভাবে কাজের অগ্রগতি সহজ করে এবং সংযোগ ক্রমাগত বজায় না থাকলেও আপডেটের জন্য পুশ নোটিফিকেশন সক্ষম করে।

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

এই ল্যাবে, আপনি একটি মাল্টি-এজেন্ট অ্যাপ্লিকেশন তৈরি করবেন যা আপনার নির্দেশনা অনুযায়ী একটি ছবি তৈরি করবে এবং আপনাকে দেখানোর আগে ছবিটির মূল্যায়ন করবে।

সিস্টেমটি image_scoring নামক একটি প্রধান এজেন্ট দ্বারা গঠিত, যা সম্পূর্ণ প্রক্রিয়াটি পরিচালনা করে। এই প্রধান এজেন্টের image_generation_scoring_agent নামক একটি সাব-এজেন্ট রয়েছে, যার আবার আরও নির্দিষ্ট কাজের জন্য নিজস্ব সাব-এজেন্ট আছে। এটি একটি স্তরক্রমিক সম্পর্ক তৈরি করে, যেখানে প্রধান এজেন্ট তার সাব-এজেন্টদের কাছে কাজ অর্পণ করে। bfed5e21e0b66d26.png

চিত্র ৩: এজেন্টের সামগ্রিক প্রবাহ।

সকল এজেন্টের তালিকা

এজেন্ট

উদ্দেশ্য

উপ-এজেন্ট

ইমেজ_স্কোরিং (প্রধান এজেন্ট)

এটিই হলো মূল এজেন্ট যা সামগ্রিক কার্যপ্রবাহ পরিচালনা করে। একটি সমাপ্তির শর্ত পূরণ না হওয়া পর্যন্ত এটি একটি লুপের মধ্যে image_generation_scoring_agent এবং checker_agent-কে বারবার চালায়।

ইমেজ_জেনারেশন_স্কোরিং_এজেন্ট
চেকার_এজেন্ট_ইনস্ট্যান্স

ইমেজ_জেনারেশন_স্কোরিং_এজেন্ট (ইমেজ_স্কোরিং-এর সাব-এজেন্ট)

এই এজেন্টটি ছবি তৈরি এবং তার স্কোর নির্ধারণের মূল যুক্তির জন্য দায়ী। এই কাজটি সম্পন্ন করার জন্য এটি পর্যায়ক্রমে তিনটি উপ-এজেন্টকে কার্যকর করে।

ইমেজ_জেনারেশন_প্রম্পট_এজেন্ট
ছবি_তৈরির_এজেন্ট
স্কোরিং_ইমেজ_প্রম্পট

চেকার_এজেন্ট_ইনস্ট্যান্স (ইমেজ_স্কোরিং-এর সাব-এজেন্ট)

এই এজেন্টটি পরীক্ষা করে দেখে যে ইমেজ স্কোরিং প্রক্রিয়াটি চলতে থাকবে নাকি বন্ধ হয়ে যাবে। এটি সমাপ্তির শর্তটি মূল্যায়ন করার জন্য check_tool_condition টুলটি ব্যবহার করে।

-

চেকার_এজেন্ট_ইনস্ট্যান্স (ইমেজ_স্কোরিং-এর সাব-এজেন্ট)

এই এজেন্টটি ছবি তৈরির জন্য প্রম্পট তৈরিতে বিশেষজ্ঞ। এটি একটি ইনপুট টেক্সট গ্রহণ করে এবং ছবি তৈরির মডেলের জন্য উপযুক্ত একটি বিস্তারিত প্রম্পট তৈরি করে।

-

ইমেজ_জেনারেশন_প্রম্পট_এজেন্ট (ইমেজ_জেনারেশন_স্কোরিং_এজেন্ট-এর সাব-এজেন্ট)

এই এজেন্টটি ছবি তৈরির জন্য প্রম্পট তৈরিতে বিশেষজ্ঞ। এটি একটি ইনপুট টেক্সট গ্রহণ করে এবং ছবি তৈরির মডেলের জন্য উপযুক্ত একটি বিস্তারিত প্রম্পট তৈরি করে।

-

scoring_images_prompt (image_generation_scoring_agent-এর সাব-এজেন্ট):

এই এজেন্টটি বিভিন্ন মানদণ্ডের উপর ভিত্তি করে ছবি মূল্যায়ন ও স্কোর প্রদানে বিশেষজ্ঞ। এটি তৈরি করা ছবিটি গ্রহণ করে সেটিকে একটি স্কোর প্রদান করে।

-

ব্যবহৃত সমস্ত সরঞ্জামের তালিকা

সরঞ্জাম

বর্ণনা

ব্যবহারকারী এজেন্ট

চেক_টুল_কন্ডিশন

এই টুলটি পরীক্ষা করে দেখে যে লুপ শেষ হওয়ার শর্ত পূরণ হয়েছে কিনা অথবা সর্বোচ্চ সংখ্যক পুনরাবৃত্তি সম্পন্ন হয়েছে কিনা। যদি এর কোনো একটি সত্য হয়, তবে এটি লুপটি থামিয়ে দেয়।

চেকার_এজেন্ট_ইনস্ট্যান্স

ছবি তৈরি করুন

এই টুলটি Imagen 3 মডেল ব্যবহার করে ছবি তৈরি করে। এটি তৈরি করা ছবিগুলো গুগল ক্লাউড স্টোরেজ বাকেটে সংরক্ষণও করতে পারে।

ছবি_তৈরির_এজেন্ট

নীতি পান

এই টুলটি একটি JSON ফাইল থেকে পলিসি সংগ্রহ করে। এই পলিসিটি image_generation_prompt_agent দ্বারা ইমেজ জেনারেশন প্রম্পট তৈরি করতে এবং scoring_images_prompt দ্বারা ইমেজগুলোকে স্কোর করতে ব্যবহৃত হয়।

ছবি_তৈরির_এজেন্ট

ছবি পান

এই টুলটি তৈরি হওয়া ইমেজ আর্টিফ্যাক্টটি লোড করে, যাতে সেটির স্কোর নির্ধারণ করা যায়।

স্কোরিং_ইমেজ_প্রম্পট

সেট_স্কোর

এই টুলটি সেশন স্টেটে তৈরি হওয়া ছবিটির মোট স্কোর নির্ধারণ করে।

স্কোরিং_ইমেজ_প্রম্পট

৮. ADK ইনস্টল করুন এবং আপনার পরিবেশ সেট আপ করুন।

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

একটি ক্লাউড শেল এডিটর ট্যাব প্রস্তুত করুন

  1. সরাসরি ক্লাউড শেল এডিটর- এ যেতে এই লিঙ্কে ক্লিক করুন।
  2. চালিয়ে যান-এ ক্লিক করুন।
  3. ক্লাউড শেল অনুমোদন করার জন্য অনুরোধ করা হলে, 'Authorize'-এ ক্লিক করুন।
  4. এই ল্যাবের বাকি অংশ জুড়ে, আপনি ক্লাউড শেল এডিটর এবং ক্লাউড শেল টার্মিনাল ব্যবহার করে এই উইন্ডোটিকে আপনার IDE হিসেবে ব্যবহার করে কাজ করতে পারবেন।
  5. ক্লাউড শেল এডিটর-এ Terminal>New Terminal ব্যবহার করে একটি নতুন টার্মিনাল খুলুন। নিচের সমস্ত কমান্ড এই টার্মিনালে চালানো হবে।

এই ল্যাবের জন্য ADK এবং কোড স্যাম্পলগুলো ডাউনলোড ও ইনস্টল করুন।

  1. গিটহাব থেকে প্রয়োজনীয় সোর্স ক্লোন করতে এবং প্রয়োজনীয় লাইব্রেরিগুলো ইনস্টল করতে নিম্নলিখিত কমান্ডগুলো চালান। ক্লাউড শেল এডিটর-এ খোলা টার্মিনালে কমান্ডগুলো রান করুন।
#create the project directory
mkdir ~/imagescoring
cd ~/imagescoring
#clone the code in the local directory
git clone https://github.com/haren-bh/multiagenthandson.git
  1. আমরা পাইথন এনভায়রনমেন্ট তৈরি করতে uv ব্যবহার করব (ক্লাউড শেল এডিটর টার্মিনালে চালান):
#Install uv if you do not have installed yet
pip install uv

#Create the virtual environment
uv venv .adkvenv

source .adkvenv/bin/activate

#go to the project directory
cd ~/imagescoring/multiagenthandson

#install dependencies
uv pip install -r pyproject.toml
  1. আপনার যদি কোনো ক্লাউড স্টোরেজ বাকেট না থাকে, তাহলে গুগল ক্লাউড স্টোরেজে একটি নতুন বাকেট তৈরি করুন। আপনি gsutil কমান্ড ব্যবহার করেও বাকেটটি তৈরি করতে পারেন। এজেন্ট ইঞ্জিনকে গুগল ক্লাউড স্টোরেজে অ্যাক্সেস দিন (ক্লাউড শেল এডিটর টার্মিনালে চালান)।
# First, make sure your PROJECT_ID variable is set
PROJECT_ID=$(gcloud config get-value project)

# Now, create the bucket with a unique name
# We'll use the project ID to help ensure uniqueness
gsutil mb gs://${PROJECT_ID}-imagescoring-bucket

#Now lets give Agent Engine the permission to access Cloud Storage
# 1. Get the current Project ID (text) and Project Number (numeric)
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

# 2. Construct the Reasoning Engine Service Account email
SA_EMAIL="service-${PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com"
# 3. Create Agent Engine Service account if not already created
gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_NUMBER}

# 3. Grant GCS Access
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SA_EMAIL" --role="roles/storage.objectUser" --condition=None
  1. এডিটরে View->Toggle hidden files-এ যান। এরপর image_scoring ফোল্ডারে নিম্নলিখিত বিষয়বস্তু সহ একটি .env ফাইল তৈরি করুন। আপনার প্রোজেক্টের নাম এবং ক্লাউড স্টোরেজ বাকেটের মতো প্রয়োজনীয় বিবরণ যোগ করুন (Cloud Shell Editor Terminal-এ রান করুন)।
#go to image_scoring folder
cd ~/imagescoring/multiagenthandson/image_scoring
cat <<EOF>> .env
GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project)
GOOGLE_CLOUD_LOCATION=us-central1
GOOGLE_CLOUD_STORAGE_BUCKET=$(gcloud config get-value project)-imagescoring-bucket
GCS_BUCKET_NAME=$(gcloud config get-value project)-imagescoring-bucket
SCORE_THRESHOLD=40
IMAGEN_MODEL="imagen-3.0-generate-002"
GENAI_MODEL="gemini-2.5-flash"
EOF
  1. ক্লাউড শেল এডিটর মেনুতে, ফাইল > ওপেন ফোল্ডার নির্বাচন করুন।
  2. যে বক্সটি পপ-আপ হবে, সেখানে আপনার ইউজারনেমের পরে imagescoring/ এই ফোল্ডারের তথ্যটি যোগ করুন। OK- তে ক্লিক করুন। এখন আপনি বাম দিকের এক্সপ্লোরার প্যানে আপনার সম্পূর্ণ প্রোজেক্টের কাঠামো দেখতে পাবেন।
  3. এক্সপ্লোরার সাইড প্যানে image_scoring ফোল্ডারে যান। agent.py ফাইলটি খুলতে ক্লিক করুন এবং সেখানে এজেন্টের কাঠামোটি দেখুন। এই এজেন্টের মধ্যে রুট এজেন্টটি রয়েছে, যা অন্যান্য সাব-এজেন্টগুলোর সাথে সংযোগ স্থাপন করবে। bb0c3b10a31e9d14.png

চিত্র ৪: এক্সপ্লোরার সাইড প্যান থেকে দেখা যায় এমন ফোল্ডার কাঠামো। আপনি যেকোনো ফাইলের বিষয়বস্তু দেখতে সেটির উপর ক্লিক করতে পারেন।

  1. টার্মিনালে টপ ডিরেক্টরি `multiagenthandson`- এ ফিরে যান এবং এজেন্টটিকে স্থানীয়ভাবে চালানোর জন্য নিম্নলিখিত কমান্ডটি চালান (ক্লাউড শেল এডিটর টার্মিনালে চালান)।
#go to the directory multiagenthandson
cd ~/imagescoring/multiagenthandson
# Run the following command to run agents locally
adk web

dfda0b40b44e9230.png

চিত্র ৫: ADK অ্যাপ্লিকেশন চালু হওয়া

  1. ADK-এর ব্রাউজার ভিত্তিক GUI ক্লায়েন্টটি খোলার জন্য টার্মিনালে প্রদর্শিত http:// ইউআরএল-এর উপর Ctrl+Click (MacOS-এর জন্য CMD+Click ) করুন। এটি চিত্র ৫-এর মতো দেখতে হবে।
  2. উপরের বাম দিকের ড্রপডাউন মেনু থেকে 'image_scoring' নির্বাচন করুন (চিত্র ৫ দেখুন)। এবার চলুন কিছু ছবি তৈরি করা যাক! ছবিগুলো আপনি গুগল ক্লাউড স্টোরেজ বাকেটেও খুঁজে পাবেন। নিচের নির্দেশাবলী অথবা আপনার নিজের নির্দেশাবলী ব্যবহার করে দেখুন।
  • সূর্যাস্তের সময় একটি শান্তিপূর্ণ পাহাড়ি দৃশ্য।
  • একটি বিড়াল সাইকেল চালাচ্ছে

c159623ad45f37cf.png

চিত্র ৬: নমুনা আউটপুট

৯. এজেন্ট ইঞ্জিনে স্থাপন করুন

এখন আমরা এজেন্টটিকে এজেন্ট ইঞ্জিনে ডেপ্লয় করব। এজেন্ট ইঞ্জিন হলো GCP-তে এজেন্ট ডেপ্লয় করার জন্য একটি সম্পূর্ণ পরিচালিত পরিষেবা। এজেন্ট ইঞ্জিন ADK (এজেন্ট ডেভেলপমেন্ট কিট) -এর সাথে সামঞ্জস্যপূর্ণ, তাই ADK (এজেন্ট ডেভেলপমেন্ট কিট) দিয়ে তৈরি এজেন্টগুলো এজেন্ট ইঞ্জিনে ডেপ্লয় করা যায়।

  1. ক্লাউড শেল এডিটর টার্মিনালে নিচের ধাপগুলোতে যাওয়ার আগে, Ctrl+C চেপে ADK সার্ভারটি শাটডাউন করুন।
  2. পোয়েট্রি ব্যবহার করে requirements.txt ফাইলটি তৈরি করুন। পোয়েট্রি requirements.txt ফাইলটি তৈরি করার জন্য pyproject.toml ব্যবহার করবে। কমান্ডটি চালানোর পর requirements.txt ফাইলটি তৈরি হয়েছে কিনা তা পরীক্ষা করুন (ক্লাউড শেল এডিটর টার্মিনালে চালান)।
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson

# install poetry-plugin-export
uv pip install poetry-plugin-export

#Create requirements.txt file
python3 -m poetry export -f requirements.txt --output requirements.txt --without-hashes
  1. প্যাকেজটি তৈরি করুন। আমাদের অ্যাপটিকে একটি .whl পাইথন প্যাকেজে বান্ডল করতে হবে। আমরা এর জন্য পোয়েট্রি ব্যবহার করব। কমান্ডটি চালানোর পর নিশ্চিত করুন যে একটি dist ফোল্ডার তৈরি হয়েছে এবং তার মধ্যে .whl ফাইলটি রয়েছে (ক্লাউড শেল এডিটর টার্মিনালে চালান)।
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson

#Create python package, to create whl file
python3 -m poetry build
  1. এখন আমরা সেই স্ক্রিপ্টটি প্রস্তুত করব যা আমাদের ইমেজ-স্কোরিং এজেন্টকে এজেন্ট ইঞ্জিন সার্ভিসে ডেপ্লয় করবে। `deploy` ডিরেক্টরির মধ্যে, `Cloud Shell Editor` সাইড প্যানে `deploy.py` ফাইলটি খুঁজুন এবং এটি খুলতে ক্লিক করুন। এর বিষয়বস্তু নিম্নরূপভাবে যাচাই করুন।
import vertexai
from image_scoring.agent import root_agent
import os
import glob # To easily find the wheel file
from dotenv import load_dotenv

# Load environment variables from image_scoring/.env
env_path = os.path.join(os.path.dirname(__file__), "..", "image_scoring", ".env")
load_dotenv(env_path)

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
LOCATION = os.getenv("GOOGLE_CLOUD_LOCATION", "us-central1")
STAGING_BUCKET = f"gs://{os.getenv('GOOGLE_CLOUD_STORAGE_BUCKET')}"

from vertexai import agent_engines

client=vertexai.Client(
    project=PROJECT_ID,
    location=LOCATION,
)
remote_app = client.agent_engines.create(
    agent=root_agent,
    config={
        "display_name": "image-scoring",
        "staging_bucket": STAGING_BUCKET,
        "requirements": open(os.path.join(os.getcwd(), "requirements.txt")).readlines() + ["./dist/image_scoring-0.1.0-py3-none-any.whl"],
        "extra_packages": [
            "./dist/image_scoring-0.1.0-py3-none-any.whl",
        ],     "env_vars":{"GCS_BUCKET_NAME":os.getenv('GOOGLE_CLOUD_STORAGE_BUCKET')}
    }
)
print(f"DEBUG: AgentEngine attributes: {dir(remote_app)}")
try:
    print(remote_app.api_resource.name)
except AttributeError:
    print("Could not find resource_name, check DEBUG output above.")
  1. আমরা এখন ডিপ্লয় স্ক্রিপ্টটি চালাতে পারি। প্রথমে টপ ফোল্ডার ' multiagenthandson'- এ যান (ক্লাউড শেল এডিটর টার্মিনালে চালান)।
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson

#run deploy script from the parent folder containing deploy.py
python3 -m deploy.deploy

স্থাপন করার পরে আপনি নীচের মতো কিছু দেখতে পাবেন, 57d86995465cdcda.png

চিত্র ৭: নমুনা আউটপুট

  1. এখন চলুন ডেপ্লয় করা এজেন্টটি পরীক্ষা করা যাক। রিমোটলি ডেপ্লয় করা এজেন্ট ইঞ্জিনটি পরীক্ষা করার জন্য প্রথমে টার্মিনালে থাকা ডেপ্লয় আউটপুট থেকে এজেন্টের লোকেশনটি কপি করুন। এটি দেখতে অনেকটা এইরকম হবে, projects/85469421903/locations/us-central1/reasoningEngines/7369674597261639680
    ক্লাউড শেল এডিটর সাইড প্যানে testclient ফোল্ডারে যান, remote_test.py ফাইলটি খুলতে সেটিতে ক্লিক করুন, তারপর নিচের লাইনগুলো সম্পাদনা করুন:
REASONING_ENGINE_ID = "projects/xxx/locations/us-central1/reasoningEngines/xxx"  # TODO: Change this
  1. `multiagenthandson` রুট ডিরেক্টরি থেকে, ক্লাউড শেল এডিটর টার্মিনালে নিম্নলিখিত কমান্ডটি চালান। আপনার আউটপুট চিত্র ৮-এর অনুরূপ হওয়া উচিত।
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson

#execute remote_test.py
python3 -m testclient.remote_test

c612b8a79a7120ae.png

চিত্র ৮: নমুনা আউটপুট

১০. একজন A2A এজেন্ট তৈরি করুন

এই ধাপে আমরা পূর্ববর্তী ধাপগুলিতে তৈরি করা এজেন্টের উপর ভিত্তি করে একটি সাধারণ A2A এজেন্ট তৈরি করব। বিদ্যমান ADK (এজেন্ট ডেভেলপমেন্ট কিট) এজেন্টগুলিকে A2A প্রোটোকলের অধীনে প্রকাশ করা যেতে পারে। এই ধাপে আপনি এই মূল বিষয়গুলি শিখবেন।

  • A2A প্রোটোকলের প্রাথমিক বিষয়গুলো জানুন।
  • ADK এবং A2A প্রোটোকল কীভাবে একে অপরের সাথে কাজ করে তা জানুন।
  • A2A প্রোটোকলের সাথে কীভাবে যোগাযোগ করতে হয় তা জানুন।

এই হাতে-কলমে কাজে আমরা image_scoring_adk_a2a_server ফোল্ডারের কোডটি ব্যবহার করব। কাজটি শুরু করার আগে অনুগ্রহ করে আপনার ডিরেক্টরি পরিবর্তন করে এই ফোল্ডারে যান (ক্লাউড শেল এডিটর টার্মিনালে চালান)।

#change directory to image_scoring_adk_a2a_server
cd ~/imagescoring/multiagenthandson/image_scoring_adk_a2a_server

#copy the env file
cp ~/imagescoring/multiagenthandson/image_scoring/.env remote_a2a/image_scoring

১. এ২এ এজেন্ট কার্ড তৈরি করুন

A2A প্রোটোকলের জন্য একটি এজেন্ট কার্ড প্রয়োজন, যাতে এজেন্ট সম্পর্কিত সমস্ত তথ্য থাকে, যেমন এজেন্টের সক্ষমতা, এজেন্ট ব্যবহারের নির্দেশিকা ইত্যাদি। একটি A2A এজেন্ট ডেপ্লয় করার পর, " .well-known/agent-card.json " লিঙ্কটি ব্যবহার করে এজেন্ট কার্ডটি দেখা যায়। ক্লায়েন্টরা এজেন্টদের কাছে অনুরোধ পাঠানোর জন্য এই তথ্য ব্যবহার করতে পারে।

remote_a2a/image_scoring ডিরেক্টরিতে যান এবং ক্লাউড শেল এডিটর সাইড প্যানে agents.json ফাইলটি খুঁজুন। ফাইলটি খুলতে ক্লিক করুন এবং যাচাই করুন যে এর বিষয়বস্তু নিম্নলিখিতের সাথে মেলে কিনা:

{
 "name": "image_scoring",
 "description": "Agent that generates images based on user prompts and scores their adherence to the prompt.",
 "url": "http://localhost:8001/a2a/image_scoring",
 "version": "1.0.0",
 "defaultInputModes": ["text/plain"],
 "defaultOutputModes": ["image/png", "text/plain"],
 "capabilities": {
   "streaming": true,
   "functions": true
 },
 "skills": [
   {
     "id": "generate_and_score_image",
     "name": "Generate and Score Image",
     "description": "Generates an image from a given text prompt and then evaluates how well the generated image adheres to the original prompt, providing a score.",
     "tags": ["image generation", "image scoring", "evaluation", "AI art"],
     "examples": [
       "Generate an image of a futuristic city at sunset",
       "Create an image of a cat playing a piano",
       "Show me an image of a serene forest with a hidden waterfall"
     ]
   }
 ]
}

২. A2A এজেন্ট তৈরি করুন। image_scoring_adk_a2a_server রুট ডিরেক্টরির ভিতরে, a2a_agent.py ফাইলটি আছে কিনা তা যাচাই করুন। আপনি ক্লাউড শেল এডিটর সাইড প্যানে ফাইলের নামে ক্লিক করে এটি খুলতে পারেন। এই ফাইলটি A2A এজেন্টের এন্ট্রি পয়েন্ট হিসেবে কাজ করে এবং এতে নিম্নলিখিত বিষয়বস্তু থাকা উচিত:

#change directory to image_scoring_adk_a2a_server
cd ~/imagescoring/multiagenthandson/image_scoring_adk_a2a_server
from google.adk.agents.remote_a2a_agent import RemoteA2aAgent

root_agent = RemoteA2aAgent(
   name="image_scoring",
   description="Agent to give interesting facts.",
   agent_card="http://localhost:8001/a2a/image_scoring/.well-known/agent.json",
  
   # Optional configurations
   timeout=300.0,          # HTTP timeout (seconds)
   httpx_client=None,      # Custom HTTP client
)

৩. A2A এজেন্ট চালান

এখন আমরা এজেন্টটি চালানোর জন্য প্রস্তুত! এজেন্টটি চালানোর জন্য , image_scoring_adk_a2a_server টপ ফোল্ডারের ভেতর থেকে নিম্নলিখিত কমান্ডটি চালান (ক্লাউড শেল এডিটর টার্মিনালে রান করুন)।

#following command runs the ADK agent as a2a agent
adk api_server --a2a --port 8001 remote_a2a

৪. এ২এ এজেন্ট পরীক্ষা করুন

এজেন্টটি চালু হয়ে গেলে আমরা এখন এজেন্টটি পরীক্ষা করতে পারি। প্রথমেই, চলুন এজেন্ট কার্ডটি পরীক্ষা করে নেওয়া যাক। Terminal>New Terminal ব্যবহার করে একটি নতুন টার্মিনাল খুলুন এবং নিম্নলিখিত কমান্ডটি চালান (নতুন খোলা Cloud Shell Editor টার্মিনালে এটি চালান)।

#Execute the following 
curl http://localhost:8001/a2a/image_scoring/.well-known/agent.json

উপরের কমান্ডটি চালালে আমাদের A2A এজেন্টের এজেন্ট কার্ডটি দেখা যাবে, যা মূলত আগের ধাপে তৈরি করা agent.json ফাইলের বিষয়বস্তু।

চলুন এখন এজেন্টের কাছে একটি অনুরোধ পাঠাই। এজেন্টের কাছে অনুরোধ পাঠাতে আমরা `curl` ব্যবহার করতে পারি (নতুন খোলা `Cloud Shell Editor` টার্মিনালে এটি চালান)।

curl -X POST   http://localhost:8001/a2a/image_scoring   -H 'Content-Type: application/json'   -d '{
    "id": "uuid-123",
    "params": {
      "message": {
        "messageId": "msg-456",
        "parts": [{"text": "Create an image of a cat"}],
        "role": "user"
      }
    }
  }'

উপরের অনুরোধে, আপনি " Create an image of a cat " লাইনটি পরিবর্তন করে প্রম্পটটি পরিবর্তন করতে পারেন। কমান্ডটি চালানোর পরে, আপনি নির্দিষ্ট গুগল ক্লাউড স্টোরেজে আউটপুট ছবিটি দেখতে পারবেন।

১১. পরিষ্কার করুন

এবার আমরা যা তৈরি করেছি তা পরিষ্কার করে ফেলি।

  1. আমরা এইমাত্র যে Vertex AI Agent Engine সার্ভারটি তৈরি করেছি, সেটি ডিলিট করুন। Google Cloud Console-এর সার্চ বারে Vertex AI টাইপ করে Vertex AI-তে যান। বাম দিকে থাকা Agent Engine- এ ক্লিক করুন। ডিলিট-এ ক্লিক করে আপনি Agent-টি ডিলিট করতে পারেন। 98e8aac9efc8e32a.png

চিত্র ৯: আপনি গুগল ক্লাউড কনসোল থেকে ভার্টেক্স এআই এজেন্ট ইঞ্জিন ইনস্ট্যান্সগুলো মুছে ফেলতে পারেন।

  1. ক্লাউড শেলে ফাইলগুলো মুছে ফেলুন
#Execute the following to delete the files
cd ~
rm -R ~/imagescoring
  1. বাকেটটি মুছে ফেলুন। আপনি GCP কনসোল->ক্লাউড স্টোরেজ-এ গিয়ে আপনার বাকেটটি নির্বাচন করে মুছে ফেলতে পারেন। 913625e5969c9104.png

চিত্র ১০: বাকেটটি মুছে ফেলা

১২. উপসংহার

অভিনন্দন! আপনি সফলভাবে ভার্টেক্স এআই এজেন্ট ইঞ্জিনে একটি মাল্টি-এজেন্ট এডিকে (এজেন্ট ডেভেলপমেন্ট কিট) অ্যাপ্লিকেশন ডেপ্লয় করেছেন। এটি একটি উল্লেখযোগ্য সাফল্য যা একটি আধুনিক ক্লাউড-নেটিভ অ্যাপ্লিকেশনের মূল জীবনচক্রকে অন্তর্ভুক্ত করে এবং আপনার নিজস্ব জটিল এজেন্টিক সিস্টেম ডেপ্লয় করার জন্য একটি মজবুত ভিত্তি প্রদান করে।

পুনরালোচনা

এই ল্যাবে আপনি শিখেছেন:

দরকারী সম্পদ

প্রোটোটাইপ থেকে উৎপাদন পর্যন্ত

এই ল্যাবটি ‘প্রোডাকশন-রেডি এআই উইথ গুগল ক্লাউড’ লার্নিং পাথ- এর একটি অংশ।