XYZNOT

Makaleler · arXiv 2407.16741

OpenHands: Genel Uzman Ajanlar Olarak Yapay Zeka Yazılım Geliştiricileri İçin Açık Bir Platform

OpenHands: An Open Platform for AI Software Developers as Generalist Agents

Yayımlanma cs.SEcs.AIcs.CL arXivPDF

Çeviri ve yapay zekâ ile oku

Üç satırda özet

  1. 🎯 Çeşitli kod ve web görevlerinde yapay zeka yazılım ajanları oluşturmak, sürdürmek ve güvenle değerlendirmek; standartlaştırılmış korumalı alanlar (sandbox), araçlar ve tekrarlanabilir kıyaslamalar gerektirir.
  2. 🔧 OpenHands; bir olay akışı (event stream) mimarisini Docker korumalı alanları, genişletilebilir bir AgentSkills kütüphanesi, BrowserGym tabanlı gezinme, çoklu ajan yetkilendirmesi ve sahte (mocked) LLM'lerle entegrasyon testiyle birleştirir.
  3. 📈 Kıyaslamaya özel istem ayarlaması (prompt tuning) yapılmaksızın Claude 3.5 Sonnet kullanan CodeActAgent; SWE-Bench Lite üzerinde %26,0, WebArena'da %15,3 ve GPQA Diamond'da %52,0 çözüm oranına ulaşır.

Özet

Yazılım, biz insanların elindeki en güçlü araçlardan biridir; yetenekli bir programcının dünyayla karmaşık ve derin yollarla etkileşime girmesini sağlar. Aynı zamanda, büyük dil modellerindeki (LLM'ler) gelişmeler sayesinde, çevrelerindeki ortamlarla etkileşime giren ve bu ortamlarda değişim yaratan yapay zeka ajanlarında da hızlı bir ilerleme kaydedilmiştir. Bu makalede, bir insan geliştiricinin yaptıklarına benzer şekillerde (kod yazarak, komut satırıyla etkileşime girerek ve web'de gezinerek) dünyayla etkileşim kuran güçlü ve esnek yapay zeka ajanlarının geliştirilmesi için tasarlanmış bir platform olan OpenHands'i (eski adıyla OpenDevin) sunuyoruz. Platformun yeni ajanların uygulanmasına, kod yürütme amacıyla yalıtılmış (sandbox) ortamlarla güvenli etkileşime, birden fazla ajan arasındaki koordinasyona ve değerlendirme kıyaslama testlerinin entegrasyonuna nasıl olanak tanıdığını açıklıyoruz. Halihazırda entegre edilmiş kıyaslamalarımıza dayanarak; yazılım mühendisliği (örneğin SWE-BENCH) ve web'de gezinme (örneğin WEBARENA) dahil olmak üzere 15 zorlu görev genelinde ajanların değerlendirmesini gerçekleştiriyoruz. İzin veren MIT lisansı altında yayımlanan OpenHands, 188'den fazla katkıda bulunandan 2.1 binden fazla katkı alan, akademi ve endüstriyi kapsayan bir topluluk projesidir.

Orijinal özet (İngilizce)

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.

Okuma rehberi

Problem ve motivasyon

Yazılım geliştirme, insanların dijital dünyayla etkileşim kurduğu en dışavurumcu arayüzlerden biridir. Büyük dil modelleri (LLM'ler) izole kod parçacıkları üretebilse de gerçek dünya yazılım mühendisliği uzun soluklu bir etkileşim gerektirir: kod depolarında gezinme, çok dosyalı mimarileri değiştirme, bash komutları yürütme, web tarayıcıları üzerinden belgeleri okuma ve çalıştırma geri bildirimlerini kullanarak kendi kendini hata ayıklama (self-debugging).

Önceki ajan çatıları genellikle temel mimari eksikliklerden muzdaripti: yalıtılmış çalıştırma ortamlarının eksikliği, durum bilgisini tutmayan (stateless) kod çalıştırıcıları, çok modlu web tarama yeteneklerinin bulunmaması veya heterojen alanlar arasında standartlaştırılmış değerlendirme araçlarının olmaması. OpenHands (eski adıyla OpenDevin), korumalı alan çalıştırma ortamları, genişletilebilir Ajan-Bilgisayar Arayüzleri (ACI), çoklu ajan koordinasyonu ve standartlaştırılmış kıyaslama testleri sunan açık kaynaklı bir platformla (MIT lisanslı) bu ihtiyacı karşılamaktadır.

Temel fikirler

  • Olay Akışı Mimarisi (Event Stream Architecture): Kullanıcı talimatları, ajan eylemleri ve çalışma zamanı gözlemleri; ön uçlar, ajanlar ve korumalı çalışma zamanları arasındaki iletişimi birleştiren bir olay akışında kronolojik olarak izlenir.
  • Programlama Dili (PL) Primitifleri: Kırılgan özel API'ler yerine, ajan etkileşimleri genel eylemlere dayandırılır: IPythonRunCellAction, CmdRunAction ve BrowseInteractiveAction (BrowserGym aracılığıyla).
  • Genişletilebilir AgentSkills: IPython çekirdeğine önceden yüklenmiş modüler bir Python paketi, mevcut paketleri yeniden icat etmeden üst düzey yardımcı programlar (örn. AST tabanlı satır düzenleme edit_file, PDF ayrıştırma, çok modlu görsel çıkarma) sağlar.
  • Ajan Yetkilendirmesi (Agent Delegation): Uzman ajanlar, alana özgü iş akışlarını yürütür (örn. AgentDelegateAction aracılığıyla web görevlerini özel bir BrowsingAgent'a devretmek).
  • Sahte Testler Yoluyla Kalite Kontrolü (Quality Control via Mocked Testing): Rutin sürekli entegrasyon (CI) testleri; pahalı gerçek zamanlı API çağrıları yerine deterministik istem-yanıt önbelleklemesini kullanarak regresyonları, eylemleri ve korumalı alan kararlılığını test eder.

Yöntem (ana denklemlerle)

OpenHands yürütme döngüsü, ajanın bir ortam durumunu bir eyleme eşlediği ayrık bir adım fonksiyonu üzerinde çalışır: Burada durum, önceki eylemlerin ve gözlemlerin kronolojik geçmişini kapsar: burada yardımcı durum meta verilerini (kümülatif LLM maliyeti, aktif çoklu ajan yetkilendirme yığını, yapılandırma parametreleri) takip eder.

Eylem uzayı şunları içerir:

  • CmdRunAction(command): Hedef Linux kabuğunda rastgele bash komutları çalıştırır.
  • IPythonRunCellAction(code): Kalıcı bir Jupyter çekirdeğinde AgentSkills bileşenlerini sunarak durum bilgisi tutan Python kodunu yürütür.
  • BrowseInteractiveAction(code): Playwright odaklı BrowserGym primitiflerini (click(bid), fill(bid, val), goto(url) vb.) yürütür.
  • AgentDelegateAction(subtask, agent_name): Bir uzmanı çağırmak için ajan yığınına bir alt hedef ekler.
  • AgentFinishAction(): Yürütmeyi sonlandırır.

Yürütme, güvenli bir istemci-sunucu Docker korumalı alanında gerçekleşir. Temel Docker konteynerleri bir OpenHands REST API sunucusu (runtime.py) ile genişletilir ve ikili etiketleme mekanizması kullanılarak etiketlenir: katı tekrarlanabilirlik için bir içerik MD5 özeti (target_image_repo:target_image_hash_tag) ve önbelleğe alınmış temel katman derlemeleri için anlamsal genel bir etiket (runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG}).

Sonuçlar (en önemli sayılarla)

OpenHands; yazılım mühendisliği, web'de gezinme ve genel asistanlık alanlarını kapsayan 15 kıyaslama testinde, kıyaslama testine özel istem uyarlaması yapmadan genel uzman ajanları değerlendirir:

  • SWE-Bench Lite (300 örnek, ipucu olmadan): claude-3-5-sonnet@20240620 ile CodeActAgent v1.8, % çözüm oranına (örnek başına ortalama 1,10 $ maliyet) ulaşarak SWE-Agent'ı (%) ve AutoCodeRover'ı (%) geride bırakmış, Aider'a (%) yaklaşmıştır.
  • HumanEvalFix (164 örnek): gpt-4o-2024-05-13 ile CodeActAgent v1.5, 0-shot kendi kendini hata ayıklama kurulumunda % çözer (StarCoder2-15B'nin %'lık oranına kıyasla).
  • WebArena (812 örnek): BrowsingAgent v1.0, claude-3-5-sonnet kullanarak % ve gpt-4o kullanarak % elde ederken, yetkilendirme aracılığıyla CodeActAgent v1.8 %'e ulaşır.
  • MiniWoB++ (125 ortam): gpt-4o ile zero-shot BrowsingAgent v1.0 % elde eder.
  • Genel Asistanlık ve Akıl Yürütme:
    • GPQA Diamond: CodeActAgent v1.8 + claude-3-5-sonnet % puan alır (uzman insan taban çizgisi olan %'nin gerisinde kalsa da few-shot CoT GPT-4'ün %'lik oranını geride bırakır).
    • GAIA (L1 Doğrulama): gpt-4o ile GPTSwarm v1.0 %'e ulaşır (AutoGPT için %).
    • AgentBench (OS alt kümesi): CodeActAgent v1.5 % elde eder.
    • MINT (Matematik / Kod): CodeActAgent v1.5 matematikte % ve kodda %'a ulaşır.

Sınırlılıklar ve açık sorular

  • Uzun Dosya Düzenlemeleri: Mevcut düzenleme primitifleri, büyük kod tabanlarını veya satır numarası kaymalarının düzenleme çakışmalarına yol açtığı uzun kaynak dosyalarını işlerken zorlanmaktadır.
  • Çok Modlu Entegrasyon: Yardımcı beceriler (parse_image, parse_pdf) harici görme modelleri aracılığıyla metin veya görsel özetleri çıkarsa da yerel tarayıcı ve terminal çok modlu akıl yürütmesi henüz tam olarak birleştirilmemiştir.
  • İş Akışı Otomasyonu: İş akışları, otomatik olarak optimize edilmiş grafik mimarileri (örn. GPTSwarm) yerine hâlâ büyük ölçüde elle hazırlanmış sistem istemlerine ve ajan koordinasyon döngülerine dayanmaktadır.

Temel terimler

OpenHands
Yapay zeka yazılım geliştirici ajanlarını yalıtılmış ortamlarda inşa etmek, dağıtmak ve değerlendirmek için açık kaynaklı, topluluk odaklı bir platform.
CodeAct
Eylem uzayının katı JSON şemaları yerine rastgele programlama dili kodunun (Python, bash, tarayıcı eylemleri) yürütülmesi etrafında birleştirildiği bir ajan mimarisi.
Event Stream
OpenHands çalışma zamanı boyunca ajan eylemlerini, kullanıcı müdahalelerini ve ortam gözlemlerini izleyen kronolojik, yalnızca ekleme yapılabilen (append-only) bir kayıt.
AgentSkills
Korumalı alandaki IPython çekirdeğine enjekte edilen ve ajanlara dosya düzenleme, gezinme ve belge ayrıştırma yardımcıları sağlayan modüler bir Python yardımcı paketi.
BrowserGym
Web'de gezinme görevleri için OpenHands tarafından kullanılan, Playwright tabanlı bir tarayıcı otomasyon ortamı ve alana özgü eylem dili.
Agent Runtime
Bash komutlarını, IPython kod hücrelerini ve tarayıcı oturumlarını yöneten, bir Docker konteyneri içinde çalışan yalıtılmış istemci-sunucu yürütme ortamı.
AgentDelegateAction
Birincil genel uzman ajanın belirli alt görevleri bir alan uzmanı ajana devretmesini sağlayan özel bir eylem türü.
SWE-Bench
Bir ajanın gerçek dünya GitHub sorunlarını çözme ve insan rehberliği olmadan birim test paketlerini geçme yeteneğini değerlendiren bir kıyaslama testi.

Sorular

OpenHands ile OpenDevin arasındaki fark nedir?

OpenHands, OpenDevin'in resmi devamı ve yeni adıdır; Cognition'ın Devin modelinin açık bir yeniden üretiminden, hem yazılım geliştirme hem de genel uzman dijital ajanlar için genel bir platforma evrilmiştir.

OpenHands rastgele kod çalıştırırken güvenliği nasıl sağlar?

Tüm ajan eylemleri (kabuk komutları, Python kod parçacıkları ve tarayıcı eylemleri), arka uçla bir REST API istemcisi aracılığıyla iletişim kuran ve ana makine sistemini yalıtan bağımsız bir Docker korumalı alan konteyneri içinde yürütülür.

OpenHands otomatik testler sırasında maliyetli LLM çağrılarını nasıl önler?

Çatı, LLM isteklerini yakalayan ve önbelleğe alınmış, deterministik istem-yanıt çiftlerini döndüren, canlı modelleri yalnızca bozucu istem değişiklikleri meydana geldiğinde yeniden çağıran uçtan uca bir entegrasyon testi paketine sahiptir.

OpenHands kullanıcıya ait rastgele Docker imajlarıyla çalışabilir mi?

Evet. OpenHands, eylem yürütme API sunucusunu kullanıcı tarafından sağlanan herhangi bir temel Docker imajının üzerine kuran ve derlemeleri MD5 kaynak özetleri ile genel etiketler aracılığıyla izleyen bir derleme iş akışı sunar.

Bu sayfadaki açıklama yapay zekâ tarafından makaleden yazılmıştır ve hata içerebilir. Ayrıntılar için makaleyi okuyun.

Çeviri ve yapay zekâ ile oku