Devin के साथ एक महीने पर कुछ विचार
(answer.ai)Devin क्या है
- मार्च 2024 में Founders Fund, Collison बंधु, Elad Gil सहित कई टेक इंडस्ट्री लीडर्स के समर्थन से 21 मिलियन डॉलर की Series A फंडिंग जुटाने वाली एक नई AI कंपनी सामने आई।
- कंपनी की टीम IOI gold medalists से बनी है, और उनका परिचय इस रूप में दिया गया कि वे जटिल programming समस्याओं को स्वयं हल करने की क्षमता रखते हैं।
- उनका प्रोडक्ट Devin इंसानी सहकर्मी की तरह बातचीत कर सकता है, और नई तकनीक सीखने, मौजूदा code को debug करने, पूरे application को deploy करने, AI model train करने आदि software engineering की पूरी प्रक्रिया को स्वायत्त रूप से संभाल सकता है, ऐसा दावा किया गया।
- जारी किए गए demo वीडियो में Devin ने अपने आप Upwork bounty हल की और PyTorch project को install व run किया।[1]
- कंपनी का दावा था कि SWE-bench के आधार पर यह वास्तविक GitHub issues में से लगभग 13.86% को पूरी तरह हल कर देता है, जो पिछले systems की तुलना में लगभग 3 गुना बेहतर performance है।
- शुरुआत में केवल चुने हुए users को access मिला, और SNS के जरिए यह उम्मीद फैल गई कि यह software development में क्रांति ला देगा।
- Answer.AI टीम अक्सर AI development tools का प्रयोग करती है, और उन्हें लगा कि Devin शायद अब तक के tools से कुछ अलग दिखाएगा।
- इसी वजह से टीम ने Devin को सीधे real-world environment में लागू करके कई tasks परखने और अपने अनुभव दर्ज करने का फैसला किया।
शुरुआती सफलता के मामले
- पहला task था Notion database की जानकारी को Google Sheets में लाना।
- Devin ने Notion और Google API documentation देखी, और Google Cloud Console में जरूरी credentials सेट करने के लिए क्रमवार मार्गदर्शन दिया।
- उसने सिर्फ API usage नहीं बताया, बल्कि असली menus और buttons कहाँ क्लिक करने हैं यह भी समझाया, जिससे झंझट वाले काम में काफी समय बचा।
- Devin द्वारा लिखा गया code कुछ लंबा-चौड़ा था, लेकिन सही तरह काम कर गया।
- इस अनुभव से यह झलक मिली कि AI “glue code” जैसे काम अपने ऊपर ले सकता है।
- टीम के एक अन्य सदस्य ने केवल मोबाइल फोन से Devin के साथ interact करते हुए बृहस्पति और शनि की पुरानी स्थितियों को ट्रैक करने वाला application भी बना लिया।
टेस्ट का विस्तार
- शुरुआती सफलता से उत्साहित होकर टीम ने Devin से documentation लिखवाने, या जब वे design work में लगे हों तब debugging करवाने जैसे asynchronous उपयोग भी आजमाए।
- लेकिन धीरे-धीरे यह सामने आया कि Devin देखने में आसान लगने वाले tasks में भी technical dead ends में फँस जाता है, या बेकार की जटिल code बना देता है।
- खासकर वह वास्तव में असंभव tasks भी बिना सोचे आजमाता रहा, जैसे Railway पर एक ही deployment में कई apps एक साथ चढ़ाना, और इस तरह बार-बार features को ‘hallucinate’ करता दिखा।
- समस्या सिर्फ असफलता नहीं थी, बल्कि यह भी थी कि असंभव समाधान आजमाने में बहुत समय बर्बाद हो जाता था।
समस्याओं पर गहराई से अवलोकन
- यह सवाल उठा कि कुछ tasks में Devin काफी सक्षम क्यों दिखता है, जबकि दूसरे tasks में वह क्यों विफल हो जाता है।
- एक महीने के उपयोग के दौरान टीम ने कुल 20 tasks आजमाए और उन्हें तीन श्रेणियों में बाँटा:
- (1) नया project बनाना
- (2) research work
- (3) मौजूदा project का विश्लेषण और संशोधन
- नतीजे में 20 में से 14 tasks विफल रहे, 3 सफल रहे (शुरुआती सफलताएँ शामिल), और 3 अनिर्णीत (Inconclusive) रहे।
- विफलता और सफलता को अलग करने वाला कोई स्पष्ट pattern नहीं दिखा; दिखने में समान tasks भी अनपेक्षित तरीकों से फेल हो जाते थे।
- विस्तृत उदाहरण लेख के अंत में appendix में दिए गए हैं।
1. नया project बनाना
- कंपनी के demo वीडियो और शुरुआती सफलताओं को देखकर लगा था कि नया project पूरी तरह बनाना Devin की ताकत होगी।
- लेकिन व्यवहार में उसने अक्सर जरूरत से ज्यादा जटिल code structure बना दिए, या साधारण web scraping भी हल नहीं कर पाया।
- उदाहरण के लिए Braintrust पर synthetic data upload करने वाला task इसलिए विफल हुआ क्योंकि Devin का code अत्यधिक जटिल था और errors से बाहर नहीं निकल पाया।
- Spiral.computer और AI note taker Circleback को integrate करने की कोशिश भी spaghetti जैसी जटिल code लौटाने के कारण छोड़नी पड़ी।
- Google Scholar से किसी खास author के latest 25 papers की जानकारी लाने वाला काम HTML parsing में अटक गया और ठीक से पूरा नहीं हो सका।
2. research work
- साधारण documentation lookup जैसे बुनियादी research tasks वह कुछ हद तक कर पाया।
- लेकिन अधिक जटिल समस्याओं में, जैसे timestamps को सटीक रखते हुए transcript का सार बनाना, वह विषय को ठीक से समझ नहीं पाया और केवल असंबंधित उदाहरण गिनाता रहा।
- DaisyUI का minimal theme बनाने का निर्देश भी व्यवहार में विफल रहा, क्योंकि उसने सिर्फ default theme colors का ही उपयोग कर दिया।
3. मौजूदा code का विश्लेषण और संशोधन
- मौजूदा code और context को समझकर maintenance करने वाले कामों में Devin की सीमाएँ ज्यादा स्पष्ट दिखीं।
- nbdev project पर काम करते समय, जहाँ सिर्फ notebook edit करना काफी था, वहाँ उसने अनावश्यक Python scripts जोड़ने जैसी अप्रभावी approach अपनाई।
- security review में भी उसने कभी ऐसी vulnerabilities बताईं जो थीं ही नहीं, और कभी असली बड़ी समस्याओं को ठीक से पहचान नहीं पाया।
- SSH key forwarding error के diagnosis में भी वह केवल script के अंदर ही उलझा रहा और इस संभावना पर विचार नहीं किया कि समस्या कहीं और हो सकती है।
- user input और database के बीच conflict check करने वाली feature लागू करते समय भी Devin के code को सुधारने में इतना समय गया कि अंत में उसे 90 मिनट में खुद बनाना अधिक तेज साबित हुआ।
टीम की समीक्षा
- एक महीने की गहन testing के बाद टीम के भीतर Devin को लेकर ये आकलन सामने आए:
- “छोटे और स्पष्ट रूप से परिभाषित tasks तो खुद करना ही ज्यादा तेज है, और बड़े tasks में Devin के फेल होने की संभावना इतनी ज्यादा है कि उसका उपयोग सीमित हो जाता है।” (Johno Whitaker)
- “शुरुआत में लगा कि थोड़ा-थोड़ा सुधारकर इसे कामयाब बनाया जा सकता है, लेकिन आखिर में ज्यादा हिस्से बदलने पड़े, और लगा कि शुरू से खुद करना ही बेहतर था।” (Isaac Flath)
- “यह AnswerAI के internal tools के साथ अच्छी तरह नहीं जुड़ पाया, और दिए गए documentation व examples का भी सही उपयोग नहीं कर पाया। इसके मुकाबले Cursor जैसे tools छोटे-छोटे steps में लगातार feedback देते हुए Devin से बेहतर साबित हुए।” (Hamel Husain)
- Devin की खासियत है कि वह बड़े steps को स्वायत्त रूप से आगे बढ़ाता है, लेकिन उसका नतीजा यह हुआ कि गलत दिशा सुधारने की मानवीय लागत काफी बढ़ गई।
- इसके विपरीत, developer-led workflow जिसमें AI सहायक की भूमिका निभाए, जैसे Circleback या Cursor, कहीं अधिक स्थिर पाया गया।
निष्कर्ष
- Devin के साथ काम करने का अनुभव इस बात की झलक देता है कि autonomous AI development tools किस तरह के भविष्य की ओर बढ़ना चाहते हैं।
- खासकर Slack-आधारित conversational UI और Docker container में environment को अपने आप सेट कर देना, user experience के लिहाज से प्रभावशाली था।
- लेकिन वास्तव में सुचारु रूप से काम करने वाले मामले 20 में सिर्फ 3 थे, और खासकर समान दिखने वाले tasks भी अक्सर जटिल तरीके से विफल हो जाते थे।
- “स्वायत्त” होने की वजह से अगर task गलत दिशा में चला जाए तो वह लंबे समय तक पूरी तरह गलत मार्ग पर चलता रह सकता है।
- अब तक के अनुभव के आधार पर, SNS पर दिखने वाला उत्साह और ऊँचा valuation अक्सर वास्तविक productivity या completion quality में नहीं बदलता।
- Answer.AI टीम आगे भी यही मानती है कि development process में AI का सहायक के रूप में इस्तेमाल सबसे व्यावहारिक रास्ता है।
परिशिष्ट: Devin को सौंपे गए tasks की सूची
- नीचे Devin को दिए गए projects और उनके परिणाम का संक्षिप्त सार है।
- इन्हें चार श्रेणियों में बाँटा गया:
- (1) नया project बनाना
- (2) research
- (3) मौजूदा code का विश्लेषण
- (4) मौजूदा project में संशोधन
1. नया project बनाना
-
Planet Tracker
- Status: Success
- Description: बृहस्पति और शनि की पुरानी स्थितियों से जुड़े दावों की जाँच करने वाला app
- Reflection: Slack के जरिए केवल मोबाइल से Devin से बातचीत की गई, और Devin ने अधिकांश काम स्वायत्त रूप से करके इसे पूरा कर दिया।
-
Migrating data from Notion into Google Sheets
- Status: Success
- Description: Notion documents को अपने आप Google Sheets में लाना
- Reflection: Google Cloud Console setup तक Devin ने चरणबद्ध मार्गदर्शन दिया, जिससे पहली बार सचमुच “पूरी तरह नया अनुभव” लगा।
-
Multi-app deploys on Railway
- Status: Inconclusive
- Description: एक ही Railway deployment में कई apps चढ़ाकर एक ही DB share कराना
- Reflection: वास्तव में Railway इस तरीके को support नहीं करता था, इसलिए यह लगभग असंभव था। Devin कोशिश करता रहा और hallucinated approach पर चलता रहा।
-
Generate synthetic data and upload it to Braintrust
- Status: Failure
- Description: Braintrust platform पर डालने के लिए synthetic data generate करना
- Reflection: code बहुत जटिल था और errors हल नहीं हो रहे थे, इसलिए Cursor के साथ step-by-step implementation करनी पड़ी।
-
Create an integration between Circleback and Spiral.computer
- Status: Failure
- Description: दोनों की documentation दी गई थी, लेकिन Devin ने अत्यधिक जटिल spaghetti code बना दी, इसलिए यह प्रयास छोड़ दिया गया।
-
Web scraping Papers by Following Google Scholar Links
- Status: Failure
- Description: किसी खास author के latest 25 papers की जानकारी लाना और paid papers को छोड़ना
- Reflection: HTML parsing में अनंत loop जैसी स्थिति बन गई और task रुक गया।
-
Create minimal HTMX bulk upload example app
- Status: Failure
- Description: HTMX example को FastHTML के लिए सरल रूप में दोबारा बनाना
- Reflection: example code काम नहीं कर रहा था और उस पर अनावश्यक चीजें जोड़ दी गईं, जिससे और भ्रम पैदा हुआ।
-
Create a DaisyUI Themes to match FrankenUI Theming
- Status: Failure
- Description: DaisyUI और FrankenUI themes को एक जैसा बनाकर इस्तेमाल करना
- Reflection: mapping ठीक से नहीं हुई, और बहुत विशाल code जुड़ गया, जिससे व्यवहारिक उपयोग मुश्किल हो गया।
2. Perform Research
-
Research How to make a discord bot
- Status: Success
- Description: Python में Discord bot बनाकर messages का सार निकालने और email भेजने का तरीका खोजना
- Reflection: Devin ने बीच में Markdown file में plan का सार दिया; अंतिम code पूर्ण नहीं था, लेकिन concepts समझने में मददगार रहा।
-
Research on Transcript Summarization With Accurate Timestamps
- Status: Failure
- Description: timestamps बनाए रखते हुए summary तैयार करने का तरीका खोजना
- Reflection: Devin केवल संबंधित topics की सूची देता रहा, लेकिन वास्तविक समाधान दिशा नहीं दे पाया।
-
Create a minimal DaisyUI theme as an example
- Status: Failure
- Description: DaisyUI theme का एक minimal example माँगा गया
- Reflection: वास्तविक theme लागू नहीं हुई और default theme colors ही इस्तेमाल हुए।
3. Analyze Existing Code
-
Performing a security review of a code base
- Status: Inconclusive
- Description: 700 lines से कम वाले GitHub repo की security vulnerabilities के नज़रिए से समीक्षा
- Reflection: कुछ बातें सही थीं, लेकिन उसने ऐसी vulnerabilities भी बताईं जो वास्तव में थीं ही नहीं, यानी security issues को लेकर over-reporting हुई।
-
Review blog posts and make a pull request with improvements
- Status: Failure
- Description: blog posts की समीक्षा करके Quarto-based source के अनुरूप PR बनाना
- Reflection: Quarto की संरचना सीख न पाने की वजह से metadata और front matter बिगड़ गया और task फेल हुआ।
-
Review an application and identify potential areas of improvement
- Status: Failure
- Description: पहले बनाए गए timekeeping app के लिए व्यापक improvements सुझाने को कहा गया
- Reflection: अधिकांश सुझाव व्यवहारिक रूप से उपयोगी नहीं थे।
-
Debug why ssh key forwarding is not working in a setup script
- Status: Inconclusive
- Description: script से server setup के दौरान SSH key forwarding काम न करने की समस्या
- Reflection: Devin केवल script की ही जाँच करता रहा और यह नहीं समझ पाया कि समस्या का कारण कहीं और भी हो सकता है।
4. Modify An Existing Project
-
Making changes to a nbdev project
- Status: Failure
- Description: FastHTML + nbdev से बने time tracking app में Apple Shortcuts के लिए API जोड़ना
- Reflection: Devin ने notebooks को सीधे edit करने के बजाय Python scripts से notebook बदलने की कोशिश की, जिससे complexity बढ़ गई।
-
Migration of Python Project To nbdev
- Status: Failure
- Description: मौजूदा Python project को nbdev में migrate करना
- Reflection: बुनियादी nbdev setup भी सही तरह नहीं बन पाया और project उलझ गया।
-
Integrate Styling Package Into FastHTML
- Status: Failure
- Description: MonsterUI को nbdev-आधारित project में जोड़ना
- Reflection: Devin nbdev repo structure को ठीक से समझ नहीं पाया, इसलिए यह विफल रहा।
-
Add feature to check for conflicts between user input and database
- Status: Failure
- Description: मौजूदा app में ऐसा UI जोड़ना जो user input और DB values के टकराव पर चेतावनी दे
- Reflection: Devin के प्रयास को आखिर तक सुधारने में बहुत समय लगा; अंत में इसे खुद 90 मिनट में बनाना कहीं तेज रहा।
-
Generate LLMs context file with the contents of every fasthtml gallery example
- Status: Failure
- Description: सभी fasthtml gallery examples की सामग्री से LLMs text file बनाना
- Reflection: Devin ने हर example के लिए अलग Markdown file बनाई, जो दिलचस्प था, लेकिन वास्तविक writing style documentation से मेल नहीं खाती थी और उसने अनावश्यक dependencies भी जोड़ दीं।
1 टिप्पणियां
Hacker News राय
OpenHands के निर्माता ने ज़ोर देकर कहा कि AI अभी उस स्तर तक नहीं पहुँचा है जहाँ वह software engineer की जगह ले सके। AI द्वारा लिखा गया कोड junior engineer के कोड की तरह गहन review मांगता है। हालांकि, अगर AI का सही इस्तेमाल किया जाए तो productivity काफ़ी बढ़ सकती है। OpenHands codebase का लगभग 20% AI ने लिखा है या उसके साथ मिलकर लिखा गया है। AI merge conflict सुलझाने या linter errors ठीक करने जैसे सरल कामों में उपयोगी है। यह भी कहा गया कि AI हर हफ़्ते बेहतर हो रहा है और प्रतिस्पर्धा बहुत तेज़ है
जो उपयोगकर्ता रोज़ AI coding tools इस्तेमाल करते हैं, उनका मानना है कि Devin जैसे agent approach अक्सर ज़रूरत से ज़्यादा काम करने की कोशिश करते हैं। AI coding tools को developers की जगह लेने के बजाय developers के tools के रूप में स्थापित होना चाहिए। Github Copilot दोहराव वाले कोड को पूरा करने में उपयोगी है, और Aider उच्च-स्तरीय editing tasks संभाल सकता है। लेकिन यह अभी भी परफेक्ट नहीं है और समस्या हल करते समय अनावश्यक बदलाव कर सकता है
Devin जैसे AI agents की समस्या यह है कि उनकी बुद्धिमत्ता एक तय स्तर पर अटकी हुई लगती है। कभी-कभी वे ऐसे काम कुछ मिनटों में कर देते हैं जिनमें mid-level या senior engineer को कुछ घंटे लगते, लेकिन वे साधारण गलतियाँ भी कर बैठते हैं। Junior engineer की एक अहम खूबी यह होती है कि उसे मार्गदर्शन दिया जा सकता है, लेकिन AI agents को उसी तरह guide नहीं किया जा सकता, और यही उनकी सीमा है
इस दावे को लेकर संदेह है कि AI मानव engineers की जगह ले सकता है। AI छोटे और दोहराव वाले कामों के लिए उपयुक्त है, लेकिन infrastructure management या app deployment जैसे जटिल कामों के लिए नहीं। कहा गया कि जब तक इसे वास्तव में इंसानों की जगह लेते हुए नहीं देखा जाएगा, तब तक इस दावे पर भरोसा नहीं किया जाएगा
AI agents को ज़रूरत पड़ने पर इंसानी input माँगना आना चाहिए, लेकिन Devin "soft stop" जैसी स्थिति में यह ठीक से नहीं कर पाता। एक मानव developer कुछ घंटों बाद मदद माँग लेगा, लेकिन AI एक infinite loop में फँस सकता है
AI image generation की तरह AI coding tools भी शुरुआती दौर में चौंकाने वाले नतीजे दिखाते हैं, लेकिन उनमें अभी भी बहुत सी गलतियाँ हैं। फिर भी, आने वाले कुछ वर्षों में हैरान कर देने वाली प्रगति की उम्मीद है। Midjourney जैसे tools उम्मीद से अलग नतीजे दे सकते हैं, और ऐसे में users के लिए तेज़ी से iterate कर पाने की क्षमता ज़रूरी होगी
Devin के उपयोग अनुभवों को देखें तो मूल्यांकन यही है कि agent उम्मीदों पर खरा नहीं उतरता। Agent बनाना आसान हो सकता है, लेकिन उसे सचमुच उपयोगी बनाना कठिन है। Devin की सीमाएँ agent systems की प्रगति को लेकर चिंता पैदा करती हैं
Devin ने बहुत कुछ करने की कोशिश की, जबकि सीमित क्षमता के भीतर code artifacts बनाना ज़्यादा मूल्यवान हो सकता है। Development loop के कुछ खास हिस्सों पर ध्यान केंद्रित करना महत्वपूर्ण है। Factory AI जैसी कंपनियाँ यही approach अपना रही हैं और अपने product के लिए रुचि भी पा रही हैं
Devin code formatting और local test setup को समझने में प्रभावशाली है, लेकिन यह अनावश्यक बदलाव जोड़कर दूसरी चीज़ें बिगाड़ सकता है। इन बदलावों को आसानी से वापस नहीं लिया जा सकता, इसलिए अतिरिक्त सफ़ाई की ज़रूरत पड़ती है। Devin ने agent workflow की संभावनाएँ ज़रूर दिखाईं, लेकिन यह समय नहीं बचाता, इसलिए इसकी सिफ़ारिश नहीं की जाती
Cursor का बहुत उपयोग करने वाले एक user को लगता है कि system को एक खास दिशा में मजबूर करना पड़ता है। कभी-कभी LLM उपयोगी code snippets देता है, लेकिन अगर वह गलत दिशा में जाने लगे तो उसके सुझाव रोककर उसे दूसरी दिशा में मोड़ना पड़ता है। Cursor refactoring में खास तौर पर उपयोगी है और यह काफी typing और समय बचाता है.