Specification and Detection of LLM Code Smells
यह शोध पत्र LLM इन्फरेंस (inference) के लिए पांच आवर्ती समस्याग्रस्त कोडिंग अभ्यासों को औपचारिक रूप देकर 'LLM कोड स्मेल्स' (code smells) की अवधारणा प्रस्तुत करता है, उन्हें पहचानने के लिए SpecDetect4AI टूल का विस्तार करता है, और 200 ओपन-सोर्स सिस्टम के अध्ययन के माध्यम से यह प्रदर्शित करता है कि ये स्मेल्स उच्च पहचान सटीकता के साथ ऐसे 60% से अधिक सिस्टम को प्रभावित करते हैं।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपने अभी-अभी एक सुपर-स्मार्ट रोबोट असिस्टेंट (एक लार्ज लैंग्वेज मॉडल, या LLM) बनाया है, और आपने उसे अपने सॉफ़्टवेयर के भीतर रहने के लिए आमंत्रित किया है। यह ऐसा है जैसे अपने कोड में जादू चलाने में मदद करने के लिए एक जीनियस जादूगर को काम पर रखना। लेकिन यहाँ एक पेंच है: यदि आप जादूगर को स्पष्ट नियम, एक स्थिर हाथ और एक नक्शा नहीं देते हैं, तो चीजें गड़बड़ हो सकती हैं। रोबलेट भ्रमित हो सकता है, अपनी जादुई शक्ति खत्म कर सकता है, या बिना सिर-पैर की बातें चिल्लाना शुरू कर सकता है।
यह पेपर उन "बुरी आदतों" को पहचानने के लिए एक जासूस की गाइड की तरह है जिन्हें डेवलपर्स अनजाने में अपना लेते हैं जब वे इन जादूगरों को अपने कोड में आमंत्रित करते हैं। लेखकों, ब्राहिम, ज़ाकारिए, नौएल, क्वेंटिन और फ्लोरेंट ने महसूस किया कि हालांकि हर कोई कोड लिखना जानता है, लेकिन किसी ने भी विशेष रूप से LLMs का उपयोग करते समय होने वाली विशिष्ट "दुर्गंध" (smells) (वे सूक्ष्म, बुरी आदतें जो तुरंत क्रैश नहीं करतीं लेकिन बाद में सॉफ़्टवेयर को बीमार बना देती हैं) की औपचारिक सूची नहीं लिखी थी।
पाँच "बुरी आदतें" (The Smells)
टीम ने शोध पत्रों, टेक ब्लॉगों और वास्तविक दुनिया के कोड को खंगाला ताकि पाँच बार होने वाली समस्याओं को खोजा जा सके। इन्हें "अपने जादूगर के काम को बिगाड़ने के शीर्ष 5 तरीके" के रूप में सोचें:
- "अनंत बजट" की दुर्गंध (Unbounded Max Metrics): कल्पना कीजिए कि आप अपने जादूगर को कहते हैं, "जाओ एक कहानी लिखो, लेकिन तब तक मत रुकना जब तक तुम्हारे पास कागज या समय खत्म न हो जाए।" वास्तविक दुनिया में, API की सीमाएं होती हैं। यदि आप यह सीमा तय नहीं करते हैं कि जादूगर कितने शब्द (टोकन) उगल सकता है, या वह कितनी देर तक सोच सकता है (टाइमआउट), तो आपको एक अधूरी कहानी मिल सकती है, या इससे भी बुरा, आपका कंप्यूटर अनंत काल तक इंतजार करते हुए फंस सकता है जबकि आप एक बड़ी रकम चुका रहे हों। समाधान? हमेशा लंबाई और समय पर एक सख्त रोक लगा दें।
- "बदलता लक्ष्य" की दुर्गंध (No Model Version Pinning): कल्पना कीजिए कि आपका जादूगर "GPT-4" नाम का है। लेकिन क्या होगा अगर GPT-4 के पीछे की कंपनी कल "GPT-4" के शरीर के अंदर एक अलग दिमाग डाल दे? यदि आप अपने कोड को एक विशिष्ट संस्करण (जैसे "20 नवंबर, 2024 वाला GPT-4") से पिन नहीं करते हैं, तो आपका सॉफ़्टवेयर आज काम करेगा और कल पूरी तरह से अजीब व्यवहार करेगा क्योंकि जादूगर बदल गया है। समाधान? जादूगर को एक विशिष्ट, अपरिवर्तनीय संस्करण पर लॉक करें।
- "कोई बॉस नहीं" की दुर्गंध (No System Message): कल्पना कीजिए कि आप अपने जादूगर को एक कमरे में बिना यह बताए भेज रहे हैं कि वह कौन है या नियम क्या हैं। वह एक शिक्षक के बजाय एक कॉमेडियन की तरह व्यवहार कर सकता है, या एक कोडर के बजाय एक कवि की तरह। एक "सिस्टम मैसेज" के बिना जो लहजा और भूमिका निर्धारित करे, परिणाम अप्रत्याशित और नियंत्रित करना कठिन होते हैं। समाधान? जादूगर को काम शुरू करने से पहले हमेशा एक स्पष्ट जॉब डिस्क्रिप्शन दें।
- "बिखरी हुई मेज" की दुर्गंध (No Structured Output): कल्पना कीजिए कि आप अपने जादूगर से सामग्री की एक सूची मांगते हैं, लेकिन वह आपको एक व्यवस्थित सूची के बजाय एक लंबा पैराग्राफ थमा देता है। यदि आपका सॉफ़्टवेयर अपना काम करने के लिए एक व्यवस्थित सूची (जैसे JSON) की अपेक्षा करता है, तो वह उस बिखराव को पढ़ने की कोशिश में क्रैश हो जाएगा। समाधान? जादूगर को एक सख्त प्रारूप में लिखने के लिए मजबूर करें, जैसे कि एक चेकलिस्ट, ताकि आपका सॉफ़्टवेयर इसे आसानी से पढ़ सके।
- "रोलरकोस्टर" की दुर्गंध (Temperature Not Explicitly Set): कल्पना कीजिए कि जादूगर का "रचनात्मकता डायल" (creativity dial)। यदि आप इसे सेट नहीं करते हैं, तो जादूगर एक दिन बहुत गंभीर हो सकता है और अगले दिन पूरी तरह से अराजक, यह इस पर निर्भर करता है कि डिफ़ॉल्ट सेटिंग क्या है। यह आपके सॉफ़्टवेयर को अविश्वसनीय बनाता है क्योंकि एक ही सवाल के हर बार अलग जवाब मिलते हैं। समाधान? हमेशा डायल को एक विशिष्ट संख्या पर घुमाएं ताकि जादूगर हर बार एक ही तरह से व्यवहार करे।
उन्होंने क्या पाया (प्रमाण)
यह देखने के लिए कि ये बुरी आदतें कितनी आम हैं, टीम ने SpecDetect4LLM नामक एक विशेष उपकरण बनाया। इसे एक स्पेल-चेकर की तरह समझें जो केवल इन पांच विशिष्ट जादूगर-संबंधी गलतियों को देखता है। उन्होंने इस टूल को LLMs का उपयोग करने वाले 200 विभिन्न ओपन-सोर्स सॉफ़्टवेयर प्रोजेक्ट्स पर चलाया।
बड़ा खुलासा यह है: उन 200 प्रोजेक्ट्स में से 60.50% में कम से कम एक ऐसी बुरी आदत थी। यह आधे से भी अधिक है!
टूल वास्तविक समस्याओं को पहचानने में काफी अच्छा था, जिसकी सटीकता (precision) 86.06% थी। इसका मतलब है कि जब टूल ने कहा, "हे, आपके पास एक बुरी आदत है," तो वह 100 में से 86 बार सही था।
उन्होंने यह भी बताया कि प्रत्येक दुर्गंध कितनी बार दिखाई दी:
- कोई संरचित आउटपुट नहीं (NSO): सबसे आम, जो 40.50% सिस्टम में पाया गया।
- अनबाउंडेड मैक्स मेट्रिक्स (UMM): 38.00% सिस्टम में पाया गया।
- कोई मॉडल वर्जन पिनिंग नहीं (NMVP): 36.00% सिस्टम में पाया गया।
- LLM टेम्परेचर स्पष्ट रूप से सेट नहीं किया गया (TNES): 36.50% सिस्टम में पाया गया।
- कोई सिस्टम मैसेज नहीं (NSM): 34.50% सिस्टम में पाया गया।
वे क्या नहीं जानते (सीमाएं)
यह ध्यान रखना महत्वपूर्ण है कि इस पेपर ने क्या नहीं किया। लेखकों ने यह गिनने की कोशिश नहीं की कि उन्होंने कितनी बुरी आदतें छोड़ दीं (उन्होंने "रिकॉल" को नहीं मापा)। उन्होंने केवल यह जांचा कि जब उनके टूल ने कुछ पाया, तो वह कितना सटीक था। साथ में, उनका टूल केवल कोड को देखता है (स्टैटिक एनालिसिस), इसलिए यह नहीं देख सकता कि वास्तव में कोड चलते समय और जादूगर से बात करते समय क्या होता है। वे सुझाव देते हैं कि भविष्य के कार्य में इन चलते हुए प्रभावों को देखा जा सकता है, लेकिन फिलहाल, उन्होंने केवल फाइलों में मौजूद कोड को ही मापा है।
निष्कर्ष
मुख्य बात यह नहीं है कि ये सिस्टम मरम्मत के बिना टूटे हुए हैं। बल्कि यह है कि डेवलपर्स अक्सर इन शक्तिशाली AI उपकरणों के साथ ऐसे व्यवहार करते हैं जैसे वे बिना निर्देश पुस्तिका पढ़े जादू के बक्से हों। इन पांच "दुर्गंधों" को परिभाषित करके और उन्हें खोजने के लिए एक टूल बनाकर, लेखक डेवलपर्स को एक चेकलिस्ट दे रहे हैं ताकि वे अपने AI-एकीकृत सॉफ़्टवेयर को अधिक विश्वसनीय, सस्ता और बाद में ठीक करने में आसान बना सकें। वे यह नहीं कह रहे हैं कि उन्होंने AI सुरक्षा की पूरी समस्या को हल कर दिया है, लेकिन उन्होंने निश्चित रूप से सड़क पर पहले पांच गड्ढों को ढूंढ लिया है और संकेत बोर्ड लगा दिए हैं ताकि बाकी सभी इनसे बच सकें।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।