लाभ:
- सरलतम समाधान से एजेंट तक जटिलता के बढ़ते पैमाने को लागू करना
- चेनिंग, रूटिंग और समानांतर वर्कफ़्लो पैटर्न के बीच अंतर करना
- एक बहु-चरणीय कार्य को योजना-निष्पादन-सत्यापन चक्र में तोड़ना
हमने पिछली इकाई में एकल-वाहन सरल चक्र स्थापित किया था। वास्तविक कार्य के लिए अक्सर कई चरणों, कई उपकरणों और कभी-कभी शाखा संबंधी निर्णयों की आवश्यकता होती है: "इस महीने के अंत में आने वाले ऑर्डर ढूंढें, ग्राहकों को माफी ईमेल का मसौदा तैयार करें, एक प्रबंधक के लिए सारांश तैयार करें।" इस इकाई में, हम बहु-चरणीय कार्यों को व्यवस्थित करने के लिए पैटर्न, जब आपको एक वास्तविक एजेंट की आवश्यकता होती है, और योजना-निष्पादन-सत्यापन चक्र को कवर करते हैं। मुख्य सिद्धांत: जितनी आवश्यकता उतनी जटिलता।
सरलतम समाधान से एजेंट तक का पैमाना
प्रत्येक कार्य सबसे जटिल समाधान का हकदार नहीं है। जटिलता के पैमाने पर कदम दर कदम चढ़ें और सबसे सरल पर्याप्त समाधान पर रुकें:
- एकल कॉल: यदि कार्य एकल मॉडल कॉल (सारांश, वर्गीकृत) द्वारा हल किया जाता है तो यहां रुकें।
- आरएजी के साथ सिंगल कॉल: यदि जानकारी आवश्यक है, तो पुनर्प्राप्ति जोड़ें और फिर से सिंगल कॉल करें।
- निश्चित वर्कफ़्लो: यदि चरण पहले से ज्ञात हैं, तो उन्हें मैन्युअल रूप से अनुक्रमित करें (कोड प्रवाह)। मॉडल प्रत्येक चरण पर एक उप-कार्य करता है, लेकिन क्रम आप निर्धारित करते हैं।
- मॉडल-संचालित एजेंट: यदि चरणों को पहले से नहीं जाना जा सकता है, तो मॉडल तय करता है कि किस एजेंट को कॉल करना है और कब। सबसे शक्तिशाली लेकिन सबसे महंगा और जोखिम भरा विकल्प।
वर्कफ़्लो और एजेंट के बीच अंतर महत्वपूर्ण है: वर्कफ़्लो में, आप नियंत्रण का प्रवाह (अनुमानित, परीक्षण योग्य, सस्ता) लिखते हैं। आप एजेंडे का नियंत्रण मॉडल को देते हैं (लचीला लेकिन अप्रत्याशित)। अधिकांश कॉर्पोरेट कार्य वास्तव में एक वर्कफ़्लो है; वास्तविक एजेंट अपेक्षाकृत कम हैं।
युक्ति: "क्या मैं इस कार्य के चरण पहले से लिख सकता हूँ?" पूछना। यदि आप इसे लिख सकते हैं, तो एक वर्कफ़्लो बनाएं - सस्ता, सुरक्षित, अधिक परीक्षण योग्य। हालाँकि, यदि चरण इनपुट के आधार पर भिन्न होते हैं और भविष्यवाणी नहीं की जा सकती है, तो एक एजेंट की आवश्यकता होती है।
तीन बुनियादी वर्कफ़्लो पैटर्न
प्रॉम्प्ट चेनिंग: एक चरण का आउटपुट अगले चरण का इनपुट होता है। "ड्राफ्ट तैयार करें → संपादित करें → प्रारूप।" हर कदम सरल और केंद्रित है; डिबग करना आसान है.
रूटिंग: आप पहले आने वाले अनुरोध को वर्गीकृत करें और उसे उचित विशेषज्ञ को भेजें। "क्या यह प्रश्न तकनीकी, बिलिंग या धनवापसी है?" → सही उप-धारा पर पुनर्निर्देशित करें। प्रत्येक पथ को अपने स्वयं के प्रॉम्प्ट और टूल से अनुकूलित किया गया है।
समानांतरीकरण: स्वतंत्र नौकरियों को एक साथ चलाना और परिणामों को संयोजित करना। "5 दस्तावेज़ों को अलग-अलग सारांशित करें, फिर संयोजित करें।" यह न केवल तेज़ है, बल्कि हर हिस्से पर पूरा ध्यान जाता है।
पैटर्न
कब
उदाहरण
जंजीर
चरण अनुक्रमिक और निर्भर हैं
ड्राफ्ट → संपादन → प्रारूप
पुनर्निर्देशन
इनपुट प्रकार के आधार पर भिन्न प्रसंस्करण
समर्थन अनुरोध वर्गीकरण
समानांतर
स्वतंत्र उपकार्य
अनेक दस्तावेज़ों का अलग-अलग सारांश बनाएँ
एजेंट (लूप)
कदमों की पहले से भविष्यवाणी नहीं की जा सकती
ओपन-एंड अनुसंधान/मरम्मत
# रूटिंग पैटर्न (वैचारिक)प्रकार = पैटर्न.वर्गीकरण(अनुरोध) # "वापसी" | "तकनीक" | "चालान" यदि दौरा == "वापसी": उत्तर = वापसी_प्रवाह(अनुरोध)एलिफ़ तूर == "तकनीकी": उत्तर = तकनीकी_प्रवाह(अनुरोध)अन्यथा: उत्तर = चालान_प्रवाह(अनुरोध)
योजना-निष्पादन-सत्यापन चक्र
वास्तविक एजेंटों में एक शक्तिशाली पैटर्न: मॉडल योजना रखें, फिर निष्पादित करें, फिर सत्यापित करें। मॉडल जटिल कार्य को उप-चरणों में तोड़ता है, प्रत्येक चरण को टूल के साथ निष्पादित करता है, और अंत में पूछता है "क्या मैंने लक्ष्य प्राप्त किया?" वह जाँच करता है. सत्यापन चरण त्रुटियों को एक अलग, ताज़ा नज़र से पकड़ता है ("क्या यह आउटपुट कार्य को पूरा करता है?")।
# योजना-निष्पादन-सत्यापित (वैचारिक)योजना = मॉडल.यूरेट("इस कार्य को चरणों में तोड़ें:" + कार्य)योजना में चरण के लिए: परिणाम = एजेंट_लूप(चरण) # टूलचेक के साथ निष्पादित करें = मॉडल.यूरेट("क्या यह आउटपुट कार्य को पूरा करता है? मुझे बताएं कि क्या कुछ छूट गया है:" + कार्य + परिणाम)यदि चेक.गायब: # सुधार दौर...
लंबे कार्यों के लिए दो अच्छी प्रथाएं: रुकने की स्थिति लागू करें (चरणों की अधिकतम संख्या - अनंत लूप को रोकती है) और प्रगति ट्रैकिंग (एजेंट को यह लिखना होगा कि वह क्या कर रहा है ताकि वह विचलित न हो)। एजेंट, जिसके पास कोई कदम सीमा नहीं है, अगर वह फंस जाता है तो हमेशा के लिए घूम सकता है और लागत बढ़ जाएगी।
कमजोर/मजबूत डिज़ाइन
कमजोर (एक विशाल एजेंट पर सब कुछ डालना):
कहें "उस जटिल चीज़ को पूरा करें" और इसे असीमित टूल के साथ जारी करें। # परिणाम: अप्रत्याशित व्यवहार, अनंत लूप का जोखिम, उच्च लागत, # डीबग करना असंभव।
शक्तिशाली (पहले प्रवाह, एजेंट केवल जहां आवश्यक हो, सीमित):
सबसे पहले कार्य को निश्चित चरणों (रूटिंग + चेनिंग) में विभाजित करें। एजेंट का उपयोग केवल उन उपकार्यों में करें जहां चरण अज्ञात हों; चरण सीमा, प्रगति ट्रैकिंग और सत्यापन दौर जोड़ें।
तीन मिनी मामले
केस 1 - एजेंट के बजाय वर्कफ़्लो। एक टीम ने एक निःशुल्क एजेंट के साथ "प्रक्रिया समर्थन अनुरोध" कार्य स्थापित किया; कभी-कभी एजेंट 15 कदम मुड़कर गलत रास्ते पर चला जाता था। चरण अनिवार्य रूप से तय किए गए थे (वर्गीकृत करें → प्रासंगिक जानकारी प्राप्त करें → ड्राफ्ट लिखें → अनुमोदन के लिए सबमिट करें)। जब हमने रूटिंग + चेनिंग वर्कफ़्लो पर स्विच किया, तो स्थिरता 58% से बढ़कर 96% हो गई और लागत आधी हो गई।
केस 2 - समानांतर लाभ। एक कानूनी टीम एक-एक करके 20 अनुबंधों का सारांश तैयार कर रही थी; इसमें कुल 4 मिनट लगे. जब हमने एक समानांतर पैटर्न (एक ही समय में, फिर संयोजित) पर स्विच किया, तो समय 25 सेकंड तक कम हो गया और गुणवत्ता में वृद्धि हुई क्योंकि प्रत्येक सारांश पर पूरा ध्यान दिया गया।
केस 3 - रुकने की कोई स्थिति नहीं थी। एक जांच एजेंट उन्हीं दो उपकरणों को लगातार कॉल करता रहा, ऐसी जानकारी खोजता रहा जो उसे नहीं मिली; रातों-रात महत्वपूर्ण लागत जमा हो गई। जब अधिकतम 8-चरण की सीमा और "यदि आप इसे 3 प्रयासों में नहीं ढूंढ पाते हैं, तो कहें कि मुझे नहीं पता" नियम जोड़ा गया, तो लागत को नियंत्रण में रखा गया और ईमानदार "मुझे यह नहीं मिला" उत्तर आए।
सामान्य गलतियाँ
- सब कुछ एजेंट को सौंपना: यदि चरण ज्ञात हों तो वर्कफ़्लो सस्ता, सुरक्षित और परीक्षण योग्य है।
- वर्कफ़्लो को एजेंट के साथ मिलाना: क्या आप या मॉडल नियंत्रण लेते हैं? इसे स्पष्ट किये बिना डिज़ाइन न करें।
- रुकने की स्थिति निर्धारित नहीं करना: एजेंट एक अनंत लूप में प्रवेश करता है और लागत जमा करता है।
- कोई प्रगति ट्रैकिंग नहीं: एक लंबे मिशन के दौरान, एजेंट का ध्यान भटक जाता है और वह फिर से वही काम करता है।
- सत्यापन दौर को छोड़ देना: गलत लेकिन विश्वसनीय दिखने वाला आउटपुट अनियंत्रित रूप से वितरित किया जाता है।
ध्यान दें: एजेंट जितना मुक्त होगा, विस्फोट त्रिज्या उतनी ही बड़ी हो जाएगी। लचीलापन मुफ़्त नहीं है; प्रत्येक अतिरिक्त स्वतंत्रता अप्रत्याशितता और जोखिम जोड़ती है। सबसे संकीर्ण पर्याप्त समाधान चुनें.
संक्षेप में
- जटिलता में, "आवश्यकतानुसार" सिद्धांत लागू होता है: एकल कॉल → आरएजी → वर्कफ़्लो → एजेंट केवल यदि वास्तव में आवश्यक हो।
- वर्कफ़्लो में, आप नियंत्रण का प्रवाह (अनुमानित) लिखते हैं; आप एजेंडा को मॉडल (लचीला लेकिन जोखिम भरा) पर छोड़ दें।
- तीन बुनियादी पैटर्न: चेनिंग (क्रमिक रूप से निर्भर), रूटिंग (प्रकार के अनुसार वितरित), समानांतर (स्वतंत्र नौकरियां)।
- वास्तविक एजेंट योजना-निष्पादन-सत्यापन चक्र, रुकने की स्थिति और प्रगति ट्रैकिंग का उपयोग करते हैं।
- जैसे-जैसे लचीलापन बढ़ता है, अप्रत्याशितता और लागत में वृद्धि होती है; सबसे संकीर्ण पर्याप्त समाधान चुनें.
आवेदन कार्य
अपने स्वयं के व्यवसाय से एक बहु-चरणीय कार्य चुनें (उदाहरण के लिए "मासिक रिपोर्ट तैयार करें और वितरित करें")। (1) क्या आप इस कार्य के चरण पहले से लिख सकते हैं? यदि आप इसे लिख सकते हैं, तो इसे वर्कफ़्लो के रूप में डिज़ाइन करें (कौन सा पैटर्न: चेनिंग/रूटिंग/समानांतर?); यदि आप लिख नहीं सकते, तो बताएं कि एजेंट की आवश्यकता क्यों है। (2) अपने चुने हुए डिज़ाइन को बॉक्स-एरो आरेख के साथ बनाएं। (3) यदि एजेंसी: लिखें कि आप रुकने की स्थिति, प्रगति ट्रैकिंग और सत्यापन दौर कैसे सेट करेंगे। (4) "एकल विकास एजेंट" के साथ एक ही कार्य करने के 3 जोखिमों की सूची बनाएं।
चेकलिस्ट
- [ ] मैं "आवश्यकतानुसार जटिलता" पैमाने पर सही स्तर चुन सकता हूं।
- [ ] मैं वर्कफ़्लो और एजेंट के बीच नियंत्रण में अंतर बता सकता हूं।
- [ ] मैं उपयुक्त कार्यों के लिए चेनिंग, रूटिंग और समानांतर पैटर्न को मैप कर सकता हूं।
- [ ] मैं एजेंटों में योजना-निष्पादन-सत्यापन चक्र, स्थिति रोकने और प्रगति ट्रैकिंग सेट कर सकता हूं।
- [ ] मैं इस बात को ध्यान में रखता हूं कि बहुत अधिक लचीलापन अप्रत्याशितता और लागत लाता है।