Bài báo · arXiv 2407.16741
OpenHands: Nền tảng mở cho các tác nhân AI phát triển phần mềm đóng vai trò tác nhân đa năng
OpenHands: An Open Platform for AI Software Developers as Generalist Agents
Xuất bản cs.SEcs.AIcs.CL arXivPDF
Tóm tắt trong ba dòng
- 🎯 Việc xây dựng, duy trì và đánh giá an toàn các tác nhân AI phát triển phần mềm trên các tác vụ mã nguồn và web đa dạng đòi hỏi sandbox chuẩn hóa, các công cụ chuyên dụng và benchmark có khả năng tái lập.
- 🔧 OpenHands kết hợp kiến trúc luồng sự kiện (event stream) với các Docker sandbox, thư viện AgentSkills mở rộng, khả năng điều hướng dựa trên BrowserGym, phân quyền đa tác nhân và kiểm thử tích hợp sử dụng mocked LLM.
- 📈 Sử dụng Claude 3.5 Sonnet mà không cần tinh chỉnh prompt riêng cho từng benchmark, CodeActAgent đạt tỷ lệ giải quyết 26,0% trên SWE-Bench Lite, 15,3% trên WebArena và 52,0% trên GPQA Diamond.
Tóm tắt
Phần mềm là một trong những công cụ mạnh mẽ nhất mà con người sở hữu; nó cho phép một lập trình viên lành nghề tương tác với thế giới theo những cách thức phức tạp và sâu rộng. Đồng thời, nhờ vào những cải tiến vượt bậc của các mô hình ngôn ngữ lớn (LLM), các tác nhân AI có khả năng tương tác và tạo ra thay đổi trong môi trường xung quanh cũng đang phát triển nhanh chóng. Trong bài báo này, chúng tôi giới thiệu OpenHands (trước đây là OpenDevin), một nền tảng nhằm phát triển các tác nhân AI mạnh mẽ và linh hoạt, có thể tương tác với thế giới theo cách tương tự như các lập trình viên con người: viết mã, tương tác với dòng lệnh và duyệt web. Chúng tôi mô tả cách nền tảng hỗ trợ triển khai các tác nhân mới, tương tác an toàn với các môi trường sandbox để thực thi mã, điều phối giữa nhiều tác nhân và tích hợp các benchmark đánh giá. Dựa trên các benchmark hiện có, chúng tôi tiến hành đánh giá các tác nhân trên 15 tác vụ đầy thách thức, bao gồm kỹ nghệ phần mềm (ví dụ: SWE-BENCH) và duyệt web (ví dụ: WEBARENA), cùng nhiều tác vụ khác. Được phát hành theo giấy phép MIT mở, OpenHands là một dự án cộng đồng kết nối giữa giới học viện và công nghiệp với hơn 2.1K đóng góp từ hơn 188 người đóng góp.
Tóm tắt gốc (tiếng Anh)
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.
Hướng dẫn đọc
Vấn đề và Động lực
Phát triển phần mềm là một trong những giao diện biểu đạt mạnh mẽ nhất mà con người dùng để tương tác với thế giới số. Mặc dù các mô hình ngôn ngữ lớn (LLM) có thể tạo ra các đoạn mã cô lập, kỹ nghệ phần mềm thực tế đòi hỏi tương tác dài hạn: điều hướng kho mã nguồn, chỉnh sửa kiến trúc nhiều tệp, thực thi các lệnh bash, đọc tài liệu qua trình duyệt web và tự gỡ lỗi dựa trên phản hồi thực thi.
Các framework tác nhân trước đây thường gặp phải những lỗ hổng kiến trúc then chốt: thiếu môi trường thực thi cô lập, trình chạy mã không lưu trạng thái (stateless), thiếu khả năng duyệt web đa phương thức, hoặc không có công cụ đánh giá chuẩn hóa trên các miền không đồng nhất. OpenHands (trước đây là OpenDevin) giải quyết nhu cầu này bằng một nền tảng mã nguồn mở (giấy phép MIT) cung cấp môi trường runtime dạng sandbox, Giao diện Tác nhân - Máy tính (Agent-Computer Interfaces - ACI) có thể mở rộng, điều phối đa tác nhân và quy trình đánh giá benchmark chuẩn hóa.
Ý tưởng Cốt lõi
- Kiến trúc Luồng Sự kiện (Event Stream Architecture): Lệnh từ người dùng, hành động của tác nhân và quan sát từ runtime được theo dõi theo trình tự thời gian trong một luồng sự kiện nhằm thống nhất giao tiếp giữa frontend, tác nhân và runtime sandbox.
- Các Nguyên mẫu Ngôn ngữ Lập trình (PL Primitives): Thay vì các API tùy chỉnh dễ gãy, các tương tác của tác nhân được neo vào các hành động tổng quát:
IPythonRunCellAction,CmdRunActionvàBrowseInteractiveAction(thông qua BrowserGym). - AgentSkills Có thể Mở rộng: Một gói Python dạng mô-đun được nạp sẵn vào nhân IPython cung cấp các tiện ích cấp cao (ví dụ: chỉnh sửa dòng dựa trên cây cú pháp trừu tượng AST
edit_file, phân tích cú pháp PDF, trích xuất hình ảnh đa phương thức) mà không cần viết lại các thư viện hiện có. - Phân quyền Tác nhân (Agent Delegation): Các tác nhân chuyên trách xử lý các quy trình làm việc đặc thù theo miền (ví dụ: ủy quyền các tác vụ web qua
AgentDelegateActioncho mộtBrowsingAgentchuyên biệt). - Kiểm soát Chất lượng qua Kiểm thử Giả lập (Mocked Testing): Quy trình kiểm thử tích hợp liên tục định kỳ kiểm tra các lỗi hồi quy của prompt, hành động và độ ổn định của sandbox bằng cách lưu trữ đệm (caching) cặp prompt-response xác định thay vì gọi API thời gian thực tốn kém.
Phương pháp (kèm các phương trình cốt lõi)
Chu trình thực thi của OpenHands hoạt động trên một hàm bước rời rạc, trong đó tác nhân ánh xạ trạng thái môi trường thành một hành động : Tại đây, trạng thái bao hàm lịch sử theo trình tự thời gian của các hành động và quan sát trước đó: trong đó theo dõi siêu dữ liệu trạng thái phụ trợ (chi phí LLM tích lũy, ngăn xếp phân quyền đa tác nhân đang hoạt động, các tham số cấu hình).
Không gian hành động bao gồm:
CmdRunAction(command): Chạy các lệnh bash tùy ý trong shell Linux mục tiêu.IPythonRunCellAction(code): Thực thi mã Python có lưu trạng thái trong một nhân Jupyter liên tục, hiển thịAgentSkills.BrowseInteractiveAction(code): Thực thi các nguyên mẫu BrowserGym điều khiển bởi Playwright (click(bid),fill(bid, val),goto(url), v.v.).AgentDelegateAction(subtask, agent_name): Đẩy một mục tiêu phụ vào ngăn xếp tác nhân để triệu hồi một tác nhân chuyên trách.AgentFinishAction(): Kết thúc quá trình thực thi.
Quá trình thực thi diễn ra bên trong một Docker sandbox an toàn theo mô hình client-server. Các container Docker cơ sở được mở rộng bằng một máy chủ OpenHands REST API (runtime.py), được gắn nhãn bằng cơ chế gắn nhãn kép: một mã băm MD5 nội dung (target_image_repo:target_image_hash_tag) để đảm bảo khả năng tái lập nghiêm ngặt, và một nhãn ngữ nghĩa chung (runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG}) cho các bản build lớp cơ sở được lưu đệm.
Kết quả (kèm các số liệu quan trọng nhất)
OpenHands đánh giá các tác nhân đa năng trên 15 benchmark thuộc các lĩnh vực kỹ nghệ phần mềm, duyệt web và trợ lý tổng quát mà không cần tinh chỉnh prompt riêng cho từng benchmark:
- SWE-Bench Lite (300 mẫu, không có gợi ý):
CodeActAgent v1.8kết hợp vớiclaude-3-5-sonnet@20240620đạt tỷ lệ giải quyết (chi phí trung bình 1,10 USD mỗi mẫu), vượt trội hơnSWE-Agent() vàAutoCodeRover(), và tiệm cậnAider(). - HumanEvalFix (164 mẫu):
CodeActAgent v1.5kết hợp vớigpt-4o-2024-05-13giải quyết được trong thiết lập tự gỡ lỗi 0-shot (so với của StarCoder2-15B). - WebArena (812 mẫu):
BrowsingAgent v1.0đạt khi dùngclaude-3-5-sonnetvà khi dùnggpt-4o, trong khiCodeActAgent v1.8thông qua phân quyền đạt . - MiniWoB++ (125 môi trường):
BrowsingAgent v1.0zero-shot vớigpt-4ođạt . - Trợ lý Tổng quát & Suy luận:
- GPQA Diamond: CodeActAgent v1.8 +
claude-3-5-sonnetđạt điểm (mức chuyên gia con người là , nhưng vượt trội hơn few-shot CoT GPT-4 ở mức ). - GAIA (L1 Validation): GPTSwarm v1.0 với
gpt-4ođạt ( đối với AutoGPT). - AgentBench (tập con OS): CodeActAgent v1.5 đạt .
- MINT (Toán / Mã nguồn): CodeActAgent v1.5 đạt ở môn toán và ở mã nguồn.
- GPQA Diamond: CodeActAgent v1.8 +
Hạn chế và các câu hỏi mở
- Chỉnh sửa Tệp Dài: Các nguyên mẫu chỉnh sửa hiện tại gặp khó khăn khi xử lý các kho mã nguồn lớn hoặc các tệp nguồn dài, nơi việc xê dịch số dòng dễ dẫn đến xung đột chỉnh sửa.
- Tích hợp Đa phương thức: Mặc dù các kỹ năng bổ trợ (
parse_image,parse_pdf) trích xuất văn bản hoặc tóm tắt hình ảnh thông qua các mô hình thị giác bên ngoài, khả năng suy luận đa phương thức gốc trên trình duyệt và terminal vẫn chưa được thống nhất hoàn toàn. - Tự động hóa Quy trình làm việc: Các quy trình vẫn phụ thuộc nhiều vào các prompt hệ thống thủ công và vòng lặp điều phối tác nhân thay vì các kiến trúc đồ thị được tối ưu hóa tự động (ví dụ: GPTSwarm).
Thuật ngữ chính
- OpenHands
- Một nền tảng mã nguồn mở, hướng đến cộng đồng để xây dựng, triển khai và đánh giá các tác nhân AI phát triển phần mềm trong môi trường sandbox.
- CodeAct
- Một kiến trúc tác nhân nơi không gian hành động được thống nhất xoay quanh việc thực thi mã ngôn ngữ lập trình tùy ý (Python, bash, các hành động trình duyệt) thay vì các lược đồ JSON cứng nhắc.
- Event Stream
- Một nhật ký chỉ ghi thêm (append-only) theo trình tự thời gian theo dõi các hành động của tác nhân, can thiệp của người dùng và các quan sát từ môi trường trong suốt runtime OpenHands.
- AgentSkills
- Một gói tiện ích Python dạng mô-đun được đưa vào nhân IPython của sandbox, cung cấp cho tác nhân các trình hỗ trợ chỉnh sửa tệp, điều hướng và phân tích cú pháp tài liệu.
- BrowserGym
- Môi trường tự động hóa trình duyệt và ngôn ngữ hành động đặc thù theo miền dựa trên Playwright được OpenHands sử dụng cho các tác vụ điều hướng web.
- Agent Runtime
- Môi trường thực thi cô lập client-server chạy bên trong Docker container, xử lý các lệnh bash, các ô mã IPython và các phiên làm việc của trình duyệt.
- AgentDelegateAction
- Một loại hành động chuyên biệt cho phép tác nhân đa năng chính phân quyền các tác vụ phụ cụ thể cho một tác nhân chuyên trách theo miền.
- SWE-Bench
- Một benchmark đánh giá khả năng của tác nhân trong việc giải quyết các issue thực tế trên GitHub và vượt qua các bộ kiểm thử đơn vị mà không cần sự hướng dẫn của con người.
Câu hỏi thường gặp
Sự khác biệt giữa OpenHands và OpenDevin là gì?
OpenHands là sự tiếp nối và đổi tên chính thức của OpenDevin, phát triển từ một nỗ lực tái hiện mã nguồn mở của Devin (thuộc Cognition) thành một nền tảng tổng quát cho cả phát triển phần mềm và các tác nhân số đa năng.
OpenHands duy trì tính an toàn như thế nào khi thực thi mã tùy ý?
Tất cả các hành động của tác nhân (lệnh shell, đoạn mã Python và hành động trình duyệt) đều thực thi bên trong một Docker sandbox container cô lập, giao tiếp với backend thông qua REST API client, giúp cách ly hoàn toàn với hệ thống máy chủ.
OpenHands ngăn chặn các lệnh gọi LLM tốn kém trong quá trình kiểm thử tự động bằng cách nào?
Framework này trang bị một bộ kiểm thử tích hợp đầu-cuối có khả năng chặn các yêu cầu LLM và trả về các cặp prompt-response xác định đã được lưu đệm, chỉ gọi lại các mô hình trực tiếp khi có những thay đổi mang tính phá vỡ trong prompt.
OpenHands có thể chạy với các Docker image tùy ý của người dùng không?
Có. OpenHands cung cấp quy trình build cài đặt máy chủ API thực thi hành động của nó lên trên bất kỳ Docker image cơ sở nào do người dùng cung cấp, theo dõi các bản build thông qua mã băm nguồn MD5 và các thẻ nhãn chung.
Phần giải thích trên trang này do AI viết dựa trên bài báo và có thể có sai sót. Hãy đọc bài báo gốc để biết chi tiết.