1. इस लैब का मकसद
इस हैंड्स-ऑन लैब में, ADK (Agent Development Kit) का इस्तेमाल करके एक मल्टी एजेंट ऐप्लिकेशन बनाया जाएगा. यह ऐप्लिकेशन, आपके प्रॉम्प्ट के आधार पर एक इमेज जनरेट करेगा और आपके प्रॉम्प्ट के हिसाब से उसका आकलन करेगा. अगर इमेज, प्रॉम्प्ट में बताई गई ज़रूरी शर्तों को पूरा नहीं करती है, तो एजेंट लगातार इमेज जनरेट करता रहेगा. ऐसा तब तक होगा, जब तक आपकी ज़रूरी शर्तों के मुताबिक इमेज जनरेट नहीं हो जाती. इस हैंड्स-ऑन में मौजूद हर एजेंट का एक ही मकसद है. सभी एजेंट मिलकर काम करते हैं, ताकि पूरे मकसद को पूरा किया जा सके. आपको ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करने और Agent Runtime में डिप्लॉय करने का तरीका सिखाया जाएगा.
आपको क्या सीखने को मिलेगा
- ADK (एजेंट डेवलपमेंट किट) के बारे में बुनियादी जानकारी पाएं. साथ ही, मल्टी-एजेंट सिस्टम बनाने का तरीका जानें.
- Agent Runtime में एजेंटों को आसानी से डिप्लॉय और इस्तेमाल करने का तरीका जानें.
- A2A प्रोटोकॉल के बारे में बुनियादी बातें समझना
- ओपन एजेंट बनाने के लिए, A2A प्रोटोकॉल और ADK (एजेंट डेवलपमेंट किट) का एक साथ इस्तेमाल करने का तरीका जानें.
ज़रूरी शर्तें
- Python और कमांड-लाइन इंटरफ़ेस के बारे में जानकारी होना.
- बिलिंग की सुविधा वाले Google Cloud प्रोजेक्ट का ऐक्सेस.
- इंस्टॉल किए गए सीएलआई टूल:
gcloud,uv.
2. प्रोजेक्ट सेटअप करना
- GCP console पर जाने के लिए, इस लिंक GCP console पर क्लिक करें.
- अगर आपके पास पहले से कोई ऐसा प्रोजेक्ट नहीं है जिसका इस्तेमाल किया जा सके, तो आपको GCP Console में एक नया प्रोजेक्ट बनाना होगा. प्रोजेक्ट सिलेक्टर (Google Cloud Console में सबसे ऊपर बाईं ओर) में जाकर, वह प्रोजेक्ट चुनें जिसका इस्तेमाल करना है. अगर आपके पास पहले से कोई प्रोजेक्ट नहीं है, तो नया प्रोजेक्ट बनाने के लिए, कृपया यह तरीका अपनाएं. नया प्रोजेक्ट बनाने के बाद, कृपया अपना प्रोजेक्ट चुनें.

दूसरी इमेज: Google Cloud के लोगो के ठीक बगल में मौजूद बॉक्स पर क्लिक करके, अपना प्रोजेक्ट चुना जा सकता है. पक्का करें कि आपने अपना प्रोजेक्ट चुना हो.
- इस लैब में, हम अपने टास्क पूरे करने के लिए Cloud Shell Editor का इस्तेमाल करेंगे. Cloud Shell खोलें और Cloud Shell का इस्तेमाल करके प्रोजेक्ट सेट करें.
- सीधे Cloud Shell Editor पर जाने के लिए, इस लिंक पर क्लिक करें
- Cloud Shell Editor के साइड बार में, Open Folder बटन पर क्लिक करें.

- आपका होम फ़ोल्डर पहले से ही चुना हुआ होना चाहिए. बस 'ठीक है' दबाएं. इसके बाद, आपका होम फ़ोल्डर इस टास्क के लिए रूट फ़ोल्डर होगा.

- अगर टर्मिनल पहले से खुला हुआ नहीं है, तो मेन्यू में जाकर टर्मिनल>नया टर्मिनल पर क्लिक करके उसे खोलें. इस ट्यूटोरियल में दी गई सभी कमांड, इस टर्मिनल में चलाई जा सकती हैं.
- Cloud Shell टर्मिनल में, यहां दी गई कमांड का इस्तेमाल करके यह देखा जा सकता है कि प्रोजेक्ट की पुष्टि पहले ही हो चुकी है या नहीं.
gcloud auth list
- अगर आपको अपना प्रोजेक्ट आईडी याद नहीं है, तो
gcloud projects list
- प्रोजेक्ट आईडी कॉपी करें और इसे सेट करने के लिए, यह निर्देश इस्तेमाल करें
gcloud config set project <YOUR_PROJECT_ID>
- अपने प्रोजेक्ट की पुष्टि करने के लिए, Cloud Shell में यह कमांड चलाएं
gcloud config list project
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 वगैरह!) को डेवलप, पसंद के मुताबिक बनाना, डिप्लॉय, मैनेज, और उपलब्ध करा सकते हैं.
एजेंट रनटाइम, उपयोगकर्ता के डेटा को मैनेज करने की सेवाएं भी देता है. इसे एजेंट मेमोरी भी कहा जाता है. फ़िलहाल, दो तरह की मेमोरी सेवाएं उपलब्ध हैं.
- शॉर्ट-टर्म मेमोरी: एजेंट इंजन सेशन की मदद से, किसी एक सेशन में चल रही बातचीत के इतिहास (स्टेट) को शॉर्ट-टर्म मेमोरी के तौर पर सेव, मैनेज, और वापस पाया जा सकता है.
- लंबे समय तक याद रखने की सुविधा: एजेंट इंजन मेमोरी बैंक की मदद से, यादें (स्टेट) सेव करें, उन्हें बदलें, और वापस पाएं. खास तौर पर, एक से ज़्यादा सेशन में लंबे समय तक याद रखने की सुविधा के तौर पर.
एजेंट को Google Cloud की अन्य सेवाओं, जैसे कि Cloud Run या GKE में भी डिप्लॉय किया जा सकता है. आपको इन इस्तेमाल के उदाहरणों के लिए, एजेंट रनटाइम का इस्तेमाल करना चाहिए.
- स्टेटफ़ुल मैनेज किया गया रनटाइम: अगर आपको एजेंट डिप्लॉयमेंट के लिए, स्टेटफ़ुल और पूरी तरह से मैनेज किया गया रनटाइम चाहिए, तो एजेंट रनटाइम एक अच्छा विकल्प है. ऐसा इसलिए, क्योंकि यह सेशन मैनेजमेंट और एआई एजेंट के लिए डेटा सेव करने जैसे सामान्य टास्क को आसान बना देता है.
- कोड एक्ज़ीक्यूट करना: अगर आपके एजेंट को ऐसा कोड एक्ज़ीक्यूट करना है जो उपयोगकर्ता सेशन के दौरान डाइनैमिक तरीके से जनरेट होता है, तो एजेंट रनटाइम एक सुरक्षित सैंडबॉक्स उपलब्ध कराता है. यहां कोड को एक्ज़ीक्यूट किया जा सकता है.
- लंबे समय तक जानकारी याद रखने की सुविधा: अगर आपको अपने एजेंट के लिए, लंबे समय तक जानकारी याद रखने की सुविधा चाहिए, तो 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 कहा जाता है. इसके अपने सब-एजेंट हैं, जो ज़्यादा खास टास्क के लिए काम करते हैं. इससे एक क्रम बनता है, जिसमें मुख्य एजेंट अपने सब-एजेंट को टास्क सौंपता है. 
इमेज 3: एजेंट का पूरा फ़्लो.
सभी एजेंट की सूची
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 पहले से खुला है, तो यह चरण छोड़ें
- GCP console पर जाने के लिए, इस लिंक GCP console पर क्लिक करें.
- अगर आपके पास पहले से कोई ऐसा प्रोजेक्ट नहीं है जिसका इस्तेमाल किया जा सके, तो आपको GCP Console में एक नया प्रोजेक्ट बनाना होगा. प्रोजेक्ट सिलेक्टर (Google Cloud Console में सबसे ऊपर बाईं ओर) में जाकर, वह प्रोजेक्ट चुनें जिसका इस्तेमाल करना है. अगर आपके पास पहले से कोई प्रोजेक्ट नहीं है, तो नया प्रोजेक्ट बनाने के लिए, कृपया यह तरीका अपनाएं. नया प्रोजेक्ट बनाने के बाद, कृपया अपना प्रोजेक्ट चुनें.

दूसरी इमेज: Google Cloud के लोगो के ठीक बगल में मौजूद बॉक्स पर क्लिक करके, अपना प्रोजेक्ट चुना जा सकता है. पक्का करें कि आपने अपना प्रोजेक्ट चुना हो.
- इस लैब में, हम अपने टास्क पूरे करने के लिए Cloud Shell Editor का इस्तेमाल करेंगे. Cloud Shell खोलें और Cloud Shell का इस्तेमाल करके प्रोजेक्ट सेट करें.
- Cloud Shell Editor पर सीधे जाने के लिए, इस लिंक पर क्लिक करें
- Cloud Shell Editor के साइड बार में, Open Folder बटन पर क्लिक करें.

- आपका होम फ़ोल्डर पहले से ही चुना हुआ होना चाहिए. बस 'ठीक है' दबाएं. इसके बाद, आपका होम फ़ोल्डर इस टास्क के लिए रूट फ़ोल्डर होगा.

- अगर टर्मिनल पहले से खुला हुआ नहीं है, तो मेन्यू में जाकर टर्मिनल>नया टर्मिनल पर क्लिक करके उसे खोलें. इस ट्यूटोरियल में दी गई सभी कमांड, इस टर्मिनल में चलाई जा सकती हैं.
- Cloud Shell टर्मिनल में, यहां दी गई कमांड का इस्तेमाल करके यह देखा जा सकता है कि प्रोजेक्ट की पुष्टि पहले ही हो चुकी है या नहीं.
gcloud auth list
- अगर आपको अपना प्रोजेक्ट आईडी याद नहीं है, तो
gcloud projects list
- प्रोजेक्ट आईडी कॉपी करें और इसे सेट करने के लिए, यह निर्देश इस्तेमाल करें
gcloud config set project <YOUR_PROJECT_ID>
- अपने प्रोजेक्ट की पुष्टि करने के लिए, Cloud Shell में यह कमांड चलाएं
gcloud config list project
इस लैब के लिए, 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 में जाकर एक नई बकेट बनाएं. gcloud कमांड का इस्तेमाल करके भी बकेट बनाई जा सकती है. 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
gcloud storage buckets create 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_ENTERPRISE=true
GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project)
GOOGLE_CLOUD_LOCATION=global
AGENT_ENGINE_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="gemini-3.1-flash-lite-image"
GENAI_MODEL="gemini-3.5-flash"
EOF
- एक्सप्लोरर साइड पैनल में, imagescoring/multiagenthandson/image_scoring फ़ोल्डर पर जाएं. agent.py फ़ाइल को खोलने के लिए उस पर क्लिक करें. इसके बाद, एजेंट का स्ट्रक्चर देखें. इस एजेंट में रूट एजेंट होता है, जो अन्य सब-एजेंट से कनेक्ट होगा.

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

इमेज 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/xxx/locations/us-central1/reasoningEngines/xxx .
multiagenthandson रूट डायरेक्ट्री से, Cloud Shell Editor टर्मिनल में यह कमांड चलाएं.
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson
#execute remote_test.py
python3 -m testclient.remote_test
- रीज़निंग इंजन का आईडी डालें. यह "
projects/xxx/locations/us-central1/reasoningEngines/xxx"जैसा दिखना चाहिए. इसके बाद, इमेज बनाने के लिए अपना प्रॉम्प्ट डालें. क्लाउड स्टोरेज फ़ोल्डर में जाकर, इमेज के आउटपुट की पुष्टि की जा सकती है.

आठवीं इमेज: आउटपुट का सैंपल
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 पर जाएं. बाईं ओर मौजूद, एजेंट इंजन पर क्लिक करें.एजेंट को मिटाने के लिए, मिटाएं पर क्लिक करें.

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

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