ADK, एजेंट इंजन, और AlloyDB के साथ मल्टी-एजेंट ऐप्लिकेशन

ADK, एजेंट इंजन, और AlloyDB के साथ मल्टी-एजेंट ऐप्लिकेशन

इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी

subjectपिछली बार जून 16, 2025 को अपडेट किया गया
account_circleAuthor: Abirami Sukumaran ने लिखा

1. खास जानकारी

एजेंट एक ऐसा प्रोग्राम है जो अपने-आप काम करता है. यह एआई मॉडल से बात करके, अपने टूल और कॉन्टेक्स्ट का इस्तेमाल करके, लक्ष्य के आधार पर काम करता है. साथ ही, यह सच्चाई के आधार पर अपने-आप फ़ैसले ले सकता है!

जब आपके ऐप्लिकेशन में एक से ज़्यादा एजेंट होते हैं, जो अपने-आप काम करते हैं और अपने बड़े मकसद को पूरा करने के लिए ज़रूरत के हिसाब से साथ मिलकर काम करते हैं. साथ ही, हर एजेंट के पास किसी खास फ़ोकस एरिया के बारे में अलग से जानकारी होती है और उसकी ज़िम्मेदारी होती है, तो आपका ऐप्लिकेशन मल्टी-एजेंट सिस्टम बन जाता है.

एजेंट डेवलपमेंट किट (एडीके)

एजेंट डेवलपमेंट किट (ADK), एआई एजेंट को डेवलप और डिप्लॉय करने के लिए, एक सुविधाजनक और मॉड्यूलर फ़्रेमवर्क है. ADK, कई अलग-अलग एजेंट इंस्टेंस को मल्टी-एजेंट सिस्टम (एमएएस) में कंपोज करके, बेहतर ऐप्लिकेशन बनाने में मदद करता है.

ADK में, मल्टी-एजेंट सिस्टम एक ऐसा ऐप्लिकेशन है जिसमें अलग-अलग एजेंट, अक्सर हैरारकी बनाकर, बड़े लक्ष्य को हासिल करने के लिए मिलकर काम करते हैं या समन्वय करते हैं. अपने ऐप्लिकेशन को इस तरह से व्यवस्थित करने से कई फ़ायदे मिलते हैं. जैसे, बेहतर मॉड्यूलरिटी, विशेषज्ञता, फिर से इस्तेमाल करने की सुविधा, रखरखाव, और खास वर्कफ़्लो एजेंट का इस्तेमाल करके, स्ट्रक्चर्ड कंट्रोल फ़्लो तय करने की सुविधा.

मल्टी-एजेंट सिस्टम के लिए ध्यान रखने वाली बातें

सबसे पहले, यह ज़रूरी है कि आप हर एजेंट की विशेषता को अच्छी तरह समझें और उसके बारे में सही जानकारी रखें. — "क्या आपको पता है कि किसी काम के लिए, आपको किसी खास सब-एजेंट की ज़रूरत क्यों है", पहले इस बात का पता लगाएं.

दूसरा, हर जवाब को रूट एजेंट के साथ कैसे जोड़ें, ताकि उन्हें रूट किया जा सके और उनका मतलब समझा जा सके.

तीसरा, एजेंट रूटिंग के कई टाइप हैं, जिनके बारे में आपको यहां दिए गए दस्तावेज़ में बताया गया है. देखें कि आपके ऐप्लिकेशन के फ़्लो के हिसाब से कौनसा विकल्प सही है. साथ ही, यह भी पता लगाएं कि मल्टी-एजेंट सिस्टम के फ़्लो कंट्रोल के लिए, आपको कौनसे अलग-अलग कॉन्टेक्स्ट और स्टेटस की ज़रूरत है.

आपको क्या बनाना है

किचन में होने वाले बदलावों को मैनेज करने के लिए, मल्टी-एजेंट सिस्टम बनाते हैं. हम यही करेंगे. हम तीन एजेंट वाला सिस्टम बनाएंगे.

  1. रेनोवेशन के प्रस्ताव से जुड़ा एजेंट
  2. अनुमतियों और नियमों का पालन करने की जांच करने वाला एजेंट
  3. ऑर्डर की स्थिति देखने वाला एजेंट

रसोई के नवीनीकरण के प्रस्ताव का दस्तावेज़ जनरेट करने के लिए, Renovation Proposal Agent.

परमिट और अनुपालन एजेंट, जो परमिट और अनुपालन से जुड़े टास्क पूरा करता है.

ऑर्डर स्टेटस की जांच करने वाला एजेंट, जो AlloyDB में सेट अप किए गए ऑर्डर मैनेजमेंट डेटाबेस पर काम करके, मटीरियल के ऑर्डर का स्टेटस देखता है.

हमारे पास एक रूट एजेंट होगा, जो ज़रूरत के हिसाब से इन एजेंट को ऑर्केस्ट्रेट करता है.

ज़रूरी शर्तें

  • कोई ब्राउज़र, जैसे कि Chrome या Firefox
  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट.

2. शुरू करने से पहले

प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है या नहीं, यह देखने का तरीका जानें .

अगर आपको Google Cloud का इस्तेमाल शुरू करने और ADK का इस्तेमाल करने के लिए क्रेडिट चाहिए, तो क्रेडिट रिडीम करने के लिए इस लिंक का इस्तेमाल करें. इसे रिडीम करने के लिए, यहां दिए गए निर्देशों का पालन करें. कृपया ध्यान दें कि रिडीम करने के लिए, यह लिंक सिर्फ़ मई के आखिर तक मान्य है.

  1. इस लिंक पर क्लिक करके, Cloud Shell चालू करें. Cloud Shell टर्मिनल (क्लाउड कमांड चलाने के लिए) और एडिटर (प्रोजेक्ट बनाने के लिए) के बीच टॉगल किया जा सकता है. इसके लिए, Cloud Shell में मौजूद बटन पर क्लिक करें.
  2. Cloud Shell से कनेक्ट होने के बाद, यह जांच करें कि आपकी पुष्टि पहले ही हो चुकी है या नहीं. साथ ही, यह भी देखें कि प्रोजेक्ट आपके प्रोजेक्ट आईडी पर सेट है या नहीं. इसके लिए, यह कमांड इस्तेमाल करें:
gcloud auth list
  1. Cloud Shell में यह कमांड चलाकर पुष्टि करें कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है.
gcloud config list project
  1. अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
  1. पक्का करें कि आपके पास Python 3.9 या इसके बाद का वर्शन हो
  2. ये कमांड चलाकर, इन एपीआई को चालू करें:
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
  1. gcloud के निर्देशों और इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.

3. प्रोटोटाइप

अगर आपको प्रोजेक्ट के लिए "Gemini 2.5 Pro" मॉडल का इस्तेमाल करना है, तो इस चरण को छोड़ा जा सकता है.

Google AI Studio पर जाएं. प्रॉम्प्ट में टाइप करना शुरू करें. मेरा प्रॉम्प्ट यह है:

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

बेहतर नतीजे पाने के लिए, दाईं ओर मौजूद पैरामीटर में बदलाव करें और उन्हें कॉन्फ़िगर करें.

इस आसान ब्यौरे के आधार पर, Gemini ने मुझे अपने घर के रिनोवेशन की शुरुआत करने के लिए, ज़्यादा जानकारी वाला प्रॉम्प्ट दिया! इसका मतलब है कि हम AI Studio और अपने मॉडल से बेहतर जवाब पाने के लिए, Gemini का इस्तेमाल कर रहे हैं. इस्तेमाल के उदाहरण के आधार पर, अलग-अलग मॉडल भी चुने जा सकते हैं.

हमने Gemini 2.5 Pro को चुना है. यह एक थिंकिंग मॉडल है. इसका मतलब है कि हमें लंबी अवधि के विश्लेषण और ज़्यादा जानकारी वाले दस्तावेज़ों के लिए, ज़्यादा आउटपुट टोकन मिलते हैं. इस मामले में, 65 हज़ार टोकन तक मिल सकते हैं. Gemini का थिंकिंग बॉक्स तब दिखता है, जब Gemini 2.5 Pro को चालू किया जाता है. इसमें डेटा को बेहतर तरीके से प्रोसेस करके सवालों के जवाब देने की क्षमता है. साथ ही, यह लंबे कॉन्टेक्स्ट वाले अनुरोधों को भी प्रोसेस कर सकता है.

जवाब का स्निपेट यहां देखें:

a80d4bad4b3864f7.png

एआई स्टूडियो ने मेरे डेटा का विश्लेषण करके, कैबिनेट, काउंटरटॉप, बैकस्प्लैश, फ़्लोरिंग, सिंक, कोहेशन, कलर पैलेट, और मटीरियल चुनने जैसी सभी चीज़ें तैयार कीं. Gemini, सोर्स की जानकारी भी दे रहा है!

जब तक आपको नतीजे से संतुष्टि न हो जाए, तब तक अलग-अलग मॉडल के विकल्पों को दोहराएं. हालांकि, मेरा सुझाव है कि Gemini 2.5 का इस्तेमाल करें :)

वैसे भी, अब किसी दूसरे प्रॉम्प्ट की मदद से, यह देखें कि आपका आइडिया कैसा दिखता है:

Add flat and circular light accessories above the island area for my current kitchen in the attached image.

अपनी मौजूदा रसोई की इमेज (या किसी रसोई की सैंपल इमेज) का लिंक अटैच करें. मॉडल को "Gemini 2.0 Flash Preview Image Generation" पर बदलें, ताकि आपके पास इमेज जनरेट करने का ऐक्सेस हो.

मुझे यह आउटपुट मिला:

b5b1e83fcada28f5.png

Gemini की यही ताकत है!

वीडियो को समझने से लेकर, नेटिव इमेज जनरेट करने और Google Search की मदद से असल जानकारी पाने तक – ये ऐसी चीज़ें हैं जिन्हें सिर्फ़ Gemini की मदद से बनाया जा सकता है.

AI Studio में जाकर, इस प्रोटोटाइप को लिया जा सकता है. साथ ही, एपीआई पासकोड हासिल किया जा सकता है और Vertex AI ADK की मदद से, इसे एक एजेंसी ऐप्लिकेशन में स्केल किया जा सकता है.

4. ADK टूल सेटअप करना

  1. वर्चुअल एनवायरमेंट बनाना और चालू करना (सुझाया गया)

अपने Cloud Shell टर्मिनल से, वर्चुअल एनवायरमेंट बनाएं:

python -m venv .venv

वर्चुअल एनवायरमेंट की सुविधा चालू करने के लिए:

source .venv/bin/activate
  1. ADK इंस्टॉल करना
pip install google-adk

5. प्रोजेक्ट का स्ट्रक्चर

  1. Cloud Shell टर्मिनल में, अपनी पसंद की प्रोजेक्ट लोकेशन में डायरेक्ट्री बनाएं
mkdir agentic-apps
cd agentic
-apps
mkdir renovation
-agent
  1. Cloud Shell एडिटर पर जाएं और फ़ाइलें बनाकर, प्रोजेक्ट का यह स्ट्रक्चर बनाएं (शुरुआत में खाली है):
renovation-agent/
        __init__
.py
        agent
.py
       
.env
        requirements
.txt

6. सोर्स कोड

  1. "init.py" पर जाएं और इसे इस कॉन्टेंट से अपडेट करें:
from . import agent
  1. agent.py पर जाएं और इस पाथ से फ़ाइल को यहां दिए गए कॉन्टेंट से अपडेट करें:
https://github.com/AbiramiSukumaran/adk-renovation-agent/blob/main/agent.py

agent.py में, हम ज़रूरी डिपेंडेंसी इंपोर्ट करते हैं, .env फ़ाइल से कॉन्फ़िगरेशन पैरामीटर वापस लाते हैं, और root_agent तय करते हैं. यह एजेंट, उन तीन सब-एजेंट को ऑर्केस्ट्रेट करता है जिन्हें हमने इस ऐप्लिकेशन में बनाने का फ़ैसला किया है. ऐसे कई टूल हैं जो इन सब-एजेंट के मुख्य और सहायक फ़ंक्शन में मदद करते हैं.

  1. पक्का करें कि आपके पास Cloud Storage बकेट हो

यह एजेंट के जनरेट किए गए प्रस्ताव के दस्तावेज़ को सेव करने के लिए है. इसे बनाएं और ऐक्सेस दें, ताकि Vertex AI की मदद से बनाया गया मल्टी-एजेंट सिस्टम इसे ऐक्सेस कर सके. ऐसा करने का तरीका यहां बताया गया है:

https://cloud.google.com/storage/docs/creating-buckets#console

अपनी बकेट को "next-demo-store" नाम दें. अगर आपने इसे कोई दूसरा नाम दिया है, तो .env फ़ाइल में STORAGE_BUCKET की वैल्यू अपडेट करना न भूलें. यह वैल्यू, ENV वैरिएबल सेटअप करने के चरण में मिलती है.

  1. बकेट का ऐक्सेस सेट अप करने के लिए, Cloud Storage कंसोल और अपनी स्टोरेज बकेट पर जाएं. हमारे मामले में, बकेट का नाम "next-demo-storage" है: https://console.cloud.google.com/storage/browser/next-demo-storage.

अनुमतियां -> प्रिंसिपल देखें -> ऐक्सेस दें पर जाएं. प्रिंसिपल के तौर पर "allUsers" और भूमिका के तौर पर "स्टोरेज ऑब्जेक्ट का उपयोगकर्ता" चुनें.

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
  1. डिपेंडेंसी की सूची बनाना

requirements.txt में सभी डिपेंडेंसी की सूची बनाएं. इसे रिपो से कॉपी किया जा सकता है.

मल्टी-एजेंट सिस्टम के सोर्स कोड के बारे में जानकारी

agent.py फ़ाइल, एजेंट डेवलपमेंट किट (ADK) का इस्तेमाल करके, हमारे किचन के नवीनीकरण से जुड़े मल्टी-एजेंट सिस्टम के स्ट्रक्चर और व्यवहार के बारे में बताती है. आइए, इन मुख्य कॉम्पोनेंट के बारे में ज़्यादा जानें:

एजेंट की परिभाषाएं

RenovationProposalAgent

इस एजेंट की ज़िम्मेदारी, किचन के नवीनीकरण का प्रस्ताव वाला दस्तावेज़ बनाना है. यह वैकल्पिक रूप से, किचन का साइज़, पसंदीदा स्टाइल, बजट, और ग्राहक की प्राथमिकताएं जैसे इनपुट पैरामीटर लेता है. इस जानकारी के आधार पर, यह ज़्यादा जानकारी वाला प्रस्ताव जनरेट करने के लिए, लार्ज लैंग्वेज मॉडल (एलएलएम) Gemini 2.5 का इस्तेमाल करता है. इसके बाद, जनरेट किया गया प्रस्ताव, Google Cloud Storage बकेट में सेव हो जाता है.

PermitsAndComplianceCheckAgent

यह एजेंट यह पक्का करता है कि रिनोवेशन प्रोजेक्ट, स्थानीय बिल्डिंग कोड और नियमों का पालन करता हो. इसमें, सुझाए गए रिनोवेशन (जैसे, स्ट्रक्चर में बदलाव, इलेक्ट्रिकल वर्क, प्लंबिंग में बदलाव) के बारे में जानकारी मिलती है. साथ ही, अनुमति की ज़रूरी शर्तों और नियमों का पालन करने के लिए, एलएलएम का इस्तेमाल किया जाता है. एजेंट, नॉलेज बेस से मिली जानकारी का इस्तेमाल करता है. इस नॉलेज बेस को, ज़रूरी नियमों के बारे में जानकारी पाने के लिए, बाहरी एपीआई को ऐक्सेस करने के हिसाब से बनाया जा सकता है.

OrderingAgent

अगर आपको इसे अभी लागू नहीं करना है, तो इस एजेंट को हटाया जा सकता है. यह एजेंट, रिनोवेशन के लिए ज़रूरी मटीरियल और उपकरणों के ऑर्डर की स्थिति की जांच करता है. इसे चालू करने के लिए, आपको सेटअप करने के चरणों में बताए गए तरीके से Cloud Run फ़ंक्शन बनाना होगा. इसके बाद, एजेंट इस Cloud Run फ़ंक्शन को कॉल करेगा. यह फ़ंक्शन, ऑर्डर की जानकारी वाले AlloyDB डेटाबेस से इंटरैक्ट करता है. इस इलस्ट्रेशन में, रीयल-टाइम डेटा को ट्रैक करने के लिए, डेटाबेस सिस्टम के साथ इंटिग्रेशन दिखाया गया है.

रूट एजेंट (ऑर्केस्ट्रेटर)

root_agent, मल्टी-एजेंट सिस्टम के मुख्य ऑर्केस्ट्रेटर के तौर पर काम करता है. यह सुविधा, रिनोवेशन का शुरुआती अनुरोध स्वीकार करती है. साथ ही, अनुरोध की ज़रूरतों के आधार पर यह तय करती है कि किन सब-एजेंट को चालू करना है. उदाहरण के लिए, अगर अनुरोध में अनुमति की ज़रूरी शर्तों की जांच करने की ज़रूरत है, तो यह PermitsAndComplianceCheckAgent को कॉल करेगा. अगर उपयोगकर्ता को ऑर्डर की स्थिति देखनी है, तो वह OrderingAgent को कॉल करेगा (अगर चालू है).

इसके बाद, root_agent सब-एजेंट से जवाब इकट्ठा करता है और उपयोगकर्ता को पूरी जानकारी देने के लिए, उन्हें जोड़ता है. इसमें प्रस्ताव की खास जानकारी देना, ज़रूरी परमिट की सूची बनाना, और ऑर्डर के स्टेटस से जुड़े अपडेट देना शामिल हो सकता है.

डेटा फ़्लो और मुख्य कॉन्सेप्ट

उपयोगकर्ता, ADK इंटरफ़ेस (टर्मिनल या वेब यूज़र इंटरफ़ेस) के ज़रिए अनुरोध शुरू करता है.

  1. root_agent को अनुरोध मिलता है.
  2. root_agent, अनुरोध का विश्लेषण करता है और उसे सही सब-एजेंट को भेजता है.
  3. सब-एजेंट, अनुरोध को प्रोसेस करने और जवाब जनरेट करने के लिए एलएलएम, नॉलेज बेस, एपीआई, और डेटाबेस का इस्तेमाल करते हैं.
  4. सब-एजेंट, root_agent को अपने जवाब देते हैं.
  5. root_agent, जवाबों को जोड़ता है और उपयोगकर्ता को फ़ाइनल आउटपुट देता है.

एलएलएम (लार्ज लैंग्वेज मॉडल)

एजेंट, टेक्स्ट जनरेट करने, सवालों के जवाब देने, और तर्क करने वाले टास्क करने के लिए, एलएलएम पर काफ़ी ज़्यादा निर्भर करते हैं. उपयोगकर्ता के अनुरोधों को समझने और उनका जवाब देने के लिए, एजेंट के "दिमाग" के तौर पर एलएलएम काम करते हैं. हम इस ऐप्लिकेशन में Gemini 2.5 का इस्तेमाल कर रहे हैं.

Google Cloud Storage

इसका इस्तेमाल, जनरेट किए गए रिनोवेशन के प्रस्ताव के दस्तावेज़ों को सेव करने के लिए किया जाता है. आपको एक बकेट बनानी होगी और एजेंट को उसे ऐक्सेस करने के लिए ज़रूरी अनुमतियां देनी होंगी.

Cloud Run (ज़रूरी नहीं)

OrderingAgent, AlloyDB के साथ इंटरफ़ेस करने के लिए, Cloud Run फ़ंक्शन का इस्तेमाल करता है. Cloud Run, एचटीटीपी अनुरोधों के जवाब में कोड को लागू करने के लिए, सर्वरलेस एनवायरमेंट उपलब्ध कराता है.

AlloyDB

अगर OrderingAgent का इस्तेमाल किया जा रहा है, तो ऑर्डर की जानकारी सेव करने के लिए, आपको AlloyDB डेटाबेस सेट अप करना होगा. हम अगले सेक्शन में इस बारे में ज़्यादा जानकारी देंगे. यह सेक्शन "डेटाबेस सेटअप" है.

.env फ़ाइल

.env फ़ाइल में एपीआई पासकोड, डेटाबेस क्रेडेंशियल, और बकेट के नाम जैसी संवेदनशील जानकारी सेव की जाती है. इस फ़ाइल को सुरक्षित रखना ज़रूरी है और इसे अपनी रिपॉज़िटरी में कमिट नहीं करना चाहिए. यह एजेंट और आपके Google Cloud प्रोजेक्ट के लिए कॉन्फ़िगरेशन सेटिंग भी सेव करता है. आम तौर पर, root_agent या सहायक फ़ंक्शन इस फ़ाइल से वैल्यू पढ़ेंगे. पक्का करें कि .env फ़ाइल में सभी ज़रूरी वैरिएबल सही तरीके से सेट हों. इसमें Cloud Storage बकेट का नाम शामिल है

7. डेटाबेस सेटअप करना

ऑर्डर करने वाले एजेंट के इस्तेमाल किए जाने वाले टूल में से एक, "check_status" में, ऑर्डर का स्टेटस पाने के लिए, हम AlloyDB ऑर्डर डेटाबेस को ऐक्सेस करते हैं. इस सेक्शन में, हम AlloyDB डेटाबेस क्लस्टर और इंस्टेंस सेट अप करेंगे.

क्लस्टर और इंस्टेंस बनाना

  1. Cloud Console में AlloyDB पेज पर जाएं. Cloud Console में ज़्यादातर पेजों को ढूंढने का आसान तरीका है, उन्हें कंसोल के खोज बार का इस्तेमाल करके खोजना.
  2. उस पेज से क्लस्टर बनाएं चुनें:

f76ff480c8c889aa.png

  1. आपको नीचे दी गई स्क्रीन जैसी स्क्रीन दिखेगी. यहां दी गई वैल्यू का इस्तेमाल करके, क्लस्टर और इंस्टेंस बनाएं. अगर आपको रिपॉज़िटरी से ऐप्लिकेशन कोड को क्लोन करना है, तो पक्का करें कि वैल्यू मैच हों:
  • क्लस्टर आईडी: "vector-cluster"
  • password: "alloydb"
  • PostgreSQL 15 / नया वर्शन इस्तेमाल करने का सुझाव दिया जाता है
  • इलाका: "us-central1"
  • नेटवर्किंग: "default"

538dba58908162fb.png

  1. डिफ़ॉल्ट नेटवर्क चुनने पर, आपको नीचे दी गई स्क्रीन जैसी स्क्रीन दिखेगी.

कनेक्शन सेट अप करें को चुनें.
7939bbb6802a91bf.png

  1. इसके बाद, "अपने-आप असाइन की गई आईपी रेंज का इस्तेमाल करें" चुनें और 'जारी रखें' पर क्लिक करें. जानकारी की समीक्षा करने के बाद, 'कनेक्शन बनाएं' चुनें. 768ff5210e79676f.png
  2. नेटवर्क सेट अप हो जाने के बाद, क्लस्टर बनाना जारी रखा जा सकता है. क्लस्टर सेट अप करने के लिए, क्लस्टर बनाएं पर क्लिक करें. इसके बाद, नीचे दिया गया तरीका अपनाएं:

e06623e55195e16e.png

इंस्टेंस आईडी को बदलना न भूलें. यह आईडी, क्लस्टर / इंस्टेंस के कॉन्फ़िगरेशन के समय मिलता है. इसे इस पर बदलें

vector-instance. अगर इसे बदला नहीं जा सकता, तो आने वाले समय में सभी रेफ़रंस में अपने इंस्टेंस आईडी का इस्तेमाल करें.

ध्यान दें कि क्लस्टर बनाने में करीब 10 मिनट लगेंगे. क्लस्टर बनाने के बाद, आपको एक स्क्रीन दिखेगी. इसमें आपके बनाए गए क्लस्टर की खास जानकारी दिखेगी.

डेटा डालना

अब स्टोर के डेटा वाली टेबल जोड़ने का समय आ गया है. AlloyDB पर जाएं. इसके बाद, प्राइमरी क्लस्टर और फिर AlloyDB Studio चुनें:

847e35f1bf8a8bd8.png

आपको इंस्टेंस बनने का इंतज़ार करना पड़ सकता है. इसके बाद, क्लस्टर बनाते समय बनाए गए क्रेडेंशियल का इस्तेमाल करके, AlloyDB में साइन इन करें. PostgreSQL की पुष्टि करने के लिए, यहां दिए गए डेटा का इस्तेमाल करें:

  • उपयोगकर्ता नाम : "postgres"
  • डेटाबेस : "postgres"
  • पासवर्ड : "alloydb"

AlloyDB Studio में पुष्टि करने के बाद, Editor में SQL निर्देश डाले जाते हैं. आखिरी विंडो की दाईं ओर मौजूद प्लस का इस्तेमाल करके, Editor की कई विंडो जोड़ी जा सकती हैं.

91a86d9469d499c4.png

आपको एडिटर विंडो में AlloyDB के लिए निर्देश डालने होंगे. इसके लिए, ज़रूरत के हिसाब से 'चालू करें', 'फ़ॉर्मैट करें', और 'मिटाएं' विकल्पों का इस्तेमाल करें.

टेबल बनाना

AlloyDB Studio में, नीचे दिए गए डीडीएल स्टेटमेंट का इस्तेमाल करके टेबल बनाई जा सकती है:

-- Table DDL for Procurement Material Order Status

CREATE TABLE material_order_status (
    order_id VARCHAR(50) PRIMARY KEY,
    material_name VARCHAR(100) NOT NULL,
    supplier_name VARCHAR(100) NOT NULL,
    order_date DATE NOT NULL,
    estimated_delivery_date DATE,
    actual_delivery_date DATE,
    quantity_ordered INT NOT NULL,
    quantity_received INT,
    unit_price DECIMAL(10, 2) NOT NULL,
    total_amount DECIMAL(12, 2),
    order_status VARCHAR(50) NOT NULL, -- e.g., "Ordered", "Shipped", "Delivered", "Cancelled"
    delivery_address VARCHAR(255),
    contact_person VARCHAR(100),
    contact_phone VARCHAR(20),
    tracking_number VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_check_passed BOOLEAN,  -- Indicates if the material passed quality control
    quality_check_notes TEXT,        -- Notes from the quality control check
    priority VARCHAR(20),            -- e.g., "High", "Medium", "Low"
    project_id VARCHAR(50),          -- Link to a specific project
    receiver_name VARCHAR(100),        -- Name of the person who received the delivery
    return_reason TEXT,               -- Reason for returning material if applicable
    po_number VARCHAR(50)             -- Purchase order number
);

रिकॉर्ड डालना

ऊपर दी गई database_script.sql स्क्रिप्ट से, insert क्वेरी स्टेटमेंट को एडिटर में कॉपी करें.

चलाएं पर क्लिक करें.

अब जब डेटासेट तैयार हो गया है, तो स्टेटस निकालने के लिए Java Cloud Run फ़ंक्शन वाला ऐप्लिकेशन बनाएं.

ऑर्डर की स्थिति की जानकारी निकालने के लिए, Java में Cloud Run फ़ंक्शन बनाना

  1. यहां से Cloud Run फ़ंक्शन बनाएं: https://console.cloud.google.com/run/create?deploymentType=function
  2. फ़ंक्शन का नाम "check-status" पर सेट करें और रनटाइम के तौर पर "Java 17" चुनें.
  3. यह एक डेमो ऐप्लिकेशन है, इसलिए पुष्टि करने की सुविधा को "बिना पुष्टि के अनुरोध करने की अनुमति दें" पर सेट किया जा सकता है.
  4. सोर्स कोड के लिए, रनटाइम और इनलाइन एडिटर के तौर पर Java 17 चुनें.
  5. इसके बाद, प्लेसहोल्डर कोड एडिटर में लोड हो जाएगा.

प्लेसहोल्डर कोड बदलना

  1. Java फ़ाइल का नाम बदलकर "ProposalOrdersTool.java" और क्लास का नाम बदलकर "ProposalOrdersTool" करें.
  2. ProposalOrdersTool.java और pom.xml में मौजूद प्लेसहोल्डर कोड को, इस रिपो के "Cloud Run फ़ंक्शन" फ़ोल्डर में मौजूद फ़ाइलों के कोड से बदलें.
  3. ProposalOrdersTool.java में, कोड की यह लाइन ढूंढें. इसके बाद, प्लेसहोल्डर वैल्यू को अपने कॉन्फ़िगरेशन की वैल्यू से बदलें:
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
  1. 'बनाएं' पर क्लिक करें.
  2. Cloud Run फ़ंक्शन बन जाएगा और डिप्लॉय हो जाएगा.

अहम चरण:

डिप्लॉय होने के बाद, हम वीपीएन कनेक्टर बनाएंगे, ताकि Cloud फ़ंक्शन हमारे AlloyDB डेटाबेस इंस्टेंस को ऐक्सेस कर सके.

डिप्लॉयमेंट के लिए सेट अप करने के बाद, आपको Google Cloud Run Functions कंसोल में फ़ंक्शन दिखने चाहिए. हाल ही में बनाया गया फ़ंक्शन (check-status) खोजें और उस पर क्लिक करें. इसके बाद, बदलाव करें और नए वर्शन को डिप्लॉय करें पर क्लिक करें. इस विकल्प की पहचान, Cloud Run फ़ंक्शन कंसोल में सबसे ऊपर मौजूद, बदलाव करें आइकॉन (पेंसिल) से की जाती है. इसके बाद, इनमें बदलाव करें:

  1. नेटवर्किंग टैब पर जाएं:

828cd861864d99ea.png

  1. "आउटबाउंड ट्रैफ़िक के लिए वीपीसी से कनेक्ट करें" चुनें. इसके बाद, "सर्वर के बिना VPC ऐक्सेस करने की सुविधा वाले कनेक्टर का इस्तेमाल करें" चुनें
  2. नेटवर्क ड्रॉपडाउन में, सेटिंग में जाकर नेटवर्क ड्रॉपडाउन पर क्लिक करें. इसके बाद, "नया वीपीसी कनेक्टर जोड़ें" विकल्प चुनें. ऐसा तब करें, जब आपने पहले से डिफ़ॉल्ट कनेक्टर को कॉन्फ़िगर न किया हो. इसके बाद, पॉप-अप होने वाले डायलॉग बॉक्स में दिए गए निर्देशों का पालन करें:

6559ccfd10e597f2.png

  1. VPC कनेक्टर के लिए कोई नाम दें और पक्का करें कि वह क्षेत्र आपके इंस्टेंस के क्षेत्र से मेल खाता हो. नेटवर्क की वैल्यू को डिफ़ॉल्ट के तौर पर छोड़ दें और सबनेट को कस्टम आईपी रेंज के तौर पर सेट करें. इसके लिए, 10.8.0.0 या मिलती-जुलती कोई भी आईपी रेंज इस्तेमाल करें.
  2. 'स्केलिंग सेटिंग दिखाएं' को बड़ा करें और पक्का करें कि आपने कॉन्फ़िगरेशन को इन पर सेट किया हो:

199b0ccd80215004.png

  1. बनाएं पर क्लिक करें. इसके बाद, यह कनेक्टर अब एग्ज़िट सेटिंग में दिखेगा.
  2. हाल ही में बनाया गया कनेक्टर चुनें.
  3. सभी ट्रैफ़िक को इस VPC कनेक्टर से रूट करने का विकल्प चुनें.
  4. आगे बढ़ें पर क्लिक करें. इसके बाद, डिप्लॉय करें पर क्लिक करें.
  5. अपडेट किया गया Cloud Function डिप्लॉय होने के बाद, आपको जनरेट किया गया एंडपॉइंट दिखेगा.
  6. Cloud Run Functions कंसोल में सबसे ऊपर मौजूद, 'जांच करें' बटन पर क्लिक करके, इस फ़ंक्शन की जांच की जा सकती है. इसके बाद, Cloud Shell टर्मिनल में उससे जुड़ा निर्देश चलाएं.
  7. डिप्लॉय किया गया एंडपॉइंट वह यूआरएल होता है जिसे आपको .env वैरिएबल CHECK_ORDER_STATUS_ENDPOINT में अपडेट करना होता है.

8. मॉडल सेटअप करना

आपका एजेंट, लार्ज लैंग्वेज मॉडल (एलएलएम) की मदद से, उपयोगकर्ता के अनुरोधों को समझता है और जवाब जनरेट करता है. आपके एजेंट को इस बाहरी LLM सेवा को सुरक्षित कॉल करने होंगे. इसके लिए, पुष्टि करने के क्रेडेंशियल की ज़रूरत होती है. पुष्टि के मान्य तरीके के बिना, LLM सेवा एजेंट के अनुरोधों को अस्वीकार कर देगी और एजेंट काम नहीं कर पाएगा.

  1. Google AI Studio से एपीआई पासकोड पाएं.
  2. अगले चरण में, .env फ़ाइल सेट अप करते समय, <<your API KEY>> को अपनी असल एपीआई पासकोड वैल्यू से बदलें.

9. ENV वैरिएबल सेटअप करना

  1. इस रिपो में, टेंप्लेट .env फ़ाइल में पैरामीटर के लिए अपनी वैल्यू सेट अप करें. मेरे मामले में, .env में ये वैरिएबल हैं:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION=us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT=<<your project id>>
PROJECT_ID=<<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET=next-demo-store <<or your storage bucket name>>
CHECK_ORDER_STATUS_ENDPOINT=<<YOUR_ENDPOINT_TO_CLOUD FUNCTION_TO_READ_ORDER_DATA_FROM_ALLOYDB>>

प्लेसहोल्डर को अपनी वैल्यू से बदलें.

10. अपना एजेंट चलाना

  1. टर्मिनल का इस्तेमाल करके, अपने एजेंट प्रोजेक्ट की पैरंट डायरेक्ट्री पर जाएं:
cd renovation-agent
  1. सभी डिपेंडेंसी इंस्टॉल करना
pip install -r requirements.txt
  1. एजेंट को चलाने के लिए, अपने Cloud Shell टर्मिनल में यह कमांड चलाएं:
adk run .
  1. ADK से प्रोवाइड किए गए वेब यूज़र इंटरफ़ेस (यूआई) में इसे चलाने के लिए, ये काम किए जा सकते हैं:
adk web
  1. इन प्रॉम्प्ट की मदद से जांच करें:
user>> 

Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.

12. एजेंट इंजन में डिप्लॉयमेंट

आपने मल्टी-एजेंट सिस्टम के ठीक से काम करने की जांच कर ली है. अब इसे सर्वर-लेस बनाएं और क्लाउड पर उपलब्ध कराएं, ताकि कोई भी व्यक्ति या ऐप्लिकेशन इसका इस्तेमाल कर सके. उनके रिपॉज़िटरी में मौजूद agent.py में, नीचे दिए गए कोड स्निपेट से कम्यूट करें. इसके बाद, मल्टी-एजेंट सिस्टम को डिप्लॉय किया जा सकता है:

# Agent Engine Deployment:
# Create a remote app for our multiagent with agent Engine.
# This may take 1-2 minutes to finish.
# Uncomment the below segment when you're ready to deploy.

app = AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

vertexai.init(
    project=PROJECT_ID,
    location=GOOGLE_CLOUD_LOCATION,
    staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
    app,
    requirements=[
        "google-cloud-aiplatform[agent_engines,adk]>=1.88",
        "google-adk",
        "pysqlite3-binary",
        "toolbox-langchain==0.1.0",
        "pdfplumber",
        "google-cloud-aiplatform",
        "cloudpickle==3.1.1",
        "pydantic==2.10.6",
        "pytest",
        "overrides",
        "scikit-learn",
        "reportlab",
        "google-auth",
        "google-cloud-storage",
    ],
)
# Deployment to Agent Engine related code ends

प्रोजेक्ट फ़ोल्डर में जाकर, इस agent.py को फिर से चलाने के लिए यह कमांड इस्तेमाल करें:

>> cd adk-renovation-agent

>> python agent.py

इस कोड को पूरा होने में कुछ मिनट लगेंगे. इसके बाद, आपको एक एंडपॉइंट मिलेगा, जो ऐसा दिखेगा:

'projects/123456789/locations/us-central1/reasoningEngines/123456'

डिप्लॉय किए गए एजेंट की जांच करने के लिए, नीचे दिए गए कोड का इस्तेमाल करें. इसके लिए, " test.py" नाम की नई फ़ाइल जोड़ें

import vertexai
from vertexai.preview import reasoning_engines
from vertexai import agent_engines
import os
import warnings
from dotenv import load_dotenv
load_dotenv()


GOOGLE_CLOUD_PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
GOOGLE_CLOUD_LOCATION = os.environ["GOOGLE_CLOUD_LOCATION"]
GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
GOOGLE_GENAI_USE_VERTEXAI=os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
AGENT_NAME = "adk_renovation_agent"
MODEL_NAME = "gemini-2.5-pro-preview-03-25"
warnings.filterwarnings("ignore")
PROJECT_ID = GOOGLE_CLOUD_PROJECT

reasoning_engine_id = "<<YOUR_DEPLOYED_ENGINE_ID>>"

vertexai.init(project=PROJECT_ID, location="us-central1")
agent = agent_engines.get(reasoning_engine_id)
print("**********************")
print(agent)
print("**********************")


for event in agent.stream_query(
   
user_id="test_user",
   
message="I want you to check order status.",
):
   
print(event)

ऊपर दिए गए कोड में, प्लेसहोल्डर "<<YOUR_DEPLOYED_ENGINE_ID>>" की वैल्यू बदलें और "python test.py" कमांड चलाएं. इसके बाद, Agent Engine के साथ काम करने वाले मल्टी-एजेंट सिस्टम के साथ इंटरैक्ट करने के लिए, इसे लागू करें. अब आपके पास अपनी रसोई को नए सिरे से बनाने का विकल्प है!!!

13. एक लाइन में डिप्लॉयमेंट के विकल्प

अब आपने डिप्लॉय किए गए मल्टी-एजेंट सिस्टम की जांच कर ली है. अब आइए, उन आसान तरीकों के बारे में जानें जिनसे पिछले चरण में किए गए डिप्लॉयमेंट चरण को हटाया जा सकता है: एक लाइन में डिप्लॉयमेंट के विकल्प:

  1. Cloud Run पर:

सिंटैक्स:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=<<YOUR_SERVICE_NAME>> \
--app_name=<<YOUR_APP_NAME>> \
--with_ui \
./<<YOUR_AGENT_PROJECT_NAME>>

इस मामले में:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=renovation-agent \
--app_name=renovation-app \
--with_ui \
./renovation-agent

डिप्लॉय किए गए एंडपॉइंट का इस्तेमाल, डाउनस्ट्रीम इंटिग्रेशन के लिए किया जा सकता है.

  1. एजेंट इंजन के लिए:

सिंटैक्स:

adk deploy agent_engine \
  --project <your-project-id> \
  --region us-central1 \
  --staging_bucket gs://<your-google-cloud-storage-bucket> \
  --trace_to_cloud \
  path/to/agent/folder

इस मामले में:

adk deploy agent_engine --project <<YOUR_PROJECT_ID>> --region us-central1 --staging_bucket gs://<<YOUR_BUCKET_NAME>> --trace_to_cloud renovation-agent

आपको Google Cloud Console में एजेंट इंजन यूज़र इंटरफ़ेस (यूआई) में एक नया एजेंट दिखेगा. ज़्यादा जानकारी के लिए, यह ब्लॉग पढ़ें.

14. व्यवस्थित करें

इस पोस्ट में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाएं, इसके लिए यह तरीका अपनाएं:

  1. Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
  2. प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
  3. डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.

15. बधाई हो

बधाई हो! आपने ADK का इस्तेमाल करके, अपना पहला एजेंट बनाया और उससे इंटरैक्ट किया!