LLM के साथ प्रोग्रामिंग कैसे करें
(crawshaw.io)- पिछले 1 साल में LLM (Large Language Model) का उपयोग करके प्रोग्रामिंग करने के अनुभव का सारांश
- LLM ने productivity बढ़ाई है, और अब इसके बिना प्रोग्रामिंग पर लौटना मुश्किल लगता है
- मुख्य रूप से Go प्रोग्रामिंग environment पर फोकस करते हुए sketch.dev नाम का एक tool विकसित किया जा रहा है
पृष्ठभूमि
- शुरुआत नई तकनीक के प्रति जिज्ञासा से हुई।
- सवालों के जटिल जवाब बनाने और प्रोग्रामिंग कोड लिखने की LLM की क्षमता ने आकर्षित किया।
- इससे वैसा ही उत्साह और संभावनाएँ महसूस हुईं जैसी इंटरनेट के शुरुआती दौर में हुई थीं।
- जब tool “ज्यादातर सही” कोड बनाता है, तो उससे मिलने वाले शुद्ध लाभ को पहचानकर उसे व्यावहारिक रूप से उपयोग करने की कोशिश की गई।
मुख्य उपयोग के मामले
-
ऑटो-कम्प्लीट (Autocomplete)
- बार-बार दोहराए जाने वाले coding कामों को ऑटो-कम्प्लीट से संभालकर productivity बढ़ती है
- खासकर FIM (Fill-In-the-Middle) मॉडल रोज़मर्रा के कामों में अनिवार्य हैं
-
सर्च का विकल्प (Search)
- खास प्रोग्रामिंग सवालों (जैसे CSS में button transparency सेट करना) का जवाब search engine से अधिक सटीक रूप में देता है
- LLM के जवाब गलत हो सकते हैं, लेकिन इस सीमा को स्वीकार करते हुए इसका उपयोग किया जाता है
-
संवाद-आधारित प्रोग्रामिंग (Chat-driven Programming)
- यह सबसे कठिन, लेकिन सबसे मूल्यवान क्षेत्र है।
- नई files बनाना, libraries खोजना जैसे शुरुआती कामों को अपने ऊपर ले लेता है।
- संवादात्मक प्रोग्रामिंग का लक्ष्य मौजूदा असुविधाओं को कम करना और LLM की क्षमताओं को अधिक user-friendly बनाना है
संवादात्मक प्रोग्रामिंग का मूल
-
संवाद का उपयोग क्यों करें?
- दिन बीतने के साथ ऊर्जा कम होने पर पहला draft देने में यह उपयोगी है
- शुरुआती draft को देखकर उसमें बदलाव करना, शुरू से लिखने की तुलना में अधिक प्रभावी है
-
LLM के साथ काम करने का तरीका
- स्पष्ट और संक्षिप्त task goal सेट करना
- कोड को पढ़ना, verify करना और सुधारना
- compiler errors का उपयोग करके जल्दी समस्या हल करना
-
प्रभावी tests लिखना
- LLM tests लिखने में उत्साही होता है और अधिक thorough test environment बना सकता है
- example-based tests के अलावा इसे fuzz test तक बढ़ाया जा सकता है
उदाहरण: fraction sampler
- लक्ष्य: Go भाषा में data stream के quartiles को sample करने वाला algorithm लिखना
- प्रक्रिया
- LLM के जरिए पहला draft तैयार करना
- compile errors ठीक करते हुए कोड को बेहतर बनाना
- test code को फिर से लिखकर अधिक पढ़ने योग्य structure बनाना
नए code structure की संभावनाएँ
-
छोटे packages, ज़्यादा tests
- छोटे packages code context को अधिक स्पष्ट बनाते हैं, इसलिए वे LLM और इंसानों दोनों के लिए अधिक उपयोगी हैं
- इससे स्वतंत्र tests और compilation की संभावना बढ़ती है
-
उदाहरण: API wrapper
- बड़े official library की जगह केवल ज़रूरी हिस्सों को लागू करने वाले पतले wrapper के उपयोग की सिफारिश की जाती है
- maintenance और learning cost कम होती है
आगे की दिशा: sketch.dev
- LLM के लिए Go IDE
- LLM-केंद्रित प्रोग्रामिंग environment प्रदान करता है
- automated test feedback, compiler error fixes, Go module integration आदि का समर्थन करता है
- इंसान और LLM के बीच सहयोग को मज़बूत करके अधिक productive environment प्रदान करता है
1 टिप्पणियां
Hacker News राय
लेखक पहले से ही विश्व-स्तरीय software engineer हैं, Google के पूर्व कर्मचारी और Tailscale के co-founder/CTO भी हैं। यह प्रभावशाली है कि LLMs उन्हें और अधिक productive बनाते हैं.
LLMs काम शुरू करने की शुरुआती energy को कम कर देते हैं.
LLMs का उपयोग करते समय इन्हें सिर्फ उन्हीं क्षेत्रों में इस्तेमाल करना चाहिए जिन्हें आप अच्छी तरह जानते हों.
LLMs में software development tool के रूप में संभावना है.
यह search engine इस्तेमाल करने जैसा है.
LLMs इस्तेमाल करने की कोई खास इच्छा महसूस नहीं होती.
जो लोग programmer नहीं हैं, उनके लिए LLMs बहुत मददगार हैं.
सरल applications लिखने में LLMs उपयोगी हैं.
शौकिया programming करने वालों के लिए LLMs मददगार हैं.
LLMs का उपयोग मुख्य रूप से autocomplete और search के लिए होता है.