Makalah · arXiv 2407.16741
OpenHands: Platform Terbuka untuk Pengembang Perangkat Lunak AI sebagai Agen Generalis
OpenHands: An Open Platform for AI Software Developers as Generalist Agents
Terbit cs.SEcs.AIcs.CL arXivPDF
Ringkasan tiga baris
- 🎯 Membangun, memelihara, dan mengevaluasi agen perangkat lunak AI dengan aman pada beragam tugas kode dan web memerlukan sandbox terstandardisasi, alat bantu, dan tolok ukur yang dapat direproduksi.
- 🔧 OpenHands memadukan arsitektur event stream dengan sandbox Docker, pustaka AgentSkills yang dapat diperluas, navigasi berbasis BrowserGym, delegasi multi-agen, dan pengujian integrasi dengan LLM tiruan (mocked LLM).
- 📈 Menggunakan Claude 3.5 Sonnet tanpa penyesuaian prompt khusus per tolok ukur, CodeActAgent mencapai resolve rate 26,0% pada SWE-Bench Lite, 15,3% pada WebArena, dan 52,0% pada GPQA Diamond.
Abstrak
Perangkat lunak merupakan salah satu alat paling andal yang dimiliki manusia; ia memungkinkan seorang pemrogram terampil untuk berinteraksi dengan dunia melalui cara-cara yang kompleks dan mendalam. Pada saat yang sama, berkat kemajuan model bahasa besar (LLM), terjadi pula perkembangan pesat pada agen AI yang berinteraksi dengan serta memicu perubahan pada lingkungan di sekitar mereka. Dalam makalah ini, kami memperkenalkan OpenHands (sebelumnya dikenal sebagai OpenDevin), sebuah platform untuk pengembangan agen AI yang tangguh dan fleksibel yang berinteraksi dengan dunia serupa dengan cara pengembang manusia: dengan menulis kode, berinteraksi melalui antarmuka baris perintah, dan menjelajahi web. Kami menjabarkan bagaimana platform ini memfasilitasi implementasi agen baru, interaksi yang aman dengan lingkungan sandbox untuk eksekusi kode, koordinasi antar banyak agen, dan integrasi tolok ukur evaluasi. Berdasarkan tolok ukur yang saat ini diintegrasikan, kami melakukan evaluasi agen pada 15 tugas yang menantang, termasuk rekayasa perangkat lunak (misalnya, SWE-BENCH) dan penelusuran web (misalnya, WEBARENA), serta yang lainnya. Dirilis di bawah lisensi permisif MIT, OpenHands adalah proyek komunitas yang mencakup dunia akademisi dan industri dengan lebih dari 2,1 ribu kontribusi dari 188 kontributor lebih.
Abstrak asli (bahasa Inggris)
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.
Panduan membaca
Masalah dan motivasi
Pengembangan perangkat lunak merupakan salah satu antarmuka paling ekspresif yang digunakan manusia untuk berinteraksi dengan dunia digital. Kendati model bahasa besar (LLM) dapat menghasilkan cuplikan kode yang terisolasi, rekayasa perangkat lunak di dunia nyata memerlukan interaksi jangka panjang: menavigasi repositori, memodifikasi arsitektur multi-berkas, mengeksekusi perintah bash, membaca dokumentasi melalui peramban web, dan melakukan self-debugging menggunakan umpan balik eksekusi.
Kerangka kerja agen terdahulu kerap mengalami celah arsitektural utama: ketiadaan lingkungan eksekusi terisolasi, runner kode yang bersifat stateless, absennya kapabilitas penelusuran web multimodal, atau tidak adanya perkakas evaluasi terstandardisasi di seluruh domain yang heterogen. OpenHands (sebelumnya OpenDevin) mengatasi kebutuhan ini dengan platform sumber terbuka (berlisensi MIT) yang menawarkan lingkungan runtime tersandbox, Agent-Computer Interfaces (ACI) yang dapat diperluas, koordinasi multi-agen, dan benchmarking terstandardisasi.
Ide utama
- Event Stream Architecture: Instruksi pengguna, aksi agen, dan observasi runtime dilacak secara kronologis dalam event stream yang menyatukan komunikasi antara frontend, agen, dan runtime tersandbox.
- Programming Language (PL) Primitives: Alih-alih API kustom yang rapuh, interaksi agen didasarkan pada aksi-aksi umum:
IPythonRunCellAction,CmdRunAction, danBrowseInteractiveAction(melalui BrowserGym). - AgentSkills yang Dapat Diperluas: Paket Python modular yang dimuat sebelumnya ke dalam kernel IPython menyediakan utilitas tingkat tinggi (misalnya, pengeditan baris berbasis AST
edit_file, penguraian PDF, ekstraksi gambar multimodal) tanpa perlu membuat ulang paket yang sudah ada. - Delegasi Agen: Agen spesialis menangani alur kerja spesifik domain (misalnya, mendelegasikan tugas web melalui
AgentDelegateActionkeBrowsingAgentkhusus). - Kontrol Kualitas melalui Pengujian Tiruan (Mocked Testing): Pengujian integrasi berkelanjutan (CI) rutin menguji regresi, aksi, dan stabilitas sandbox menggunakan caching prompt-response deterministik alih-alih panggilan API real-time yang mahal.
Metode (dengan persamaan kunci)
Siklus eksekusi OpenHands beroperasi pada fungsi langkah diskret di mana agen memetakan status lingkungan ke sebuah aksi : Di sini, status mencakup riwayat kronologis dari aksi dan observasi terdahulu: di mana melacak metadata status tambahan (biaya LLM kumulatif, tumpukan delegasi multi-agen yang aktif, parameter konfigurasi).
Ruang aksi mencakup:
CmdRunAction(command): Menjalankan perintah bash sembarang di shell Linux target.IPythonRunCellAction(code): Mengeksekusi kode Python stateful di kernel Jupyter yang persisten, mengeksposAgentSkills.BrowseInteractiveAction(code): Mengeksekusi primitif BrowserGym berbasis Playwright (click(bid),fill(bid, val),goto(url), dll.).AgentDelegateAction(subtask, agent_name): Mendorong sub-tujuan ke tumpukan agen untuk memanggil spesialis.AgentFinishAction(): Menyelesaikan eksekusi.
Eksekusi berlangsung di dalam sandbox Docker klien-server yang aman. Kontainer dasar Docker diperluas dengan server REST API OpenHands (runtime.py), yang ditandai menggunakan mekanisme penandaan ganda (dual-tagging): hash MD5 konten (target_image_repo:target_image_hash_tag) untuk reproduktibilitas ketat, dan tag generik semantik (runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG}) untuk build lapisan dasar yang di-cache.
Hasil (dengan angka terpenting)
OpenHands mengevaluasi agen generalis pada 15 tolok ukur yang mencakup rekayasa perangkat lunak, penelusuran web, dan asisten umum tanpa penyesuaian prompt khusus per tolok ukur:
- SWE-Bench Lite (300 instans, tanpa petunjuk):
CodeActAgent v1.8denganclaude-3-5-sonnet@20240620mencapai resolve rate (biaya rata-rata $1,10 per instans), mengungguliSWE-Agent() danAutoCodeRover(), serta mendekatiAider(). - HumanEvalFix (164 instans):
CodeActAgent v1.5dengangpt-4o-2024-05-13menyelesaikan dalam konfigurasi 0-shot self-debugging (dibandingkan dengan StarCoder2-15B sebesar ). - WebArena (812 instans):
BrowsingAgent v1.0mencapai menggunakanclaude-3-5-sonnetdan menggunakangpt-4o, sementaraCodeActAgent v1.8melalui delegasi mencapai . - MiniWoB++ (125 lingkungan): Zero-shot
BrowsingAgent v1.0dengangpt-4omencapai . - Bantuan Umum & Penalaran:
- GPQA Diamond: CodeActAgent v1.8 +
claude-3-5-sonnetmeraih skor (melampaui baseline manusia ahli sebesar , tetapi melampaui few-shot CoT GPT-4 sebesar ). - GAIA (L1 Validation): GPTSwarm v1.0 dengan
gpt-4omencapai ( untuk AutoGPT). - AgentBench (subset OS): CodeActAgent v1.5 mencapai .
- MINT (Matematika / Kode): CodeActAgent v1.5 menyentuh pada matematika dan pada kode.
- GPQA Diamond: CodeActAgent v1.8 +
Keterbatasan dan pertanyaan terbuka
- Pengeditan Berkas Panjang: Primitif pengeditan saat ini mengalami kesulitan saat menangani basis kode besar atau berkas sumber panjang di mana pergeseran nomor baris menimbulkan konflik pengeditan.
- Integrasi Multimodal: Meskipun keterampilan pembantu (
parse_image,parse_pdf) mengekstrak teks atau ringkasan gambar melalui model visi eksternal, penalaran multimodal peramban dan terminal secara bawaan belum sepenuhnya terintegrasi. - Otomatisasi Alur Kerja: Alur kerja masih sangat bergantung pada prompt sistem manual dan loop orkestrasi agen ketimbang arsitektur graf yang dioptimalkan secara otomatis (misalnya, GPTSwarm).
Istilah kunci
- OpenHands
- Platform sumber terbuka berbasis komunitas untuk membangun, menerapkan, dan mengevaluasi agen pengembang perangkat lunak AI dalam lingkungan sandbox.
- CodeAct
- Arsitektur agen dengan ruang aksi yang disatukan di sekitar eksekusi kode bahasa pemrograman sembarang (Python, bash, aksi peramban) alih-alih skema JSON yang kaku.
- Event Stream
- Log kronologis berformat append-only yang melacak aksi agen, intervensi pengguna, dan observasi lingkungan di seluruh runtime OpenHands.
- AgentSkills
- Paket utilitas Python modular yang diinjeksikan ke dalam kernel IPython tersandbox yang menyediakan fungsi bantu pengeditan berkas, navigasi, dan penguraian dokumen bagi agen.
- BrowserGym
- Lingkungan otomasi peramban dan bahasa aksi khusus domain berbasis Playwright yang digunakan oleh OpenHands untuk tugas navigasi web.
- Agent Runtime
- Lingkungan eksekusi klien-server terisolasi yang berjalan di dalam kontainer Docker yang menangani perintah bash, sel kode IPython, dan sesi peramban.
- AgentDelegateAction
- Jenis aksi khusus yang memungkinkan agen generalis utama mendelegasikan subtugas tertentu kepada agen spesialis domain.
- SWE-Bench
- Tolok ukur yang menilai kemampuan agen untuk menyelesaikan isu GitHub dunia nyata dan lolos rangkaian pengujian unit tanpa panduan manusia.
Pertanyaan
Apa perbedaan antara OpenHands dan OpenDevin?
OpenHands adalah kelanjutan resmi dan perubahan nama dari OpenDevin, berevolusi dari rekreasi terbuka atas Devin milik Cognition menjadi platform umum untuk pengembangan perangkat lunak maupun agen digital generalis.
Bagaimana OpenHands menjaga keamanan saat mengeksekusi kode sembarang?
Semua aksi agen (perintah shell, cuplikan Python, dan aksi peramban) dieksekusi di dalam kontainer sandbox Docker terisolasi yang berkomunikasi dengan backend melalui klien REST API, sehingga mengisolasi sistem host.
Bagaimana OpenHands mencegah panggilan LLM yang mahal selama pengujian otomatis?
Kerangka kerja ini menyediakan rangkaian pengujian integrasi ujung-ke-ujung yang mencegat permintaan LLM dan mengembalikan pasangan prompt-response deterministik yang tersimpan dalam cache, hanya memanggil ulang model langsung saat terjadi perubahan prompt yang signifikan.
Bisakah OpenHands dijalankan dengan image Docker sembarang milik pengguna?
Bisa. OpenHands menyediakan alur kerja build yang memasang server API eksekusi aksinya di atas image Docker dasar apa pun yang disediakan pengguna, melacak build melalui hash MD5 sumber dan tag generik.
Ulasan di halaman ini ditulis oleh AI dari makalah dan mungkin mengandung kesalahan. Baca makalahnya untuk detail.