शोध पत्र · arXiv 2407.16741
OpenHands: जनरलिस्ट एजेंट्स के रूप में AI सॉफ्टवेयर डेवलपर्स के लिए एक ओपन प्लेटफॉर्म
OpenHands: An Open Platform for AI Software Developers as Generalist Agents
प्रकाशित cs.SEcs.AIcs.CL arXivPDF
तीन पंक्तियों में सारांश
- 🎯 विविध कोड और वेब कार्यों में AI सॉफ्टवेयर एजेंट्स के निर्माण, रखरखाव और सुरक्षित मूल्यांकन के लिए मानकीकृत सैंडबॉक्स, टूल्स और पुनरुत्पादनीय बेंचमार्क की आवश्यकता होती है।
- 🔧 OpenHands एक इवेंट स्ट्रीम आर्किटेक्चर को Docker सैंडबॉक्स, एक एक्सटेंसिबल AgentSkills लाइब्रेरी, BrowserGym-आधारित नेविगेशन, मल्टी-एजेंट डेलिगेशन और मॉक किए गए LLMs के साथ इंटीग्रेशन टेस्टिंग के साथ जोड़ता है।
- 📈 बिना किसी बेंचमार्क-विशिष्ट प्रॉम्प्ट ट्यूनिंग के Claude 3.5 Sonnet का उपयोग करते हुए, CodeActAgent ने SWE-Bench Lite पर 26.0% रिज़ॉल्व दर, WebArena पर 15.3% और GPQA Diamond पर 52.0% दर प्राप्त की।
सार
सॉफ्टवेयर सबसे शक्तिशाली उपकरणों में से एक है जो हम इंसानों के पास उपलब्ध है; यह एक कुशल प्रोग्रामर को जटिल और गहन तरीकों से दुनिया के साथ इंटरैक्ट करने की अनुमति देता है। इसके साथ ही, लार्ज लैंग्वेज मॉडल्स (LLMs) में सुधार के कारण, ऐसे AI एजेंट्स का भी तेजी से विकास हुआ है जो अपने परिवेश के साथ इंटरैक्ट करते हैं और उसमें बदलाव लाते हैं। इस शोध-पत्र में, हम OpenHands (पूर्व नाम OpenDevin) प्रस्तुत करते हैं, जो शक्तिशाली और लचीले AI एजेंट्स के विकास के लिए एक प्लेटफॉर्म है जो मानवीय डेवलपर के समान ही दुनिया से इंटरैक्ट करते हैं: कोड लिखकर, कमांड लाइन के साथ इंटरैक्ट करके और वेब ब्राउज़ करके। हम वर्णन करते हैं कि कैसे यह प्लेटफॉर्म नए एजेंट्स के कार्यान्वयन, कोड निष्पादन के लिए सैंडबॉक्स्ड परिवेशों के साथ सुरक्षित इंटरैक्शन, कई एजेंट्स के बीच समन्वय और मूल्यांकन बेंचमार्क के समावेश की अनुमति देता है। वर्तमान में शामिल बेंचमार्क के आधार पर, हम 15 चुनौतीपूर्ण कार्यों पर एजेंट्स का मूल्यांकन करते हैं, जिनमें सॉफ्टवेयर इंजीनियरिंग (उदा., SWE-BENCH) और वेब ब्राउज़िंग (उदा., WEBARENA) शामिल हैं। अनुमति देने वाले MIT लाइसेंस के तहत जारी, OpenHands एक कम्युनिटी प्रोजेक्ट है जो शिक्षा जगत और उद्योग तक फैला हुआ है, जिसमें 188 से अधिक योगदानकर्ताओं के 2.1K से अधिक योगदान शामिल हैं।
मूल सार (अंग्रेज़ी)
Software is one of the most powerful tools that we humans have at our disposal; it allows a skilled programmer to interact with the world in complex and profound ways. At the same time, thanks to improvements in large language models (LLMs), there has also been a rapid development in AI agents that interact with and affect change in their surrounding environments. In this paper, we introduce OpenHands (f.k.a. OpenDevin), a platform for the development of powerful and flexible AI agents that interact with the world in similar ways to those of a human developer: by writing code, interacting with a command line, and browsing the web. We describe how the platform allows for the implementation of new agents, safe interaction with sandboxed environments for code execution, coordination between multiple agents, and incorporation of evaluation benchmarks. Based on our currently incorporated benchmarks, we perform an evaluation of agents over 15 challenging tasks, including software engineering (e.g., SWE-BENCH) and web browsing (e.g., WEBARENA), among others. Released under the permissive MIT license, OpenHands is a community project spanning academia and industry with more than 2.1K contributions from over 188 contributors.
पढ़ने की गाइड
समस्या और प्रेरणा
सॉफ्टवेयर विकास सबसे अभिव्यंजक इंटरफेसों में से एक है जिसके माध्यम से मनुष्य डिजिटल दुनिया के साथ इंटरैक्ट करते हैं। जबकि लार्ज लैंग्वेज मॉडल्स (LLMs) पृथक स्निपेट्स उत्पन्न कर सकते हैं, वास्तविक दुनिया की सॉफ्टवेयर इंजीनियरिंग लंबी अवधि के इंटरैक्शन की मांग करती है: रिपॉजिटरी को नेविगेट करना, मल्टी-फाइल आर्किटेक्चर को संशोधित करना, bash कमांड चलाना, वेब ब्राउज़र के माध्यम से डॉक्यूमेंटेशन पढ़ना, और निष्पादन फीडबैक का उपयोग करके सेल्फ-डीबगिंग करना।
पूर्व एजेंट फ्रेमवर्क अक्सर प्रमुख आर्किटेक्चरल कमियों से जूझते थे: पृथक निष्पादन परिवेशों की कमी, स्टेटलेस कोड रनर, मल्टी-मोडल वेब ब्राउज़िंग क्षमताओं की अनुपस्थिति, या विषम डोमेन में मानकीकृत मूल्यांकन उपकरणों का अभाव। OpenHands (पूर्व नाम OpenDevin) सैंडबॉक्स्ड रनटाइम वातावरण, एक्सटेंसिबल एजेंट-कंप्यूटर इंटरफेस (ACI), मल्टी-एजेंट समन्वय और मानकीकृत बेंचमार्किंग की पेशकश करने वाले एक ओपन-सोर्स प्लेटफॉर्म (MIT लाइसेंस्ड) के साथ इस आवश्यकता को पूरा करता है।
मुख्य विचार
- इवेंट स्ट्रीम आर्किटेक्चर (Event Stream Architecture): उपयोगकर्ता के निर्देश, एजेंट की कार्रवाइयां और रनटाइम अवलोकनों को कालानुक्रमिक रूप से एक इवेंट स्ट्रीम में ट्रैक किया जाता है जो फ्रंटएंड, एजेंट और सैंडबॉक्स्ड रनटाइम के बीच संचार को एकीकृत करता है।
- प्रोग्रामिंग लैंग्वेज (PL) प्रिमिटिव्स: नाजुक कस्टम API के बजाय, एजेंट इंटरैक्शन सामान्य क्रियाओं पर आधारित होते हैं:
IPythonRunCellAction,CmdRunAction, औरBrowseInteractiveAction(BrowserGym के माध्यम से)। - एक्सटेंसिबल AgentSkills: IPython कर्नेल में पहले से लोड किया गया एक मॉड्यूलर Python पैकेज मौजूदा पैकेजों को फिर से बनाए बिना उच्च-स्तरीय उपयोगिताएं (उदा., AST-आधारित लाइन एडिटिंग
edit_file, PDF पार्सिंग, मल्टीमॉडल इमेज निष्कर्षण) प्रदान करता है। - एजेंट डेलिगेशन: विशेषज्ञ एजेंट डोमेन-विशिष्ट वर्कफ़्लो को संभालते हैं (उदा.,
AgentDelegateActionके माध्यम से एक समर्पितBrowsingAgentको वेब कार्य सौंपना)। - मॉक टेस्टिंग के माध्यम से गुणवत्ता नियंत्रण: नियमित कंटीन्यूअस इंटीग्रेशन परीक्षण महंगे रियल-टाइम API कॉल के बजाय नियतात्मक (deterministic) प्रॉम्प्ट-रिस्पॉन्स कैशिंग का उपयोग करके प्रॉम्प्ट रीग्रेशन, क्रियाओं और सैंडबॉक्स स्थिरता का परीक्षण करते हैं।
पद्धति (प्रमुख समीकरणों के साथ)
OpenHands निष्पादन चक्र एक असतत (discrete) स्टेप फ़ंक्शन पर काम करता है जहां एजेंट एक परिवेश अवस्था को एक क्रिया में मैप करता है: यहाँ, अवस्था पूर्व क्रियाओं और अवलोकनों के कालानुक्रमिक इतिहास को समाहित करती है: जहाँ सहायक अवस्था मेटाडेटा (संचयी LLM लागत, सक्रिय मल्टी-एजेंट डेलिगेशन स्टैक, कॉन्फ़िगरेशन पैरामीटर) को ट्रैक करता है।
क्रिया स्पेस में शामिल हैं:
CmdRunAction(command): टार्गेट Linux शेल में आर्बिटरेरी bash कमांड चलाता है।IPythonRunCellAction(code):AgentSkillsको प्रदर्शित करते हुए एक परसिस्टेंट Jupyter कर्नेल में स्टेटफुल Python कोड निष्पादित करता है।BrowseInteractiveAction(code): Playwright-संचालित BrowserGym प्रिमिटिव्स (click(bid),fill(bid, val),goto(url), आदि) निष्पादित करता है।AgentDelegateAction(subtask, agent_name): किसी विशेषज्ञ को बुलाने के लिए एजेंट स्टैक पर एक सब-गोल पुश करता है।AgentFinishAction(): निष्पादन समाप्त करता है।
निष्पादन एक सुरक्षित क्लाइंट-सर्वर Docker सैंडबॉक्स के भीतर होता है। बेस Docker कंटेनरों को OpenHands REST API सर्वर (runtime.py) के साथ विस्तारित किया जाता है, जिसे दोहरी टैगिंग तंत्र का उपयोग करके टैग किया जाता है: सख्त पुनरुत्पादनीयता के लिए एक सामग्री MD5 हैश (target_image_repo:target_image_hash_tag), और कैश्ड बेस-लेयर बिल्ड के लिए एक सिमेंटिक जेनेरिक टैग (runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG})।
परिणाम (सबसे महत्वपूर्ण आंकड़ों के साथ)
OpenHands बिना किसी बेंचमार्क-विशिष्ट प्रॉम्प्ट टेलरिंग के सॉफ्टवेयर इंजीनियरिंग, वेब ब्राउज़िंग और सामान्य सहायता से जुड़े 15 बेंचमार्क में जनरलिस्ट एजेंट्स का मूल्यांकन करता है:
- SWE-Bench Lite (300 उदाहरण, बिना हिंट्स के):
claude-3-5-sonnet@20240620के साथCodeActAgent v1.8ने रिज़ॉल्व दर हासिल की (प्रति उदाहरण औसत लागत $1.10), जिसनेSWE-Agent() औरAutoCodeRover() को पीछे छोड़ दिया, औरAider() के करीब पहुंच गया। - HumanEvalFix (164 उदाहरण):
gpt-4o-2024-05-13के साथCodeActAgent v1.50-शॉट सेल्फ-डीबगिंग सेटअप में हल करता है (StarCoder2-15B के की तुलना में)। - WebArena (812 उदाहरण):
BrowsingAgent v1.0नेclaude-3-5-sonnetका उपयोग करके औरgpt-4oका उपयोग करके हासिल किया, जबकि डेलिगेशन के माध्यम सेCodeActAgent v1.8तक पहुंचा। - MiniWoB++ (125 परिवेश):
gpt-4oके साथ ज़ीरो-शॉटBrowsingAgent v1.0हासिल करता है। - सामान्य सहायता और रीजनिंग:
- GPQA Diamond: CodeActAgent v1.8 +
claude-3-5-sonnetने स्कोर किया (मानव विशेषज्ञ बेसलाइन से पीछे, लेकिन फ्यू-शॉट CoT GPT-4 के से बेहतर)। - GAIA (L1 वैलिडेशन):
gpt-4oके साथ GPTSwarm v1.0 तक पहुंचता है (AutoGPT के लिए )। - AgentBench (OS सबसेट): CodeActAgent v1.5 ने हासिल किया।
- MINT (गणित / कोड): CodeActAgent v1.5 गणित पर और कोड पर तक पहुंचा।
- GPQA Diamond: CodeActAgent v1.8 +
सीमाएं और खुले प्रश्न
- बड़ी फाइलों में संपादन: बड़े कोडबेस या लंबी सोर्स फाइलों को संभालते समय मौजूदा एडिटिंग प्रिमिटिव्स को कठिनाई होती है, जहां लाइन-नंबर बदलने से संपादन टकराव (edit conflicts) उत्पन्न होते हैं।
- मल्टीमोडल एकीकरण: हालांकि हेल्पर स्किल्स (
parse_image,parse_pdf) बाहरी विज़न मॉडल के माध्यम से टेक्स्ट या इमेज सारांश निकालते हैं, लेकिन नेटिव ब्राउज़र और टर्मिनल मल्टीमोडल रीजनिंग अभी तक पूरी तरह से एकीकृत नहीं हैं। - वर्कफ़्लो ऑटोमेशन: वर्कफ़्लो अभी भी स्वचालित रूप से अनुकूलित ग्राफ़ आर्किटेक्चर (उदा., GPTSwarm) के बजाय काफी हद तक हाथ से तैयार किए गए सिस्टम प्रॉम्प्ट और एजेंट ऑर्केस्ट्रेशन लूप पर निर्भर करते हैं।
मुख्य शब्द
- OpenHands
- सैंडबॉक्स्ड परिवेशों में AI सॉफ्टवेयर डेवलपर एजेंट्स के निर्माण, डिप्लॉयमेंट और मूल्यांकन के लिए एक ओपन-सोर्स, समुदाय-संचालित प्लेटफॉर्म।
- CodeAct
- एक एजेंट आर्किटेक्चर जहाँ क्रिया स्पेस को कठोर JSON स्कीमा के बजाय आर्बिटरेरी प्रोग्रामिंग लैंग्वेज कोड (Python, bash, ब्राउज़र क्रियाएं) निष्पादित करने के इर्द-गिर्द एकीकृत किया गया है।
- Event Stream
- OpenHands रनटाइम में एजेंट क्रियाओं, उपयोगकर्ता हस्तक्षेपों और परिवेश अवलोकनों को ट्रैक करने वाला एक कालानुक्रमिक, केवल-जोड़ने-योग्य (append-only) लॉग।
- AgentSkills
- सैंडबॉक्स्ड IPython कर्नेल में इंजेक्ट किया गया एक मॉड्यूलर Python यूटिलिटी पैकेज जो एजेंट्स को फाइल-संपादन, नेविगेशन और डॉक्यूमेंट-पार्सिंग हेल्पर्स प्रदान करता है।
- BrowserGym
- Playwright पर आधारित एक ब्राउज़र ऑटोमेशन परिवेश और डोमेन-विशिष्ट क्रिया भाषा, जिसका उपयोग OpenHands द्वारा वेब-नेविगेशन कार्यों के लिए किया जाता है।
- Agent Runtime
- Docker कंटेनर के अंदर चलने वाला पृथक क्लाइंट-सर्वर निष्पादन परिवेश जो bash कमांड, IPython कोड सेल और ब्राउज़र सत्रों को संभालता है।
- AgentDelegateAction
- एक विशिष्ट क्रिया प्रकार जो प्राथमिक जनरलिस्ट एजेंट को किसी डोमेन विशेषज्ञ एजेंट को विशिष्ट उप-कार्य सौंपने में सक्षम बनाता है।
- SWE-Bench
- वास्तविक दुनिया की GitHub समस्याओं को हल करने और मानवीय मार्गदर्शन के बिना यूनिट टेस्ट सुइट्स को पास करने की एजेंट की क्षमता का आकलन करने वाला एक बेंचमार्क।
प्रश्न
OpenHands और OpenDevin में क्या अंतर है?
OpenHands, OpenDevin का आधिकारिक निरंतरता और नया नाम है, जो Cognition के Devin के ओपन रीक्रिएशन से विकसित होकर सॉफ्टवेयर विकास और जनरलिस्ट डिजिटल एजेंट्स दोनों के लिए एक सामान्य प्लेटफॉर्म बन गया है।
आर्बिटरेरी कोड निष्पादित करते समय OpenHands सुरक्षा कैसे बनाए रखता है?
सभी एजेंट क्रियाएं (शेल कमांड, Python स्निपेट और ब्राउज़र क्रियाएं) एक पृथक Docker सैंडबॉक्स कंटेनर के भीतर निष्पादित होती हैं जो होस्ट सिस्टम को सुरक्षित रखते हुए REST API क्लाइंट के माध्यम से बैकएंड के साथ संचार करता है।
OpenHands ऑटोमेटेड टेस्टिंग के दौरान महंगे LLM कॉल्स को कैसे रोकता है?
फ्रेमवर्क में एक एंड-टू-एंड इंटीग्रेशन टेस्टिंग सुइट शामिल है जो LLM अनुरोधों को इंटरसेप्ट करता है और कैश्ड, नियतात्मक प्रॉम्प्ट-रिस्पॉन्स जोड़े लौटाता है, और लाइव मॉडल को केवल तभी कॉल करता है जब प्रॉम्प्ट में कोई बड़ा बदलाव होता है।
क्या OpenHands आर्बिटरेरी यूज़र Docker इमेजेस के साथ चल सकता है?
हाँ। OpenHands एक बिल्ड वर्कफ़्लो प्रदान करता है जो किसी भी उपयोगकर्ता द्वारा प्रदान की गई बेस Docker इमेज पर अपने एक्शन एक्ज़ीक्यूशन API सर्वर को इंस्टॉल करता है, और MD5 सोर्स हैश और जेनेरिक टैग के माध्यम से बिल्ड्स को ट्रैक करता है।
इस पृष्ठ की व्याख्या AI ने शोध पत्र से लिखी है और इसमें गलतियाँ हो सकती हैं। विवरण के लिए मूल शोध पत्र पढ़ें।