ADK क्रैश कोर्स - शुरुआती से लेकर विशेषज्ञ तक

1. आपको क्या सीखने को मिलेगा

ADK मास्टर क्लास में आपका स्वागत है - मल्टी-एजेंट सिस्टम के बारे में जानकारी

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

कोर्स का रोडमैप

इस ट्यूटोरियल के आखिर तक, आपको ये काम करने का तरीका पता चल जाएगा:

  • अपना पहला एआई एजेंट बनाएं: एक ऐसा एजेंट बनाएं जो उपयोगकर्ता की ज़रूरतों को समझ सके, Google Search जैसे टूल का इस्तेमाल कर सके, और मददगार जवाब जनरेट कर सके.
  • कस्टम टूल का बेहतर इस्तेमाल करें: एजेंटों को अपने कस्टम फ़ंक्शन और एपीआई से कनेक्ट करके, उनकी पूरी क्षमता का इस्तेमाल करें. आपको अपने एजेंट को रीयल-टाइम डेटा फ़ेच करने का तरीका सिखाना होगा. जैसे, मौसम का लाइव पूर्वानुमान.
  • मल्टी-एजेंट सिस्टम बनाना: "एजेंट-एज़-अ-टूल" पैटर्न के बारे में जानें. यह एक क्रांतिकारी कॉन्सेप्ट है, जिसमें एजेंट, टास्क को अन्य विशेषज्ञ एजेंटों को सौंपते हैं. इससे एआई विशेषज्ञों की एक टीम बनती है, जो एक साथ काम करती है.
  • जटिल वर्कफ़्लो को व्यवस्थित करें: सिर्फ़ काम सौंपने के बजाय, राउटर, सीक्वेंशियल चेन, लूप, और पैरलल एक्ज़ीक्यूशन जैसे ऐडवांस पैटर्न का इस्तेमाल करें. इससे मज़बूत, असरदार, और स्मार्ट ऐप्लिकेशन बनाए जा सकते हैं, जो लगभग सभी अनुरोधों को पूरा कर सकते हैं.
  • अपने एजेंट को मेमोरी दें: बातचीत की मेमोरी की अहम भूमिका को समझें. इससे आपके एजेंट, फ़ॉलो-अप सवालों के जवाब दे पाते हैं, सुझाव/राय/शिकायत से सीख पाते हैं, और कई चरणों वाले कामों को आसानी से मैनेज कर पाते हैं.

आइए, शुरू करें! 🚀

2. GCP सेट अप करना

GCP प्रोजेक्ट सेट अप करना

हमारे एआई एजेंट को काम करने के लिए, हमें दो चीज़ों की ज़रूरत होती है: एक Google Cloud प्रोजेक्ट, ताकि हम बुनियादी ढांचा उपलब्ध करा सकें. दूसरा, Google के बेहतरीन मॉडल को ऐक्सेस करने के लिए प्रोजेक्ट आईडी.

पहला चरण: बिलिंग खाता चालू करना

  • पांच डॉलर के क्रेडिट के साथ बिलिंग खाते पर दावा करें. आपको इसकी ज़रूरत डिप्लॉयमेंट के लिए पड़ेगी. पक्का करें कि आपने अपने Gmail खाते से लॉग इन किया हो.

दूसरा चरण: नया GCP प्रोजेक्ट बनाना

  • Google Cloud Console पर जाएं और एक नया प्रोजेक्ट बनाएं.

नया GCP खाता बनाना

  • Google Cloud Console पर जाएं और एक नया प्रोजेक्ट बनाएं.
  • बाईं ओर मौजूद पैनल खोलें और Billing पर क्लिक करें. देखें कि बिलिंग खाता, इस GCP खाते से लिंक है या नहीं.

बिलिंग खाते को GCP खाते से लिंक करना

अगर आपको यह पेज दिखता है, तो manage billing account पर जाएं. इसके बाद, Google Cloud की बिना शुल्क आज़माई जा सकने वाली सदस्यता चुनें और उसे लिंक करें.

तीसरा चरण: अपना प्रोजेक्ट आईडी कॉपी करना

  • console.cloud.google.com पर जाएं.
  • पेज पर सबसे ऊपर मौजूद, प्रोजेक्ट चुनने वाले ड्रॉपडाउन पर क्लिक करें.
  • "सभी" टैब पर क्लिक करें. ऐसा इसलिए, क्योंकि हो सकता है कि नया प्रोजेक्ट अभी "हाल ही के" टैब में न दिखे.
  • आपने अभी जो प्रोजेक्ट आईडी बनाया है उसे चुनें.

03-05-project-all.png

3. पहला सेशन: Runner की मदद से पहला एजेंट बनाना

roadmap1

आइए, बुनियादी बातों से शुरू करते हैं. यहां हम अपना पहला आसान एजेंट, day_trip_agent बनाते हैं. इस एजेंट का मकसद, उपयोगकर्ता के अनुरोध के आधार पर पूरे दिन की यात्रा का प्लान बनाना है. इसमें बजट का ध्यान रखना भी शामिल है. इस उदाहरण में, ADK में एजेंट के साथ होने वाली किसी भी बातचीत के तीन मुख्य कॉम्पोनेंट के बारे में बताया गया है:

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

➡️ नोटबुक में यह सुविधा कहां मिलेगी

👉 यह पहला हिस्सा: आपका पहला एजेंट - एक दिन की यात्रा का प्लान बनाने वाला Genie 🧞 में मौजूद सेल से मेल खाता है.🌟

एजेंट रोबोट पढ़ रहा है

  • एजेंट की परिभाषा: create_day_trip_agent() फ़ंक्शन ढूंढें. यहां एजेंट को तय किया जाता है. निर्देशों वाली स्ट्रिंग पर ध्यान दें. यह वह प्रॉम्प्ट है जो एजेंट को बताता है कि उसे कैसे काम करना है. हम इसे पहला टूल भी देते हैं: Google Search.
  • हेल्पर फ़ंक्शन: यहां run_agent_query() हेल्पर फ़ंक्शन के बारे में बताया गया है. हम इस यूटिलिटी का इस्तेमाल पूरी नोटबुक में करेंगे, ताकि क्वेरी को आसानी से चलाया जा सके.
  • टेस्ट रन: run_day_trip_genie() फ़ंक्शन, उपयोगकर्ता के "किफ़ायती" और "आरामदायक" एक दिन की यात्रा के बारे में पूछने की स्थिति को सिम्युलेट करता है. एजेंट, निर्देशों और Google Search टूल का इस्तेमाल करके, घूमने के लिए सही जगहें ढूंढता है. साथ ही, मार्कडाउन फ़ॉर्मैट में यात्रा का प्लान बनाता है.

➡️ कार्रवाई: day_trip_agent के लिए, निर्देश वाले प्रॉम्प्ट की जांच करें. देखें कि टेस्ट क्वेरी में "किफ़ायती" यात्रा का अनुरोध, एजेंट के "बजट का ध्यान रखें" दिशा-निर्देश से कैसे जुड़ा है.

4. दूसरा सेशन: कस्टम टूल 🛠️

roadmap2

Google Search एक बेहतरीन टूल है. हालांकि, एआई एजेंट की असली क्षमता तब सामने आती है, जब उन्हें अपने यूनीक डेटा सोर्स, एपीआई या कस्टम लॉजिक से कनेक्ट किया जाता है. इस सेक्शन में, हम एक सामान्य Python फ़ंक्शन से कस्टम टूल बनाएंगे.

किसी फ़ंक्शन टूल का सबसे अहम हिस्सा, उसका डॉकस्ट्रिंग होता है. ADK, docstring को अपने-आप पार्स करता है. इससे उसे यह समझने में मदद मिलती है कि टूल क्या करता है, यह किन पैरामीटर (Args) को स्वीकार करता है, और यह क्या दिखाता है (Returns). लार्ज लैंग्वेज मॉडल (एलएलएम) इस जानकारी को पढ़ता है, ताकि यह तय किया जा सके कि टूल का इस्तेमाल कब और कैसे करना है.

➡️ नोटबुक में यह सुविधा कहां मिलेगी

👉 यह 2.1 The Simple FunctionTool: Calling a Real-Time Weather API में मौजूद सेल से मेल खाता है. 🌟

adk tools

  • टूल की परिभाषा: get_live_weather_forecast(location: str) फ़ंक्शन, हमारे कस्टम टूल का मुख्य हिस्सा है. यह शहर का नाम लेता है, सार्वजनिक तौर पर उपलब्ध National Weather Service API को कॉल करता है, और तापमान और पूर्वानुमान के साथ एक डिक्शनरी दिखाता है.
  • एजेंट की परिभाषा: weather_agent को बनाया गया है और इसे हमारे नए टूल के साथ जोड़ा गया है. इसके लिए, इसे शुरू करते समय tools=[get_live_weather_forecast] पास किया गया है. एजेंट को साफ़ तौर पर निर्देश दिए गए हैं कि वह बाहर की गतिविधियों के सुझाव देने से पहले, इस टूल का इस्तेमाल करे.
  • टेस्ट रन: "मुझे लेक टाहो के आस-पास हाइकिंग के लिए जाना है, वहां का मौसम कैसा है?" क्वेरी से, एजेंट सीधे तौर पर get_live_weather_forecast टूल का इस्तेमाल करता है, क्योंकि इसके निर्देशों में ऐसा करना ज़रूरी है.

➡️ कार्रवाई: get_live_weather_forecast फ़ंक्शन के लिए डॉकस्ट्रिंग और weather_agent के लिए निर्देश पढ़ें. इनके बीच के सीधे संबंध पर ध्यान दें.

5. तीसरा सेशन: एजेंट को टूल के तौर पर इस्तेमाल करना 🧑‍🍳

roadmap3

जब आपके पास विशेषज्ञों की टीम बनाने का विकल्प है, तो एक ही एजेंट क्यों बनाया जाए? Agent-as-a-Tool पैटर्न, जटिल सिस्टम बनाने का एक असरदार तरीका है. इसमें मुख्य एजेंट, जिसे अक्सर ऑर्केस्ट्रेटर या राउटर कहा जाता है, अन्य एजेंट को टास्क सौंपता है.

इस पैटर्न की मदद से, मॉड्यूलर और बार-बार इस्तेमाल किए जा सकने वाले एजेंट बनाए जा सकते हैं. उदाहरण के लिए, आपके पास एक ऐसा एजेंट हो सकता है जो डेटाबेस क्वेरी में विशेषज्ञ हो, दूसरा क्रिएटिव राइटिंग में विशेषज्ञ हो, और तीसरा एक मददगार कंसीयर्ज के तौर पर काम करता हो. ऑर्केस्ट्रेटर का काम, उपयोगकर्ता के अनुरोध को समझना और उसे सही विशेषज्ञ तक पहुंचाना है.

➡️ नोटबुक में यह सुविधा कहां मिलेगी

👉 यह 2.2 एजेंट को टूल के तौर पर इस्तेमाल करना: किसी विशेषज्ञ से सलाह लेना 🧑‍🍳 के तहत मौजूद सेल से मेल खाता है.🌟

यात्रा का डेटा

इस उदाहरण में, कई लेयर वाला एक बेहतर एजेंट सिस्टम बनाया गया है:

  • विशेषज्ञ:
    • food_critic_agent: यह एक खास एजेंट है, जो सिर्फ़ रेस्टोरेंट के सुझाव देता है.
    • db_agent: यह एक मॉक एजेंट है. यह होटल की जानकारी के लिए डेटाबेस से क्वेरी करने का नाटक करता है.
    • concierge_agent: यह एक सामान्य स्तर का एजेंट होता है, जो विनम्रता से सहायता उपलब्ध कराता है. खास तौर पर, इसमें food_critic_agent को टूल के तौर पर इस्तेमाल किया जाता है.
  • ऑर्केस्ट्रेटर (trip_data_concierge_agent): यह टॉप-लेवल का एजेंट होता है, जिससे उपयोगकर्ता इंटरैक्ट करता है. इसमें दिए गए निर्देशों की वजह से, इसे "मास्टर ट्रैवल प्लानर" कहा जाता है. इसे दो ऐसे टूल दिए गए हैं जो अन्य एजेंट को कॉल करते हैं:
    • call_db_agent: यह एक ऐसा फ़ंक्शन है जो db_agent को कॉल करता है.
    • call_concierge_agent: यह एक ऐसा फ़ंक्शन है जो concierge_agent को कॉल करता है.
  • फ़्लो: run_trip_data_concierge() में किए गए टेस्ट रन से, डेलिगेशन की पूरी चेन का पता चलता है.
    • कोई उपयोगकर्ता, ऑर्केस्ट्रेटर से होटल और उसके आस-पास के रेस्टोरेंट के बारे में पूछता है.
    • ऑर्केस्ट्रेटर के निर्देशों के मुताबिक, होटल का डेटा पाने के लिए सबसे पहले call_db_agent टूल का इस्तेमाल किया जाता है.
    • इसके बाद, ऑर्केस्ट्रेटर सुझाव पाने के लिए call_concierge_agent टूल का इस्तेमाल करता है.
    • अनुरोध मिलने पर, concierge_agent अपने टूल food_critic_agent का इस्तेमाल करके, रेस्टोरेंट के बारे में जानकारी देता है.

फ़ूड क्रिटिक के जवाब को वापस कंसीयर्ज को भेज दिया जाता है. कंसीयर्ज, जवाब को सही तरीके से फ़ॉर्मैट करता है और उसे वापस ऑर्केस्ट्रेटर को भेज देता है. इसके बाद, ऑर्केस्ट्रेटर उस जवाब को उपयोगकर्ता को दिखाता है.

➡️ कार्रवाई: run_trip_data_concierge() में जाकर, टेस्ट रन में एक्ज़ीक्यूशन फ़्लो को ट्रेस करें. देखें कि TOOL CALLED प्रिंटआउट में, ऑर्केस्ट्रेटर से लेकर विशेषज्ञों तक के काम सौंपने की चेन कैसे दिखती है. यह कमांड की सीक्वेंशियल चेन है.

6. चौथा सेशन: एजेंट की मेमोरी 🧠

roadmap4

एक बेहतरीन एजेंट को सिर्फ़ एक बार की क्वेरी का जवाब देने के अलावा और भी बहुत कुछ करना होता है. इसे बातचीत को याद रखना होता है, कॉन्टेक्स्ट को समझना होता है, और सुझाव/राय के हिसाब से काम करना होता है. ऐसा सही तरीके से सेशन मैनेज करके किया जाता है. "लूप एजेंट" को ऐसे एजेंट के तौर पर समझें जो लगातार बातचीत में लगा रहता है. यह अपनी मेमोरी की मदद से ऐसा करता है.

जब एक ही सेशन ऑब्जेक्ट का इस्तेमाल, क्रम से की गई कई क्वेरी के लिए किया जाता है, तो एजेंट बातचीत के पूरे इतिहास को "देख" सकता है. इससे Gemini, फ़ॉलो-अप सवालों के जवाब दे पाता है, मिले सुझावों के आधार पर अपने जवाबों में सुधार कर पाता है, और कई चरणों वाले टास्क पूरे कर पाता है.

➡️ नोटबुक में यह सुविधा कहां मिलेगी

👉 यह तीसरा चरण: याददाश्त वाला एजेंट - अडैप्टिव प्लानर 🗺️ में मौजूद सेल के मुताबिक होता है. 🌟

एजेंट की मेमोरी

  • एजेंट की परिभाषा: create_multi_day_trip_agent() फ़ंक्शन, यात्रा की योजना बनाने के लिए डिज़ाइन किए गए एजेंट को परिभाषित करता है. इसमें दिए गए निर्देशों में, कॉन्टेक्स्ट को याद रखने, सुझाव/राय/शिकायत को मैनेज करने, और एक दिन के हिसाब से प्लान बनाने पर ज़ोर दिया गया है.

तीसरा विकल्प: एजेंट के पास मेमोरी है (✅)

यह टेस्ट, run_adaptive_memory_demonstration() फ़ंक्शन में चलाया जाता है.

  • एक ही trip_session को तीन बार इस्तेमाल किया गया है.
  • पहला चरण: उपयोगकर्ता दो दिन की यात्रा की योजना बनाता है.
  • दूसरा जवाब: उपयोगकर्ता ने सुझाव/राय दी या शिकायत की ("मुझे किले बहुत पसंद नहीं हैं"). एजेंट के पास पहले टर्न की जानकारी होती है. इसलिए, वह समझ जाता है कि प्लान के किस हिस्से में बदलाव करना है और उसके लिए दूसरा विकल्प उपलब्ध कराता है.
  • तीसरा चरण: उपयोगकर्ता बदलाव की पुष्टि करता है और अगले चरण के बारे में पूछता है. एजेंट को सारी जानकारी याद रहती है और वह दूसरे दिन की योजना बनाता है.

तीसरा विकल्प: एजेंट के पास मेमोरी नहीं है (❌)

यह टेस्ट, run_memory_failure_demonstration() फ़ंक्शन में चलाया जाता है.

इस उदाहरण में, जान-बूझकर गड़बड़ी करके सेशन मैनेजमेंट की अहमियत को दिखाया गया है. हर बातचीत के लिए एक नया सेशन बनाया जाता है.

  • पहला चरण: उपयोगकर्ता, session_one में यात्रा शुरू करता है. एजेंट सही जवाब देता है.
  • दूसरा टर्न: उपयोगकर्ता, दूसरे दिन की यात्रा का प्लान बनाने के लिए कहता है. हालांकि, क्वेरी को एकदम नए session_two में भेजा जाता है. इस नए सेशन की कोई हिस्ट्री नहीं है. इसलिए, एजेंट को समझ नहीं आ रहा है कि क्या करना है. इसे भूलने की बीमारी है! इसे यह नहीं पता कि किस यात्रा की योजना बनाई जा रही है.

कार्रवाई: run_adaptive_memory_demonstration() और run_memory_failure_demonstration() में एजेंट के जवाबों की तुलना करें. नोटबुक में यह सबसे ज़रूरी कॉन्सेप्ट है: एक बार में लगातार बातचीत करने के लिए, एक बार में लगातार सेशन की ज़रूरत होती है.

7. पांचवां सेशन: राऊटर एजेंट 🚏

roadmap5

एक एजेंट के पास सीमित संसाधन होते हैं. उपयोगकर्ता के मुश्किल अनुरोधों को पूरा करने के लिए, हमें विशेषज्ञ एजेंट की टीम की ज़रूरत होती है. हालांकि, हमें यह कैसे पता चलेगा कि किसी क्वेरी के लिए कौनसा एजेंट इस्तेमाल करना है? ऐसे में, राऊटर एजेंट काम आता है.

राउटर एजेंट, "मास्टर" एजेंट या डिस्पैचर के तौर पर काम करता है. इसका मुख्य काम, उपयोगकर्ता की क्वेरी का विश्लेषण करना और यह तय करना है कि इस काम के लिए कौनसा स्पेशलिस्ट एजेंट (या एजेंटों का वर्कफ़्लो) सबसे सही है. यह क्वेरी का जवाब खुद नहीं देता है. यह सिर्फ़ क्वेरी को सही डाउनस्ट्रीम एजेंट को भेजता है.

उदाहरण के लिए, "सबसे अच्छी सुशी" के बारे में क्वेरी, foodie_agent को भेजी जानी चाहिए. वहीं, "इस हफ़्ते होने वाले कॉन्सर्ट" के बारे में सवाल, weekend_guide_agent को भेजा जाना चाहिए.

➡️ नोटबुक में यह कहां मिलेगा:

👉 यह कॉन्सेप्ट, पूरी नोटबुक के लिए ज़रूरी है. हालांकि, इसे पहली बार भाग 1: मल्टी-एजेंट मेहम - सीक्वेंशियल वर्कफ़्लो 🧠→🤖→🤖 🌟 में पेश किया गया है

राउटर एजेंट

  • एजेंट की परिभाषाएं: कोड सेल में, कई स्पेशलिस्ट एजेंट (day_trip_agent, foodie_agent, transportation_agent) और सबसे अहम, router_agent को परिभाषित किया गया है. router_agent के लिए दिए गए निर्देश वाले प्रॉम्प्ट पर ध्यान दें. इसमें साफ़ तौर पर बताया गया है कि सिर्फ़ उस एजेंट का नाम दिखाएं जो काम के लिए सबसे सही है.
  • एक्ज़ीक्यूशन लॉजिक: run_sequential_app फ़ंक्शन दिखाता है कि फ़ैसले (chosen_route) के लिए, सबसे पहले router_agent को कैसे कॉल किया जाता है. इसके बाद, उस फ़ैसले का इस्तेमाल if/elif ब्लॉक में करके, सही स्पेशलिस्ट एजेंट को कैसे एक्ज़ीक्यूट किया जाता है.

8. छठा सेशन: SequentialAgent ⛓️

roadmap6

कुछ टास्क पूरे करने के लिए, आपको कई चरणों को एक खास क्रम में पूरा करना होगा. उदाहरण के लिए, "मुझे पालो आल्टो में सबसे अच्छी सुशी खाने की जगह के बारे में बताओ. इसके बाद, मुझे वहां पहुंचने का रास्ता बताओ." यह दो चरणों वाली प्रोसेस है: पहला, रेस्टोरेंट ढूंढना और दूसरा, वहां पहुंचने का रास्ता ढूंढना.

ADK, SequentialAgent की मदद से इसे मैनेज करने का आसान और असरदार तरीका उपलब्ध कराता है. यह एक खास वर्कफ़्लो एजेंट है, जो पहले से तय किए गए क्रम में सब-एजेंट की सूची को लागू करता है.

असल बात तो शेयर की गई स्थिति में छिपी है. सीक्वेंस में मौजूद किसी एजेंट का आउटपुट, शेयर की गई स्टेट डिक्शनरी में अपने-आप सेव हो सकता है. इसके बाद, इसका इस्तेमाल अगले एजेंट के इनपुट के तौर पर किया जा सकता है. इससे, चरणों के बीच जानकारी भेजने के लिए, जटिल मैन्युअल कोड की ज़रूरत नहीं पड़ती.

➡️ नोटबुक में यह कहां मिलेगा:

👉 इसके बारे में दूसरे भाग (ADK का तरीका): SequentialAgent के साथ मल्टी-एजेंट मेहम 🧠→⛓️→🤖 में बताया गया है. 🌟

सीक्वेंशियल एजेंट

  • एजेंट रिफ़ैक्टरिंग: इस सेक्शन की पहली कोड सेल में, foodie_agent और transportation_agent में हुए मुख्य बदलावों पर ध्यान दें:
    • foodie_agent के पास अब output_key="destination" है. इससे ADK को यह निर्देश मिलता है कि वह अपने फ़ाइनल जवाब को शेयर किए गए स्टेट में destination नाम के वैरिएबल में सेव करे.
    • transportation_agent के निर्देश वाले प्रॉम्प्ट में अब {destination} प्लेसहोल्डर मौजूद है. ADK, शेयर की गई स्थिति से वैल्यू को इस प्लेसहोल्डर में अपने-आप डाल देता है.
  • वर्कफ़्लो तय करना: find_and_navigate_agent को SequentialAgent के तौर पर तय किया गया है. इसके sub_agents को [foodie_agent, transportation_agent] पर सेट किया गया है, ताकि वे इसी क्रम में चलें.
  • आसान तरीके से लागू करना: इस सेक्शन में run_sequential_app फ़ंक्शन देखें. कॉम्प्लेक्स if/elif लॉजिक हटा दिया गया है! find_and_navigate_agent को अब एक ही यूनिट माना जाता है, जिसे कॉल किया जा सकता है. साथ ही, ADK अंदरूनी क्रमवार चरणों को अपने-आप हैंडल करता है.

9. सातवां सेशन: LoopAgent 🔁

roadmap7

सभी समस्याओं का एक बार में सीधा समाधान नहीं होता. कभी-कभी, हमें किसी समस्या का समाधान सुझाना होता है. इसके बाद, हमें उस समाधान की आलोचना करनी होती है और उसे तब तक बेहतर बनाना होता है, जब तक वह किसी खास शर्त को पूरा न कर ले.

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

डायग्राम में, सबसे पहले Planner Agent प्लान बनाने का तरीका दिखाया गया है. इसके बाद, हम LoopAgent डालते हैं. Critic Agent प्लान की जांच करता है. अगर यह सही नहीं है, तो Refiner Agent एक नया वर्शन बनाता है और यह लूप दोहराता है. अगर प्लान सही है, तो Refiner Agent, exit_loop टूल को कॉल करता है. इसके बाद, पुष्टि किया गया फ़ाइनल प्लान वापस मिल जाता है.

लूप एजेंट

➡️ नोटबुक में यह कहां मिलेगा:

👉 इसके बारे में LoopAgent के साथ बार-बार आइडिया जनरेट करना 🧠→🔁→🤖 लेख में बताया गया है. 🌟

  • मुख्य एजेंट: वर्कफ़्लो में planner_agent, critic_agent, और refiner_agent का इस्तेमाल किया जाता है.
  • लूप की परिभाषा: refinement_loop को LoopAgent के तौर पर परिभाषित किया गया है. यह critic_agent, refiner_agent, और sets max_iterations=3 को व्यवस्थित करता है.
  • लूप से बाहर निकलने की शर्त: जब critic_agent प्लान को मंज़ूरी दे देता है, तब लूप खत्म हो जाता है. इसके बाद, refiner_agent कस्टम exit_loop टूल को कॉल करता है.

10. सेशन 8: ParallelAgent ⚡️

roadmap8

कम समय में ज़्यादा काम करना ज़रूरी है. अगर कोई उपयोगकर्ता एक साथ कई तरह की जानकारी मांगता है, तो एक-एक करके इन खोजों को चलाने में समय लगेगा.

ParallelAgent इसका जवाब है. यह वर्कफ़्लो एजेंट, एक साथ कई सब-एजेंट को एक्ज़ीक्यूट करता है. सभी टास्क पूरे होने के बाद, उनके नतीजों को इकट्ठा किया जा सकता है और एक साथ मिलाकर, पूरी जानकारी वाला जवाब तैयार किया जा सकता है.

इस डायग्राम में दिखाया गया है कि ParallelAgent एक क्वेरी लेता है और काम को तीन अलग-अलग ट्रैक में बांट देता है. museum_finder, concert_finder, और restaurant_finder सभी एक साथ चलते हैं. इन तीनों के जवाब मिलने के बाद, इनके अलग-अलग जवाबों को एक साथ जोड़ दिया जाता है. ये जवाब, शेयर किए गए स्टेट में सेव होते हैं. इसके बाद, इन्हें फ़ाइनल सिंथेसिस एजेंट को भेज दिया जाता है. यह एजेंट, इन जवाबों को मिलाकर एक जवाब तैयार करता है.

➡️ नोटबुक में यह कहां मिलेगा:

👉 इस वर्कफ़्लो के बारे में, ParallelAgent की मदद से एक साथ कई काम करना 🧠→⚡️→🤖🤖🤖 सेक्शन में बताया गया है. 🌟

पैरलल एजेंट

  • स्पेशलिस्ट एजेंट: तीन स्पेशलिस्ट एजेंट तय किए गए हैं.हर एजेंट के पास एक यूनीक output_key होता है. उदाहरण के लिए, museum_result.
  • पैरलल वर्कफ़्लो: parallel_research_agent को ParallelAgent के तौर पर तय किया जाता है. इसमें, लिस्ट किए गए तीन फ़ाइंडर एजेंट को sub_agents के तौर पर तय किया जाता है.
  • सिंथेसिस चरण: पैरलल चरण के बाद, फ़ाइनल synthesis_agent, शेयर की गई स्थिति से मिली सभी जानकारी को इकट्ठा करता है. इसके लिए, वह प्लेसहोल्डर ({museum_result}, {concert_result} वगैरह) का इस्तेमाल करता है, ताकि जानकारी को साफ़ तौर पर दिखाया जा सके.

11. अपेंडिक्स: ADK Web - 🍎 Mac/Linux के लिए

roadmap9

इस गाइड में, आपकी लोकल मशीन पर ADK Day Trip Planning Agent को सेट अप करने और चलाने का तरीका बताया गया है.

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

  • Python 3.8 या इसके बाद का वर्शन
    • Python 3.9 या इसके बाद का वर्शन: google-adk==1.5.0 इंस्टॉल करता है. यह सभी सुविधाओं वाला सबसे नया वर्शन है
    • Python 3.8: google-adk==0.3.0 (काम करने वाला वर्शन) इंस्टॉल करता है
  • Google AI Studio API कुंजी
  • इंटरनेट कनेक्शन

पहला चरण: रिपॉज़िटरी क्लोन करना

टर्मिनल खोलें और यह कमांड चलाएं:

git clone https://github.com/cuppibla/ADK_Basic.git
cd ADK_Basic

दूसरा चरण: वर्चुअल एनवायरमेंट सेट अप करना और डिपेंडेंसी इंस्टॉल करना

पहला विकल्प: ऑटोमेटेड सेटअप (सुझाया गया)

# Run the setup script
chmod +x setup_venv.sh
./setup_venv.sh

विकल्प B: मैन्युअल सेटअप

# Create virtual environment
python3 -m venv .adk_env

# Activate virtual environment
source .adk_env/bin/activate

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

तीसरा चरण: 🔥 ज़रूरी - एनवायरमेंट वैरिएबल बनाना

⚠️ इस चरण को न छोड़ें! agent/ डायरेक्ट्री में .env फ़ाइल बनाएं:

# Create the .env file
touch agent/.env

# Open it in your default text editor
open agent/.env

फ़ाइल में ये लाइनें जोड़ें:

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=your_actual_api_key_here

🚨 ज़रूरी: your_actual_api_key_here को अपने एपीआई पासकोड से बदलें!

चौथा चरण: वर्चुअल एनवायरमेंट चालू करें (अगर यह पहले से चालू नहीं है)

source .adk_env/bin/activate

आपको अपने टर्मिनल प्रॉम्प्ट की शुरुआत में (.adk_env) दिखेगा.

पाँचवाँ चरण: ADK वेब इंटरफ़ेस चलाना

adk web

छठा चरण: ब्राउज़र खोलना

  1. अपना ब्राउज़र खोलें और टर्मिनल में दिखाए गए यूआरएल पर जाएं. आम तौर पर, यह यूआरएल http://localhost:8000 होता है
  2. सबसे ऊपर बाईं ओर मौजूद ड्रॉपडाउन में, agent
  3. दिन की यात्रा की योजना बनाने वाले एजेंट से चैट करना शुरू करें!

आपको इस तरह की बातचीत दिखेगी: ADK के वेब यूज़र इंटरफ़ेस (यूआई) का उदाहरण

एनवायरमेंट बंद करना

प्रोजेक्ट पर काम पूरा होने के बाद:

deactivate

यह निर्देश, Mac/Linux और Windows, दोनों पर एक जैसा काम करता है. आपको दिखेगा कि आपके टर्मिनल प्रॉम्प्ट से (.adk_env) प्रीफ़िक्स हट गया है.

Mac से जुड़ी समस्या हल करना

  • Python नहीं मिला: python के बजाय python3 का इस्तेमाल करें
  • अनुमति नहीं दी गई: स्क्रिप्ट चलाने से पहले chmod +x setup_venv.sh चलाएं

12. अपेंडिक्स: ADK Web - 🪟 Windows का इस्तेमाल करने वाले लोगों के लिए

roadmap9

इस गाइड में, आपकी लोकल मशीन पर ADK Day Trip Planning Agent को सेट अप करने और चलाने का तरीका बताया गया है.

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

  • Python 3.8 या इसके बाद का वर्शन
    • Python 3.9 या इसके बाद का वर्शन: google-adk==1.5.0 इंस्टॉल करता है. यह सभी सुविधाओं वाला सबसे नया वर्शन है
    • Python 3.8: google-adk==0.3.0 (काम करने वाला वर्शन) इंस्टॉल करता है
  • Google AI Studio API कुंजी
  • इंटरनेट कनेक्शन

पहला चरण: रिपॉज़िटरी क्लोन करना

कमांड प्रॉम्प्ट या PowerShell खोलें और यह कमांड चलाएं:

git clone https://github.com/cuppibla/ADK_Basic.git
cd ADK_Basic

दूसरा चरण: वर्चुअल एनवायरमेंट सेट अप करना और डिपेंडेंसी इंस्टॉल करना

पहला विकल्प: ऑटोमेटेड सेटअप (सुझाया गया)

# Run the setup script in Command Prompt
setup_venv.bat

विकल्प B: मैन्युअल सेटअप

कमांड प्रॉम्प्ट के लिए:

# Create virtual environment
python -m venv .adk_env

# Activate virtual environment
.adk_env\Scripts\activate

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

PowerShell के लिए:

# Create virtual environment
python -m venv .adk_env

# Activate virtual environment
.adk_env\Scripts\Activate.ps1

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

तीसरा चरण: 🔥 ज़रूरी - एनवायरमेंट वैरिएबल बनाना

⚠️ इस चरण को न छोड़ें! agent/ डायरेक्ट्री में .env फ़ाइल बनाएं:

# Create the .env file
type nul > agent\.env

# Open it in Notepad
notepad agent\.env

फ़ाइल में ये लाइनें जोड़ें:

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=your_actual_api_key_here

🚨 ज़रूरी: your_actual_api_key_here को अपने एपीआई पासकोड से बदलें!

चौथा चरण: वर्चुअल एनवायरमेंट चालू करें (अगर यह पहले से चालू नहीं है)

कमांड प्रॉम्प्ट:

.adk_env\Scripts\activate

PowerShell:

.adk_env\Scripts\Activate.ps1

आपको अपने प्रॉम्प्ट की शुरुआत में (.adk_env) दिखना चाहिए.

पाँचवाँ चरण: ADK वेब इंटरफ़ेस चलाना

adk web

छठा चरण: ब्राउज़र खोलना

  1. अपना ब्राउज़र खोलें और टर्मिनल में दिखाए गए यूआरएल पर जाएं. आम तौर पर, यह यूआरएल http://localhost:8000 होता है
  2. सबसे ऊपर बाईं ओर मौजूद ड्रॉपडाउन में, agent
  3. दिन की यात्रा की योजना बनाने वाले एजेंट से चैट करना शुरू करें!

Windows से जुड़ी समस्याओं को हल करना

  • PowerShell की एक्ज़ीक्यूशन नीति से जुड़ी गड़बड़ी: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser चलाएं

आपको इस तरह की बातचीत दिखेगी: ADK के वेब यूज़र इंटरफ़ेस (यूआई) का उदाहरण

एनवायरमेंट बंद करना

प्रोजेक्ट पर काम पूरा होने के बाद:

deactivate

यह निर्देश, Mac/Linux और Windows, दोनों पर एक जैसा काम करता है. आपको दिखेगा कि आपके टर्मिनल प्रॉम्प्ट से (.adk_env) प्रीफ़िक्स हट गया है.