Comparing ai coding assistants: aider, cursor, and windsurf tested in a one-prompt challenge
इस ट्यूटोरियल में, हम तीन लोकप्रिय एआई कोडिंग सहायक - aider, cursor, और windsurf की क्षमताओं की गहनता से खोज कर रहे हैं - यह समझने के लिए कि वे केवल एक विस्तृत प्रॉम्पट का उपयोग करके एक पुनर्प्राप्ति-संपर्कित पीढ़ी (RAG) एप्लिकेशन को कितनी कुशलता से बना सकते हैं। इस प्रयोग को करके, हमारा लक्ष्य उपकरणों की ताकत, वास्तविक-विश्व प्रयोज्यता, और आधुनिक सॉफ़्टवेयर विकास कार्यप्रवाहों में एआई-संचालित कोडिंग सहायकों की भूमिका का मूल्यांकन करना है।
Introduction to the AI coding assistant experiment
यह चुनौती एक सामान्य ऐप बनाने का अभ्यास नहीं है; यह इन उपकरणों को केवल एक संक्षिप्त प्रॉम्पट का उपयोग करके आधुनिक RAG ऐप जटिलताओं को प्रबंधित करने के लिए मजबूर करती है, जबकि मौलिकता आवश्यकताओं और विशिष्ट सीमाओं का पालन करने की आवश्यकता है, और नवीनतम LangChain अपडेट के बारीकियों का ध्यान रखती है। आइए देखें कि aider, cursor, और windsurf ने इस कार्य को कैसे संभाला।
What is retrieval-augmented generation (RAG), and why this test?
RAG का संदर्भ पुनर्प्राप्त जानकारी (जैसे, एक डेटाबेस या फ़ाइल भंडारण से) को एक बड़े भाषा मॉडल की तर्कशीलता के साथ मिलाकर उपयोगकर्ता की पूछताछ का बुद्धिमानी से उत्तर देने के लिए किया जाता है। इसके लिए पुनर्प्राप्तकर्ताओं, वेक्टर स्टोर्स और बड़े भाषा मॉडलों के बीच सहज इंटरएक्शन को लागू करने के लिए मजबूत बैकएंड इंजीनियरिंग की आवश्यकता होती है। जबकि RAG ऐप्स में सरल उपयोगकर्ता इंटरफेस (UI) होते हैं, पर्दे के पीछे के संचालन एआई कोडिंग सहायकों के लिए एक चुनौतीपूर्ण परीक्षण प्रस्तुत करते हैं क्योंकि इसमें मौलिक डिजाइन, सटीक निर्भरता सेटअप, और विधिवत डिबगिंग की आवश्यकता होती है।
हमने इस परीक्षण को सहायक उपकरणों का मूल्यांकन करने के लिए चुना है जो सॉफ़्टवेयर कार्यप्रवाहों में AI-संचालित परिवर्तनों के साथ मेल खाता है। जबकि ऐप बड़ा उत्पादन प्रणाली की तुलना में छोटा है, इसकी बारीकियाँ ऐसी बाधाएं उत्पन्न करती हैं जिनका समाधान केवल कुशल डेवलपर्स या स्मार्ट सहायकों के पास होता है।
The experiment setup and methodology
प्रत्येक उपकरण के लिए अनुसरण की गई प्रक्रिया समान थी, जो मूल्यांकन में निष्पक्षता सुनिश्चित करती है:
- आवश्यकताओं को मिलाकर एक विस्तृत प्रॉम्पट तैयार किया गया, जिसमें मौलिक फ़ाइल संरचनाएँ और प्रौद्योगिकी स्टैक सीमाएँ शामिल थीं।
- RAG एप्लिकेशन बनाने के लिए नवीनतम LangChain दस्तावेज़ संदर्भ के रूप में प्रत्येक उपकरण को प्रदान किया गया।
- प्रत्येक एआई उपकरण को प्रॉम्पट की व्याख्या करके और आवश्यकता के अनुसार दस्तावेज़ का संदर्भ लेते हुए एक पूरी तरह कार्यात्मक ऐप बनाने का कार्य सौंपा गया।
- त्रुटियों पर नज़र रखी गई, और ऐसे में न्यूनतम मार्गदर्शन प्रदान किया गया ताकि यह देखा जा सके कि सहायक उपकरण कितनी प्रभावशीलता से पुनरावृत्त सुधारों के लिए अनुकूलित होते हैं।
Aider: the guided coder
Initial setup and execution
Aider ने मजबूत शुरुआत की। प्री-क्रिएटेड फ़ोल्डर संरचना में VS Code में प्रॉम्पट और LangChain दस्तावेज़ शामिल होने के कारण, Aider ने सभी आवश्यक घटक जल्दी से उत्पन्न किए: requirements.txt
, app.py
, और अतिरिक्त आवश्यक फ़ाइलें जैसे कि document_loader.py
, vector_store.py
, और rag_chain.py
।
Aider generating required files
एआई ने अनुरोध के अनुसार अपने आउटपुट को मौलिक बना दिया, जिसमें:
- दस्तावेज़ लोडर: वेब-आधारित सामग्री निष्कर्षण का प्रबंधन करता है।
- वेक्टर स्टोर: स्थानीय ChromaDB डेटाबेस में एम्बेडिंग का प्रबंधन करता है।
- RAG चेन: LLM-संचालित प्रश्न और उत्तर के लिए सुविधाएँ प्रदान करता है।
- स्ट्रीमलिट app.py: एक सरल UI इंटरफ़ेस के माध्यम से उपयोगकर्ता इनपुट को संसाधित करता है।
Handling constraints and debugging
जब त्रुटियाँ आईं (जैसे डेटाबेस प्रबंधन मुद्दे या खोए हुए पैरामीटर का प्रबंधन), Aider ने उपयोगकर्ता द्वारा प्रदान की गई त्रुटियों की विस्तृत स्क्रीनशॉट का उपयोग करके उन्हें संबोधित करने की क्षमता दिखाई। Aider की एक महत्वपूर्ण ताकत केवल कोड को डिबग करने की क्षमता नहीं, बल्कि समाधान को ऐसे भाषाई रूप में स्पष्ट करने की क्षमता है जो किसी भी डेवलपर के लिए पहुँच योग्य हो।
उदाहरण के लिए, इसने नए संशोधित APIs द्वारा परिवर्तित डेटाबेस कॉन्फ़िगरेशन की निरंतर विशेषताओं के साथ समस्याओं की पहचान की और प्रभावशाली ढंग से सुधार लागू किए।
Limitations
कभी-कभार, Aider के प्रारंभिक आउटपुट को अतिरिक्त फ़ाइन-ट्यूनिंग की आवश्यकता होती थी, जिसमें उपयोगकर्ताओं को उपकरण के बाहर कमांड निष्पादित करना होता था, जैसे कि आभासी वातावरण सेट करना और विशेष निर्भरता जैसे ChromaDB में अपडेट को मैन्युअल रूप से प्रबंधित करना।
Cursor: a competitive contender
Cursor का कंपोज़र मोड अगला था, और यह एक सामान्य पैटर्न का पालन कर रहा था। एकल प्रॉम्पट और LangChain दस्तावेज़ का उपयोग करते हुए, Cursor ने फ़ाइलों को पढ़ा और अनुप्रयोग आउटपुट उत्पन्न करने के लिए उनका विश्लेषण किया, जो Aider के समान था।
Cursor's modular app generation explained
Aider की तरह, Cursor ने मौलिक फ़ाइलें बनाने पर ध्यान केंद्रित किया:
- इनपुट हैंडलिंग के लिए लोडर।
- चोमाDB के माध्यम से एम्बेडिंग भंडारण के लिए वेक्टर डेटाबेस।
- LangChain और LLModels को एकीकृत करने वाली श्रृंखलाएँ।
Debugging interactions
Beautiful Soup के पार्सर पैरामीटर्स से संबंधित त्रुटियों ने Cursor की क्षमताओं को दिखाया कि यह न्यूनतम उपयोगकर्ता इनपुट के साथ अपने कोड को बिना किसी बाधा के समायोजित करता है। उपयोगकर्ता डिबगिंग के लिए विस्तृत स्क्रीनशॉट प्रदान कर सकते थे, और Cursor ने संरचना बनाए रखते हुए प्रभावित किए गए खंडों को जल्दी से फिर से लिखा।
इसने पैकेजिंग पर भी मूल्यवान सुझाव दिए, यह सुनिश्चित करते हुए कि उपयोगकर्ता न्यूनतम समस्या के साथ pip-install-ready वातावरण बना सके।
Challenges identified
कभी-कभी Cursor ने कुछ कॉन्फ़िगरेशन को अधिक सरलता से प्रस्तुत किया, डिफ़ॉल्ट पैरामीटर के बारे में धारणाएँ बनाते हुए जो LangChain के नवीनतम अपडेट के साथ टकरा गईं। विशेष रूप से, इसने महत्वपूर्ण फ़ाइलों को डमी कुंजियों के साथ ओवरराइट किया (जैसे, OpenAI की .env
कुंजियाँ), जिससे छोटी असुविधाएँ उत्पन्न हुईं जिन्हें एक डेवलपर को मैन्युअल रूप से संबोधित करना पड़ा।
Windsurf: the new player in AI coding
अंत में, Windsurf ने चुनौती को संभालने के लिए कदम बढ़ाया। जबकि यह Cursor या Aider की तुलना में नया था, इस उपकरण ने अनूठी सुविधाएँ प्रदान कीं। इसने LangChain दस्तावेज़ को लोड करने और कुशलता से मौलिक घटकों को उत्पन्न करने के लिए इसी तरह शुरू किया।
Windsurf initializing the RAG app
हालांकि, Windsurf की दस्तावेज़ीकरण एकीकरण और जटिल आदेशों को प्रासंगिक बनाने की क्षमता थोड़ी अधिक चिकनी लग रही थी, विशेषकर व्यावस्थित सीमाओं के लिए संक्षिप्त सारांश उत्पन्न करते समय।
Debugging approach
Windsurf ने अपने प्रतिस्पर्धियों की तुलना में कम मैन्युअल स्क्रीनशॉट की आवश्यकता की, जो बेहतर संदर्भ अपरिवर्तिता और आत्म-सुधार तंत्र का सुझाव देते हैं। फिर भी, अन्य उपकरणों की तरह, इसे ChromaDB कोडबेस में समान निरंतर विशेषता की त्रुटियों का सामना करना पड़ा - संभवतः यह कमी निचले स्तर पर एआई मॉडल के प्रशिक्षण डेटा से उत्पन्न होती है न कि उपकरण से।
परीक्षण के दौरान एक कमी यह थी कि Cursor या Aider में पाई जाने वाली इनलाइन डिबगिंग यूआई सुविधाओं की कमी थी। इसके बजाय, Windsurf को त्रुटियों और संदेशों को मैन्युअल रूप से अपनी इंटरफ़ेस में कॉपी करने की आवश्यकता थी, जिससे पुनरावृत्ति कम तरल हो गई।
Comparison: strengths and shortcomings
Strengths
- Aider: सर्वोत्तम डिबगिंग क्षमताएँ और मौलिक सेटअप, सुधार के दौरान सटीक सुझाव।
- Cursor: तेज़ और प्रतिक्रियाशील कोड उत्पन्न करना, पुनरुत्पादन और निर्भरता प्रबंधन के लिए बहुपरकार उपकरण।
- Windsurf: बेहतरीन संदर्भ विश्लेषण, कम AI हस्तक्षेप चक्र, और संक्षिप्त मौलिक जनन कार्यों के लिए सबसे अच्छा।
Debugging challenges across tools
Weaknesses
- Aider: मैन्युअल टर्मिनल इनपुट पर अत्यधिक निर्भरता से सुविधा में थोड़ा कमी आई।
- Cursor: .env या संवेदनशील कॉन्फ़िगरेशन विवरणों को ओवरराइट करने की प्रवृत्ति; नए API पैरामीटरकरण के साथ संघर्ष।
- Windsurf: प्रतिस्पर्धियों द्वारा पेश की गई जटिल डिबगिंग यूआई सुविधाओं की कमी और मैन्युअल टेक्स्ट-आधारित त्रुटि हस्तक्षेपों की आवश्यकता।
Final verdict and what we learned
जबकि कोई भी पूर्ण नहीं था, एआई कोडिंग सहायकों की प्रगति निराधार नहीं है। ऐसे कार्य जो डेवलपर की सप्ताहों की मेहनत की आवश्यकता होती है, इन उपकरणों का उपयोग करके महत्वपूर्ण रूप से त्वरित किए जा सकते हैं, बशर्ते उपयोगकर्ता छोटे पुनरावृत्त सुधारों के प्रति अनुकूल रहें। सहायकों के बीच चयन उपयोगकर्ता की प्राथमिकताओं पर निर्भर करता है (जैसे, हैंड्स-ऑफ डिबगिंग बनाम प्रासंगिक विश्लेषण की गहराई)।
Final comparison of the completed RAG apps
प्रत्येक सहायक ने एक RAG ऐप बनाने में सफलता पाई है जिसने स्ट्रीमलिट यूआई, दस्तावेज़ लोडर, और वेक्टर स्टोर जैसी मौलिक संरचनाओं का संयोजन किया है। जबकि कोई भी उपकरण "सर्वोत्तम" के रूप में नहीं खड़ा था, एआई-समर्थित कोडिंग की उच्च अनुकूलनशीलता आज डेवलपर्स के लिए स्पष्ट विजेता है।
Conclusion: crafting the future with ai-assisted coding
एआई कोडिंग सहायकों जैसे aider, cursor, और windsurf अब नवाचार नहीं समझे जाते; वे सॉफ़्टवेयर विकास पाइपलाइनों में आवश्यक उपकरण बनने लगे हैं। ये प्रयोग उनके पारिभाषिक प्रभाव को प्रदर्शित करते हैं: तेज़ ऐप प्रोटोटाइपिंग, वास्तविक-समय डिबगिंग, और मौलिक अमूर्तताएँ - सभी न्यूनतम इनपुट के साथ।
यदि आप और अधिक खोजने या एआई के साथ कोडिंग के बारे में विचार साझा करने के लिए उत्साहित हैं, तो विचार करें स्कूल कम्युनिटी में शामिल होने का, चर्चा करने, विचारों का आदान-प्रदान करने, और सीखने के लिए! चलो, हम मिलकर भविष्य का कोड बनाते हैं - एआई के नेतृत्व में।