1. इस लैब का मकसद
इस हैंड्स-ऑन लैब में, ADK (एजेंट डेवलपमेंट किट) का इस्तेमाल करके एक मल्टी एजेंट ऐप्लिकेशन बनाया जाएगा. यह ऐप्लिकेशन, आपके प्रॉम्प्ट के आधार पर एक इमेज जनरेट करेगा और उसकी तुलना आपके प्रॉम्प्ट से करेगा. अगर इमेज, प्रॉम्प्ट में बताई गई ज़रूरी शर्तों को पूरा नहीं करती है, तो एजेंट लगातार इमेज जनरेट करता रहेगा. ऐसा तब तक होगा, जब तक आपकी ज़रूरी शर्तों के मुताबिक इमेज जनरेट नहीं हो जाती. इस हैंड्स-ऑन में मौजूद हर एजेंट का एक ही मकसद होता है. सभी एजेंट मिलकर काम करते हैं, ताकि पूरे मकसद को पूरा किया जा सके. आपको ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करने और Vertex AI Agent Engine में डिप्लॉय करने का तरीका बताया जाएगा.
आपको क्या सीखने को मिलेगा
- एडीके (एजेंट डेवलपमेंट किट) के बारे में बुनियादी जानकारी पाएं. साथ ही, मल्टी-एजेंट सिस्टम बनाने का तरीका जानें.
- Vertex AI Agent Engine में एजेंटों को आसानी से डिप्लॉय और इस्तेमाल करने का तरीका जानें.
- 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>
- इस लैब को चलाने के लिए, हमें कुछ सेवाएं चालू करनी होंगी. Cloud Shell में यह कमांड चलाएं.
gcloud services enable aiplatform.googleapis.com
gcloud services enable cloudresourcemanager.googleapis.com
3. एजेंट डेवलपमेंट किट के बारे में जानकारी
Agent Development Kit से, एजेंट वाले ऐप्लिकेशन बनाने वाले डेवलपर को कई अहम फ़ायदे मिलते हैं:
- मल्टी-एजेंट सिस्टम: हैरारकी में कई खास एजेंट को कंपोज़ करके, मॉड्यूलर और स्केलेबल ऐप्लिकेशन बनाएं. जटिल कामों को आसानी से पूरा करने और उन्हें सौंपने की सुविधा चालू करें.
- टूल का बेहतर इकोसिस्टम: एजेंट को अलग-अलग सुविधाएं दें: पहले से बने टूल (खोज, कोड एक्ज़ीक्यूट करना वगैरह) का इस्तेमाल करें, कस्टम फ़ंक्शन बनाएं, तीसरे पक्ष के एजेंट फ़्रेमवर्क (LangChain, CrewAI) से टूल इंटिग्रेट करें या अन्य एजेंट को टूल के तौर पर इस्तेमाल करें.
- फ़्लेक्सिबल ऑर्केस्ट्रेशन: अनुमानित पाइपलाइन के लिए, वर्कफ़्लो एजेंट (
SequentialAgent,ParallelAgent, औरLoopAgent) का इस्तेमाल करके वर्कफ़्लो तय करें. इसके अलावा, अडैप्टिव व्यवहार के लिए, एलएलएम पर आधारित डाइनैमिक राउटिंग (LlmAgentट्रांसफ़र) का फ़ायदा लें. - डेवलपर के लिए बेहतर अनुभव: शक्तिशाली सीएलआई और इंटरैक्टिव डेवलपर यूज़र इंटरफ़ेस (यूआई) की मदद से, स्थानीय तौर पर डेवलप, टेस्ट, और डीबग करें. इवेंट, स्थिति, और एजेंट के एक्ज़ीक्यूशन की सिलसिलेवार तरीके से जांच करें.
- पहले से मौजूद आकलन की सुविधा: पहले से तय किए गए टेस्ट केस के आधार पर, एजेंट के फ़ाइनल जवाब की क्वालिटी और चरण-दर-चरण कार्रवाई की जांच करके, एजेंट की परफ़ॉर्मेंस का आकलन करें.
- डिप्लॉय करने के लिए तैयार: अपने एजेंट को कंटेनर में रखें और उन्हें कहीं भी डिप्लॉय करें. जैसे, उन्हें स्थानीय तौर पर चलाएं, Vertex AI Agent Engine के साथ स्केल करें या Cloud Run या Docker का इस्तेमाल करके, कस्टम इन्फ़्रास्ट्रक्चर में इंटिग्रेट करें.
अन्य जनरेटिव एआई एसडीके या एजेंट फ़्रेमवर्क भी आपको मॉडल से क्वेरी करने और उन्हें टूल इस्तेमाल करने की अनुमति देते हैं. हालांकि, एक से ज़्यादा मॉडल के बीच डाइनैमिक कोऑर्डिनेशन के लिए, आपको काफ़ी काम करना पड़ता है.
एजेंट डेवलपमेंट किट, इन टूल की तुलना में ज़्यादा बेहतर फ़्रेमवर्क उपलब्ध कराती है. इसकी मदद से, एक-दूसरे से कई एजेंट आसानी से कनेक्ट किए जा सकते हैं. इससे, मुश्किल लेकिन आसानी से मैनेज किए जा सकने वाले वर्कफ़्लो बनाए जा सकते हैं.

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

दूसरी इमेज: एक से ज़्यादा सेवाओं का इस्तेमाल करके एजेंट बनाने के लिए, सैंपल रेफ़रंस आर्किटेक्चर.
5. A2A के बारे में जानकारी
Agent2Agent (A2A) प्रोटोकॉल एक ओपन स्टैंडर्ड है. इसे अलग-अलग फ़्रेमवर्क, वेंडर, और डोमेन के ऑटोनॉमस एआई एजेंट के बीच बिना किसी रुकावट के सुरक्षित तरीके से कम्यूनिकेशन और साथ मिलकर काम करने के लिए डिज़ाइन किया गया है.
- यूनिवर्सल इंटरऑपरेबिलिटी: A2A की मदद से, एजेंट एक साथ काम कर सकते हैं. भले ही, उनकी टेक्नोलॉजी अलग-अलग हों. इससे, एक से ज़्यादा एजेंट वाले इकोसिस्टम को बढ़ावा मिलता है. इसका मतलब है कि अलग-अलग कंपनियों के बनाए गए एजेंट, अलग-अलग प्लैटफ़ॉर्म पर एक-दूसरे से बातचीत कर सकते हैं और समन्वय बना सकते हैं.
- सुविधाओं के बारे में जानकारी: एजेंट, "एजेंट कार्ड" (JSON दस्तावेज़) का इस्तेमाल करके अपनी सुविधाओं का विज्ञापन कर सकते हैं. इनमें उनकी पहचान, काम करने वाली A2A सुविधाएं, कौशल, और पुष्टि करने की ज़रूरी शर्तों के बारे में जानकारी होती है. इससे अन्य एजेंट, किसी टास्क के लिए सबसे सही एजेंट को खोज और चुन पाते हैं.
- डिफ़ॉल्ट रूप से सुरक्षित: सुरक्षा एक अहम सिद्धांत है. A2A में एंटरप्राइज़-ग्रेड के पुष्टि और अनुमति देने वाले सिस्टम शामिल होते हैं. ये सिस्टम, एचटीटीपीएस/टीएलएस, JWT, OIDC, और एपीआई कुंजियों जैसे स्टैंडर्ड का इस्तेमाल करते हैं. इससे सुरक्षित इंटरैक्शन और संवेदनशील डेटा को सुरक्षित रखने में मदद मिलती है.
- अलग-अलग तरह के कॉन्टेंट के साथ काम करता है: यह प्रोटोकॉल, अलग-अलग तरह के कॉन्टेंट के साथ काम करता है. जैसे, टेक्स्ट, ऑडियो, वीडियो स्ट्रीमिंग, इंटरैक्टिव फ़ॉर्म, और एम्बेड किए गए iframe. इस सुविधा की मदद से एजेंट, टास्क और उपयोगकर्ता के हिसाब से सबसे सही फ़ॉर्मैट में जानकारी शेयर कर सकते हैं.
- टास्क मैनेजमेंट को व्यवस्थित करना: A2A, टास्क सौंपने, उनकी निगरानी करने, और उन्हें पूरा करने के लिए साफ़ तौर पर प्रोटोकॉल तय करता है. यह एक जैसे टास्क को ग्रुप करने और उन्हें अलग-अलग एजेंट के बीच मैनेज करने की सुविधा देता है. इसके लिए, यूनीक टास्क आईडी का इस्तेमाल किया जाता है. टास्क, तय की गई लाइफ़साइकल के हिसाब से ट्रांज़िशन कर सकते हैं. जैसे, सबमिट किया गया, काम चल रहा है, पूरा हो गया.
- ओपेक एक्ज़ीक्यूशन: इसकी एक अहम सुविधा यह है कि एजेंट को अन्य एजेंट के साथ, अपनी इंटरनल रीज़निंग प्रोसेस, मेमोरी या खास टूल की जानकारी शेयर करने की ज़रूरत नहीं होती. ये सिर्फ़ कॉल की जा सकने वाली सेवाओं को दिखाते हैं. इससे मॉड्यूलरिटी और निजता को बढ़ावा मिलता है.
- मौजूदा स्टैंडर्ड पर आधारित: A2A, एचटीटीपी, रीयल-टाइम स्ट्रीमिंग के लिए सर्वर-सेंड इवेंट (एसएसई), और स्ट्रक्चर्ड डेटा के आदान-प्रदान के लिए JSON-RPC जैसी वेब टेक्नोलॉजी का इस्तेमाल करता है. इससे इसे मौजूदा आईटी इन्फ़्रास्ट्रक्चर के साथ इंटिग्रेट करना आसान हो जाता है.
- एसिंक्रोनस कम्यूनिकेशन: इस प्रोटोकॉल को एसिंक्रोनस कम्यूनिकेशन को ध्यान में रखकर डिज़ाइन किया गया है. इससे टास्क को आसानी से पूरा किया जा सकता है. साथ ही, कनेक्शन लगातार न होने पर भी अपडेट के लिए पुश नोटिफ़िकेशन चालू किए जा सकते हैं.
6. एजेंट आर्किटेक्चर
इस लैब में, आपको एक ऐसा मल्टी-एजेंट ऐप्लिकेशन बनाना होगा जो आपकी ज़रूरत के हिसाब से इमेज जनरेट करे. साथ ही, आपको इमेज दिखाने से पहले उसका आकलन करे.
सिस्टम को 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 |
7. ADK इंस्टॉल करना और अपना एनवायरमेंट सेट अप करना
इस हैंड्स-ऑन में, हम Cloud Shell का इस्तेमाल करके टास्क पूरे करेंगे.
Cloud Shell Editor टैब तैयार करना
- सीधे Cloud Shell Editor पर जाने के लिए, इस लिंक पर क्लिक करें
- जारी रखें पर क्लिक करें.
- जब Cloud Shell को अनुमति देने के लिए कहा जाए, तब अनुमति दें पर क्लिक करें.
- इस लैब के बाकी हिस्से में, इस विंडो का इस्तेमाल Cloud Shell Editor और Cloud Shell Terminal के साथ अपने IDE के तौर पर किया जा सकता है.
- 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 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
- एडिटर में, 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
- सोर्स कोड में एजेंट स्ट्रक्चर देखें. इसकी शुरुआत agent.py से करें. इस एजेंट में रूट एजेंट होता है, जो दूसरे एजेंटों से कनेक्ट होगा.
- टर्मिनल में सबसे ऊपर मौजूद डायरेक्ट्री multiagenthandson पर वापस जाएं. इसके बाद, एजेंट को स्थानीय तौर पर चलाने के लिए, यहां दी गई कमांड चलाएं (इसे Cloud Shell Editor टर्मिनल में चलाएं).
#go to the directory multiagenthandson
cd ~/imagescoring/multiagenthandson
# Run the following command to run agents locally
adk web

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

इमेज 5: आउटपुट का सैंपल
8. Agent Engine में डिप्लॉय करें
अब हम एजेंट को एजेंट इंजन पर डिप्लॉय करते हैं. Agent Engine, GCP में एजेंटों को डिप्लॉय करने के लिए पूरी तरह से मैनेज की जाने वाली सेवा है. Agent Engine, ADK (Agent Development Kit) के साथ काम करता है. इसलिए, ADK (Agent Development Kit) की मदद से बनाए गए एजेंट को Agent Engine में डिप्लॉय किया जा सकता है.
- 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
- अब हम डिप्लॉय करने की स्क्रिप्ट तैयार करेंगे. डप्लॉय स्क्रिप्ट, इमेज स्कोरिंग एजेंट या एजेंट इंजन सेवा को डप्लॉय करेगी. कृपया deploy फ़ोल्डर में मौजूद deploy.py फ़ाइल के कॉन्टेंट की पुष्टि करें. इसके लिए, नीचे दिया गया तरीका अपनाएं. फ़ाइल ढूंढने के लिए, Cloud Shell Editor के साइड पैनल का इस्तेमाल करें.
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
डिप्लॉय करने के बाद, आपको नीचे दिए गए जैसा कुछ दिखेगा, 
इमेज 6: आउटपुट का सैंपल
- अब डिप्लॉय किए गए एजेंट को टेस्ट करते हैं. रिमोटली डिप्लॉय किए गए एजेंट इंजन को टेस्ट करने के लिए, सबसे पहले टर्मिनल में डिप्लॉय आउटपुट से एजेंट की जगह की जानकारी कॉपी करें. यह कुछ ऐसा दिखना चाहिए, projects/85469421903/locations/us-central1/reasoningEngines/7369674597261639680 .
testclient फ़ोल्डर पर जाएं. इसके बाद,Cloud Shell Editor में remote_test.py फ़ाइल खोलें और इन लाइनों में बदलाव करें.
REASONING_ENGINE_ID = "projects/xxx/locations/us-central1/reasoningEngines/xxx" # TODO: Change this
- सबसे ऊपर मौजूद फ़ोल्डर multiagenthandson से, यहां दिया गया निर्देश चलाएं. आपको चौथी इमेज जैसा आउटपुट मिलेगा. स्क्रिप्ट के पूरा होने के बाद, आपको (Run in Cloud Shell Editor Terminal) दिखेगा.
#go to multiagenthandson folder
cd ~/imagescoring/multiagenthandson
#execute remote_test.py
python3 -m testclient.remote_test

इमेज 7: आउटपुट का सैंपल
9. A2A एजेंट बनाना
इस चरण में, हम पिछले चरणों में बनाए गए एजेंट के आधार पर एक सामान्य A2A एजेंट बनाएंगे. मौजूदा एजेंट डेवलपमेंट किट (एडीके) एजेंट को 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 में, Cloud Shell Editor के साइड पैनल का इस्तेमाल करके यह पुष्टि करें कि a2a_agent.py फ़ाइल मौजूद है. यह A2A एजेंट का एंट्री पॉइंट है. इसमें यह कॉन्टेंट होना चाहिए,
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 एजेंट की जांच करना
एजेंट के चालू होने के बाद, अब हम जाकर एजेंट को टेस्ट कर सकते हैं. सबसे पहले, एजेंट कार्ड की जांच कर लेते हैं. 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"
}
}
}'
ऊपर दिए गए अनुरोध में, "बिल्ली की इमेज बनाओ" लाइन को बदलकर, प्रॉम्प्ट बदला जा सकता है. कमांड चलाने के बाद, तय किए गए Google Cloud Storage में आउटपुट इमेज देखी जा सकती है.
10. व्यवस्थित करें
अब हम उस डेटा को मिटा देते हैं जिसे हमने अभी बनाया है.
- हमने अभी जो Vertex AI Agent Engine सर्वर बनाया है उसे मिटाओ. Google Cloud Console के खोज बार में Vertex AI टाइप करके, Vertex AI पर जाएं. बाईं ओर मौजूद Agent Engine पर क्लिक करें.एजेंट को मिटाने के लिए, मिटाएं पर क्लिक करें.

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

इमेज 9: बकेट मिटाना
11. नतीजा
बधाई हो! आपने Vertex AI Agent Engine पर, मल्टी-एजेंट ADK (Agent Development Kit) ऐप्लिकेशन को सफलतापूर्वक डिप्लॉय कर दिया है. यह एक अहम उपलब्धि है. इसमें क्लाउड-नेटिव ऐप्लिकेशन के मुख्य लाइफ़साइकल को शामिल किया गया है. इससे आपको अपने जटिल एजेंटिक सिस्टम को डिप्लॉय करने के लिए एक मज़बूत आधार मिलता है.
रीकैप
इस लैब में, आपने इनके बारे में सीखा:
- ADK (एजेंट डेवलपमेंट किट) का इस्तेमाल करके, मल्टी एजेंट ऐप्लिकेशन बनाना
- ऐप्लिकेशन को Vertex AI Agent Engine पर डिप्लॉय करें
- ऐसा एजेंट बनाएं जो A2A प्रोटोकॉल का इस्तेमाल करके बातचीत कर सके.
काम के संसाधन