1. इस लैब का मकसद
इस हैंड्स-ऑन लैब में, ADK (Agent Development Kit) का इस्तेमाल करके एक मल्टी एजेंट ऐप्लिकेशन बनाया जाएगा. यह ऐप्लिकेशन, आपके प्रॉम्प्ट के आधार पर एक इमेज जनरेट करेगा और आपके प्रॉम्प्ट के हिसाब से उसका आकलन करेगा. अगर इमेज, प्रॉम्प्ट में बताई गई ज़रूरी शर्तों को पूरा नहीं करती है, तो एजेंट लगातार इमेज जनरेट करता रहेगा. ऐसा तब तक होगा, जब तक आपकी ज़रूरी शर्तों के मुताबिक इमेज जनरेट नहीं हो जाती. इस हैंड्स-ऑन में मौजूद हर एजेंट का एक ही मकसद है. एजेंट, पूरे मकसद को पूरा करने के लिए एक-दूसरे के साथ मिलकर काम करते हैं. आपको ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करने और Agent Runtime में डिप्लॉय करने का तरीका बताया जाएगा.
आपको क्या सीखने को मिलेगा
- ADK (Agent Development Kit) के बारे में बुनियादी जानकारी पाएं. साथ ही, मल्टी-एजेंट सिस्टम बनाने का तरीका जानें.
- एजेंट रनटाइम में एजेंटों को आसानी से डिप्लॉय और इस्तेमाल करने का तरीका जानें.
- A2A प्रोटोकॉल के बारे में बुनियादी बातें समझना
- ओपन एजेंट बनाने के लिए, A2A प्रोटोकॉल और ADK (एजेंट डेवलपमेंट किट) को एक साथ इस्तेमाल करने का तरीका जानें.
2. प्रोजेक्ट सेटअप करना
- अगर आपके पास पहले से कोई ऐसा प्रोजेक्ट नहीं है जिसका इस्तेमाल किया जा सके, तो आपको GCP Console में एक नया प्रोजेक्ट बनाना होगा.
- इस लैब में, हम अपने टास्क पूरे करने के लिए GCP Cloud Shell का इस्तेमाल करेंगे. Cloud Shell खोलें और Cloud Shell का इस्तेमाल करके प्रोजेक्ट सेट करें.
- यहां क्लिक करके GCP Cloud Shell खोलें. Cloud Shell . अगर आपको "शेल को अनुमति दें" पॉप-अप दिखता है, तो Cloud Shell Editor को अनुमति देने के लिए क्लिक करें.
- Cloud Shell टर्मिनल में, यहां दी गई कमांड का इस्तेमाल करके यह देखा जा सकता है कि प्रोजेक्ट की पुष्टि पहले ही हो चुकी है या नहीं.
gcloud auth list
- अपने प्रोजेक्ट की पुष्टि करने के लिए, Cloud Shell में यह कमांड चलाएं
gcloud config list project
- प्रोजेक्ट आईडी को कॉपी करें और इसे सेट करने के लिए, इस निर्देश का इस्तेमाल करें
gcloud config set project <YOUR_PROJECT_ID>
- अगर आपको अपना प्रोजेक्ट आईडी याद नहीं है, तो
gcloud projects list
3. एपीआई चालू करें
इस लैब को चलाने के लिए, हमें कुछ एपीआई सेवाएं चालू करनी होंगी. Cloud Shell में यह कमांड चलाएं.
gcloud services enable aiplatform.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com
पेश है एपीआई
- Gemini Enterprise Agent Platform API (
aiplatform.googleapis.com) की मदद से, Gemini Enterprise Agent Platform प्लैटफ़ॉर्म को ऐक्सेस किया जा सकता है. इससे आपका ऐप्लिकेशन, Gemini मॉडल के साथ इंटरैक्ट कर सकता है. जैसे, टेक्स्ट जनरेट करना, चैट सेशन, और फ़ंक्शन कॉल करना. - Cloud Resource Manager API (
cloudresourcemanager.googleapis.com) की मदद से, अपने Google Cloud प्रोजेक्ट के मेटाडेटा को प्रोग्राम के हिसाब से मैनेज किया जा सकता है. जैसे, प्रोजेक्ट आईडी और नाम. प्रोजेक्ट की पहचान और अनुमतियों की पुष्टि करने के लिए, अक्सर अन्य टूल और एसडीके को इसकी ज़रूरत होती है.
4. एजेंट डेवलपमेंट किट के बारे में जानकारी
Agent Development Kit, एजेंट वाले ऐप्लिकेशन बनाने वाले डेवलपर को कई अहम फ़ायदे देता है:
- मल्टी-एजेंट सिस्टम: हैरारकी में कई विशेषज्ञ एजेंटों को कंपोज़ करके, मॉड्यूलर और स्केलेबल ऐप्लिकेशन बनाएं. जटिल समन्वय और ज़िम्मेदारी सौंपने की सुविधा चालू करें.
- टूल का बेहतर इकोसिस्टम: एजेंट को अलग-अलग सुविधाएं दें: पहले से बने टूल (खोज, कोड एक्ज़ीक्यूट करना वगैरह) का इस्तेमाल करें, कस्टम फ़ंक्शन बनाएं, तीसरे पक्ष के एजेंट फ़्रेमवर्क (LangChain, CrewAI) से टूल इंटिग्रेट करें या अन्य एजेंट को टूल के तौर पर इस्तेमाल करें.
- वर्कफ़्लो को आसानी से मैनेज करना: वर्कफ़्लो एजेंट (
SequentialAgent,ParallelAgent, औरLoopAgent) का इस्तेमाल करके, अनुमानित पाइपलाइन के लिए वर्कफ़्लो तय करें. इसके अलावा, एलएलएम पर आधारित डाइनैमिक राउटिंग (LlmAgentट्रांसफ़र) का इस्तेमाल करके, अडैप्टिव बिहेवियर को बेहतर बनाएं. - डेवलपर के लिए बेहतर अनुभव: शक्तिशाली सीएलआई और इंटरैक्टिव डेवलपर यूज़र इंटरफ़ेस (यूआई) की मदद से, स्थानीय तौर पर डेवलप, टेस्ट, और डीबग करें. इवेंट, स्थिति, और एजेंट के एक्ज़ीक्यूशन की सिलसिलेवार तरीके से जांच करें.
- पहले से मौजूद आकलन की सुविधा: पहले से तय किए गए टेस्ट केस के आधार पर, एजेंट के जवाब की क्वालिटी और चरण-दर-चरण कार्रवाई की जांच करके, एजेंट की परफ़ॉर्मेंस का आकलन करें.
- डिप्लॉयमेंट के लिए तैयार: अपने एजेंट को कंटेनर में रखें और उन्हें कहीं भी डिप्लॉय करें. जैसे, उन्हें स्थानीय तौर पर चलाएं, एजेंट रनटाइम के साथ स्केल करें या Cloud Run या Docker का इस्तेमाल करके, कस्टम इन्फ़्रास्ट्रक्चर में इंटिग्रेट करें.
अन्य जनरेटिव एआई एसडीके या एजेंट फ़्रेमवर्क भी आपको मॉडल से क्वेरी करने और उन्हें टूल इस्तेमाल करने की अनुमति देते हैं. हालांकि, एक से ज़्यादा मॉडल के बीच डाइनैमिक कोऑर्डिनेशन के लिए, आपको काफ़ी काम करना पड़ता है.
एजेंट डेवलपमेंट किट, इन टूल की तुलना में ज़्यादा बेहतर फ़्रेमवर्क उपलब्ध कराती है. इसकी मदद से, एक-दूसरे से कई एजेंट आसानी से कनेक्ट किए जा सकते हैं. इससे मुश्किल वर्कफ़्लो को आसानी से मैनेज किया जा सकता है.

पहली इमेज: ADK (Agent Development Kit) की पोज़िशन
5. एजेंट रनटाइम के बारे में जानकारी
Agent Runtime, Google Cloud में एजेंट डिप्लॉय करने के लिए पूरी तरह से मैनेज की जाने वाली सेवा है. Agent Runtime की मदद से डेवलपर, Gemini Enterprise Agent Platform पर ओएसएस एआई एजेंट( ADK (Agent Development Kit) , LangChain, LangGraph, CrewAI, AutoGen वगैरह!) को डेवलप, पसंद के मुताबिक बनाना, डिप्लॉय, और मैनेज कर सकते हैं.
एजेंट रनटाइम, उपयोगकर्ता के डेटा को मैनेज करने की सेवाएं भी देता है. इसे एजेंट मेमोरी भी कहा जाता है. फ़िलहाल, दो तरह की मेमोरी सेवाएं उपलब्ध हैं.
- शॉर्ट-टर्म मेमोरी: एजेंट इंजन सेशन की मदद से, किसी एक सेशन में चल रही बातचीत के इतिहास (स्टेट) को शॉर्ट-टर्म मेमोरी के तौर पर सेव, मैनेज, और वापस पाया जा सकता है.
- लंबे समय तक याद रखने की क्षमता: एजेंट इंजन मेमोरी बैंक की मदद से, यादों (स्टेट) को सेव करें, उनमें बदलाव करें, और उन्हें वापस पाएं. खास तौर पर, लंबे समय तक याद रखने की क्षमता के तौर पर, कई सेशन में यादों को सेव करें.
एजेंट को Cloud Run या GKE जैसी Google Cloud की अन्य सेवाओं में भी डिप्लॉय किया जा सकता है. आपको इन इस्तेमाल के उदाहरणों के लिए, एजेंट रनटाइम का इस्तेमाल करना चाहिए.
- स्टेटफ़ुल मैनेज किया गया रनटाइम: अगर आपको एजेंट डिप्लॉयमेंट के लिए, स्टेटफ़ुल और पूरी तरह से मैनेज किया गया रनटाइम चाहिए, तो एजेंट रनटाइम एक अच्छा विकल्प है. ऐसा इसलिए, क्योंकि यह सेशन मैनेजमेंट और एआई एजेंट के लिए डेटा सेव करने जैसे सामान्य टास्क को अलग कर देता है.
- कोड एक्ज़ीक्यूट करना: अगर आपके एजेंट को ऐसा कोड एक्ज़ीक्यूट करना है जो उपयोगकर्ता सेशन के दौरान डाइनैमिक तरीके से जनरेट होता है, तो एजेंट रनटाइम एक सुरक्षित सैंडबॉक्स उपलब्ध कराता है. यहां कोड को एक्ज़ीक्यूट किया जा सकता है.
- लंबे समय तक याद रखने की सुविधा: अगर आपको अपने एजेंट के लिए, लंबे समय तक याद रखने की सुविधा चाहिए, तो Gemini Enterprise Agent Platform Memory Bank का इस्तेमाल किया जा सकता है. इसे Agent Runtime के साथ इस्तेमाल किया जा सकता है. इससे, आपके उपयोगकर्ता की जानकारी को लंबे समय तक याद रखा जा सकता है. इस जानकारी का इस्तेमाल सभी सेशन में किया जा सकता है.
ऐप्लिकेशन का बेहतर आर्किटेक्चर बनाने के लिए, Agent Runtime को Cloud Run जैसे अन्य रनटाइम के साथ भी जोड़ा जा सकता है. यहां एक एजेंट बनाने के लिए, अलग-अलग सेवाओं का इस्तेमाल करके तैयार किए गए रेफ़रंस आर्किटेक्चर का उदाहरण दिया गया है.

दूसरी इमेज: कई सेवाओं का इस्तेमाल करके एजेंट बनाने के लिए, सैंपल रेफ़रंस आर्किटेक्चर.
6. A2A के बारे में जानकारी
Agent2Agent (A2A) प्रोटोकॉल एक ओपन स्टैंडर्ड है. इसे अलग-अलग फ़्रेमवर्क, वेंडर, और डोमेन के अपने-आप काम करने वाले एआई एजेंट के बीच, बिना किसी रुकावट के सुरक्षित तरीके से कम्यूनिकेशन और साथ मिलकर काम करने की सुविधा देने के लिए डिज़ाइन किया गया है.
- सभी के साथ काम करने की सुविधा: A2A की मदद से, एजेंट एक साथ काम कर सकते हैं. भले ही, उनकी टेक्नोलॉजी अलग-अलग हों. इससे मल्टी-एजेंट सिस्टम को बढ़ावा मिलता है. इसका मतलब है कि अलग-अलग कंपनियों के बनाए गए एजेंट, अलग-अलग प्लैटफ़ॉर्म पर एक-दूसरे से बातचीत कर सकते हैं और समन्वय बना सकते हैं.
- सुविधाओं की जानकारी: एजेंट, "एजेंट कार्ड" (JSON दस्तावेज़) का इस्तेमाल करके अपनी सुविधाओं का विज्ञापन कर सकते हैं. इनमें उनकी पहचान, काम करने वाली A2A सुविधाएं, कौशल, और पुष्टि करने की ज़रूरी शर्तों के बारे में जानकारी होती है. इससे अन्य एजेंट, किसी टास्क के लिए सबसे सही एजेंट को ढूंढकर चुन सकते हैं.
- डिफ़ॉल्ट रूप से सुरक्षित: सुरक्षा एक बुनियादी सिद्धांत है. A2A में एंटरप्राइज़-ग्रेड के पुष्टि और अनुमति देने वाले सिस्टम शामिल होते हैं. ये सिस्टम, एचटीटीपीएस/टीएलएस, JWT, OIDC, और एपीआई कुंजियों जैसे स्टैंडर्ड का इस्तेमाल करते हैं. इससे सुरक्षित इंटरैक्शन पक्का किया जा सकता है और संवेदनशील डेटा को सुरक्षित रखा जा सकता है.
- मोडलिटी से जुड़ी जानकारी के बिना काम करना: यह प्रोटोकॉल, कम्यूनिकेशन के अलग-अलग तरीकों के साथ काम करता है. जैसे, टेक्स्ट, ऑडियो, और वीडियो स्ट्रीमिंग. साथ ही, यह इंटरैक्टिव फ़ॉर्म और एम्बेड किए गए iframe के साथ भी काम करता है. इस सुविधा की मदद से एजेंट, टास्क और उपयोगकर्ता के हिसाब से सबसे सही फ़ॉर्मैट में जानकारी शेयर कर सकते हैं.
- टास्क मैनेजमेंट को बेहतर बनाना: A2A, टास्क सौंपने, उनकी निगरानी करने, और उन्हें पूरा करने के लिए साफ़ तौर पर प्रोटोकॉल तय करता है. यह सुविधा, एक जैसे टास्क को ग्रुप करने और उन्हें अलग-अलग एजेंट के बीच मैनेज करने की सुविधा देती है. इसके लिए, यूनीक टास्क आईडी का इस्तेमाल किया जाता है. टास्क, तय की गई लाइफ़साइकल के हिसाब से ट्रांज़िशन कर सकते हैं. जैसे, सबमिट किया गया, काम चल रहा है, पूरा हो गया.
- ओपेक एक्ज़ीक्यूशन: इसकी एक अहम सुविधा यह है कि एजेंट को अन्य एजेंट के साथ, अपनी इंटरनल रीज़निंग प्रोसेस, मेमोरी या खास टूल की जानकारी शेयर करने की ज़रूरत नहीं होती. ये सिर्फ़ कॉल की जा सकने वाली सेवाओं को दिखाते हैं. इससे मॉड्यूलरिटी और निजता को बढ़ावा मिलता है.
- मौजूदा स्टैंडर्ड के आधार पर बनाया गया: A2A, वेब टेक्नोलॉजी का इस्तेमाल करता है. जैसे, एचटीटीपी, रीयल-टाइम स्ट्रीमिंग के लिए सर्वर-सेंड इवेंट (एसएसई), और स्ट्रक्चर्ड डेटा के आदान-प्रदान के लिए JSON-RPC. इससे मौजूदा आईटी इन्फ़्रास्ट्रक्चर के साथ इंटिग्रेट करना आसान हो जाता है.
- एसिंक्रोनस कम्यूनिकेशन: इस प्रोटोकॉल को एसिंक्रोनस कम्यूनिकेशन को ध्यान में रखकर डिज़ाइन किया गया है. इससे टास्क को आसानी से पूरा किया जा सकता है. साथ ही, कनेक्शन लगातार न होने पर भी अपडेट के लिए पुश नोटिफ़िकेशन चालू किए जा सकते हैं.
7. एजेंट आर्किटेक्चर
इस लैब में, आपको एक मल्टी-एजेंट ऐप्लिकेशन बनाना होगा. यह ऐप्लिकेशन, आपकी बताई गई जानकारी के हिसाब से एक इमेज जनरेट करेगा. साथ ही, आपको इमेज दिखाने से पहले उसका आकलन करेगा.
सिस्टम को image_scoring नाम के मुख्य एजेंट के साथ स्ट्रक्चर किया गया है. यह एजेंट पूरी प्रोसेस को मैनेज करता है. इस मुख्य एजेंट का एक सब-एजेंट है, जिसे image_generation_scoring_agent कहा जाता है. इसके भी अपने सब-एजेंट हैं, जो ज़्यादा खास टास्क के लिए काम करते हैं. इससे एक क्रम बनता है, जिसमें मुख्य एजेंट अपने सब-एजेंट को टास्क सौंपता है. 
तीसरी इमेज: एजेंट का पूरा फ़्लो.
सभी एजेंट की सूची
Agent | मकसद | सब-एजेंट |
image_scoring (Main Agent) | यह रूट एजेंट है, जो पूरे वर्कफ़्लो को मैनेज करता है. यह image_generation_scoring_agent और checker_agent को बार-बार तब तक लूप में चलाता है, जब तक कि बंद होने की शर्त पूरी नहीं हो जाती. | image_generation_scoring_agent |
image_generation_scoring_agent (image_scoring का सब-एजेंट) | यह एजेंट, इमेज जनरेट करने और उन्हें स्कोर करने के मुख्य लॉजिक के लिए ज़िम्मेदार है. यह ऐसा करने के लिए, तीन सब-एजेंट के क्रम को लागू करता है. | image_generation_prompt_agent |
checker_agent_instance (image_scoring का सब-एजेंट) | यह एजेंट यह जांच करता है कि इमेज स्कोर करने की प्रोसेस जारी रखनी है या बंद करनी है. यह check_tool_condition टूल का इस्तेमाल करके, बंद करने की शर्त का आकलन करता है. | - |
checker_agent_instance (image_scoring का सब-एजेंट) | यह एजेंट, इमेज जनरेट करने के लिए प्रॉम्प्ट बनाने में माहिर है. यह टूल, इनपुट टेक्स्ट लेता है और इमेज जनरेट करने वाले मॉडल के लिए, पूरी जानकारी वाला प्रॉम्प्ट जनरेट करता है. | - |
image_generation_prompt_agent (image_generation_scoring_agent का सब-एजेंट) | यह एजेंट, इमेज जनरेट करने के लिए प्रॉम्प्ट बनाने में माहिर है. यह नोड, इनपुट के तौर पर दिए गए टेक्स्ट के आधार पर, इमेज जनरेट करने वाले मॉडल के लिए एक बेहतर प्रॉम्प्ट जनरेट करता है. | - |
scoring_images_prompt (image_generation_scoring_agent का सब-एजेंट): | यह एजेंट, अलग-अलग शर्तों के आधार पर इमेज का आकलन करने और उन्हें स्कोर देने में माहिर है. यह जनरेट की गई इमेज लेता है और उसे स्कोर असाइन करता है. | - |
इस्तेमाल किए गए सभी टूल की सूची
टूल | ब्यौरा | यूज़र एजेंट |
check_tool_condition | यह टूल यह जांच करता है कि लूप खत्म होने की शर्त पूरी हुई है या नहीं. साथ ही, यह भी जांच करता है कि लूप के दोहराव की तय सीमा पूरी हो गई है या नहीं. इनमें से किसी भी शर्त के पूरा होने पर, लूप बंद हो जाता है. | checker_agent_instance |
generate_images | यह टूल, Imagen 3 मॉडल का इस्तेमाल करके इमेज जनरेट करता है. यह जनरेट की गई इमेज को Google Cloud Storage बकेट में भी सेव कर सकता है. | image_generation_agent |
get_policy | यह टूल, JSON फ़ाइल से नीति को फ़ेच करता है. इस नीति का इस्तेमाल, image_generation_prompt_agent, इमेज जनरेट करने का प्रॉम्प्ट बनाने के लिए करता है. साथ ही, scoring_images_prompt, इमेज को स्कोर करने के लिए करता है. | image_generation_agent |
get_image | यह टूल, जनरेट किए गए इमेज आर्टफ़ैक्ट को लोड करता है, ताकि उसे स्कोर किया जा सके. | scoring_images_prompt |
set_score | यह टूल, सेशन की स्थिति में जनरेट की गई इमेज का कुल स्कोर सेट करता है. | scoring_images_prompt |
8. ADK इंस्टॉल करना और अपना एनवायरमेंट सेट अप करना
इस हैंड्स-ऑन में, हम टास्क पूरे करने के लिए Cloud Shell का इस्तेमाल करेंगे.
Cloud Shell Editor टैब तैयार करना
- सीधे Cloud Shell Editor पर जाने के लिए, इस लिंक पर क्लिक करें
- जारी रखें पर क्लिक करें.
- जब Cloud Shell को अनुमति देने के लिए कहा जाए, तब अनुमति दें पर क्लिक करें.
- इस कोडलैब के बाकी हिस्से में, इस विंडो का इस्तेमाल अपने आईडीई के तौर पर किया जा सकता है. इसके साथ ही, Cloud Shell Editor और Cloud Shell Terminal का इस्तेमाल किया जा सकता है.
- Cloud Shell Editor में, Terminal>New Terminal का इस्तेमाल करके, नया टर्मिनल खोलें. नीचे दिए गए सभी निर्देश, इस टर्मिनल पर चलाए जाएंगे.
इस लैब के लिए, ADK और कोड सैंपल डाउनलोड और इंस्टॉल करें
- github से ज़रूरी सोर्स को क्लोन करने और ज़रूरी लाइब्रेरी इंस्टॉल करने के लिए, यहां दिए गए कमांड चलाएं. Cloud Shell Editor में खुले हुए टर्मिनल में, कमांड चलाएं.
#create the project directory
mkdir ~/imagescoring
cd ~/imagescoring
#clone the code in the local directory
git clone https://github.com/haren-bh/multiagenthandson.git
- हम Python एनवायरमेंट बनाने के लिए, uv का इस्तेमाल करेंगे. इसे Cloud Shell Editor के टर्मिनल में चलाएं:
#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
- अगर आपके पास क्लाउड स्टोरेज बकेट नहीं है, तो Google Cloud Storage में जाकर नई बकेट बनाएं. gsutil कमांड का इस्तेमाल करके भी बकेट बनाया जा सकता है. Google Cloud Storage को एजेंट रनटाइम का ऐक्सेस दें. इसे Cloud Shell Editor टर्मिनल में चलाएं.
# 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 Runtime 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 Runtime 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
- एडिटर में, View->Toggle hidden files पर जाएं. इसके बाद, image_scoring फ़ोल्डर में .env फ़ाइल बनाएं और उसमें यह कॉन्टेंट शामिल करें. ज़रूरी जानकारी जोड़ें. जैसे, प्रोजेक्ट का नाम और क्लाउड स्टोरेज बकेट (Cloud Shell Editor टर्मिनल में चलाएं).
#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
- Cloud Shell Editor मेन्यू में, File > Open Folder चुनें.
- पॉप-अप होने वाले बॉक्स में, अपने उपयोगकर्ता नाम के बाद फ़ोल्डर की यह जानकारी जोड़ें:
imagescoring/. ठीक है पर क्लिक करें. अब आपको बाईं ओर मौजूद एक्सप्लोरर पैन में, अपने प्रोजेक्ट का पूरा स्ट्रक्चर दिखेगा. - एक्सप्लोरर साइड पैन में, image_scoring फ़ोल्डर पर जाएं. agent.py फ़ाइल को खोलने के लिए उस पर क्लिक करें. इसके बाद, एजेंट का स्ट्रक्चर देखें. इस एजेंट में रूट एजेंट होता है, जो अन्य सब-एजेंट से कनेक्ट होगा.

चौथी इमेज: एक्सप्लोरर साइड पैनल में दिखने वाला फ़ोल्डर स्ट्रक्चर. फ़ाइल का कॉन्टेंट देखने के लिए, उस पर क्लिक करें.
- टर्मिनल में सबसे ऊपर मौजूद डायरेक्ट्री multiagenthandson पर वापस जाएं. इसके बाद, एजेंट को स्थानीय तौर पर चलाने के लिए यह कमांड चलाएं (Cloud Shell Editor टर्मिनल में चलाएं).
#go to the directory multiagenthandson
cd ~/imagescoring/multiagenthandson
# Run the following command to run agents locally
adk web

इमेज 5: ADK ऐप्लिकेशन स्टार्टअप
- ADK के ब्राउज़र पर आधारित GUI क्लाइंट को खोलने के लिए, टर्मिनल पर दिखाए गए http:// यूआरएल पर Ctrl+क्लिक करें (MacOS के लिए CMD+क्लिक करें). यह इमेज 5 की तरह दिखनी चाहिए
- सबसे ऊपर बाईं ओर मौजूद ड्रॉपडाउन मेन्यू में, image_scoring को चुनें (पांचवां डायग्राम देखें). अब कुछ इमेज जनरेट करते हैं! आपको Google Cloud Storage बकेट में भी इमेज दिखनी चाहिए. यहाँ दिए गए प्रॉम्प्ट या अपने प्रॉम्प्ट आज़माएँ.
- सूर्यास्त के समय का एक शांत पहाड़ी नज़ारा
- साइकल चलाती हुई बिल्ली

इमेज 6: आउटपुट का सैंपल
9. एजेंट रनटाइम में डिप्लॉय करना
अब हम एजेंट को एजेंट इंजन में डिप्लॉय करते हैं. Agent Engine, GCP में एजेंटों को डिप्लॉय करने के लिए पूरी तरह से मैनेज की जाने वाली सेवा है. Agent Engine, ADK (Agent Development Kit) के साथ काम करता है. इसलिए, ADK (Agent Development Kit) की मदद से बनाए गए एजेंट को Agent Engine में डिप्लॉय किया जा सकता है.
- Cloud Shell Editor टर्मिनल पर, यहां दिया गया तरीका अपनाने से पहले, Ctrl+C दबाकर ADK सर्वर को बंद करें.
- poetry का इस्तेमाल करके, requirements.txt फ़ाइल बनाएं. Poetry, requirements.txt फ़ाइल बनाने के लिए pyproject.toml का इस्तेमाल करेगा. कमांड चलाने के बाद, देखें कि requirements.txt फ़ाइल बन गई है या नहीं. इसे Cloud Shell Editor टर्मिनल में चलाएं.
# 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
- पैकेज बनाएं. हमें अपने ऐप्लिकेशन को .whl Python पैकेज में बंडल करना होगा. हम इसके लिए कविता का इस्तेमाल करेंगे. कमांड चलाने के बाद, पक्का करें कि dist फ़ोल्डर बन गया हो और उसमें .whl फ़ाइल मौजूद हो (Cloud Shell Editor टर्मिनल में चलाएं).
# Go to the parent folder containing pyproject.toml file
cd ~/imagescoring/multiagenthandson
#Create python package, to create whl file
python3 -m poetry build
- अब हम ऐसी स्क्रिप्ट तैयार करेंगे जो इमेज स्कोर करने वाले एजेंट को Agent Engine सेवा में डिप्लॉय करेगी. Cloud Shell Editor के साइड पैनल में, deploy डायरेक्ट्री में जाकर 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.")
- अब हम डिप्लॉय स्क्रिप्ट चला सकते हैं. सबसे पहले, टॉप फ़ोल्डर multiagenthandson पर जाएं (इसे Cloud Shell Editor टर्मिनल में चलाएं).
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson
#run deploy script from the parent folder containing deploy.py
python3 -m deploy.deploy
डिप्लॉय करने के बाद, आपको नीचे दिए गए जैसा कुछ दिखेगा, 
इमेज 7: आउटपुट का सैंपल
- अब डिप्लॉय किए गए एजेंट को टेस्ट करते हैं. रिमोटली डिप्लॉय किए गए एजेंट इंजन को टेस्ट करने के लिए, सबसे पहले टर्मिनल में डिप्लॉय आउटपुट से एजेंट की जगह की जानकारी कॉपी करें. यह कुछ ऐसा दिखना चाहिए, projects/85469421903/locations/us-central1/reasoningEngines/7369674597261639680 .
Cloud Shell Editor के साइड पैनल में, testclient फ़ोल्डर पर जाएं. इसे खोलने के लिए, remote_test.py पर क्लिक करें. इसके बाद, इन लाइनों में बदलाव करें:
REASONING_ENGINE_ID = "projects/xxx/locations/us-central1/reasoningEngines/xxx" # TODO: Change this
- multiagenthandson रूट डायरेक्ट्री से, Cloud Shell Editor टर्मिनल में यह कमांड चलाएं. आपका आउटपुट, इमेज 8 से मेल खाना चाहिए.
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson
#execute remote_test.py
python3 -m testclient.remote_test

इमेज 8: आउटपुट का सैंपल
10. A2A एजेंट बनाना
इस चरण में, हम पिछले चरणों में बनाए गए एजेंट के आधार पर, एक सामान्य A2A एजेंट बनाएंगे. मौजूदा ADK (Agent Development Kit) एजेंट को A2A प्रोटोकॉल के तहत पब्लिश किया जा सकता है. इस चरण में आपको इन मुख्य बातों के बारे में जानकारी मिलेगी.
- A2A प्रोटोकॉल के बारे में बुनियादी बातें जानें.
- जानें कि ADK और A2A प्रोटोकॉल एक-दूसरे के साथ कैसे काम करते हैं.
- A2A प्रोटोकॉल के साथ इंटरैक्ट करने का तरीका जानें.
इस हैंड्स-ऑन में, हम image_scoring_adk_a2a_server फ़ोल्डर में मौजूद कोड का इस्तेमाल करेंगे. टास्क शुरू करने से पहले, कृपया अपनी डायरेक्ट्री को इस फ़ोल्डर में बदलें (Cloud Shell Editor टर्मिनल में चलाएं).
#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
1. A2A एजेंट कार्ड बनाना
A2A प्रोटोकॉल के लिए, एजेंट कार्ड की ज़रूरत होती है. इसमें एजेंट के बारे में पूरी जानकारी होती है. जैसे, एजेंट की क्षमताएं, एजेंट के इस्तेमाल से जुड़ी गाइड वगैरह. A2A एजेंट को डिप्लॉय करने के बाद, एजेंट कार्ड को ".well-known/agent-card.json" लिंक का इस्तेमाल करके देखा जा सकता है. क्लाइंट इस जानकारी का इस्तेमाल करके, एजेंट को अनुरोध भेज सकते हैं.
remote_a2a/image_scoring डायरेक्ट्री पर जाएं और Cloud Shell Editor के साइड पैनल में 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"
]
}
]
}
2. A2A एजेंट बनाएं image_scoring_adk_a2a_server रूट डायरेक्ट्री में जाकर, पुष्टि करें कि a2a_agent.py फ़ाइल मौजूद है. इसे खोलने के लिए, Cloud Shell Editor के साइड पैनल में मौजूद फ़ाइल के नाम पर क्लिक करें. यह फ़ाइल, 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
)
3. A2A एजेंट को रन करना
अब हम एजेंट को चलाने के लिए तैयार हैं! एजेंट को चलाने के लिए, सबसे ऊपर मौजूद फ़ोल्डर image_scoring_adk_a2a_server में जाकर, यह कमांड चलाएं. इसे Cloud Shell Editor के टर्मिनल में चलाएं.
#following command runs the ADK agent as a2a agent
adk api_server --a2a --port 8001 remote_a2a
4. A2A एजेंट की जांच करना
एजेंट के चालू होने के बाद, अब हम जाकर एजेंट को टेस्ट कर सकते हैं. सबसे पहले, एजेंट कार्ड देखें. टर्मिनल>नया टर्मिनल का इस्तेमाल करके, एक नया टर्मिनल खोलें और यह कमांड चलाएं. इसे 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"
}
}
}'
ऊपर दिए गए अनुरोध में, "बिल्ली की इमेज बनाओ" लाइन को बदलकर, प्रॉम्प्ट बदला जा सकता है. कमांड चलाने के बाद, तय किए गए Google Cloud Storage में आउटपुट इमेज देखी जा सकती है.
11. व्यवस्थित करें
अब हम अभी-अभी बनाए गए कॉन्टेंट को मिटाएंगे.
- हमने अभी जो Agent Runtime सर्वर बनाया है उसे मिटाओ. Google Cloud Console के खोज बार में Gemini Enterprise Agent Platform टाइप करके, Gemini Enterprise Agent Platform पर जाएं. बाईं ओर मौजूद Agent Engine पर क्लिक करें.एजेंट को मिटाने के लिए, मिटाएं पर क्लिक करें.

नौवीं इमेज: Google Cloud Console से एजेंट रनटाइम इंस्टेंस मिटाए जा सकते हैं
- Cloud Shell में मौजूद फ़ाइलें मिटाएं
#Execute the following to delete the files
cd ~
rm -R ~/imagescoring
- बकेट मिटाएं. GCP कंसोल->Cloud Storage पर जाकर , अपना बकेट चुनें और उसे मिटाएं.

इमेज 10: बकेट मिटाना
12. नतीजा
बधाई हो! आपने ADK (Agent Development Kit) का इस्तेमाल करके बनाए गए मल्टी-एजेंट ऐप्लिकेशन को Agent Runtime में डिप्लॉय कर दिया है. यह एक अहम उपलब्धि है. इसमें क्लाउड-नेटिव ऐप्लिकेशन के मुख्य लाइफ़साइकल को शामिल किया गया है. इससे आपको अपने जटिल एजेंटिक सिस्टम को डिप्लॉय करने के लिए एक मज़बूत आधार मिलता है.
रीकैप
इस लैब में, आपने इनके बारे में सीखा:
- ADK (Agent Development Kit) का इस्तेमाल करके, मल्टी एजेंट ऐप्लिकेशन बनाना
- ऐप्लिकेशन को एजेंट रनटाइम में डिप्लॉय करना
- ऐसा एजेंट बनाएं जो A2A प्रोटोकॉल का इस्तेमाल करके कम्यूनिकेट कर सके.
काम के संसाधन
प्रोटोटाइप से प्रोडक्शन तक
यह लैब, Google Cloud की मदद से प्रोडक्शन के लिए तैयार एआई लर्निंग पाथ का हिस्सा है.
- प्रोटोटाइप से प्रोडक्शन तक के अंतर को कम करने के लिए, पूरा पाठ्यक्रम देखें.
- #ProductionReadyAI हैशटैग का इस्तेमाल करके, अपनी प्रोग्रेस शेयर करें.