XYZNOT

논문 · arXiv 2407.16741

OpenHands: 제너럴리스트 에이전트로서의 AI 소프트웨어 개발자를 위한 오픈 플랫폼

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

게시일 cs.SEcs.AIcs.CL arXivPDF

XYZNOT로 읽기 (전문 번역과 AI 해설)

세 줄 요약

  1. 🎯 다양한 코드 및 웹 태스크 전반에서 AI 소프트웨어 에이전트를 구축, 유지보수 및 안전하게 평가하려면 표준화된 샌드박스, 도구, 재현 가능한 벤치마크가 필요합니다.
  2. 🔧 OpenHands는 이벤트 스트림 아키텍처를 Docker 샌드박스, 확장 가능한 AgentSkills 라이브러리, BrowserGym 기반 내비게이션, 멀티 에이전트 위임, 모의(mocked) LLM을 활용한 통합 테스트와 결합합니다.
  3. 📈 벤치마크 맞춤형 프롬프트 튜닝 없이 Claude 3.5 Sonnet을 사용한 CodeActAgent는 SWE-Bench Lite에서 26.0%, WebArena에서 15.3%, GPQA Diamond에서 52.0%의 해결률(resolve rate)을 달성했습니다.

초록

소프트웨어는 인간이 활용할 수 있는 가장 강력한 도구 중 하나로, 숙련된 프로그래머가 복잡하고 심오한 방식으로 세상과 상호작용할 수 있도록 돕습니다. 동시에 대형 언어 모델(LLM)의 발전에 힘입어 주변 환경과 상호작용하고 변화를 이끌어내는 AI 에이전트 역시 급격히 발전하고 있습니다. 본 논문에서는 코드를 작성하고, 커맨드 라인과 상호작용하며, 웹을 브라우징하는 등 인간 개발자와 유사한 방식으로 세상과 상호작용하는 강력하고 유연한 AI 에이전트 개발 플랫폼인 OpenHands(구 OpenDevin)를 소개합니다. 본 논문에서는 이 플랫폼이 새로운 에이전트 구현, 안전한 코드 실행을 위한 샌드박스 환경과의 상호작용, 다중 에이전트 간의 조율, 그리고 평가 벤치마크 통합을 어떻게 지원하는지 설명합니다. 현재 통합된 벤치마크를 바탕으로, 소프트웨어 엔지니어링(예: SWE-BENCH) 및 웹 브라우징(예: WEBARENA)을 포함한 15개의 까다로운 태스크에 걸쳐 에이전트 평가를 수행합니다. 허용적인 MIT 라이선스로 배포되는 OpenHands는 188명 이상의 기여자가 2,100건 이상의 기여를 남긴 학계와 산업계를 아우르는 커뮤니티 프로젝트입니다.

영어 원문 초록

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.

논문 해설

문제 및 동기

소프트웨어 개발은 인간이 디지털 세상과 상호작용하는 가장 표현력이 풍부한 인터페이스 중 하나입니다. 대형 언어 모델(LLM)이 독립된 코드 스니펫을 생성할 수는 있지만, 실제 소프트웨어 엔지니어링은 리포지토리 탐색, 다중 파일 아키텍처 수정, bash 명령 실행, 웹 브라우저를 통한 문서 확인, 실행 피드백을 활용한 자체 디버깅 등 장기적(long-horizon) 상호작용을 요구합니다.

기존 에이전트 프레임워크들은 격리된 실행 환경의 부재, 상태가 유지되지 않는(stateless) 코드 실행기, 멀티모달 웹 브라우징 기능의 누락, 이종 도메인 간 표준화된 평가 도구의 부재 등 주요 아키텍처 측면의 한계를 겪어왔습니다. OpenHands(구 OpenDevin)는 샌드박스 런타임 환경, 확장 가능한 에이전트-컴퓨터 인터페이스(Agent-Computer Interface, ACI), 멀티 에이전트 조율, 표준화된 벤치마킹을 제공하는 오픈소스 플랫폼(MIT 라이선스)으로 이러한 요구를 해결합니다.

핵심 아이디어

  • 이벤트 스트림 아키텍처(Event Stream Architecture): 사용자 지시, 에이전트 행동, 런타임 관측 결과가 시간순으로 이벤트 스트림에 기록되어 프론트엔드, 에이전트, 샌드박스 런타임 간의 통신을 단일화합니다.
  • 프로그래밍 언어(PL) 프리미티브: 취약한 커스텀 API 대신 일반적인 액션인 IPythonRunCellAction, CmdRunAction, BrowseInteractiveAction(BrowserGym 기반)을 에이전트 상호작용의 기반으로 삼습니다.
  • 확장 가능한 AgentSkills: IPython 커널에 사전 로드된 모듈형 Python 패키지로, 기존 패키지를 재발명하지 않고도 고수준 유틸리티(예: AST 기반 라인 편집 edit_file, PDF 파싱, 멀티모달 이미지 추출)를 제공합니다.
  • 에이전트 위임(Agent Delegation): 전문 에이전트가 도메인 특화 워크플로를 처리합니다(예: AgentDelegateAction을 통해 전용 BrowsingAgent에 웹 태스크 위임).
  • 모의(Mocked) 테스트를 통한 품질 관리: 비용이 많이 드는 실시간 API 호출 대신 결정론적 프롬프트-응답 캐싱을 사용하여 프롬프트 회귀, 액션, 샌드박스 안정성을 테스트하는 정기적 CI를 수행합니다.

방법론 (핵심 수식 포함)

OpenHands 실행 사이클은 에이전트가 환경 상태 를 액션 로 매핑하는 이산 스텝 함수로 동작합니다: 여기서 상태는 이전 액션과 관측값의 시간순 히스토리를 캡슐화합니다: 는 보조 상태 메타데이터(누적 LLM 비용, 활성 멀티 에이전트 위임 스택, 구성 파라미터)를 추적합니다.

액션 공간 는 다음을 포함합니다:

  • CmdRunAction(command): 대상 Linux 셸에서 임의의 bash 명령을 실행합니다.
  • IPythonRunCellAction(code): 영구 Jupyter 커널에서 상태가 유지되는 Python 코드를 실행하고 AgentSkills를 노출합니다.
  • 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.5는 0-shot 자체 디버깅 설정에서 를 해결했습니다(StarCoder2-15B의 경우 ).
  • WebArena (812개 인스턴스): BrowsingAgent v1.0은 claude-3-5-sonnet 사용 시 , gpt-4o 사용 시 를 달성했으며, 위임을 거친 CodeActAgent v1.8은 에 도달했습니다.
  • MiniWoB++ (125개 환경): gpt-4o를 적용한 Zero-shot BrowsingAgent v1.0이 를 기록했습니다.
  • 범용 지원 및 추론:
    • GPQA Diamond: CodeActAgent v1.8 + claude-3-5-sonnet 조합이 를 기록했습니다(인간 전문가 베이스라인은 , Few-shot CoT GPT-4는 ).
    • GAIA (L1 검증): gpt-4o를 적용한 GPTSwarm v1.0이 에 도달했습니다(AutoGPT는 ).
    • AgentBench (OS 서브셋): CodeActAgent v1.5가 를 달성했습니다.
    • MINT (수학 / 코드): CodeActAgent v1.5가 수학에서 , 코드에서 를 달성했습니다.

한계 및 미해결 과제

  • 긴 파일 편집: 대규모 코드베이스나 긴 소스 파일을 다룰 때 라인 번호 변경으로 인한 편집 충돌이 발생하여 현재의 편집 프리미티브가 한계를 보입니다.
  • 멀티모달 통합: 헬퍼 스킬(parse_image, parse_pdf)이 외부 비전 모델을 통해 텍스트나 이미지 요약을 추출하지만, 브라우저와 터미널의 네이티브 멀티모달 추론은 아직 완전히 통합되지 않았습니다.
  • 워크플로 자동화: 워크플로는 여전히 자동으로 최적화되는 그래프 아키텍처(예: GPTSwarm) 대신 수작업으로 작성된 시스템 프롬프트 및 에이전트 오케스트레이션 루프에 크게 의존하고 있습니다.

핵심 용어

OpenHands
샌드박스 환경에서 AI 소프트웨어 개발자 에이전트를 구축, 배포 및 평가하기 위한 오픈소스 커뮤니티 주도 플랫폼.
CodeAct
엄격한 JSON 스키마 대신 임의의 프로그래밍 언어 코드(Python, bash, 브라우저 액션) 실행을 중심으로 액션 공간을 단일화한 에이전트 아키텍처.
Event Stream
OpenHands 런타임 전반에서 에이전트 액션, 사용자 개입, 환경 관측값을 추적하는 시간순 추가 전용(append-only) 로그.
AgentSkills
샌드박스 내 IPython 커널에 주입되어 에이전트에게 파일 편집, 내비게이션, 문서 파싱 헬퍼를 제공하는 모듈형 Python 유틸리티 패키지.
BrowserGym
OpenHands가 웹 내비게이션 태스크에 사용하는 Playwright 기반 브라우저 자동화 환경 및 도메인 특화 액션 언어.
Agent Runtime
bash 명령, IPython 코드 셀, 브라우저 세션을 처리하는 Docker 컨테이너 내부에서 실행되는 격리된 클라이언트-서버 실행 환경.
AgentDelegateAction
주 제너럴리스트 에이전트가 특정 하위 태스크를 도메인 전문 에이전트에게 위임할 수 있도록 지원하는 특화 액션 유형.
SWE-Bench
인간의 개입 없이 실제 GitHub 이슈를 해결하고 단위 테스트 스위트를 통과하는 에이전트의 역량을 평가하는 벤치마크.

자주 묻는 질문

OpenHands와 OpenDevin의 차이점은 무엇인가요?

OpenHands는 OpenDevin의 공식적인 후속 프로젝트이자 변경된 명칭으로, Cognition의 Devin을 오픈소스로 재현하던 프로젝트에서 소프트웨어 개발 및 범용 디지털 에이전트 전반을 위한 범용 플랫폼으로 발전했습니다.

OpenHands는 임의의 코드를 실행할 때 안전성을 어떻게 유지하나요?

모든 에이전트 액션(셸 명령, Python 스니펫, 브라우저 액션)은 REST API 클라이언트를 통해 백엔드와 통신하는 격리된 Docker 샌드박스 컨테이너 내에서 실행되므로 호스트 시스템과 분리됩니다.

OpenHands는 자동화된 테스트 중에 비용이 많이 드는 LLM 호출을 어떻게 방지하나요?

이 프레임워크는 LLM 요청을 가로채 캐시된 결정론적 프롬프트-응답 쌍을 반환하는 엔드투엔드 통합 테스트 스위트를 갖추고 있으며, 프롬프트에 호환성을 깨는 변경이 있을 때만 실제 모델을 다시 호출합니다.

OpenHands를 사용자가 지정한 임의의 Docker 이미지로 실행할 수 있나요?

네. OpenHands는 사용자가 제공한 베이스 Docker 이미지 위에 액션 실행 API 서버를 설치하는 빌드 워크플로를 제공하며, MD5 소스 해시와 제네릭 태그를 통해 빌드를 추적합니다.

이 페이지의 해설은 AI가 논문을 바탕으로 작성했으며 오류가 있을 수 있습니다. 자세한 내용은 원문을 확인하세요.

XYZNOT로 읽기 (전문 번역과 AI 해설)