- प्रभावी software engineer requirements और code का एक स्पष्ट mental model बनाते और बनाए रखते हैं, और इसे बार-बार तुलना व अपडेट करने वाले loop में काम करते हैं
- LLM code लिखना और संशोधित करना, test लिखना, debugging करना जैसे काम कर सकते हैं, लेकिन सटीक mental model बनाए रखने की क्षमता की कमी के कारण जटिल कामों में भ्रमित हो जाते हैं
- मौजूदा LLM में context omission, recency bias, और hallucination जैसी समस्याओं के कारण code और requirements के बीच अंतर को सही तरह पहचानने और उपयुक्त रूप से सुधारने में सीमाएँ हैं
- इंसान परिस्थिति के अनुसार पूरे context को अस्थायी रूप से याद में रख सकता है, या details को थोड़ी देर छिपाकर बड़ी तस्वीर देख सकता है, लेकिन LLM यह नहीं कर पाते
- LLM सरल requirements वाले कामों में उपयोगी हैं, लेकिन जटिल software development में अंततः software engineer को ही requirements की स्पष्टता और code के व्यवहार की ज़िम्मेदारी लेनी होती है, और LLM की भूमिका सहायक tool की होती है
Software engineering loop
- अनुभवी engineer नीचे दिए गए चरणों को दोहराते हुए काम करते हैं
1. requirements का mental model बनाना
2. उस model के अनुसार code लिखना
3. यह समझना कि लिखा गया code वास्तव में क्या करता है
4. अंतर पहचानकर code या requirements में सुधार करना
- इस loop का मूल सटीक और टिकाऊ mental model रखने की क्षमता है
LLM की सीमाएँ
- LLM code लिखना, समस्या पहचानकर उसे ठीक करना, test लिखना और चलाना, logging जोड़ना, debugger का उपयोग करना जैसे काम कर सकते हैं
- लेकिन mental model बनाए रखने में असफल होने के कारण नीचे जैसी समस्याएँ होती हैं
- यह मान लेना कि उनके द्वारा लिखा गया code ठीक से काम कर रहा है
- test fail होने पर code और test में से किसे ठीक करना है, यह अनुमान से तय करना
- भ्रम होने पर पूरा code हटाकर फिर से शुरू से लिखना
- इंसानों के विपरीत, test fail होने पर model की जाँच कर सही सुधार दिशा तय करना, या निराशा की स्थिति में बातचीत के माध्यम से समस्या सुलझाना जैसी लचीलापन उनमें कम है
- software engineer काम के बीच में test चलाते हैं और समस्या आने पर स्पष्ट रूप से तय कर सकते हैं कि किस हिस्से को सुधारना चाहिए
- कभी-कभी पूरे काम को फिर से शुरू करने पर भी समस्या की समझ और गहरी हो जाती है
आगे की संभावनाएँ
- भविष्य में model अधिक विकसित होने पर स्थिति बदल सकती है, लेकिन software engineering सिर्फ code generation से कहीं अधिक की माँग करती है
- इंसान महत्वपूर्ण समस्याएँ हल करते समय पूरे context को अस्थायी रूप से memory से निकालकर देख सकते हैं, किसी issue पर केंद्रित हो सकते हैं, या बड़ी तस्वीर देख सकते हैं
- सिर्फ context information को लगातार बढ़ाते जाने के बजाय, ज़रूरी जानकारी को चुनकर संभालने का सोचने का तरीका अधिक महत्वपूर्ण है
- इंसानों की तरह context को अस्थायी रूप से store और restore करना, या बड़ी तस्वीर और details के बीच आना-जाना करके सोचना, ऐसी क्षमता LLM में नहीं है
- मौजूदा LLM की मुख्य सीमाएँ
- प्रसंग छूटना (Context omission): ज़रूरी जानकारी छूट गई है या नहीं, इसे ठीक से पहचान नहीं पाते
- हालिया-प्रभाव पक्षपात (Recency bias): context window के भीतर सबसे हाल की जानकारी पर अत्यधिक निर्भरता
- मतिभ्रम (Hallucination): ऐसी details गढ़ लेना जो वास्तव में मौजूद नहीं हैं
- memory features जुड़ने पर कुछ सुधार संभव है, लेकिन जटिलता बढ़ने पर फिर भी context की समझ और model बनाए रखने में विफलता होती है
- दो मिलते-जुलते mental model को साथ बनाए रखकर उनका अंतर विश्लेषित करना, और requirements या code में कहाँ बदलाव करना चाहिए यह तय करना—इस क्षमता की कमी है
वर्तमान भूमिका और उपयोग
- LLM तेज code generation और requirements व documentation को एकीकृत करने में मजबूत हैं, इसलिए सरल और स्पष्ट कामों में पर्याप्त उपयोगी हैं
- लेकिन गैर-सरल समस्याओं में पर्याप्त context बनाए रखना और दोहरावदार सुधार करना कठिन है
- इसलिए requirements को स्पष्ट करना, code verification करना आदि अब भी software engineer की ज़िम्मेदारी है
- ऐसे माहौल की दिशा में बढ़ा जा रहा है जहाँ इंसान और agent (LLM) मिलकर software बनाते हैं, लेकिन अभी के लिए engineer को नेतृत्व करना चाहिए और LLM को tool की तरह उपयोग करना चाहिए
अभी कोई टिप्पणी नहीं है.