1. इस लैब का मकसद
इस हैंड्स-ऑन लैब में, आपको एक ऐसा मल्टी एजेंट ऐप्लिकेशन बनाना होगा जो आपके प्रॉम्प्ट के आधार पर इमेज जनरेट करे और उसकी तुलना आपके प्रॉम्प्ट से करे. अगर इमेज, प्रॉम्प्ट में बताई गई ज़रूरी शर्तों को पूरा नहीं करती है, तो एजेंट लगातार इमेज जनरेट करता रहेगा. ऐसा तब तक होगा, जब तक आपकी ज़रूरी शर्तों के मुताबिक इमेज जनरेट नहीं हो जाती. इस हैंड्स-ऑन में मौजूद हर एजेंट का एक ही मकसद होता है. सभी एजेंट मिलकर काम करते हैं, ताकि पूरे मकसद को हासिल किया जा सके.
आपको क्या सीखने को मिलेगा
- ADK की बुनियादी बातों को समझें और मल्टी-एजेंट सिस्टम बनाने का तरीका जानें.
- GCP में एजेंटों को आसानी से डिप्लॉय और इस्तेमाल करने का तरीका जानें.
- A2A प्रोटोकॉल के बारे में बुनियादी जानकारी
- ओपन एजेंट बनाने के लिए, A2A प्रोटोकॉल और ADK को एक साथ इस्तेमाल करने का तरीका जानें.
2. शुरू करने से पहले
- अगर आपके पास पहले से कोई ऐसा प्रोजेक्ट नहीं है जिसका इस्तेमाल किया जा सके, तो आपको GCP Console में एक नया प्रोजेक्ट बनाना होगा.
- इस लैब में, हम अपने टास्क पूरे करने के लिए GCP Cloud Shell का इस्तेमाल करेंगे. Cloud Shell खोलें और Cloud Shell का इस्तेमाल करके प्रोजेक्ट सेट करें.
- Cloud Shell Editor बटन दबाकर, GCP Cloud Shell Editor खोलें. अगर आपको "शेल को अनुमति दें" पॉप-अप दिखता है, तो Cloud Shell Editor को अनुमति देने के लिए क्लिक करें.
- यहां दी गई कमांड का इस्तेमाल करके, यह देखा जा सकता है कि प्रोजेक्ट की पुष्टि पहले ही हो चुकी है या नहीं.
gcloud auth list
- अपने प्रोजेक्ट की पुष्टि करने के लिए, Cloud Shell में यह कमांड चलाएं
gcloud config list project
- अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए यह कमांड इस्तेमाल करें
gcloud config set project <YOUR_PROJECT_ID>
- इस लैब को चलाने के लिए, हमें कुछ सेवाएं चालू करनी होंगी. Cloud Shell में यह कमांड चलाएं.
gcloud services enable aiplatform.googleapis.com
3. खास जानकारी: एजेंट डेवलपमेंट किट के फ़ायदे
Agent Development Kit से, एजेंट वाले ऐप्लिकेशन बनाने वाले डेवलपर को कई अहम फ़ायदे मिलते हैं:
- मल्टी-एजेंट सिस्टम: हैरारकी में कई खास एजेंट को कंपोज़ करके, मॉड्यूलर और स्केलेबल ऐप्लिकेशन बनाएं. जटिल समन्वय और ज़िम्मेदारी सौंपने की सुविधा चालू करें.
- टूल का बेहतर इकोसिस्टम: एजेंट को अलग-अलग सुविधाएं दें: पहले से बने टूल (खोज, कोड एक्ज़ीक्यूट करना वगैरह) का इस्तेमाल करें, कस्टम फ़ंक्शन बनाएं, तीसरे पक्ष के एजेंट फ़्रेमवर्क (LangChain, CrewAI) से टूल इंटिग्रेट करें या अन्य एजेंट को टूल के तौर पर इस्तेमाल करें.
- फ़्लेक्सिबल ऑर्केस्ट्रेशन: अनुमानित पाइपलाइन के लिए, वर्कफ़्लो एजेंट (
SequentialAgent
,ParallelAgent
, औरLoopAgent
) का इस्तेमाल करके वर्कफ़्लो तय करें. इसके अलावा, अडैप्टिव व्यवहार के लिए, एलएलएम पर आधारित डाइनैमिक राउटिंग (LlmAgent
ट्रांसफ़र) का फ़ायदा लें. - इंटिग्रेटेड डेवलपर एक्सपीरिएंस: शक्तिशाली सीएलआई और इंटरैक्टिव डेवलपर यूआई की मदद से, स्थानीय तौर पर डेवलप, टेस्ट, और डीबग करें. इवेंट, स्थिति, और एजेंट के एक्ज़ीक्यूशन की सिलसिलेवार तरीके से जांच करें.
- पहले से मौजूद आकलन की सुविधा: पहले से तय किए गए टेस्ट केस के आधार पर, एजेंट की परफ़ॉर्मेंस का आकलन करें. इसके लिए, जवाब की क्वालिटी और चरण-दर-चरण निर्देशों के पालन की जांच करें.
- डिप्लॉय करने के लिए तैयार: अपने एजेंट को कंटेनर में रखें और उन्हें कहीं भी डिप्लॉय करें. जैसे, उन्हें स्थानीय तौर पर चलाएं, Vertex AI Agent Engine के साथ स्केल करें या Cloud Run या Docker का इस्तेमाल करके कस्टम इन्फ़्रास्ट्रक्चर में इंटिग्रेट करें.
अन्य जनरेटिव एआई एसडीके या एजेंट फ़्रेमवर्क भी आपको मॉडल से क्वेरी करने और उन्हें टूल इस्तेमाल करने की अनुमति देते हैं. हालांकि, एक से ज़्यादा मॉडल के बीच डाइनैमिक कोऑर्डिनेशन के लिए, आपको काफ़ी काम करना पड़ता है.
एजेंट डेवलपमेंट किट, इन टूल की तुलना में ज़्यादा बेहतर फ़्रेमवर्क उपलब्ध कराती है. इसकी मदद से, एक-दूसरे से कई एजेंट आसानी से कनेक्ट किए जा सकते हैं. इससे, मुश्किल लेकिन आसानी से मैनेज किए जा सकने वाले वर्कफ़्लो बनाए जा सकते हैं.
4. A2A के बारे में जानकारी
Agent2Agent (A2A) प्रोटोकॉल एक ओपन स्टैंडर्ड है. इसे अलग-अलग फ़्रेमवर्क, वेंडर, और डोमेन के ऑटोनॉमस एआई एजेंट के बीच बिना किसी रुकावट के सुरक्षित तरीके से कम्यूनिकेशन और सहयोग करने के लिए डिज़ाइन किया गया है.
- सभी के साथ काम करने की सुविधा: A2A की मदद से, एजेंट एक साथ काम कर सकते हैं. भले ही, उनकी टेक्नोलॉजी अलग-अलग हों. इससे, एक से ज़्यादा एजेंट वाले इकोसिस्टम को बढ़ावा मिलता है. इसका मतलब है कि अलग-अलग कंपनियों ने अलग-अलग प्लैटफ़ॉर्म पर जो एजेंट बनाए हैं वे आपस में बातचीत कर सकते हैं और समन्वय कर सकते हैं.
- सुविधाओं की जानकारी: एजेंट, "एजेंट कार्ड" (JSON दस्तावेज़) का इस्तेमाल करके अपनी सुविधाओं का विज्ञापन कर सकते हैं. इनमें उनकी पहचान, A2A की काम करने वाली सुविधाएं, कौशल, और पुष्टि करने की ज़रूरी शर्तों के बारे में जानकारी होती है. इससे अन्य एजेंट, किसी टास्क के लिए सबसे सही एजेंट को ढूंढ और चुन पाते हैं.
- डिफ़ॉल्ट रूप से सुरक्षित: सुरक्षा एक बुनियादी सिद्धांत है. A2A में एंटरप्राइज़-ग्रेड के पुष्टि और अनुमति देने वाले सिस्टम शामिल होते हैं. ये सिस्टम, एचटीटीपीएस/टीएलएस, JWT, OIDC, और एपीआई कुंजियों जैसे स्टैंडर्ड का इस्तेमाल करते हैं. इससे सुरक्षित इंटरैक्शन और संवेदनशील डेटा को सुरक्षित रखने में मदद मिलती है.
- मोडलिटी से जुड़ी जानकारी के बिना काम करना: यह प्रोटोकॉल, बातचीत करने के अलग-अलग तरीकों के साथ काम करता है. जैसे, टेक्स्ट, ऑडियो, और वीडियो स्ट्रीमिंग. साथ ही, यह इंटरैक्टिव फ़ॉर्म और एम्बेड किए गए iframe के साथ भी काम करता है. इस सुविधा की मदद से एजेंट, टास्क और उपयोगकर्ता के हिसाब से सबसे सही फ़ॉर्मैट में जानकारी शेयर कर सकते हैं.
- टास्क मैनेजमेंट को व्यवस्थित करना: A2A, टास्क सौंपने, उनकी निगरानी करने, और उन्हें पूरा करने के लिए साफ़ तौर पर प्रोटोकॉल तय करता है. यह एक जैसे टास्क को ग्रुप करने और उन्हें अलग-अलग एजेंट के बीच मैनेज करने की सुविधा देता है. इसके लिए, यूनीक टास्क आईडी का इस्तेमाल किया जाता है. टास्क, तय की गई लाइफ़साइकल के हिसाब से ट्रांज़िशन कर सकते हैं. जैसे, सबमिट किया गया, काम चल रहा है, पूरा हो गया.
- ओपेक एक्ज़ीक्यूशन: इसकी एक अहम सुविधा यह है कि एजेंट को अन्य एजेंट के साथ, अपनी इंटरनल रीज़निंग प्रोसेस, मेमोरी या खास टूल की जानकारी शेयर करने की ज़रूरत नहीं होती. ये सिर्फ़ कॉल की जा सकने वाली सेवाओं को दिखाते हैं. इससे मॉड्यूलरिटी और निजता को बढ़ावा मिलता है.
- मौजूदा स्टैंडर्ड के आधार पर बनाया गया: A2A, वेब टेक्नोलॉजी का इस्तेमाल करता है. जैसे, रीयल-टाइम स्ट्रीमिंग के लिए HTTP और Server-Sent Events (SSE) और स्ट्रक्चर्ड डेटा के आदान-प्रदान के लिए JSON-RPC. इससे मौजूदा आईटी इन्फ़्रास्ट्रक्चर के साथ इंटिग्रेट करना आसान हो जाता है.
- एसिंक्रोनस कम्यूनिकेशन: इस प्रोटोकॉल को एसिंक्रोनस कम्यूनिकेशन को ध्यान में रखकर डिज़ाइन किया गया है. इससे टास्क को आसानी से पूरा किया जा सकता है. साथ ही, कनेक्शन लगातार न होने पर भी अपडेट के लिए पुश नोटिफ़िकेशन चालू किए जा सकते हैं.
5. एजेंट आर्किटेक्चर
इस लैब में, आपको एक ऐसा मल्टी-एजेंट ऐप्लिकेशन बनाना होगा जो आपकी ज़रूरत के हिसाब से इमेज जनरेट करे. साथ ही, आपको इमेज दिखाने से पहले उसका आकलन करे.
सिस्टम को image_scoring नाम के मुख्य एजेंट के साथ स्ट्रक्चर किया गया है. यह पूरी प्रोसेस को मैनेज करता है. इस मुख्य एजेंट का एक सब-एजेंट है, जिसे image_generation_scoring_agent कहा जाता है. इसके भी अपने सब-एजेंट हैं, जो ज़्यादा खास टास्क के लिए काम करते हैं. इससे एक क्रमबद्ध संबंध बनता है, जिसमें मुख्य एजेंट अपने सब-एजेंट को टास्क सौंपता है. दूसरी इमेज: एजेंट के काम करने का पूरा फ़्लो.
सभी एजेंट की सूची
- image_scoring (Main Agent):
- मकसद: यह रूट एजेंट है, जो पूरे वर्कफ़्लो को मैनेज करता है. यह image_generation_scoring_agent और checker_agent को तब तक लूप में चलाता रहता है, जब तक कि कोई शर्त पूरी नहीं हो जाती.
- सब-एजेंट:
- image_generation_scoring_agent
- checker_agent_instance
- image_generation_scoring_agent (image_scoring का सब-एजेंट):
- मकसद: यह एजेंट, इमेज जनरेट करने और उन्हें स्कोर करने के मुख्य लॉजिक के लिए ज़िम्मेदार है. यह ऐसा करने के लिए, तीन सब-एजेंट के क्रम को लागू करता है.
- सब-एजेंट:
- image_generation_prompt_agent
- image_generation_agent
- scoring_images_prompt
- checker_agent_instance (image_scoring का सब-एजेंट):
- मकसद: यह एजेंट यह जांच करता है कि इमेज स्कोर करने की प्रोसेस जारी रखनी है या बंद करनी है. यह check_tool_condition टूल का इस्तेमाल करके, टास्क पूरा होने की शर्त का आकलन करता है.
- image_generation_prompt_agent (image_generation_scoring_agent का सब-एजेंट):
- मकसद: यह एजेंट, इमेज जनरेट करने के लिए प्रॉम्प्ट बनाने में माहिर है. यह मॉडल, इनपुट के तौर पर दिए गए टेक्स्ट का इस्तेमाल करके, इमेज जनरेट करने वाले मॉडल के लिए एक ऐसा प्रॉम्प्ट जनरेट करता है जिसमें पूरी जानकारी शामिल होती है.
- image_generation_agent (image_generation_scoring_agent का सब-एजेंट):
- मकसद: यह एजेंट, Imagen 3 का इस्तेमाल करके इमेज बनाने में माहिर है. यह image_generation_prompt_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_prompt_agent, scoring_images_prompt
- get_image:
- ब्यौरा: यह टूल, जनरेट किए गए इमेज आर्टफ़ैक्ट को लोड करता है, ताकि उसे स्कोर किया जा सके.
- इस्तेमाल करने वाला: scoring_images_prompt
- set_score:
- ब्यौरा: यह टूल, सेशन की स्थिति में जनरेट की गई इमेज का कुल स्कोर सेट करता है.
- इस्तेमाल करने वाला: scoring_images_prompt
6. टास्क 1. ADK इंस्टॉल करना और अपना एनवायरमेंट सेट अप करना
इस हैंड्स-ऑन में, हम Cloud Shell का इस्तेमाल करके टास्क पूरे करेंगे.
Vertex AI के सुझाए गए एपीआई चालू करना
- Google Cloud Console में, सबसे ऊपर मौजूद खोज बार में Vertex AI खोजें और उस पर जाएं.
- सुझाए गए सभी एपीआई चालू करें पर क्लिक करें.
Cloud Shell Editor टैब तैयार करना
- Google Cloud Console विंडो को चुनने के बाद, Cloud Shell खोलें. इसके लिए, अपने कीबोर्ड पर G कुंजी दबाएं. इसके बाद, S कुंजी दबाएं. इसके अलावा, Google Cloud Console में सबसे ऊपर दाएं कोने में मौजूद, क्लाउड शेल बटन
पर क्लिक करके भी इसे खोला जा सकता है.
- जारी रखें पर क्लिक करें.
- जब Cloud Shell को अनुमति देने के लिए कहा जाए, तब अनुमति दें पर क्लिक करें.
- Cloud Shell पैनल के सबसे ऊपर दाएं कोने में मौजूद, नई विंडो में खोलें बटन
पर क्लिक करें.
- फ़ाइलें देखने के लिए, पैनल में सबसे ऊपर मौजूद एडिटर खोलें पेंसिल आइकॉन (
) पर क्लिक करें.
- फ़ाइल एक्सप्लोरर खोलने के लिए, बाईं ओर मौजूद नेविगेशन मेन्यू में सबसे ऊपर, एक्सप्लोरर आइकॉन
पर क्लिक करें.
- फ़ोल्डर खोलें बटन पर क्लिक करें.
- इस लैब के बाकी हिस्से में, इस विंडो का इस्तेमाल Cloud Shell Editor और Cloud Shell Terminal के साथ अपने आईडीई के तौर पर किया जा सकता है.
इस लैब के लिए, ADK और कोड सैंपल डाउनलोड और इंस्टॉल करें
- github से ज़रूरी सोर्स को क्लोन करने और ज़रूरी लाइब्रेरी इंस्टॉल करने के लिए, यहां दिए गए कमांड चलाएं.
#create the project directory mkdir imagescoring cd imagescoring #clone the code in the local directory git clone https://github.com/haren-bh/multiagenthandson.git #Create the virtual environment python3 -m venv pythonenv source pythonenv/bin/activate #install google-adk and a2a sdk python3 -m pip install google-adk==1.8.0 python3 -m pip install a2a-sdk==0.2.16
- हम अतिरिक्त ज़रूरी शर्तें इंस्टॉल करने के लिए, कविता का इस्तेमाल करेंगे:
cd multiagenthandson #go to the application directory pip install poetry poetry-plugin-export poetry install --with deployment
- अगर आपके पास क्लाउड स्टोरेज बकेट नहीं है, तो Google Cloud Storage में जाकर नई बकेट बनाएं. gsutil कमांड का इस्तेमाल करके भी बकेट बनाई जा सकती है.
gsutil mb gs://YOUR-UNIQUE-BUCKETNAME
- एडिटर में, View->Toggle hidden files पर जाएं. इसके बाद, image_scoring फ़ोल्डर में, यहां दिए गए कॉन्टेंट के साथ .env फ़ाइल बनाएं. ज़रूरी जानकारी जोड़ें. जैसे, प्रोजेक्ट का नाम और क्लाउड स्टोरेज बकेट.
GOOGLE_GENAI_USE_VERTEXAI=1 #1 if VERTEXAI has to be used. Can be 0 if API_KEY is specified
GOOGLE_CLOUD_PROJECT=YOUR CLOUD PROJECT NAME
GOOGLE_CLOUD_LOCATION=us-central1
GOOGLE_CLOUD_STORAGE_BUCKET=YOUR BUCKET NAME # Only required for deployment on Agent Engine
GCS_BUCKET_NAME=YOUR BUCKET NAME #Bucket for storing generated images.
SCORE_THRESHOLD=40 # Min threshold for image_score. Max Score is 50 , hence should be less than 50.
#If the computed score is higher then loop will terminate
#MAX_ITERATIONS=5 #Max iterations for evaluating the image_score before terminating the loop.
IMAGEN_MODEL="imagen-3.0-generate-002"
GENAI_MODEL="gemini-2.5-flash"
#AGENT_ENGINE_ID=<AGENT_ENGINE_ID> #The Agent Engine ID obtained after deploying to the agent engine.
- सोर्स कोड में एजेंट स्ट्रक्चर देखें. इसकी शुरुआत agent.py से करें. इस एजेंट में रूट एजेंट होता है, जो अन्य एजेंटों से कनेक्ट होगा.
- टर्मिनल में सबसे ऊपर मौजूद डायरेक्ट्री multiagenthandson पर वापस जाएं. इसके बाद, एजेंट को स्थानीय तौर पर चलाने के लिए यह कमांड डालें
# Run the following command to run agents locally export GCS_BUCKET_NAME=your gcs bucket name adk web
पहली इमेज
ADK के ब्राउज़र पर आधारित GUI क्लाइंट को खोलने के लिए, टर्मिनल पर दिखाए गए http:// यूआरएल पर Ctrl+क्लिक करें (macOS के लिए CMD+क्लिक करें). यह इमेज 2 की तरह दिखनी चाहिए
- आइए, कुछ इमेज जनरेट करते हैं. यहाँ दिए गए प्रॉम्प्ट या अपने प्रॉम्प्ट आज़माएँ.
- सूर्यास्त के समय, शांत पहाड़ी इलाके का नज़ारा
- साइकल चलाती हुई बिल्ली
दूसरी इमेज
7. टास्क 2. एजेंट इंजन में डिप्लॉय करना
अब हम एजेंट को एजेंट इंजन पर डिप्लॉय करते हैं. Agent Engine, GCP में एजेंटों को डिप्लॉय करने के लिए पूरी तरह से मैनेज की जाने वाली सेवा है. Agent Engine, ADK के साथ काम करता है. इसलिए, ADK की मदद से बनाए गए एजेंट को Agent Engine में डिप्लॉय किया जा सकता है.
- कुछ एनवायरमेंट वैरिएबल तय करना
export GOOGLE_CLOUD_LOCATION='us-central1' export GOOGLE_CLOUD_PROJECT='your project id'
- poetry का इस्तेमाल करके, requirements.txt फ़ाइल बनाएं. Poetry, requirements.txt फ़ाइल बनाने के लिए pyproject.toml का इस्तेमाल करेगा. कमांड चलाने के बाद, देखें कि requirements.txt फ़ाइल बन गई है या नहीं.
# Go to the parent folder containing pyproject.toml file # install poetry-plugin-export pip install poetry-plugin-export #Create requirements.txt file poetry export -f requirements.txt --output requirements.txt --without-hashes
- पैकेज बनाएं. हमें अपने ऐप्लिकेशन को .whl Python पैकेज में बंडल करना होगा. हम इसके लिए कविता का इस्तेमाल करेंगे. कमांड चलाने के बाद, पक्का करें कि dist फ़ोल्डर बन गया हो और उसमें .whl फ़ाइल मौजूद हो.
# Go to the parent folder containing pyproject.toml file #Create python package, to create whl file poetry build
- अब हम डिप्लॉय करने की स्क्रिप्ट तैयार करेंगे. डप्लॉय स्क्रिप्ट, इमेज स्कोरिंग एजेंट या एजेंट इंजन सेवा को डप्लॉय करेगी. कृपया image_scoring फ़ोल्डर में मौजूद deploy.py फ़ाइल के कॉन्टेंट को यहां दिए गए कॉन्टेंट से बदलें.
# Change the content of the following. Look for #change this comment
import vertexai
from .agent import root_agent
import os
import glob # To easily find the wheel file
PROJECT_ID = "YOUR PROJECT ID" #change this your project
LOCATION = "us-central1" #change this
STAGING_BUCKET = "gs://YOUR BUCKET " #change this to your bucket
from vertexai import agent_engines
vertexai.init(
project=PROJECT_ID,
location=LOCATION,
staging_bucket=STAGING_BUCKET,
)
remote_app = agent_engines.create(
agent_engine=root_agent,
requirements=open(os.path.join(os.getcwd(), "requirements.txt")).readlines()+["./dist/image_scoring-0.1.0-py3-none-any.whl"],#change this to your local location
extra_packages=[
"./dist/image_scoring-0.1.0-py3-none-any.whl", # change this to your location
]
)
print(remote_app.resource_name)
- अब हम डिप्लॉय स्क्रिप्ट चला सकते हैं.
#run deploy script from the parent folder containing deploy.py python3 -m image_scoring.deploy
डप्लॉय करने के बाद, आपको नीचे दिए गए जैसा कुछ दिखेगा
इमेज 3
- अब डिप्लॉय किए गए एजेंट को टेस्ट करते हैं. रिमोटली डिप्लॉय किए गए एजेंट इंजन को टेस्ट करने के लिए, सबसे पहले टर्मिनल में डिप्लॉय आउटपुट से एजेंट की जगह की जानकारी कॉपी करें. यह कुछ ऐसा दिखना चाहिए, projects/85469421903/locations/us-central1/reasoningEngines/7369674597261639680 .
testclient फ़ोल्डर पर जाएं. इसके बाद,remote_test.py फ़ाइल खोलें और इन लाइनों में बदलाव करें.
PROJECT_ID = "" #change this LOCATION = "" #change this STAGING_BUCKET = "" #change this #replace the id with your own. reasoning_engine_id="your agent engine id" #You can replace this with your own prompt image_prompt="A cat riding a bicycle" #execute remote_test.py python3 remote_test.py
8. टास्क 3. A2A एजेंट बनाना
इस चरण में, हम पिछले चरणों में बनाए गए एजेंट के आधार पर, एक सामान्य A2A एजेंट बनाएंगे. मौजूदा एडीके एजेंट को A2A प्रोटोकॉल के तहत पब्लिश किया जा सकता है. इस चरण में आपको इन मुख्य बातों के बारे में जानकारी मिलेगी.
- A2A प्रोटोकॉल के बारे में बुनियादी बातें जानें.
- जानें कि ADK और A2A प्रोटोकॉल एक-दूसरे के साथ कैसे काम करते हैं.
- A2A प्रोटोकॉल के साथ इंटरैक्ट करने का तरीका जानें.
इस हैंड्स-ऑन में, हम image_scoring_adk_a2a_server फ़ोल्डर में मौजूद कोड का इस्तेमाल करेंगे. टास्क शुरू करने से पहले, कृपया अपनी डायरेक्ट्री को इस फ़ोल्डर में बदलें.
A2A एजेंट कार्ड बनाना
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 एजेंट के लिए एंट्री पॉइंट है. इसमें यह कॉन्टेंट होना चाहिए,
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 में जाकर यह कमांड चलाएं
#set some environmental variables export GOOGLE_CLOUD_PROJECT=datapipeline-372305 export GOOGLE_CLOUD_LOCATION=us-central1 export GCS_BUCKET_NAME=haren-genai-bucket #following command runs the ADK agent as a2a agent adk api_server --a2a --port 8001 remote_a2a
A2A एजेंट की जांच करना
एजेंट के चालू होने के बाद, अब हम जाकर एजेंट को टेस्ट कर सकते हैं. सबसे पहले, एजेंट कार्ड की जांच करते हैं.
#Execute the following curl http://localhost:8001/a2a/image_scoring/.well-known/agent.json
ऊपर दिए गए निर्देशों को पूरा करने पर, आपको हमारे A2A एजेंट का एजेंट कार्ड दिखेगा. इसमें मुख्य रूप से agent.json फ़ाइल का कॉन्टेंट होगा, जिसे हमने पिछले चरण में बनाया था.
अब एजेंट को अनुरोध भेजते हैं. हम एजेंट को अनुरोध भेजने के लिए, कर्ल का इस्तेमाल कर सकते हैं,
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 में जाकर आउटपुट इमेज देखी जा सकती है.
9. व्यवस्थित करें
अब हम उस डेटा को मिटा देते हैं जिसे हमने अभी-अभी बनाया है.
- हमने अभी जो एजेंट इंजन सर्वर बनाया है उसे मिटाओ. Google Cloud Console के खोज बार में Vertex AI टाइप करके, Vertex AI पर जाएं. बाईं ओर मौजूद एजेंट इंजन पर क्लिक करें.एजेंट को मिटाने के लिए, मिटाएं पर क्लिक करें.
इमेज 4
- Cloud Shell में मौजूद फ़ाइलें मिटाएं
#Execute the following to delete the files rm -R imagescoring
- बकेट मिटाएं. GCP कंसोल->Cloud Storage पर जाएं. इसके बाद , अपनी बकेट चुनें और उसे मिटाएं.