Emacs-copilot: Emacs के लिए बड़े भाषा मॉडल का कोड पूर्णता
Emacs उपयोगकर्ता एक नए “emacs-copilot” प्लगइन पर प्रतिक्रिया दे रहे हैं, जो Mozilla के llamafile/llama.cpp स्टैक के माध्यम से स्थानीय रूप से चलने वाले बड़े भाषा मॉडलों का उपयोग करके एडिटर में GitHub Copilot‑शैली की कोड पूर्णता लाता है। टिप्पणीकार गोपनीयता, नियंत्रण और प्रदर्शन के लिए सेल्फ-होस्टेड मॉडलों के लाभों की तुलना क्लाउड APIs से करते हैं, और अनुरोध-पर बनाम लगातार पुश की जाने वाली पूर्णताओं जैसी इंटरैक्शन शैलियों पर बहस करते हैं। यह परियोजना मौजूदा Emacs Copilot क्लाइंट्स के साथ नामकरण टकराव, “Copilot” पर संभावित Microsoft ट्रेडमार्क मुद्दों, और निष्पादन योग्य मॉडल बंडलों बनाम केवल वज़न वाली फ़ाइलों के सुरक्षा मॉडल को लेकर चिंताएँ भी जन्म देती है.
नामकरण, ट्रेडमार्क और भ्रम
- पैकेज का नाम “copilot” भ्रमित करने वाला है क्योंकि Emacs में पहले से ही लगभग इसी नाम का एक GitHub Copilot क्लाइंट मौजूद है।
- कई टिप्पणियाँ इस पर चर्चा करती हैं कि क्या “Copilot” Microsoft का ट्रेडमार्क है या हो सकता है, और यह सामान्य उपयोग के साथ कैसे मेल खाता है।
- कुछ लोगों का तर्क है कि जब तक उपयोगकर्ताओं को भ्रमित करने या ब्रांड-भ्रम से लाभ कमाने का इरादा नहीं है, तब तक यह ठीक है; अन्य लोग किसी भी स्थिति में कानूनी दबाव की आशंका जताते हैं।
आर्किटेक्चर, llamafile, और प्रदर्शन
- पैकेज स्थानीय मॉडल चलाने के लिए llamafile (एक “वास्तव में पोर्टेबल एक्ज़िक्यूटेबल” के अंदर llama.cpp) का उपयोग करता है।
- mmap-आधारित लोडिंग हर बार मॉडल को पूरी तरह से फिर से लोड करने से बचाती है; किसी फ़ाइल पर पहली पूर्णता धीमी होती है, और उसके बाद की पूर्णताएँ फ़ाइल के साथ मौजूद कैश की बदौलत बहुत तेज़ होती हैं।
- बड़े मॉडल (जैसे 34B) उपयोग किए जा सकते हैं, लेकिन धीमे हैं; WizardCoder 13B या Phi-2 जैसे छोटे क्वांटाइज़्ड मॉडल मध्यम-श्रेणी की मशीनों पर स्वीकार्य रूप से चलते हैं।
- llamafile को अपग्रेड करने के लिए वज़न (weights) को अनिवार्य रूप से फिर से डाउनलोड करना ज़रूरी नहीं है; उपयोगकर्ता GGUF वज़न निकालकर उन्हें नए बाइनरी में फिर से पैक कर सकते हैं या
-mके साथ किसी बाहरी वज़न पर एक सामान्य llamafile इंगित कर सकते हैं।
स्थानीय बनाम रिमोट / सेल्फ-होस्टेड बनाम क्लाउड
- OpenAI/Microsoft को कोड भेजने से बचने और नियंत्रण बनाए रखने के लिए सेल्फ-होस्टेड LLMs के प्रति काफी उत्साह है।
- कुछ लोग LAN सर्वरों पर या SSH के माध्यम से मॉडल चलाना चाहते हैं;
call-processके साथsshऔर llamafile के HTTP APIs का उपयोग करने वाले उदाहरणों पर चर्चा होती है। - अन्य लोग नोट करते हैं कि ollama और llama.cpp server जैसे मौजूदा उपकरण पहले से ही स्ट्रीमिंग के साथ OpenAI-शैली के endpoints प्रदान करते हैं।
UX: अनुरोध-पर बनाम इनलाइन पूर्णताएँ
- कुछ उपयोगकर्ता GitHub Copilot शैली पसंद करते हैं: स्वतः दिखाई देने वाले धूसर इनलाइन सुझाव।
- अन्य “push” पूर्णताओं को बहुत नापसंद करते हैं, उन्हें ध्यान भटकाने वाला मानते हैं; वे स्पष्ट “जब मैं पूछूँ तब सोचो” इंटरैक्शन और स्ट्रीमिंग को बाधित करने की क्षमता पसंद करते हैं।
- इस बात पर सहमति है कि push/pull मोड के बीच कॉन्फ़िगर करने की क्षमता आदर्श होगी।
इकोसिस्टम और विकल्प
- कई Emacs LLM पैकेजों का उल्लेख किया गया है: gptel, ellama, chatgpt-संबंधित मोड, llm.el, org‑integrated टूल्स, और एक GitHub Copilot क्लाइंट।
- Vim/Neovim के लिए, उपयोगकर्ता gp.nvim, gen.nvim, और कस्टम कमांड्स का उल्लेख करते हैं; कुछ प्लगइन्स को स्थानीय (ollama) और रिमोट मॉडल मिलाने के लिए fork करते हैं।
सुरक्षा और भरोसा
- कुछ लोग निष्पादन योग्य llamafile बनाम “डंब” model-weight फ़ाइलों को लेकर सतर्क हैं, और असुरक्षित pickle फ़ॉर्मैट्स के साथ समानताएँ खींचते हैं।
- अन्य लोग जवाब देते हैं कि llamafile के पीछे एक प्रतिष्ठित संगठन है और इसे बाहरी GGUF वज़न के साथ भी इस्तेमाल किया जा सकता है; threat models अलग-अलग होते हैं।
सेटअप समस्याएँ और प्लेटफ़ॉर्म
- macOS और Asahi Linux पर कई उपयोगकर्ताओं को Emacs द्वारा llamafile लॉन्च करते समय
vfork: Exec format errorमिला। - उपायों में “ape” interpreter का उपयोग, llamafile को “assimilate” से native binaries में बदलना, या Cosmo-लिंक्ड Emacs चलाना शामिल है।
LLM की उपयोगिता पर बहस
- कुछ लोग उत्साहित हैं, खासकर Lisp और boilerplate-भरे कामों के लिए (जैसे आधुनिक React)।
- अन्य लोग तर्क देते हैं कि उच्च-गुणवत्ता वाले production code के लिए LLM आउटपुट की समीक्षा और सत्यापन उत्पादकता लाभों को निष्प्रभावी कर देता है, और डेवलपर्स के ज़िम्मेदारी टालने (“मॉडल ने लिखा था”) को लेकर चिंतित हैं।