1. आपको क्या सीखने को मिलेगा
ADK मास्टर क्लास में आपका स्वागत है - मल्टी-एजेंट सिस्टम के बारे में जानकारी
अब आप एआई एजेंट की दिलचस्प दुनिया में कदम रखने वाले हैं. सिर्फ़ सवालों के जवाब देने वाले सामान्य चैटबॉट को भूल जाएं. हम Agent Development Kit (ADK)
पर काफ़ी काम कर रहे हैं, ताकि हम ऐसे बेहतर और स्वायत्त सिस्टम बना सकें जो मुश्किल कामों को पूरा करने के लिए, तर्क दे सकें, प्लान बना सकें, और टूल इस्तेमाल कर सकें.
इस ट्यूटोरियल के आखिर तक, आपको ये काम करने का तरीका पता चल जाएगा:
- अपना पहला एआई एजेंट बनाएं: एक ऐसा एजेंट बनाएं जो उपयोगकर्ता की ज़रूरतों को समझ सके, Google Search जैसे टूल का इस्तेमाल कर सके, और मददगार जवाब जनरेट कर सके.
- मास्टर कस्टम टूल: एजेंटों को अपने कस्टम फ़ंक्शन और एपीआई से कनेक्ट करके, उनकी पूरी क्षमता का इस्तेमाल करें. आपको अपने एजेंट को रीयल-टाइम डेटा फ़ेच करने का तरीका सिखाना होगा. जैसे, मौसम का लाइव पूर्वानुमान.
- मल्टी-एजेंट सिस्टम बनाना: "एजेंट-एज़-अ-टूल" पैटर्न के बारे में जानें. यह एक क्रांतिकारी कॉन्सेप्ट है, जिसमें एजेंट, टास्क को अन्य विशेषज्ञ एजेंटों को सौंपते हैं. इससे एआई विशेषज्ञों की एक टीम बनती है, जो एक साथ काम करती है.
- जटिल वर्कफ़्लो को व्यवस्थित करें: सिर्फ़ डेलिगेशन से आगे बढ़ें और राउटर, सीक्वेंशियल चेन, लूप, और पैरलल एक्ज़ीक्यूशन जैसे ऐडवांस पैटर्न का इस्तेमाल करें. इससे ऐसे मज़बूत, असरदार, और स्मार्ट ऐप्लिकेशन बनाए जा सकते हैं जो लगभग सभी अनुरोधों को हैंडल कर सकते हैं.
- अपने एजेंट को बातचीत याद रखने की सुविधा दें: बातचीत याद रखने की सुविधा की अहम भूमिका को समझें. इससे आपके एजेंट, फ़ॉलो-अप सवालों के जवाब दे पाते हैं, फ़ीडबैक से सीख पाते हैं, और कई चरणों वाले कामों को आसानी से मैनेज कर पाते हैं.
आइए, शुरू करें! 🚀
2. GCP और Gemini API पासकोड सेट अप करना
GCP प्रोजेक्ट और Gemini API पासकोड सेट अप करना
हमारे एआई एजेंट को काम करने के लिए, हमें दो चीज़ों की ज़रूरत होती है: एक Google Cloud प्रोजेक्ट, जो बुनियादी ढांचा उपलब्ध कराता है. दूसरा, Gemini API पासकोड, जो Google के बेहतरीन मॉडल को ऐक्सेस करने के लिए ज़रूरी है.
पहला चरण: बिलिंग खाता चालू करना
- पांच डॉलर के क्रेडिट वाले बिलिंग खाते पर दावा करें. आपको इसकी ज़रूरत डिप्लॉयमेंट के लिए पड़ेगी. पक्का करें कि आपने अपने gmail खाते से साइन इन किया हो.
दूसरा चरण: नया GCP प्रोजेक्ट बनाना
- Google Cloud Console पर जाएं और एक नया प्रोजेक्ट बनाएं.
- Google Cloud Console पर जाएं और एक नया प्रोजेक्ट बनाएं.
- बाईं ओर मौजूद पैनल खोलें और
Billing
पर क्लिक करें. देखें कि बिलिंग खाता, इस GCP खाते से लिंक है या नहीं.
अगर आपको यह पेज दिखता है, तो manage billing account
पर जाएं. इसके बाद, Google Cloud की बिना शुल्क वाली सदस्यता चुनें और उसे लिंक करें.
तीसरा चरण: Gemini API पासकोड जनरेट करना
कुंजी को सुरक्षित करने से पहले, आपके पास एक कुंजी होनी चाहिए.
- Google AI Studio पर जाएं : https://aistudio.google.com/
- अपने Gmail खाते से साइन इन करें.
- "एपीआई कुंजी पाएं" बटन पर क्लिक करें. यह बटन आम तौर पर, बाईं ओर मौजूद नेविगेशन पैनल या सबसे ऊपर दाएं कोने में होता है.
- "एपीआई पासकोड" डायलॉग में, "नए प्रोजेक्ट में एपीआई पासकोड बनाएं" पर क्लिक करें.
- आपने जो नया प्रोजेक्ट बनाया है उसे चुनें. इसमें बिलिंग खाता सेट अप किया गया हो.
- आपके लिए एक नई एपीआई कुंजी जनरेट की जाएगी. इस कुंजी को तुरंत कॉपी करें और इसे कुछ समय के लिए किसी सुरक्षित जगह पर सेव करें. जैसे, पासवर्ड मैनेजर या सुरक्षित नोट. इस वैल्यू का इस्तेमाल अगले चरणों में किया जाएगा.
3. पहला सेशन: रनर के साथ आपका पहला एजेंट
आइए, बुनियादी बातों से शुरू करते हैं. यहां हम अपना पहला आसान एजेंट, day_trip_agent
बनाते हैं. इस एजेंट का मकसद, उपयोगकर्ता के अनुरोध के आधार पर पूरे दिन की यात्रा का प्लान बनाना है. इसमें बजट का ध्यान रखना भी शामिल है. इस उदाहरण में, ADK में एजेंट के साथ होने वाली किसी भी बातचीत के तीन मुख्य कॉम्पोनेंट के बारे में बताया गया है:
- एजेंट: यह ऑपरेशन का मुख्य हिस्सा होता है. इसे इसके निर्देशों (इसकी पर्सनैलिटी और मिशन), इस्तेमाल किए जाने वाले एआई मॉडल (जैसे, Gemini) और ऐक्सेस किए जा सकने वाले टूल के हिसाब से तय किया जाता है.
- सेशन: बातचीत की मेमोरी. यह कुकी, इंटरैक्शन (उपयोगकर्ता के मैसेज और एजेंट के जवाब) का इतिहास सेव करती है. इससे लगातार बातचीत की जा सकती है.
- रनर: यह टास्क को एक्ज़ीक्यूट करने वाला इंजन होता है. यह एजेंट और सेशन की जानकारी लेता है. साथ ही, उपयोगकर्ता की नई क्वेरी को प्रोसेस करता है और जवाब जनरेट करने के लिए ज़रूरी चरणों को व्यवस्थित करता है.
➡️ नोटबुक में यह सुविधा कहां मिलेगी
👉 यह पहला हिस्सा: आपका पहला एजेंट - एक दिन की यात्रा का प्लान बनाने वाला जिनी 🧞 में मौजूद सेल से मेल खाता है.🌟
- एजेंट की परिभाषा:
create_day_trip_agent()
फ़ंक्शन ढूंढें. यहां एजेंट को तय किया जाता है. निर्देशों वाली स्ट्रिंग पर ध्यान दें. यह वह प्रॉम्प्ट है जो एजेंट को बताता है कि उसे कैसे काम करना है. हम इसे पहला टूल भी देते हैं: Google Search. - हेल्पर फ़ंक्शन: यहां
run_agent_query()
हेल्पर फ़ंक्शन के बारे में बताया गया है. हम इस यूटिलिटी का इस्तेमाल पूरी नोटबुक में करेंगे, ताकि क्वेरी को आसानी से चलाया जा सके. - टेस्ट रन:
run_day_trip_genie()
फ़ंक्शन, उपयोगकर्ता के "किफ़ायती" और "आरामदायक" दिन की यात्रा के बारे में पूछने की प्रोसेस को सिम्युलेट करता है. एजेंट, निर्देशों और Google Search टूल का इस्तेमाल करके, घूमने के लिए सही जगहें ढूंढता है. साथ ही, मार्कडाउन फ़ॉर्मैट में यात्रा का प्लान बनाता है.
➡️ कार्रवाई: day_trip_agent
के लिए, निर्देश वाले प्रॉम्प्ट की जांच करें. देखें कि टेस्ट क्वेरी में "किफ़ायती" यात्रा के अनुरोध का, एजेंट के "बजट के बारे में जानकारी रखना" दिशा-निर्देश से सीधा संबंध कैसे है.
4. दूसरा सेशन: कस्टम टूल 🛠️
Google Search एक बेहतरीन टूल है. हालांकि, एआई एजेंट की असली क्षमता तब सामने आती है, जब उन्हें अपने यूनीक डेटा सोर्स, एपीआई या कस्टम लॉजिक से कनेक्ट किया जाता है. इस सेक्शन में, हम एक सामान्य Python फ़ंक्शन से कस्टम टूल बनाएंगे.
किसी फ़ंक्शन टूल का सबसे अहम हिस्सा, उसकी डॉकस्ट्रिंग होती है. ADK, docstring को अपने-आप पार्स करता है. इससे उसे यह समझने में मदद मिलती है कि टूल क्या करता है, यह किन पैरामीटर (Args) को स्वीकार करता है, और यह क्या दिखाता है (Returns). लार्ज लैंग्वेज मॉडल (एलएलएम) इस जानकारी को पढ़ता है, ताकि यह तय किया जा सके कि टूल का इस्तेमाल कब और कैसे करना है.
➡️ नोटबुक में यह सुविधा कहां मिलेगी
👉 यह 2.1 Simple FunctionTool: Calling a Real-Time Weather API में मौजूद सेल से मेल खाता है. 🌟
- टूल की परिभाषा:
get_live_weather_forecast(location: str)
फ़ंक्शन, हमारे कस्टम टूल का मुख्य हिस्सा है. यह शहर का नाम लेता है, सार्वजनिक तौर पर उपलब्ध नेशनल वेदर सर्विस एपीआई को कॉल करता है, और तापमान और पूर्वानुमान के साथ एक डिक्शनरी दिखाता है. - एजेंट की परिभाषा: weather_agent को बनाया गया है और इसे हमारे नए टूल के साथ जोड़ा गया है. इसके लिए,
tools=[get_live_weather_forecast]
को इसके शुरू होने के दौरान पास किया गया है. एजेंट को साफ़ तौर पर निर्देश दिए गए हैं कि वह बाहर की गतिविधियों के सुझाव देने से पहले, इस टूल का इस्तेमाल करे. - टेस्ट रन: "मुझे लेक टाहो के आस-पास हाइकिंग के लिए जाना है, वहां का मौसम कैसा है?" क्वेरी से, एजेंट सीधे तौर पर
get_live_weather_forecast
टूल का इस्तेमाल करने के लिए ट्रिगर होता है, क्योंकि इसके निर्देशों में ऐसा करना ज़रूरी है.
➡️ कार्रवाई: get_live_weather_forecast
फ़ंक्शन के लिए डॉकस्ट्रिंग और weather_agent
के लिए निर्देश पढ़ें. इनके बीच के सीधे संबंध को ध्यान में रखें.
5. तीसरा सेशन: एजेंट-एज़-अ-टूल 🧑🍳
जब आपके पास विशेषज्ञों की एक टीम बनाने का विकल्प है, तो एक ही एजेंट क्यों बनाया जाए? 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
को कॉल करता है.
- call_db_agent: यह एक ऐसा फ़ंक्शन है जो
- फ़्लो:
run_trip_data_concierge()
में किए गए टेस्ट रन से, डेलिगेशन की पूरी चेन का पता चलता है.- कोई उपयोगकर्ता ऑर्केस्ट्रेटर से होटल और उसके आस-पास के रेस्टोरेंट के बारे में पूछता है.
- ऑर्केस्ट्रेटर के निर्देशों के मुताबिक, इसे सबसे पहले
call_db_agent
टूल का इस्तेमाल करके होटल का डेटा पाना है. - इसके बाद, ऑर्केस्ट्रेटर सुझाव पाने के लिए
call_concierge_agent
टूल का इस्तेमाल करता है. - अनुरोध मिलने पर,
concierge_agent
अपने टूलfood_critic_agent
का इस्तेमाल करके, रेस्टोरेंट के बारे में जानकारी हासिल करता है.
फ़ूड क्रिटिक के जवाब को वापस कंसीयर्ज को भेज दिया जाता है. कंसीयर्ज, जवाब को सही तरीके से फ़ॉर्मैट करता है और उसे वापस ऑर्केस्ट्रेटर को भेज देता है. इसके बाद, ऑर्केस्ट्रेटर उस जवाब को उपयोगकर्ता को दिखाता है.
➡️ कार्रवाई: run_trip_data_concierge()
में जाकर, टेस्ट रन में एक्ज़ीक्यूशन फ़्लो को ट्रेस करें. देखें कि TOOL CALLED
प्रिंटआउट में, ऑर्केस्ट्रेटर से लेकर विशेषज्ञों तक के काम सौंपने की चेन कैसे दिखती है. यह कमांड की एक सीक्वेंशियल चेन है.
6. चौथा सेशन: एजेंट की मेमोरी 🧠
एक बेहतरीन एजेंट को सिर्फ़ एक बार की क्वेरी का जवाब देने के अलावा और भी बहुत कुछ करना होता है. इसे बातचीत को याद रखना होता है, संदर्भ को समझना होता है, और सुझाव/राय के हिसाब से काम करना होता है. ऐसा सही तरीके से सेशन मैनेज करके किया जाता है. "लूप एजेंट" को एक ऐसे एजेंट के तौर पर समझें जो अपनी मेमोरी की मदद से, बातचीत के लूप में लगातार शामिल रहता है.
जब एक ही सेशन ऑब्जेक्ट का इस्तेमाल, क्रम से की गई कई क्वेरी के लिए किया जाता है, तो एजेंट बातचीत के पूरे इतिहास को "देख" सकता है. इससे Gemini, फ़ॉलो-अप सवालों के जवाब दे पाता है, सुझाव/राय के आधार पर खुद को बेहतर बना पाता है, और कई चरणों वाले टास्क की योजना बना पाता है.
➡️ नोटबुक में यह सुविधा कहां मिलेगी
👉 यह तीसरा चरण: याददाश्त वाला एजेंट - अडैप्टिव प्लानर 🗺️ के नीचे मौजूद सेल से मेल खाता है. 🌟
- एजेंट की परिभाषा:
create_multi_day_trip_agent()
फ़ंक्शन, यात्रा की योजना बनाने के लिए डिज़ाइन किए गए एजेंट को तय करता है. इसमें दिए गए निर्देशों में, कॉन्टेक्स्ट को याद रखने, सुझाव/राय/शिकायत को मैनेज करने, और एक दिन के हिसाब से प्लान बनाने पर ज़ोर दिया गया है.
स्थिति 3a: मेमोरी वाला एजेंट (✅)
यह टेस्ट, run_adaptive_memory_demonstration()
फ़ंक्शन में चलाया जाता है.
- एक ही
trip_session
को तीन बार इस्तेमाल किया गया है. - पहला चरण: उपयोगकर्ता दो दिन की यात्रा की योजना बनाता है.
- दूसरा जवाब: उपयोगकर्ता ने सुझाव/राय दी या शिकायत की ("मुझे किले पसंद नहीं हैं"). एजेंट के पास पहले टर्न की जानकारी है. इसलिए, वह समझता है कि प्लान के किस हिस्से में बदलाव करना है और इसके लिए दूसरा विकल्प देता है.
- तीसरा चरण: उपयोगकर्ता बदलाव की पुष्टि करता है और अगले चरण के बारे में पूछता है. एजेंट को सारी जानकारी याद रहती है और वह दूसरे दिन की योजना बनाता है.
तीसरा विकल्प: एजेंट के पास मेमोरी नहीं है (❌)
यह टेस्ट, run_memory_failure_demonstration()
फ़ंक्शन में चलाया जाता है.
इस उदाहरण में, जान-बूझकर गड़बड़ी करके सेशन मैनेजमेंट की अहमियत को दिखाया गया है. हर बातचीत के लिए एक नया सेशन बनाया जाता है.
- पहला चरण: उपयोगकर्ता, session_one में यात्रा शुरू करता है. एजेंट सही जवाब देता है.
- दूसरा टर्न: उपयोगकर्ता, दूसरे दिन की यात्रा का प्लान बनाने के लिए कहता है. हालांकि, क्वेरी को नए session_two में भेजा जाता है. इस नए सेशन की कोई हिस्ट्री नहीं है. इसलिए, एजेंट को समझ नहीं आ रहा है कि वह क्या करे. इसे भूलने की बीमारी है! इसे यह नहीं पता कि किस यात्रा की योजना बनाई जा रही है.
कार्रवाई: run_adaptive_memory_demonstration()
और run_memory_failure_demonstration()
में एजेंट के जवाबों की तुलना करें. नोटबुक में यह सबसे ज़रूरी कॉन्सेप्ट है: बातचीत जारी रखने के लिए, एक सेशन जारी रहना ज़रूरी है.
7. सेशन 5: राऊटर एजेंट 🚏
एक एजेंट के पास सीमित संसाधन होते हैं. उपयोगकर्ता के मुश्किल अनुरोधों को पूरा करने के लिए, हमें खास एजेंट की एक टीम की ज़रूरत होती है. हालांकि, हमें यह कैसे पता चलेगा कि किसी क्वेरी के लिए किस एजेंट का इस्तेमाल करना है? ऐसे में, राऊटर एजेंट काम आता है.
राउटर एजेंट, "मास्टर" एजेंट या डिस्पैचर के तौर पर काम करता है. इसका मकसद, उपयोगकर्ता की क्वेरी का विश्लेषण करना और यह तय करना है कि इस काम के लिए कौनसा स्पेशलिस्ट एजेंट (या एजेंट का वर्कफ़्लो) सबसे सही है. यह क्वेरी का जवाब नहीं देता है. यह सिर्फ़ क्वेरी को सही डाउनस्ट्रीम एजेंट को भेजता है.
उदाहरण के लिए, "सबसे अच्छी सुशी" के बारे में क्वेरी, foodie_agent को भेजी जानी चाहिए. वहीं, "इस हफ़्ते होने वाले कॉन्सर्ट" के बारे में सवाल, weekend_guide_agent
को भेजा जाना चाहिए.
➡️ नोटबुक में यह कहां मिलेगा:
👉 यह कॉन्सेप्ट, पूरी नोटबुक के लिए ज़रूरी है. हालांकि, इसे पहली बार भाग 1: मल्टी-एजेंट मेहम - सीक्वेंशियल वर्कफ़्लो 🧠→🤖→🤖 🌟 में पेश किया गया है
- एजेंट की परिभाषाएं: कोड सेल में कई स्पेशलिस्ट एजेंट (day_trip_agent, foodie_agent, transportation_agent) और सबसे अहम, router_agent को परिभाषित किया गया है. router_agent के लिए दिए गए निर्देश वाले प्रॉम्प्ट पर ध्यान दें. इसमें साफ़ तौर पर बताया गया है कि सिर्फ़ उस एजेंट का नाम दिखाएं जो काम के हिसाब से सबसे सही हो.
- एक्ज़ीक्यूशन लॉजिक: run_sequential_app फ़ंक्शन दिखाता है कि सबसे पहले router_agent को कॉल करके फ़ैसला (chosen_route) कैसे लिया जाता है. इसके बाद, उस फ़ैसले का इस्तेमाल
if/elif
ब्लॉक में करके, सही स्पेशलिस्ट एजेंट को कैसे एक्ज़ीक्यूट किया जाता है.
8. सेशन 6: SequentialAgent ⛓️
कुछ टास्क को पूरा करने के लिए, कई चरणों को एक खास क्रम में पूरा करना होता है. उदाहरण के लिए, "मुझे पालो आल्टो में सबसे अच्छी सुशी खाने की जगह के बारे में बताओ. इसके बाद, मुझे वहां पहुंचने का रास्ता बताओ." यह दो चरणों वाली प्रोसेस है: पहला, रेस्टोरेंट ढूंढना और दूसरा, वहां पहुंचने के निर्देश पाना.
ADK, SequentialAgent की मदद से इसे मैनेज करने का आसान और असरदार तरीका उपलब्ध कराता है. यह एक खास वर्कफ़्लो एजेंट है, जो पहले से तय किए गए क्रम में सब-एजेंट की सूची को लागू करता है.
असल बात तो शेयर किए गए स्टेट में छिपी है. सीक्वेंस में मौजूद किसी एजेंट का आउटपुट, शेयर की गई स्टेट डिक्शनरी में अपने-आप सेव हो सकता है. इसके बाद, इसका इस्तेमाल अगले एजेंट के इनपुट के तौर पर किया जा सकता है. इससे, एक चरण से दूसरे चरण में जानकारी भेजने के लिए, मैन्युअल तरीके से जटिल कोड लिखने की ज़रूरत नहीं पड़ती.
➡️ नोटबुक में यह कहां मिलेगा:
👉 इसके बारे में Part 2 (The ADK Way): Multi-Agent Mayhem with 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. सेशन 7: LoopAgent 🔁
सभी समस्याओं का एक बार में सीधा समाधान नहीं होता. कभी-कभी, हमें किसी समस्या का समाधान सुझाना होता है. इसके बाद, हमें उस समाधान की आलोचना करनी होती है और उसे तब तक बेहतर बनाना होता है, जब तक वह किसी खास शर्त को पूरा न कर ले.
इसके लिए, 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 ⚡️
कम समय में ज़्यादा काम करना ज़रूरी है. अगर कोई उपयोगकर्ता एक साथ कई तरह की जानकारी मांगता है, तो एक-एक करके इन खोजों को चलाने में समय लगेगा.
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 के लिए
इस गाइड में, आपकी लोकल मशीन पर 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
दूसरा विकल्प: मैन्युअल सेटअप
# 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
छठा चरण: ब्राउज़र खोलना
- अपना ब्राउज़र खोलें और टर्मिनल में दिखाए गए यूआरएल पर जाएं. आम तौर पर, यह यूआरएल
http://localhost:8000
होता है - सबसे ऊपर बाईं ओर मौजूद ड्रॉपडाउन में,
agent
- दिन की यात्रा की योजना बनाने वाले एजेंट से चैट करना शुरू करें!
आपको इस तरह की बातचीत दिखेगी:
एनवायरमेंट बंद करना
प्रोजेक्ट पर काम पूरा होने के बाद:
deactivate
यह निर्देश, Mac/Linux और Windows, दोनों पर एक जैसा काम करता है. आपको दिखेगा कि आपके टर्मिनल प्रॉम्प्ट से (.adk_env)
प्रीफ़िक्स हट गया है.
Mac से जुड़ी समस्या हल करना
- Python नहीं मिला:
python
के बजायpython3
का इस्तेमाल करें - अनुमति नहीं दी गई: स्क्रिप्ट चलाने से पहले
chmod +x setup_venv.sh
चलाएं
12. अपेंडिक्स: ADK Web - 🪟 Windows का इस्तेमाल करने वाले लोगों के लिए
इस गाइड में, आपकी लोकल मशीन पर 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
दूसरा विकल्प: मैन्युअल सेटअप
कमांड प्रॉम्प्ट के लिए:
# 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
छठा चरण: ब्राउज़र खोलना
- अपना ब्राउज़र खोलें और टर्मिनल में दिखाए गए यूआरएल पर जाएं. आम तौर पर, यह यूआरएल
http://localhost:8000
होता है - सबसे ऊपर बाईं ओर मौजूद ड्रॉपडाउन में,
agent
- दिन की यात्रा की योजना बनाने वाले एजेंट से चैट करना शुरू करें!
Windows से जुड़ी समस्या हल करना
- PowerShell की एक्ज़ीक्यूशन नीति से जुड़ी गड़बड़ी:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
चलाएं
आपको इस तरह की बातचीत दिखेगी:
एनवायरमेंट बंद करना
प्रोजेक्ट पर काम पूरा होने के बाद:
deactivate
यह निर्देश, Mac/Linux और Windows, दोनों पर एक जैसा काम करता है. आपको दिखेगा कि आपके टर्मिनल प्रॉम्प्ट से (.adk_env)
प्रीफ़िक्स हट गया है.