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 , 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 challenging tasks, including software engineering (, Swe-bench) and web browsing (, WebArena), among others.
Released under the permissive MIT license, is a community project spanning academia and industry with more than 1.3K contributions from over 160 contributors and will improve going forward.

Code     <https://github.com/OpenDevin/OpenDevin>

Benchmark     <https://hf.co/spaces/OpenDevin/evaluation>

Slack     <https://bit.ly/OpenDevin-Slack>

§ INTRODUCTION

Powered by large language models (LLMs; [OpenAI, 2024, Team et al., 2023, Jiang et al., 2024, Chang et al., 2024]), user-facing AI systems (such as ChatGPT) have become increasingly capable of performing complex tasks such as accurately responding to user queries, solving math problems, and generating code.
In particular, AI agents, systems that can perceive and act upon the external environment, have recently received ever-increasing research focus.

They are moving towards performing complex tasks such as developing software [Jimenez et al., 2024],
navigating real-world websites [Zhou et al., 2023], doing household chores [Ahn et al., 2022], or even performing scientific research [Boiko et al., 2023, Tang et al., 2024].

As AI agents become capable of tackling complex problems, their development and evaluation have also become challenging.

There are numerous recent efforts in creating open-source frameworks that facilitate the development of agents [Hong et al., 2023, Chen et al., 2024, Wu et al., 2023].

These agent frameworks generally include: 1) interfaces through which agents interact with the world (such as JSON-based function calls or code execution), 2) environments in which agents operate, and 3) interaction mechanisms for human-agent or agent-agent communication.
These frameworks streamline and ease the development process in various ways (tab:comparison, sec:related_work).

When designing AI agents, we can also consider how human interacts with the world.
The most powerful way in which humans currently interact with the world is through software – software powers every aspect of our life, supporting everything from the logistics for basic needs to the advancement of science, technology, and AI itself.
Given the power of software, as well as the existing tooling around its efficient development, use, and deployment, it provides the ideal interface for AI agents to interact with the world in complex ways.
However, building agents that can effectively develop software comes with its own unique challenges.
How can we enable agents to effectively create and modify code in complex software systems?
How can we provide them with tools to gather information on-the-fly to debug problems or gather task-requisite information?
How can we ensure that development is safe and avoids negative side effects on the users' systems?

In this paper, we introduce OpenDevin, a community-driven platform designed for the development of generalist and specialist AI agents that interact with the world through software.
[While initially inspired by the AI software engineer Devin [9], has quickly evolved to support a much wider range of applications beyond software engineering through diverse community contributions.]
It features:

(1) An interaction mechanism which allows user interfaces, agents, and environments to interact through a event stream architecture that is powerful and flexible (sec:agent-abstraction).

(2) An environment that consists of a sandboxed operating system and a web browser that the agents can utilize for their tasks (sec:agent-runtime).

(3) An interface allowing the agent to interact with the environment in a manner similar to actual software engineers (sec:agent-skills). We provide the capability for agents to (a) create complex software, (b) execute the code, and (c) browse websites to collect information.

(4) Multi-agent delegation, allowing multiple specialized agents to work together (sec:agent-delegation).

(5) Evaluation framework, facilitating the evaluation of agents across a wide range of tasks (sec:evaluation).

Importantly, OpenDevin is not just a conceptual framework, but it also includes a comprehensive and immediately usable implementation of agents, environments, and evaluations.
As of this writing, OpenDevin includes an agent hub with over 10 implemented agents (sec:agenthub), including a strong generalist agent implemented based on the CodeAct architecture [Wang et al., 2024], with additions for web browsing [52] and code editing [Yang et al., 2024].
Interaction with users is implemented through a chat-based user interface that visualizes the agent's current actions and allows for real-time feedback (fig:ui, sec:ui).
Furthermore, the evaluation framework currently supports benchmarks, which we use to evaluate our agents (sec:evaluation).

Released under a permissive MIT license allowing commercial use,
is poised to support a diverse array of research and real-world applications across academia and industry.

has gained significant traction, with 28K GitHub stars and more than 1.3K contributions from over 160 contributors.
We envision as a catalyst for future research innovations and diverse applications driven by a broad community of practitioners.

User Interface (UI, sec:ui) allows users to view files, check executed bash commands/Python code, observe the agent's browser activity, and directly interact with the agent.

§ ARCHITECTURE

We describe, using , (1) how to define and implement an agent (sec:agent-abstraction), (2) how each action execution leads to an observation (sec:agent-runtime), (3) how to reliably manage and extend commonly used skills for agents (sec:agent-skills), and (4) how to compose multiple agents together for task solving (sec:agent-delegation).
fig:arch provides an overview.

§.§ Agent Definition and Implementation

An agent can perceive the state of the environment (, prior actions and observations) and produce an action for execution while solving a user-specified task.

Minimal example of implementing an agent in .

class MinimalAgent:
def reset(self) -> None:
self.system_message = "You are a helpful assistant ..."

def step(self, state: State):
messages: list[dict[str, str]] = [
'role': 'system', 'content': self.system_message
for prev_action, obs in state.history:
action_message = get_action_message(prev_action)
obs_message = get_observation_message(obs)

# use llm to generate response (e.g., thought, action)
response = self.llm.do_completion(messages)

# parse and execute action in the runtime
action = self.parse_response(response)
if self.is_finish_command(action):
return AgentFinishAction()
elif self.is_bash_command(action):
return CmdRunAction(command=action.command)
elif self.is_python_code(action):
return IPythonRunCellAction(code=action.code)
elif self.is_browser_action(action):
return BrowseInteractiveAction(code=action.code)
return MessageAction(content=action.message)

The State and Event Stream. In , the state is a data structure that encapsulates all relevant information for the agent's execution. A key component of this state is the event stream, which is a chronological collection of past actions and observations, including the agent's own actions and user interactions (, instructions, feedback). However, the state extends beyond just the event stream. It also incorporates auxiliary information for agent's operation, such as the accumulative cost of LLM calls, metadata to track multi-agent delegation (sec:agent-delegation), and other execution-related parameters.

Actions. Inspired by CodeAct [Wang et al., 2024], connects an agent with the environment through a core set of general actions.

Actions  and  enable the agent to execute arbitrary Python code and bash commands inside the sandbox environment (, a securely isolated Linux operating system).

enables interaction with a web browser with a domain-specific language for browsing introduced by BrowserGym [Drouin et al., 2024].

The action space based on programming languages (PL) is powerful and flexible enough to perform any task with tools in different forms (, Python function, REST API, ) [Wang et al., 2024] while being reliable and easy to maintain.

This design is also compatible with existing tool-calling agents that require a list of pre-defined tools [Chase, 2022]. That is, users can easily define tools using PL supported in OpenDevin primitive actions (, write a Python function for calculator) and make those tools available to the agent through JSON-style function-calling experiences [Qin et al., 2023].

Moreover, the framework's powerful PL-based primitives further make it possible for the agents to create tools by themselves (, by generating Python functions [Yuan et al., 2023]) when directly relevant APIs to complete the task are unavailable.

Refer to sec:agent-skills for how these core PL-based actions can be composed into a diverse set of tools.

consists of 3 main components:
1) Agent abstraction where community can contribute different implementation of agents (sec:agent-abstraction) into an Agent Hub (sec:agenthub);
2) Event stream for tracking history of actions and observations;
3) Agent runtime to execute all agent actions into observations (sec:agent-runtime).

Observations. Observations describe environmental changes that the agent observes. It may or may not be caused by the agent's action:
It can be either 1) natural language messages from the user instructing agents to perform certain tasks, 2) the execution outcome of the agent's previous action (, code execution result, an accessibility tree [35], a screenshot of the web page, ).

Implement a New Agent.
The agent abstraction is designed to be simple yet powerful, allowing users to create and customize agents for various tasks easily.

The core of the agent abstraction lies in the  function, which takes the current state as input and generates an appropriate action based on the agent's logic. Simplified example code for the agent abstraction is illustrated in algo:agent-abstraction.

By providing this abstraction, allows the users to focus on defining desired agent behavior and logic without worrying about the low-level details of how actions are executed (sec:agent-runtime).

§.§ Agent Runtime: How Execution of Actions Results in Observations

Agent Runtime provides a general environment that equips the agent with an action space comparable to that of human software developers, enabling agents to tackle a wide range of software development and web-based tasks, including complex software development workflows, data analysis projects, web browsing tasks, and more.

It allows the agent to access a bash terminal to run code and command line tools, utilize a Jupyter notebook for writing and executing code on-the-fly, and interact with a web browser for web-based tasks (, information seeking).

Linux SSH Sandbox. For each task session, spins up a securely isolated docker container sandbox, where all the bash commands from the agent are executed.
connects to the sandbox through SSH protocol, executes arbitrary commands from the agent, and returns the execution results as observations to the agent.

A configurable workspace directory containing files the user wants the agent to work on is mounted into that secure sandbox for agents to access.

Jupyter IPython. The Linux sandbox also supports running an interactive Jupyter server, which can be used by the agent for interactive python code execution [19] and debugging.

Web Browser. implements a Chromium browser based on Playwright [47].
It interfaces with agents using a set of browser action primitives defined by BrowserGym [52, Drouin et al., 2024], such as navigation, clicking, typing, scrolling.
The full set of actions is detailed in sec:browsergym-actions.
After executing these actions, the browser runtime provides a rich set of observations about the current state of the browser, including HTML, DOM, accessibility tree [35], screenshot, opened tabs, .
These observations can be also augmented with configurable attributes that could allow agents to better understand web page observations, such as using a set-of-marks on screenshot [Yang et al., 2023, He et al., 2024], visible element marking, focused element, interactable element marking, in-viewport element filtering [Zhou et al., 2023], .

§.§ Agent Skills: The Extensible Agent-Computer Interface

SWE-Agent [Yang et al., 2024] highlights the importance of a carefully crafted Agent-Computer Interface (ACI, , specialized tools for particular tasks) in successfully solving complex tasks.

However, creating, maintaining, and distributing a wide array of tools can be a daunting engineering challenge, especially when we want to make these tools available to different implementations of agents (sec:agenthub).

To tackle these, we build an AgentSkills library, a toolbox designed to enhance the capabilities of agents, offering utilities not readily available through basic bash commands or python code.

Easy to create and extend tools. AgentSkills is designed as a Python package consisting of different utility functions (, tools) that are automatically imported into the Jupyter IPython environment (sec:agent-runtime).
The ease of defining a Python function as a tool lowers the barrier for community members to contribute new tools to the skill library.

The generality of Python packages also allows different agent implementations to easily leverage these tools through one of our core action  (sec:agent-abstraction).

Rigorously tested and maintained.

We follow best practices in software engineering and write extensive unit tests for tools in AgentSkills to ensure their reliability and usability.

Inclusion criteria and philosophy.
In the AgentSkills library, we do not aim to wrap every possible Python package and re-teach agents their usage (, LLM already knows  library that can read CSV file, so we don't need to re-create a tool that teaches the agent to read the same file format).

We only add a new skill when: (1) it is not readily achievable for LLM to write code directly (, edit code and replace certain lines), and/or (2) it involves calling an external model (, calling a speech-to-text model, or model for code editing [51]).

Currently supported skills.
AgentSkills library includes file editing utilities adapted from SWE-Agent [Yang et al., 2024] like , which allows modifying an existing file from a specified line; scrolling functions  and  for viewing a different part of files.

It also contains tools that support reading multi-modal documents, like  and  for extracting information from images using vision-language models (, GPT-4V) and reading text from PDFs, respectively.

A complete list of supported skills can be found in sec:supported-agentskills.

§.§ Agent Delegation: Cooperative Multi-agent Interaction

allows interactions between multiple agents as well. To this end, we use a special action type , which enables an agent to delegate a specific subtask to another agent.
For example, the generalist CodeActAgent, with limited support for web-browsing, can use  to delegate web browsing tasks to the specialized BrowsingAgent to perform more complex browsing activity (, navigate the web, click buttons, submit forms, ).

Comparison of different AI agent frameworks (sec:related_work).
Swe refers to `software engineering'.

Standardized tool library: if framework contains reusable tools for different agent implementations (sec:agent-skills);

Built-in sandbox & code execution: if it supports sandboxed execution of arbitrary agent-generated code;

Built-in web browser: if it provides agents access to a fully functioning web browser;

Human-AI collaboration: if it enables multi-turn human-AI collaboration (, human can interrupt the agent during task execution and/or provide additional feedback and instructions);

AgentHub: if it hosts implementations of various agents (sec:agenthub);

Evaluation Framework: if it offers systematic evaluation of implemented agents on challenging benchmarks (sec:evaluation);

Agent QC (Quality Control): if the framework integrates tests (sec:integration-tests) to ensure overall framework software quality.

User Interface
Tool Library
Built-in Sandbox
& Code Execution
Built-in Web

AutoGPT [Gravitas, 2023]     General

LangChains [Chase, 2022]     General             $^*$     $^*$

MetaGPT [Hong et al., 2023]     General

AutoGen [Wu et al., 2023]     General

AutoAgents [Chen et al., 2024]     General

Agents [Zhou et al., 2023]     General

Xagents [Team, 2023]     General

OpenAgents [Xie et al., 2023]     General

GPTSwarm [Zhuge et al., 2024]     General

AutoCodeRover [Zhang et al., 2024]     SWE

SWE-Agent [Yang et al., 2024]     SWE

* No native support. Third-party commercial options are available.

§ AGENTHUB: A HUB OF COMMUNITY-CONTRIBUTED AGENTS

Based on our agent abstraction (sec:agent-abstraction), supports a wide range of community-contributed agent implementations for end users to choose from and act as baselines for different agent tasks.

CodeAct Agent. CodeActAgent is the default generalist agent based on the CodeAct framework [Wang et al., 2024]. At each step, the agent can (1) converse to communicate with humans in natural language to ask for clarification, confirmation, , or (2) to perform the task by executing code (a.k.a., CodeAct), including executing bash commands, Python code, or browser-specific programming language (sec:agent-runtime). This general action space allows the agent (v1.5 and above) to perform various tasks, including editing files, browsing the web, running programs, etc.

Browsing Agent.
We implemented a generalist web agent called Browsing Agent, to serve as a simple yet effective baseline for web agent tasks.
The agent is similar to that in WebArena [Zhou et al., 2023], but with improved observations and actions, with only zero-shot prompting.
At each step, the agent prompts the LLM with the task description, browsing action space description, current observation of the browser using accessibility tree, previous actions, and an action prediction example with chain-of-thought reasoning.
The expected response from the LLM will contain  chain-of-thought reasoning plus the predicted next actions, including the option to finish the task and convey the result to the user.
Full prompts are in sec:browsing-agent-details.
It can be extended to create more capable web agents, or called by other agents through delegation (sec:agent-delegation) to enable browsing capability.

GPTSwarm Agent.
GPTSwarm [Zhuge et al., 2024] pioneers the use of optimizable graphs to construct agent systems, unifying language agent frameworks through modularity. Each node represents a distinct operation, while edges define collaboration and communication pathways. This design allows automatic optimization of nodes and edges, driving advancements in creating multi-agent systems.

Micro Agent(s).
In addition, enables the creation of micro agent, an agent specialized towards a particular task.

A micro agent re-uses most implementations from an existing generalist agent (e.g., CodeAct Agent).

It is designed to lower the barrier to agent development, where community members can share specialized prompts that work well for their particular use cases.

Without programming, a user can create a micro agent by providing the agent's name, description, the schema for its inputs and outputs, and optionally a specialized prompt (e.g., example demonstrations showing how to perform a particular task) that gear the generalist agent toward specific tasks, for example, the  for generating git commit messages, and the  for correcting typos across the entire code repository.

§ EVALUATION

Evaluation benchmarks in .

max width=0.58

Required Capability

SWE-Bench [Jimenez et al., 2024]     Fixing Github issues

HumanEvalFix [Muennighoff et al., 2024]     Fixing Bugs

BIRD [Li et al., 2023]     Text-to-SQL

BioCoder [Tang et al., 2024]     Bioinformatics coding

ML-Bench [Tang et al., 2024]     Machine learning coding

Gorilla APIBench [Patil et al., 2023]     Software API calling

ToolQA [Zhuang et al., 2024]     Tool use

WebArena [Zhou et al., 2023]     Goal planning & realistic browsing

MiniWoB++ [Liu et al., 2018]     Short trajectory on synthetic web

6*Misc. Assistance
GAIA [Mialon et al., 2023]     Tool-use, browsing, multi-modality

GPQA [Rein et al., 2023]     Graduate-level Google-proof Q&A

AgentBench [Liu et al., 2023]     Operating system interaction (bash)

MINT [Wang et al., 2024]     Multi-turn math and code problems

Entity Deduction Arena [Zhang et al., 2024]     State tracking & strategic planning

ProofWriter [Tafjord et al., 2021]     Deductive Logic Reasoning

To systematically track progress in building generalist digital agents, as listed in tab:od-benchmarks, we integrate established benchmarks into . These benchmarks cover software engineering, web browsing, and miscellaneous assistance.

In this section, we compare to open-source reproducible baselines that do not perform manual prompt engineering specifically based on the benchmark content.

Please note that we use `OD' as shorthand for for the rest of this section for brevity reasons.

§.§ Result Overview

In , our goal is to develop general digital agents capable of interacting with the world through software interfaces (as exemplified by the code actions described in sec:agent-abstraction). We recognize that a software agent should excel not only in code editing but also in web browsing and various auxiliary tasks, such as answering questions about code repositories or conducting online research.

tab:overall_perf showcases a curated set of evaluation results. While agents may not achieve top performance in every category, they are designed with generality in mind. Notably, the same CodeAct agent, without any modifications to its system prompt, demonstrates competitive performance across three major task categories: software development, web interaction, and miscellaneous tasks. This is particularly significant when compared to the baseline agents, which are typically designed and optimized for specific task categories.

Selected evaluation results for agents (sec:evaluation).
See tab:swe_bench (software), tab:web_browsing (web), tab:misc_assistance (miscellaneous assistance) for full results across benchmarks.

max width=

Software (sec:eval-swe)
Web (sec:eval_browsing)
2lMisc. (sec:eval_misc_assistance)

SWE-Bench Lite

[RGB]234, 234, 234 6cSoftware Engineering Agents

SWE-Agent [Yang et al., 2024]          $18.0$     $-$     $-$     $-$

AutoCodeRover [Zhang et al., 2024]          $19.0$     $-$     $-$     $-$

Aider [13]      &      $26.3$     $-$     $-$     $-$

Moatless Tools [85]          $26.7$     $-$     $-$     $-$

Agentless [Xia et al., 2024]          $27.3$     $-$     $-$     $-$

[RGB]234, 234, 234 6cWeb Browsing Agents

Lemur [Xu et al., 2023]          $-$     $5.3$     $-$     $-$

Patel et al., 2024     Trained 72B w/ synthetic data     $-$     $9.4$     $-$     $-$

AutoWebGLM [Lai et al., 2024]     Trained 7B w/ human/agent annotation     $-$     $18.2$     $-$     $-$

Auto Eval & Refine [Pan et al., 2024]     GPT-4 + Reflexion w/ GPT-4V     $-$     $20.2$     $-$     $-$

WebArena Agent [Zhou et al., 2023]          $-$     $14.4$      $-$     $-$

[RGB]234, 234, 234 6cMisc. Assistance Agents

1*AutoGPT [Gravitas, 2023]          $-$     $-$     $-$     $13.2$

3*Few-shot Prompting +

Chain-of-Thought [Rein et al., 2023]
$-$     $-$     $28.1$     $-$

$-$     $-$     $29.6$     $-$

$-$     $38.8$     $-$

[RGB]234, 234, 234 6cOpenDevin Agents

$6.3$     $8.3$     $-$     $-$

$22.0$     $14.5$     $^{*}53.1$     $-$

$26.0$     $15.3$     $52.0$     $-$

GPTSwarm           $-$     $-$     $-$     $32.1$

* Numbers are reported from CodeActAgent .

§.§ Software Engineering

Next, we report results specifically for software engineering benchmarks in tab:swe_bench.

§.§.§ SWE-Bench

SWE-bench [Jimenez et al., 2024] is designed to assess agents' abilities in solving real-world GitHub issues, such as bug reports or feature requests.

The agent interacts with the repository and attempts to fix the issue provided through file editing and code execution.

The agent-modified code repository is tested against a test suite incorporating new tests added from human developers' fixes for the same issue.

Each test instance accompanies a piece of “hint text” that consists of natural language suggestions for how to solve the problem. Throughout this paper, we report all results without using hint text.

A canonical subset, SWE-bench Lite, is created to facilitate accessible and efficient testing. We default to use this subset for testing for cost-saving consideration.[Running the complete set of 2294 instances costs $6.9k, using a conservative estimate of $3 per instance.]

Result. As shown in tab:swe_bench, our most recent version of CodeActAgent v1.8 generalist, using , achieves a competitive resolve rate of $26\%$ compared to other open-source agents specialized for software development.

We also evaluated CodeActAgent v1.8 using . While it only solves $6.3\%$ of the problems, it does so at less than $1\%$ of the cost compared to other models.

Software Engineering evaluation results (sec:eval-swe).

max width=

Success Rate (%)
$ Avg. Cost

[RGB]234, 234, 234 4cSWE-Bench Lite [Jimenez et al., 2024], 300 instances, w/o Hint

SWE-Agent [Yang et al., 2024]          $18.0$     $1.67$

AutoCodeRover [Zhang et al., 2024]          $19.0$     $-$

Aider [13]      &      $26.3$     $-$

OD CodeActAgent v1.5, Generalist.          $16.7$     $1.50$

3*OD CodeActAgent v1.8, Generalist.
$7.0$     $0.01$

$22.0$     $1.72$

$26.0$     $1.10$

[RGB]234, 234, 234 4cHumanEvalFix [Muennighoff et al., 2024], 164 instances

4*Prompting, 0-shot [Muennighoff et al., 2024, Muennighoff et al., 2023, Workshop et al., 2023, Lozhkov et al., 2024, DeepSeek-AI et al., 2024, Zhuo et al., 2024]
$16.6$      $-$

$30.4$      $-$

$47.5$     $-$

$48.6$     $-$

SWE-agent, 1-shot [Yang et al., 2024]          $87.7$     $-$

2*OD CodeActAgent v1.5, Generalist, 0-shot.
$20.1$      $0.11$

$79.3$     $0.14$

[RGB]234, 234, 234 4cBIRD [Li et al., 2023], 300 instances

2*Prompting, 0-shot          $18.3$     -

$31.3$     -

2*OD CodeActAgent v1.5, Generalist.
$42.7$     $0.19$

$47.3$     $0.11$

[RGB]234, 234, 234 4cML-Bench [Tang et al., 2024], 68 instances

2*prompting + BM25, 0-shot          $11.0$     -

$22.1$     -

$26.2$     -

SWE-Agent [Yang et al., 2024]          $42.6$     $1.91$

Aider [13]          $64.4$     -

3*OD CodeActAgent v1.5, Generalist.
$76.5$     $0.25$

$58.8$     $1.22$

$13.2$     $0.12$

[RGB]234, 234, 234
4cBioCoder (Python) [Tang et al., 2024], 157 instances

2*prompting, 0-shot          $11.0$     -

$12.7$     -

1*OD CodeActAgent v1.5, Generalist.
$27.5$     $0.13$

[RGB]234, 234, 234 4cBioCoder (Java) [Tang et al., 2024], 50 instances

2*prompting, 0-shot          $4.1$     -

$6.4$     -

1*OD CodeActAgent v1.5, Generalist.
$44.0$     $0.11$

[RGB]234, 234, 234 4cGorilla APIBench [Patil et al., 2023], 1775 instances

3*Prompting, 0-shot [Touvron et al., 2023, Anthropic, 2022, OpenAI et al., 2024, OpenAI, 2024]

$8.7$     -

$21.2$     -

$29.7$     -

Gorilla, finetuned for API calls, 0-shot [Patil et al., 2023, Touvron et al., 2023]          75.0     -

2*OD CodeActAgent v1.5, Generalist.
$21.6$      $0.002$

$36.4$     $0.04$

[RGB]234, 234, 234 4cToolQA [Zhuang et al., 2024], 800 instances

3*Prompting, 0-shot [OpenAI, 2024, Kojima et al., 2022, Wei et al., 2022, Lu et al., 2024]
$5.1$     -

$5.6$     -

$10.6$     -

2*ReAct, 0-shot [Yao et al., 2023, OpenAI, 2024]
$36.8$     -

$43.1$     -

2*OD CodeActAgent v1.5, Generalist.
$2.3$     $0.03$

$47.2$     $0.91$

§.§.§ HumanEvalFix

HumanEvalFix [Muennighoff et al., 2024] tasks agents to fix a bug in a provided function with the help of provided test cases. The bugs are created to ensure one or more test cases fail. We focus on the Python subset of the benchmark and allow models to solve the bugs by self-debug over multiple turns, incorporating feedback from test execution. We follow the setup from Muennighoff et al., 2024 using pass@k [Chen et al., 2021].

Results. In tab:swe_bench, CodeActAgent successfully fixes $79.3\%$ of bugs in the Python split. This is significantly better than all non-agentic approaches, almost doubling the performance of  [Lozhkov et al., 2024, Li et al., 2023].

While SWE-Agent achieves $87.7\%$, Yang et al., 2024 provides the model a full demonstration of a successful sample trajectory fixing one of the bugs in the test dataset (“1-shot”), whereas our evaluation of is 0-shot.

As HumanEvalFix has been created by humans and all bugs carefully validated, achieving $100\%$ on this benchmark is entirely feasible, which we seek to do in future iterations of .

§.§.§ ML-Bench

ML-Bench [Tang et al., 2024]
evaluates agents' ability to solve machine learning tasks across 18 GitHub repositories.

The benchmark comprises 9,641 tasks spanning 169 diverse ML problems, requiring agents to generate bash scripts or Python code in response to user instructions.

In the sandbox environment, agents can iteratively execute commands and receive feedback, allowing them to understand the repository context and fulfill user requirements progressively.

Following the setup from the original paper, we perform agent evaluation on the quarter subset of ML-Bench.

Results. As shown in Table <ref>, agents with GPT-4o achieve the highest success rate of $76.47\%$ on ML-Bench, outperforming SWE-Agent ($42.64\%$).

Performance drops with less capable models. These results demonstrate the effectiveness of agent in complex ML tasks. We notice that agents show potential in reducing hallucination and syntax errors compared to non-agent approaches in the ML-LLM-Bench settings [Tang et al., 2024].

§.§.§ Gorilla APIBench

Gorilla APIBench [Patil et al., 2023] evaluates agents' abilities to use APIs. it incorporates tasks on TorchHub, TensorHub, and HuggingFace. During the evaluation, models are given a question related to API usage, such as "identify an API capable of converting spoken language in a recording to text." Correctness is evaluated based on whether the model’s API call is in the correct domain.

Results. As shown in Table <ref>, using GPT-4o, with a success rate of $36.4\%$, outperforms baselines not specifically finetuned for API calling. While Gorilla shows higher performance on APIBench, Patil et al., 2023 finetune this model for API calling in particular.

§.§.§ ToolQA

ToolQA [Zhuang et al., 2024] evaluates agents' abilities to use external tools. This benchmark includes tasks on various topics like flight status, coffee price, Yelp data, and Airbnb data, requiring the use of various tools such as text tools, database tools, math tools, graph tools, code tools, and system tools.
It features two levels: easy and hard. Easy questions focus more on single tool usage, while hard questions emphasize reasoning. For evaluation, the easy subset is used to assess tool use capabilities.

Results. Compared to all baselines, with GPT-4o shows the highest performance. We notice that agents perform better on tasks related to CSV and database tool usage but requires improvements on math and calculator tool usage.

§.§.§ BioCoder

BioCoder [Tang et al., 2024] is a repository-level code generation benchmark that evaluates agents' performance on bioinformatics-related tasks, specifically the ability to retrieve and accurately utilize context. The original prompts contain the relevant context of the code; however, in this study, we have removed them to demonstrate the capability of to perform context retrieval, self-debugging, and reasoning in multi-turn interactions. BioCoder consists of 157 Python and 50 Java functions, each targeting a specific area in bioinformatics, such as proteomics, genomics, and other specialized domains. The benchmark targets real-world code by generating code in existing repositories where the relevant code has been masked out.

Results. Table <ref> shows that , using GPT-4o, achieves a success rate of $44.0\%$. This outperforms all prompting-based non-agent baselines, with GPT-4 alone only achieving $6.4\%$.
BioCoder proves to be a particularly challenging benchmark for non-agent methods, as they did not incorporate any repository-level retrieval methods, making these models lack access to crucial repo-level information such as global variables and function declarations.

§.§.§ BIRD

BIRD [Li et al., 2023] is a benchmark for text-to-SQL tasks (, translate natural language into executable SQL) aimed at realistic and large-scale database environments.

We select 300 samples from the dev set to integrate into and evaluate on execution accuracy.

Additionally, we extend the setting by allowing the agent to engage in multi-turn interactions to arrive at the final SQL query, enabling it to correct historical results by observing the results of SQL execution.

Results. As shown in Table <ref>, with GPT-4o achieves an execution accuracy of $47.3\%$ on a subset of BIRD, showcasing the potential of as a SQL agent.
The result outperforms approaches utilizing prompting with code LLMs, such as CodeLlama-7B-Instruct ($18.3\%$) and CodeQwen-7B-Chat [Bai et al., 2023] ($31.3\%$).

§.§ Web Browsing

Web Browsing Evaluation Results (sec:eval_browsing).

max width=

Agent     Model     Success Rate  (%)     $ Avg. Cost

[RGB]234, 234, 234 4cWebArena [Zhou et al., 2023], 812 instances

Lemur [Xu et al., 2023]          $5.3$     $-$

Patel et al., 2024     Trained 72B with self-improvement synthetic data     $9.4$     $-$

AutoWebGLM [Lai et al., 2024]     Trained 7B with human/agent hybrid annotation     $18.2$     $-$

Auto Eval & Refine [Pan et al., 2024]     GPT-4 + Reflexion w/ GPT-4V reward model     $20.2$     $-$

4*WebArena Agent [Zhou et al., 2023]
$3.3$     $-$

$7.0$     $-$

$6.2$     $-$

$14.4$      $-$

4*OD BrowsingAgent v1.0
$5.2$    $0.02$

$8.5$    $0.01$

$14.8$    $0.15$

$15.5$    $0.10$

3*OD CodeActAgent v1.8, Generalist.
via delegation to BrowsingAgent v1.0
$8.3$     $-$

$14.5$     $-$

$15.3$    $-$

[RGB]234, 234, 234 4cMiniWoB++ [Liu et al., 2018], 125 environments

Workflow Guided Exploration [Liu et al., 2018]     Trained specialist model with environment exploration     $34.6$     $-$

CC-NET [Humphreys et al., 2022]     Trained specialist model with RL and human annotated BC     $91.1$     $-$

2*OD BrowsingAgent v1.0
$27.2$     $0.01$

$40.8$     $0.05$

OD CodeActAgent v1.8, Generalist.
via delegation to BrowsingAgent v1.0
$39.8$     $-$

We report evaluation results for web browsing benchmarks in tab:web_browsing.

§.§.§ WebArena

WebArena [Zhou et al., 2023] is a self-hostable, execution-based web agent benchmark that allows agents to freely choose which path to take in completing their given tasks.
WebArena comprises 812 human-curated task instructions across various domains, including shopping, forums, developer platforms, and content management systems.

Each task is paired with a handwritten test case that verifies agent success, , by checking the status of a web page element against a reference or the textual answer returned by the agent.

Results. From tab:web_browsing, we can see that our BrowsingAgent achieves competitive performance among agents that use LLMs with domain-general prompting techniques.

Some agents (e.g., AutoWebGLM) require manual effort tailored to the WebArena task domain.
This showcases the performance trade-off between a generalist vs. a domain-tailored specialist web agent, and we opt for a more general browsing agent as a building block in .

§.§.§ MiniWoB

MiniWoB++ [Liu et al., 2018] is an interactive web benchmark, with built-in reward functions.
The tasks are synthetically initialized on 125 different minimalist web interfaces.
Unlike WebArena, tasks are easier without page changes, require fewer steps, and provide low-level step-by-step task directions.

Note that it contains a portion of environments that require vision capability to tackle successfully, and many existing work choose to focus only on a subset of the tasks [Kim et al., 2024, Li et al., 2023, Shaw et al., 2023]. Still, we report the performance on the full set and only include baselines that are evaluated on the full set.

Results. From tab:web_browsing we see that our generalist BrowsingAgent finishes nearly half of the tasks without any adaptation on the environment.
However, due to the synthetic nature of MiniWoB++, the state-of-the-art agents explicitly trained for the environments with reinforcement learning and/or human behavior cloning have almost saturated the performance.

This shows an even bigger trade-off between generalist and specialist agents than on the more general WebArena benchmark.

§.§ Miscellaneous Assistance

Results for miscellaneous assistance benchmarks are reported in tab:misc_assistance. In particular, we report results for:

§.§.§ GAIA

GAIA [Mialon et al., 2023] evaluates agents' general task-solving skills, covering different real-world scenarios.

It requires various agent capabilities, including reasoning, multi-modal understanding, web browsing, and coding.

GAIA consists of 466 curated tasks across three levels.

Setting up GAIA is traditionally challenging due to the complexity of integrating various tools with the agent, but
's infrastructure (, runtime sec:agent-runtime, tool library sec:agent-skills) simplifies the integration significantly.

Results. In our experiments, we achieved a score of $32.1$ on the GAIA (level-1 val), significantly improving over the original AutoGPT [Gravitas, 2023]. GAIA is sensitive to the support of multimodal input and web navigation skills, suggesting further score improvements as OpenDevin's infrastructure improves.

§.§.§ GPQA

GPQA [Rein et al., 2023] evaluates agents' ability for coordinated tool use when solving challenging graduate-level problems.

It consists of 448 curated and difficult multiple-choice questions in biology, physics, and chemistry.

Tool use (, python) and web search are often useful to assist agents in answering these questions since they provide accurate calculations that LLMs are often incapable of and access to information outside of the LLM's parametric knowledge base.

Results. Results are shown in Tab. <ref> and <ref>. We observe that OpenDevin's integrated for supporting diverse tool use (, python for calculations) as well as web-search (for searching relevant facts) allows the resulting agent to better solve complex multi-step problems, surpassing the prior state-of-the-art by 9.6% and 12.3% on the main and diamond subsets respectively on GPQA [Rein et al., 2023].

miscellaneous assistance evaluation results (sec:eval_misc_assistance).

max width=

Agent     Model     Success Rate (%)     $ Avg. Cost

[RGB]234, 234, 234 4cGAIA [Mialon et al., 2023], L1 validation set, 53 instances

1*AutoGPT [Gravitas, 2023]          $13.2$     $-$

2*OD GPTSwarm v1.0
$30.2$     $0.110$

$32.1$     $0.050$

[RGB]234, 234, 234 4cGPQA
[Rein et al., 2023], diamond set, 198 instances (refer to sec:gpqa-additional, tab:gpqa for other subsets)

2*Human [Rein et al., 2023]
Expert human     $81.3$     $-$

Non-expert human     $21.9$     $-$

3*Few-shot Prompting + Chain-of-Thought [Rein et al., 2023]
$28.1$     $-$

$29.6$     $-$

$38.8$     $-$

3*OD CodeActAgent v1.5
$27.9$     $0.012$

$51.8$     $0.501$

$53.1$     $0.054$

1*OD CodeActAgent v1.8
$52.0$     $0.065$

[RGB]234, 234, 234 4cAgentBench [Liu et al., 2023], OS (bash) subset, 144 instances

2*AgentBench Baseline Agent [Liu et al., 2023]
$42.4$     $-$

$32.6$     $-$

2*OD CodeActAgent v1.5, Generalist.
$57.6$     $0.085$

$11.8$     $0.006$

[RGB]234, 234, 234 4cMINT [Wang et al., 2024]:  subset, 225 instances

1*MINT Baseline Agent
$65.8$     $-$

2*OD CodeActAgent v1.5, Generalist.
$77.3$     $0.070$

$33.8$     $0.048$

[RGB]234, 234, 234 4cMINT [Wang et al., 2024]:  subset, 136 instances

1*MINT Baseline Agent
$59.6$     $-$

2*OD CodeActAgent v1.5, Generalist.
$50.0$     $0.087$

$5.2$     $0.030$

[RGB]234, 234, 234 4cProofWriter [Tafjord et al., 2021], 600 instances

1*Few-shot Prompting + Chain-of-Thought [Pan et al., 2023]
$68.1$     $-$

1*Logic-LM [Pan et al., 2023]
$79.6$     $-$

1*OD CodeActAgent v1.5, Generalist.
$78.8$     $-$

[RGB]234, 234, 234 4cEntity Deduction Arena [Zhang et al., 2024], 200 instances

Human     -     $21.0$     $-$

2*Zero-shot Prompting [Zhang et al., 2024]
$40.0$     $-$

$27.0$     $-$

2*OD CodeActAgent v1.5, Generalist.
$38.0$     $-$

$24.0$     $-$

§.§.§ AgentBench

AgentBench [Liu et al., 2023] evaluates agents' reasoning and decision-making abilities in a multi-turn, open-ended generation setting.

We selected the code-grounded operating system (OS) subset with 144 tasks.

Agents from interact directly with the task-specific OS using bash commands in a multi-turn manner, combining interaction and reasoning to automate task completion.

In our experiments (tab:misc_assistance), CodeActAgent v1.5 achieves a score of $57.6\%$ on the AgentBench using , outperforming the $42.4\%$ baseline using  from the original paper.

Interestingly, when employing weaker models such as , agents generally underperform compared to the original baseline agents. This finding suggests that generalist agents, like those implemented in , require a certain threshold of foundation model capability - particularly instruction following - to function effectively.

§.§.§ MINT

MINT [Wang et al., 2024] is a benchmark designed to evaluate agents' ability to solve challenging tasks through multi-turn interactions using tools and natural language feedback simulated by GPT-4.
We use coding and math subsets used in Eurus [Yuan et al., 2024] for evaluation.
We follow the same setting as the original paper and allows the agent to interact up-to five iterations with two chances to propose solutions.

Results. As shown in Tab. <ref>), agents achieve comparable performance to the default agent in the original benchmark, with a performance improvement in the  subset.

§.§.§ ProofWriter

ProofWriter [Tafjord et al., 2021] is a synthetic dataset created to assess deductive reasoning abilities of LLMs.
Same as Logic-LM [Pan et al., 2023], we focus on the most challenging subset, which contains 600 instances requiring 5-hop reasoning. To minimize the impact of potential errors in semantic parsing, we use the logical forms provided by Logic-LM.

Results. In Tab. <ref>, agent employs a symbolic solver to solve the task, achieving performance comparable to the state-of-the-art neuro-symbolic model (, Logic-LM) [Pan et al., 2023].

§.§.§ Entity Deduction Arena

Entity Deduction Arena (EDA) [Zhang et al., 2024] evaluates agents' ability to deduce unknown entities through strategic questioning, akin to the 20 Questions game.

This benchmark tests the agent's state tracking, strategic planning, and inductive reasoning capabilities over multi-turn conversations. We evaluate two datasets “Things” and “Celebrities”, each comprising 100 instances, and report the average success rate over these two datasets.

Results. Tab. <ref> shows that CodeActAgent yields comparable performance comparing with the results reported in the original paper [Zhang et al., 2024].

§ CONCLUSION

We introduce , a community-driven platform that enables the development of agents that interact with the world through software interfaces.

By providing a powerful interaction mechanism, a safe sandboxed environment, essential agent skills, multi-agent collaboration capabilities, and a comprehensive evaluation framework, accelerates research innovations and real-world applications of agentic AI systems.

Despite challenges in developing safe and reliable agents (sec:limitation-future-work), we are excited about our vibrant community and look forward to 's continued evolution.

We extend our heartfelt gratitude to all contributors who have made possible. Over 160 individuals have made more than 1,300 contributions[A full list of contributors can be found at <https://github.com/OpenDevin/OpenDevin/graphs/contributors>.], demonstrating the power of collaborative development.

We are deeply appreciative of everyone[Including our stargazers at <https://github.com/OpenDevin/OpenDevin/stargazers>] who has participated in discussions, raised issues, suggested improvements, and contributed code or documentation.

[Ahn et al., 2022]
Michael Ahn, Anthony Brohan, Noah Brown, Yevgen Chebotar, Omar Cortes, Byron David, Chelsea Finn, Chuyuan Fu, Keerthana Gopalakrishnan, Karol Hausman, et al.
Do as i can, not as i say: Grounding language in robotic affordances.
arXiv preprint arXiv:2204.01691, 2022.

[Anthropic, 2022]
https://www.anthropic.com/index/introducing-claude Anthropic.
Claude, 2022.
URL <https://www.anthropic.com/index/introducing-claude>.

[Bai et al., 2023]
Jinze Bai, Shuai Bai, Yunfei Chu, Zeyu Cui, Kai Dang, Xiaodong Deng, Yang Fan, Wenbin Ge, Yu Han, Fei Huang, Binyuan Hui, Luo Ji, Mei Li, Junyang Lin, Runji Lin, Dayiheng Liu, Gao Liu, Chengqiang Lu, Keming Lu, Jianxin Ma, Rui Men, Xingzhang Ren, Xuancheng Ren, Chuanqi Tan, Sinan Tan, Jianhong Tu, Peng Wang, Shijie Wang, Wei Wang, Shengguang Wu, Benfeng Xu, Jin Xu, An Yang, Hao Yang, Jian Yang, Shusheng Yang, Yang Yao, Bowen Yu, Hongyi Yuan, Zheng Yuan, Jianwei Zhang, Xingxuan Zhang, Yichang Zhang, Zhenru Zhang, Chang Zhou, Jingren Zhou, Xiaohuan Zhou, and Tianhang Zhu.
Qwen technical report.
arXiv preprint arXiv:2309.16609, 2023.

[Boiko et al., 2023]
Daniil A Boiko, Robert MacKnight, Ben Kline, and Gabe Gomes.
Autonomous chemical research with large language models.
Nature, 6240 (7992):0 570–578, 2023.

[Chang et al., 2024]
Yupeng Chang, Xu Wang, Jindong Wang, Yuan Wu, Linyi Yang, Kaijie Zhu, Hao Chen, Xiaoyuan Yi, Cunxiang Wang, Yidong Wang, et al.
A survey on evaluation of large language models.
ACM Transactions on Intelligent Systems and Technology, 150 (3):0 1–45, 2024.

[Chase, 2022]
Harrison Chase.
LangChain, October 2022.
URL <https://github.com/langchain-ai/langchain>.

[Chen et al., 2024]
Guangyao Chen, Siwei Dong, Yu Shu, Ge Zhang, Jaward Sesay, Börje F. Karlsson, Jie Fu, and Yemin Shi.
Autoagents: A framework for automatic agent generation, 2024.

[Chen et al., 2021]
Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde de Oliveira Pinto, Jared Kaplan, Harri Edwards, Yuri Burda, Nicholas Joseph, Greg Brockman, et al.
Evaluating large language models trained on code.
arXiv preprint arXiv:2107.03374, 2021.

[9]
Introducing devin, the first ai software engineer.
URL <https://www.cognition.ai/blog/introducing-devin>.

[Cui et al., 2023]
Jiaxi Cui, Zongjian Li, Yang Yan, Bohua Chen, and Li Yuan.
Chatlaw: Open-source legal large language model with integrated external knowledge bases, 2023.

[DeepSeek-AI et al., 2024]
DeepSeek-AI, Qihao Zhu, Daya Guo, Zhihong Shao, Dejian Yang, Peiyi Wang, Runxin Xu, Y. Wu, Yukun Li, Huazuo Gao, Shirong Ma, Wangding Zeng, Xiao Bi, Zihui Gu, Hanwei Xu, Damai Dai, Kai Dong, Liyue Zhang, Yishi Piao, Zhibin Gou, Zhenda Xie, Zhewen Hao, Bingxuan Wang, Junxiao Song, Deli Chen, Xin Xie, Kang Guan, Yuxiang You, Aixin Liu, Qiushi Du, Wenjun Gao, Xuan Lu, Qinyu Chen, Yaohui Wang, Chengqi Deng, Jiashi Li, Chenggang Zhao, Chong Ruan, Fuli Luo, and Wenfeng Liang.
Deepseek-coder-v2: Breaking the barrier of closed-source models in code intelligence, 2024.
URL <https://arxiv.org/abs/2406.11931>.

[Drouin et al., 2024]
Alexandre Drouin, Maxime Gasse, Massimo Caccia, Issam H. Laradji, Manuel Del Verme, Tom Marty, Léo Boisvert, Megh Thakkar, Quentin Cappart, David Vazquez, Nicolas Chapados, and Alexandre Lacoste.
Workarena: How capable are web agents at solving common knowledge work tasks?, 2024.

[13]
Paul Gauthier.
How aider scored sota 26.3% on swe bench lite | aider.
Accessed: 2024-06-05.

[Gravitas, 2023]
Significant Gravitas.
Auto-gpt: An autonomous gpt-4 experiment, 2023.
URL https://github. com/Significant-Gravitas/Auto-GPT, 2023.

[He et al., 2024]
Hongliang He, Wenlin Yao, Kaixin Ma, Wenhao Yu, Yong Dai, Hongming Zhang, Zhenzhong Lan, and Dong Yu.
Webvoyager: Building an end-to-end web agent with large multimodal models.
arXiv preprint arXiv:2401.13919, 2024.

[Hong et al., 2023]
Sirui Hong, Mingchen Zhuge, Jonathan Chen, Xiawu Zheng, Yuheng Cheng, Jinlin Wang, Ceyao Zhang, Zili Wang, Steven Ka Shing Yau, Zijuan Lin, et al.
Metagpt: Meta programming for a multi-agent collaborative framework.
In The Twelfth International Conference on Learning Representations, 2023.

[Huang et al., 2024]
Dong Huang, Qingwen Bu, Jie M. Zhang, Michael Luck, and Heming Cui.
Agentcoder: Multi-agent-based code generation with iterative testing and optimisation, 2024.

[Humphreys et al., 2022]
Peter C Humphreys, David Raposo, Tobias Pohlen, Gregory Thornton, Rachita Chhaparia, Alistair Muldal, Josh Abramson, Petko Georgiev, Adam Santoro, and Timothy Lillicrap.
A data-driven approach for learning to control computers.
In International Conference on Machine Learning, pages 9466–9482. PMLR, 2022.

[19]
Jupyter and the future of IPython — IPython.
URL <https://ipython.org>.

[Jiang et al., 2024]
Albert Q Jiang, Alexandre Sablayrolles, Antoine Roux, Arthur Mensch, Blanche Savary, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Emma Bou Hanna, Florian Bressand, et al.
Mixtral of experts.
arXiv preprint arXiv:2401.04088, 2024.

[Jimenez et al., 2024]
Carlos E Jimenez, John Yang, Alexander Wettig, Shunyu Yao, Kexin Pei, Ofir Press, and Karthik R Narasimhan.
SWE-bench: Can Language Models Resolve Real-world Github Issues?
In The Twelfth International Conference on Learning Representations, 2024.
URL <https://openreview.net/forum?id=VTF8yNQM66>.

[Kim et al., 2024]
Geunwoo Kim, Pierre Baldi, and Stephen McAleer.
Language models can solve computer tasks.
Advances in Neural Information Processing Systems, 36, 2024.

[Kojima et al., 2022]
Takeshi Kojima, Shixiang Shane Gu, Machel Reid, Yutaka Matsuo, and Yusuke Iwasawa.
Large language models are zero-shot reasoners.
Advances in neural information processing systems, 35:0 22199–22213, 2022.

[Lai et al., 2024]
Hanyu Lai, Xiao Liu, Iat Long Iong, Shuntian Yao, Yuxuan Chen, Pengbo Shen, Hao Yu, Hanchen Zhang, Xiaohan Zhang, Yuxiao Dong, et al.
Autowebglm: Bootstrap and reinforce a large language model-based web navigating agent.
arXiv preprint arXiv:2404.03648, 2024.

[Leung and White, 1990]
Hareton K. N. Leung and Lee J. White.
A study of integration testing and software regression at the integration level.
In Proceedings of the Conference on Software Maintenance, ICSM 1990, San Diego, CA, USA, 26-29 November, 1990, pages 290–301. IEEE, 1990.
URL <https://doi.org/10.1109/ICSM.1990.131377>.

[Li et al., 2023]
Guohao Li, Hasan Abed Al Kader Hammoud, Hani Itani, Dmitrii Khizbullin, and Bernard Ghanem.
Camel: Communicative agents for" mind" exploration of large scale language model society.
arXiv preprint arXiv:2303.17760, 2023a.

[Li et al., 2023]
Jinyang Li, Binyuan Hui, GE QU, Jiaxi Yang, Binhua Li, Bowen Li, Bailin Wang, Bowen Qin, Ruiying Geng, Nan Huo, Xuanhe Zhou, Chenhao Ma, Guoliang Li, Kevin Chang, Fei Huang, Reynold Cheng, and Yongbin Li.
Can LLM already serve as a database interface? a BIg bench for large-scale database grounded text-to-SQLs.
In Thirty-seventh Conference on Neural Information Processing Systems Datasets and Benchmarks Track, 2023b.

[Li et al., 2023]
Raymond Li, Loubna Ben Allal, Yangtian Zi, Niklas Muennighoff, Denis Kocetkov, Chenghao Mou, Marc Marone, Christopher Akiki, Jia Li, Jenny Chim, Qian Liu, Evgenii Zheltonozhskii, Terry Yue Zhuo, Thomas Wang, Olivier Dehaene, Mishig Davaadorj, Joel Lamy-Poirier, João Monteiro, Oleh Shliazhko, Nicolas Gontier, Nicholas Meade, Armel Zebaze, Ming-Ho Yee, Logesh Kumar Umapathi, Jian Zhu, Benjamin Lipkin, Muhtasham Oblokulov, Zhiruo Wang, Rudra Murthy, Jason Stillerman, Siva Sankalp Patel, Dmitry Abulkhanov, Marco Zocca, Manan Dey, Zhihan Zhang, Nour Fahmy, Urvashi Bhattacharyya, Wenhao Yu, Swayam Singh, Sasha Luccioni, Paulo Villegas, Maxim Kunakov, Fedor Zhdanov, Manuel Romero, Tony Lee, Nadav Timor, Jennifer Ding, Claire Schlesinger, Hailey Schoelkopf, Jan Ebert, Tri Dao, Mayank Mishra, Alex Gu, Jennifer Robinson, Carolyn Jane Anderson, Brendan Dolan-Gavitt, Danish Contractor, Siva Reddy, Daniel Fried, Dzmitry Bahdanau, Yacine Jernite, Carlos Muñoz Ferrandis, Sean Hughes, Thomas Wolf, Arjun Guha, Leandro von
Werra, and Harm de Vries.
Starcoder: may the source be with you!, 2023c.
URL <https://arxiv.org/abs/2305.06161>.

[Li et al., 2023]
Tao Li, Gang Li, Zhiwei Deng, Bryan Wang, and Yang Li.
A zero-shot language agent for computer control with structured reflection.
arXiv preprint arXiv:2310.08740, 2023d.

[Liu et al., 2018]
Evan Zheran Liu, Kelvin Guu, Panupong Pasupat, Tianlin Shi, and Percy Liang.
Reinforcement learning on web interfaces using workflow-guided exploration.
In International Conference on Learning Representations (ICLR), 2018.
URL <https://arxiv.org/abs/1802.08802>.

[Liu et al., 2023]
Xiao Liu, Hao Yu, Hanchen Zhang, Yifan Xu, Xuanyu Lei, Hanyu Lai, Yu Gu, Hangliang Ding, Kaiwen Men, Kejuan Yang, Shudan Zhang, Xiang Deng, Aohan Zeng, Zhengxiao Du, Chenhui Zhang, Sheng Shen, Tianjun Zhang, Yu Su, Huan Sun, Minlie Huang, Yuxiao Dong, and Jie Tang.
Agentbench: Evaluating llms as agents.
arXiv preprint arXiv: 2308.03688, 2023.

[Lozhkov et al., 2024]
Anton Lozhkov, Raymond Li, Loubna Ben Allal, Federico Cassano, Joel Lamy-Poirier, Nouamane Tazi, Ao Tang, Dmytro Pykhtar, Jiawei Liu, Yuxiang Wei, Tianyang Liu, Max Tian, Denis Kocetkov, Arthur Zucker, Younes Belkada, Zijian Wang, Qian Liu, Dmitry Abulkhanov, Indraneil Paul, Zhuang Li, Wen-Ding Li, Megan Risdal, Jia Li, Jian Zhu, Terry Yue Zhuo, Evgenii Zheltonozhskii, Nii Osae Osae Dade, Wenhao Yu, Lucas Krauß, Naman Jain, Yixuan Su, Xuanli He, Manan Dey, Edoardo Abati, Yekun Chai, Niklas Muennighoff, Xiangru Tang, Muhtasham Oblokulov, Christopher Akiki, Marc Marone, Chenghao Mou, Mayank Mishra, Alex Gu, Binyuan Hui, Tri Dao, Armel Zebaze, Olivier Dehaene, Nicolas Patry, Canwen Xu, Julian McAuley, Han Hu, Torsten Scholak, Sebastien Paquet, Jennifer Robinson, Carolyn Jane Anderson, Nicolas Chapados, Mostofa Patwary, Nima Tajbakhsh, Yacine Jernite, Carlos Muñoz Ferrandis, Lingming Zhang, Sean Hughes, Thomas Wolf, Arjun Guha, Leandro von Werra, and Harm de Vries.
Starcoder 2 and the stack v2: The next generation, 2024.
URL <https://arxiv.org/abs/2402.19173>.

[Lu et al., 2024]
Pan Lu, Baolin Peng, Hao Cheng, Michel Galley, Kai-Wei Chang, Ying Nian Wu, Song-Chun Zhu, and Jianfeng Gao.
Chameleon: Plug-and-play compositional reasoning with large language models.
Advances in Neural Information Processing Systems, 36, 2024.

[Mialon et al., 2023]
Grégoire Mialon, Clémentine Fourrier, Craig Swift, Thomas Wolf, Yann LeCun, and Thomas Scialom.
GAIA: a benchmark for general AI assistants.
CoRR, abs/2311.12983, 2023.
URL <https://doi.org/10.48550/arXiv.2311.12983>.

[35]
Accessibility tree - MDN Web Docs Glossary: Definitions of Web-related terms | MDN.
URL <https://developer.mozilla.org/en-US/docs/Glossary/Accessibility_tree>.

[Muennighoff et al., 2023]
Niklas Muennighoff, Thomas Wang, Lintang Sutawika, Adam Roberts, Stella Biderman, Teven Le Scao, M Saiful Bari, Sheng Shen, Zheng-Xin Yong, Hailey Schoelkopf, Xiangru Tang, Dragomir Radev, Alham Fikri Aji, Khalid Almubarak, Samuel Albanie, Zaid Alyafeai, Albert Webson, Edward Raff, and Colin Raffel.
Crosslingual generalization through multitask finetuning, 2023.
URL <https://arxiv.org/abs/2211.01786>.

[Muennighoff et al., 2024]
Niklas Muennighoff, Qian Liu, Armel Zebaze, Qinkai Zheng, Binyuan Hui, Terry Yue Zhuo, Swayam Singh, Xiangru Tang, Leandro von Werra, and Shayne Longpre.
Octopack: Instruction tuning code large language models, 2024.

[Nakajima, 2023]
Y Nakajima.
URL https://github.com/yoheinakajima/babyagi, 2023.

[OpenAI, 2024]
Chatgpt: May 2024 version.
<https://www.openai.com/chatgpt>, 2024a.
Accessed: 2024-05-29.

[OpenAI, 2024]
Hello gpt-4o.
<https://openai.com/index/hello-gpt-4o/>, 2024b.
Accessed: 2024-05-15.

[OpenAI et al., 2024]
OpenAI, Josh Achiam, Steven Adler, Sandhini Agarwal, Lama Ahmad, Ilge Akkaya, Florencia Leoni Aleman, Diogo Almeida, Janko Altenschmidt, Sam Altman, Shyamal Anadkat, Red Avila, Igor Babuschkin, Suchir Balaji, Valerie Balcom, Paul Baltescu, Haiming Bao, Mohammad Bavarian, Jeff Belgum, Irwan Bello, Jake Berdine, Gabriel Bernadett-Shapiro, Christopher Berner, Lenny Bogdonoff, Oleg Boiko, Madelaine Boyd, Anna-Luisa Brakman, Greg Brockman, Tim Brooks, Miles Brundage, Kevin Button, Trevor Cai, Rosie Campbell, Andrew Cann, Brittany Carey, Chelsea Carlson, Rory Carmichael, Brooke Chan, Che Chang, Fotis Chantzis, Derek Chen, Sully Chen, Ruby Chen, Jason Chen, Mark Chen, Ben Chess, Chester Cho, Casey Chu, Hyung Won Chung, Dave Cummings, Jeremiah Currier, Yunxing Dai, Cory Decareaux, Thomas Degry, Noah Deutsch, Damien Deville, Arka Dhar, David Dohan, Steve Dowling, Sheila Dunning, Adrien Ecoffet, Atty Eleti, Tyna Eloundou, David Farhi, Liam Fedus, Niko Felix, Simón Posada Fishman, Juston Forte, Isabella Fulford, Leo
Gao, Elie Georges, Christian Gibson, Vik Goel, Tarun Gogineni, Gabriel Goh, Rapha Gontijo-Lopes, Jonathan Gordon, Morgan Grafstein, Scott Gray, Ryan Greene, Joshua Gross, Shixiang Shane Gu, Yufei Guo, Chris Hallacy, Jesse Han, Jeff Harris, Yuchen He, Mike Heaton, Johannes Heidecke, Chris Hesse, Alan Hickey, Wade Hickey, Peter Hoeschele, Brandon Houghton, Kenny Hsu, Shengli Hu, Xin Hu, Joost Huizinga, Shantanu Jain, Shawn Jain, Joanne Jang, Angela Jiang, Roger Jiang, Haozhun Jin, Denny Jin, Shino Jomoto, Billie Jonn, Heewoo Jun, Tomer Kaftan, Łukasz Kaiser, Ali Kamali, Ingmar Kanitscheider, Nitish Shirish Keskar, Tabarak Khan, Logan Kilpatrick, Jong Wook Kim, Christina Kim, Yongjik Kim, Jan Hendrik Kirchner, Jamie Kiros, Matt Knight, Daniel Kokotajlo, Łukasz Kondraciuk, Andrew Kondrich, Aris Konstantinidis, Kyle Kosic, Gretchen Krueger, Vishal Kuo, Michael Lampe, Ikai Lan, Teddy Lee, Jan Leike, Jade Leung, Daniel Levy, Chak Ming Li, Rachel Lim, Molly Lin, Stephanie Lin, Mateusz Litwin, Theresa Lopez, Ryan
Lowe, Patricia Lue, Anna Makanju, Kim Malfacini, Sam Manning, Todor Markov, Yaniv Markovski, Bianca Martin, Katie Mayer, Andrew Mayne, Bob McGrew, Scott Mayer McKinney, Christine McLeavey, Paul McMillan, Jake McNeil, David Medina, Aalok Mehta, Jacob Menick, Luke Metz, Andrey Mishchenko, Pamela Mishkin, Vinnie Monaco, Evan Morikawa, Daniel Mossing, Tong Mu, Mira Murati, Oleg Murk, David Mély, Ashvin Nair, Reiichiro Nakano, Rajeev Nayak, Arvind Neelakantan, Richard Ngo, Hyeonwoo Noh, Long Ouyang, Cullen O'Keefe, Jakub Pachocki, Alex Paino, Joe Palermo, Ashley Pantuliano, Giambattista Parascandolo, Joel Parish, Emy Parparita, Alex Passos, Mikhail Pavlov, Andrew Peng, Adam Perelman, Filipe de Avila Belbute Peres, Michael Petrov, Henrique Ponde de Oliveira Pinto, Michael, Pokorny, Michelle Pokrass, Vitchyr H. Pong, Tolly Powell, Alethea Power, Boris Power, Elizabeth Proehl, Raul Puri, Alec Radford, Jack Rae, Aditya Ramesh, Cameron Raymond, Francis Real, Kendra Rimbach, Carl Ross, Bob Rotsted, Henri Roussez,
Nick Ryder, Mario Saltarelli, Ted Sanders, Shibani Santurkar, Girish Sastry, Heather Schmidt, David Schnurr, John Schulman, Daniel Selsam, Kyla Sheppard, Toki Sherbakov, Jessica Shieh, Sarah Shoker, Pranav Shyam, Szymon Sidor, Eric Sigler, Maddie Simens, Jordan Sitkin, Katarina Slama, Ian Sohl, Benjamin Sokolowsky, Yang Song, Natalie Staudacher, Felipe Petroski Such, Natalie Summers, Ilya Sutskever, Jie Tang, Nikolas Tezak, Madeleine B. Thompson, Phil Tillet, Amin Tootoonchian, Elizabeth Tseng, Preston Tuggle, Nick Turley, Jerry Tworek, Juan Felipe Cerón Uribe, Andrea Vallone, Arun Vijayvergiya, Chelsea Voss, Carroll Wainwright, Justin Jay Wang, Alvin Wang, Ben Wang, Jonathan Ward, Jason Wei, CJ Weinmann, Akila Welihinda, Peter Welinder, Jiayi Weng, Lilian Weng, Matt Wiethoff, Dave Willner, Clemens Winter, Samuel Wolrich, Hannah Wong, Lauren Workman, Sherwin Wu, Jeff Wu, Michael Wu, Kai Xiao, Tao Xu, Sarah Yoo, Kevin Yu, Qiming Yuan, Wojciech Zaremba, Rowan Zellers, Chong Zhang, Marvin Zhang, Shengjia
Zhao, Tianhao Zheng, Juntang Zhuang, William Zhuk, and Barret Zoph.
Gpt-4 technical report, 2024.

[Pan et al., 2024]
Jiayi Pan, Yichi Zhang, Nicholas Tomlin, Yifei Zhou, Sergey Levine, and Alane Suhr.
Autonomous evaluation and refinement of digital agents.
arXiv preprint arXiv:2404.06474, 2024.

[Pan et al., 2023]
Liangming Pan, Alon Albalak, Xinyi Wang, and William Yang Wang.
Logic-lm: Empowering large language models with symbolic solvers for faithful logical reasoning.
arXiv preprint arXiv:2305.12295, 2023.

[Park et al., 2023]
Joon Sung Park, Joseph C. O'Brien, Carrie J. Cai, Meredith Ringel Morris, Percy Liang, and Michael S. Bernstein.
Generative agents: Interactive simulacra of human behavior, 2023.

[Patel et al., 2024]
Ajay Patel, Markus Hofmarcher, Claudiu Leoveanu-Condrei, Marius-Constantin Dinu, Chris Callison-Burch, and Sepp Hochreiter.
Large language models can self-improve at web agent tasks.
arXiv preprint arXiv:2405.20309, 2024.

[Patil et al., 2023]
Shishir G. Patil, Tianjun Zhang, Xin Wang, and Joseph E. Gonzalez.
Gorilla: Large language model connected with massive apis.
arXiv preprint arXiv:2305.15334, 2023.

[47]
Fast and reliable end-to-end testing for modern web apps | Playwright.
URL <https://playwright.dev/>.

[Qian et al., 2023]
Chen Qian, Xin Cong, Wei Liu, Cheng Yang, Weize Chen, Yusheng Su, Yufan Dang, Jiahao Li, Juyuan Xu, Dahai Li, Zhiyuan Liu, and Maosong Sun.
Communicative agents for software development, 2023.

[Qin et al., 2023]
Yujia Qin, Shihao Liang, Yining Ye, Kunlun Zhu, Lan Yan, Yaxi Lu, Yankai Lin, Xin Cong, Xiangru Tang, Bill Qian, Sihan Zhao, Runchu Tian, Ruobing Xie, Jie Zhou, Mark Gerstein, Dahai Li, Zhiyuan Liu, and Maosong Sun.
Toolllm: Facilitating large language models to master 16000+ real-world apis.
CoRR, abs/2307.16789, 2023.
URL <https://doi.org/10.48550/arXiv.2307.16789>.

[Rein et al., 2023]
David Rein, Betty Li Hou, Asa Cooper Stickland, Jackson Petty, Richard Yuanzhe Pang, Julien Dirani, Julian Michael, and Samuel R Bowman.
GPQA: A Graduate-Level Google-Proof Q&A Benchmark.
arXiv preprint arXiv:2311.12022, 2023.

[51]
Aman Sanger.
Near-instant full-file edits.
Accessed: 2024-06-05.

[52]
BrowserGym: a Gym Environment for Web Task Automation.
URL <https://github.com/ServiceNow/BrowserGym>.

[Shaw et al., 2023]
Peter Shaw, Mandar Joshi, James Cohan, Jonathan Berant, Panupong Pasupat, Hexiang Hu, Urvashi Khandelwal, Kenton Lee, and Kristina N Toutanova.
From pixels to ui actions: Learning to follow instructions via graphical user interfaces.
Advances in Neural Information Processing Systems, 36:0 34354–34370, 2023.

[Shinn et al., 2024]
Noah Shinn, Federico Cassano, Ashwin Gopinath, Karthik Narasimhan, and Shunyu Yao.
Reflexion: Language agents with verbal reinforcement learning.
Advances in Neural Information Processing Systems, 36, 2024.

[Tafjord et al., 2021]
Oyvind Tafjord, Bhavana Dalvi, and Peter Clark.
ProofWriter: Generating implications, proofs, and abductive statements over natural language.
In Chengqing Zong, Fei Xia, Wenjie Li, and Roberto Navigli, editors, Findings of the Association for Computational Linguistics: ACL-IJCNLP 2021, pages 3621–3634, Online, August 2021. Association for Computational Linguistics.
URL <https://aclanthology.org/2021.findings-acl.317>.

[Tang et al., 2024]
Xiangru Tang, Qiao Jin, Kunlun Zhu, Tongxin Yuan, Yichi Zhang, Wangchunshu Zhou, Meng Qu, Yilun Zhao, Jian Tang, Zhuosheng Zhang, et al.
Prioritizing safeguarding over autonomy: Risks of llm agents for science.
arXiv preprint arXiv:2402.04247, 2024a.

[Tang et al., 2024]
Xiangru Tang, Yuliang Liu, Zefan Cai, Yanjun Shao, Junjie Lu, Yichi Zhang, Zexuan Deng, Helan Hu, Kaikai An, Ruijun Huang, Shuzheng Si, Sheng Chen, Haozhe Zhao, Liang Chen, Yan Wang, Tianyu Liu, Zhiwei Jiang, Baobao Chang, Yin Fang, Yujia Qin, Wangchunshu Zhou, Yilun Zhao, Arman Cohan, and Mark Gerstein.
ML-Bench: Evaluating large language models and agents for machine learning tasks on repository-level code, 2024b.
URL <https://arxiv.org/abs/2311.09835>.

[Tang et al., 2024]
Xiangru Tang, Bill Qian, Rick Gao, Jiakang Chen, Xinyun Chen, and Mark B Gerstein.
BioCoder: a benchmark for bioinformatics code generation with large language models.
Bioinformatics, 400 (Supplement_1):0 i266–i276, 06 2024c.
ISSN 1367-4811.

[Tang et al., 2024]
Xiangru Tang, Anni Zou, Zhuosheng Zhang, Ziming Li, Yilun Zhao, Xingyao Zhang, Arman Cohan, and Mark Gerstein.
Medagents: Large language models as collaborators for zero-shot medical reasoning, 2024d.

[Team et al., 2023]
Gemini Team, Rohan Anil, Sebastian Borgeaud, Yonghui Wu, Jean-Baptiste Alayrac, Jiahui Yu, Radu Soricut, Johan Schalkwyk, Andrew M Dai, Anja Hauth, et al.
Gemini: a family of highly capable multimodal models.
arXiv preprint arXiv:2312.11805, 2023.

[Team, 2023]
XAgent Team.
Xagent: An autonomous agent for complex task solving, 2023.

[Touvron et al., 2023]
Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothée Lacroix, Baptiste Rozière, Naman Goyal, Eric Hambro, Faisal Azhar, Aurelien Rodriguez, Armand Joulin, Edouard Grave, and Guillaume Lample.
Llama: Open and efficient foundation language models.
arXiv preprint arXiv:2302.13971, 2023.

[Wang et al., 2024]
Xingyao Wang, Yangyi Chen, Lifan Yuan, Yizhe Zhang, Yunzhu Li, Hao Peng, and Heng Ji.
Executable Code Actions Elicit Better LLM Agents.
In ICML, 2024a.

[Wang et al., 2024]
Xingyao Wang, Zihan Wang, Jiateng Liu, Yangyi Chen, Lifan Yuan, Hao Peng, and Heng Ji.
MINT: Evaluating LLMs in Multi-turn Interaction with Tools and Language Feedback.
In ICLR, 2024b.

[Wei et al., 2022]
Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Fei Xia, Ed Chi, Quoc V Le, Denny Zhou, et al.
Chain-of-thought prompting elicits reasoning in large language models.
Advances in neural information processing systems, 35:0 24824–24837, 2022.

[Workshop et al., 2023]
BigScience Workshop, :, Teven Le Scao, Angela Fan, Christopher Akiki, Ellie Pavlick, Suzana Ilić, Daniel Hesslow, Roman Castagné, Alexandra Sasha Luccioni, François Yvon, Matthias Gallé, Jonathan Tow, Alexander M. Rush, Stella Biderman, Albert Webson, Pawan Sasanka Ammanamanchi, Thomas Wang, Benoît Sagot, Niklas Muennighoff, Albert Villanova del Moral, Olatunji Ruwase, Rachel Bawden, Stas Bekman, Angelina McMillan-Major, Iz Beltagy, Huu Nguyen, Lucile Saulnier, Samson Tan, Pedro Ortiz Suarez, Victor Sanh, Hugo Laurençon, Yacine Jernite, Julien Launay, Margaret Mitchell, Colin Raffel, Aaron Gokaslan, Adi Simhi, Aitor Soroa, Alham Fikri Aji, Amit Alfassy, Anna Rogers, Ariel Kreisberg Nitzav, Canwen Xu, Chenghao Mou, Chris Emezue, Christopher Klamm, Colin Leong, Daniel van Strien, David Ifeoluwa Adelani, Dragomir Radev, Eduardo González Ponferrada, Efrat Levkovizh, Ethan Kim, Eyal Bar Natan, Francesco De Toni, Gérard Dupont, Germán Kruszewski, Giada Pistilli, Hady Elsahar, Hamza Benyamina, Hieu Tran,
Ian Yu, Idris Abdulmumin, Isaac Johnson, Itziar Gonzalez-Dios, Javier de la Rosa, Jenny Chim, Jesse Dodge, Jian Zhu, Jonathan Chang, Jörg Frohberg, Joseph Tobing, Joydeep Bhattacharjee, Khalid Almubarak, Kimbo Chen, Kyle Lo, Leandro Von Werra, Leon Weber, Long Phan, Loubna Ben allal, Ludovic Tanguy, Manan Dey, Manuel Romero Muñoz, Maraim Masoud, María Grandury, Mario Šaško, Max Huang, Maximin Coavoux, Mayank Singh, Mike Tian-Jian Jiang, Minh Chien Vu, Mohammad A. Jauhar, Mustafa Ghaleb, Nishant Subramani, Nora Kassner, Nurulaqilla Khamis, Olivier Nguyen, Omar Espejel, Ona de Gibert, Paulo Villegas, Peter Henderson, Pierre Colombo, Priscilla Amuok, Quentin Lhoest, Rheza Harliman, Rishi Bommasani, Roberto Luis López, Rui Ribeiro, Salomey Osei, Sampo Pyysalo, Sebastian Nagel, Shamik Bose, Shamsuddeen Hassan Muhammad, Shanya Sharma, Shayne Longpre, Somaieh Nikpoor, Stanislav Silberberg, Suhas Pai, Sydney Zink, Tiago Timponi Torrent, Timo Schick, Tristan Thrush, Valentin Danchev, Vassilina Nikoulina,
Veronika Laippala, Violette Lepercq, Vrinda Prabhu, Zaid Alyafeai, Zeerak Talat, Arun Raja, Benjamin Heinzerling, Chenglei Si, Davut Emre Taşar, Elizabeth Salesky, Sabrina J. Mielke, Wilson Y. Lee, Abheesht Sharma, Andrea Santilli, Antoine Chaffin, Arnaud Stiegler, Debajyoti Datta, Eliza Szczechla, Gunjan Chhablani, Han Wang, Harshit Pandey, Hendrik Strobelt, Jason Alan Fries, Jos Rozen, Leo Gao, Lintang Sutawika, M Saiful Bari, Maged S. Al-shaibani, Matteo Manica, Nihal Nayak, Ryan Teehan, Samuel Albanie, Sheng Shen, Srulik Ben-David, Stephen H. Bach, Taewoon Kim, Tali Bers, Thibault Fevry, Trishala Neeraj, Urmish Thakker, Vikas Raunak, Xiangru Tang, Zheng-Xin Yong, Zhiqing Sun, Shaked Brody, Yallow Uri, Hadar Tojarieh, Adam Roberts, Hyung Won Chung, Jaesung Tae, Jason Phang, Ofir Press, Conglong Li, Deepak Narayanan, Hatim Bourfoune, Jared Casper, Jeff Rasley, Max Ryabinin, Mayank Mishra, Minjia Zhang, Mohammad Shoeybi, Myriam Peyrounette, Nicolas Patry, Nouamane Tazi, Omar Sanseviero, Patrick von
Platen, Pierre Cornette, Pierre François Lavallée, Rémi Lacroix, Samyam Rajbhandari, Sanchit Gandhi, Shaden Smith, Stéphane Requena, Suraj Patil, Tim Dettmers, Ahmed Baruwa, Amanpreet Singh, Anastasia Cheveleva, Anne-Laure Ligozat, Arjun Subramonian, Aurélie Névéol, Charles Lovering, Dan Garrette, Deepak Tunuguntla, Ehud Reiter, Ekaterina Taktasheva, Ekaterina Voloshina, Eli Bogdanov, Genta Indra Winata, Hailey Schoelkopf, Jan-Christoph Kalo, Jekaterina Novikova, Jessica Zosa Forde, Jordan Clive, Jungo Kasai, Ken Kawamura, Liam Hazan, Marine Carpuat, Miruna Clinciu, Najoung Kim, Newton Cheng, Oleg Serikov, Omer Antverg, Oskar van der Wal, Rui Zhang, Ruochen Zhang, Sebastian Gehrmann, Shachar Mirkin, Shani Pais, Tatiana Shavrina, Thomas Scialom, Tian Yun, Tomasz Limisiewicz, Verena Rieser, Vitaly Protasov, Vladislav Mikhailov, Yada Pruksachatkun, Yonatan Belinkov, Zachary Bamberger, Zdeněk Kasner, Alice Rueda, Amanda Pestana, Amir Feizpour, Ammar Khan, Amy Faranak, Ana Santos, Anthony Hevia, Antigona
Unldreaj, Arash Aghagol, Arezoo Abdollahi, Aycha Tammour, Azadeh HajiHosseini, Bahareh Behroozi, Benjamin Ajibade, Bharat Saxena, Carlos Muñoz Ferrandis, Daniel McDuff, Danish Contractor, David Lansky, Davis David, Douwe Kiela, Duong A. Nguyen, Edward Tan, Emi Baylor, Ezinwanne Ozoani, Fatima Mirza, Frankline Ononiwu, Habib Rezanejad, Hessie Jones, Indrani Bhattacharya, Irene Solaiman, Irina Sedenko, Isar Nejadgholi, Jesse Passmore, Josh Seltzer, Julio Bonis Sanz, Livia Dutra, Mairon Samagaio, Maraim Elbadri, Margot Mieskes, Marissa Gerchick, Martha Akinlolu, Michael McKenna, Mike Qiu, Muhammed Ghauri, Mykola Burynok, Nafis Abrar, Nazneen Rajani, Nour Elkott, Nour Fahmy, Olanrewaju Samuel, Ran An, Rasmus Kromann, Ryan Hao, Samira Alizadeh, Sarmad Shubber, Silas Wang, Sourav Roy, Sylvain Viguier, Thanh Le, Tobi Oyebade, Trieu Le, Yoyo Yang, Zach Nguyen, Abhinav Ramesh Kashyap, Alfredo Palasciano, Alison Callahan, Anima Shukla, Antonio Miranda-Escalada, Ayush Singh, Benjamin Beilharz, Bo Wang, Caio Brito,
Chenxi Zhou, Chirag Jain, Chuxin Xu, Clémentine Fourrier, Daniel León Periñán, Daniel Molano, Dian Yu, Enrique Manjavacas, Fabio Barth, Florian Fuhrimann, Gabriel Altay, Giyaseddin Bayrak, Gully Burns, Helena U. Vrabec, Imane Bello, Ishani Dash, Jihyun Kang, John Giorgi, Jonas Golde, Jose David Posada, Karthik Rangasai Sivaraman, Lokesh Bulchandani, Lu Liu, Luisa Shinzato, Madeleine Hahn de Bykhovetz, Maiko Takeuchi, Marc Pàmies, Maria A Castillo, Marianna Nezhurina, Mario Sänger, Matthias Samwald, Michael Cullan, Michael Weinberg, Michiel De Wolf, Mina Mihaljcic, Minna Liu, Moritz Freidank, Myungsun Kang, Natasha Seelam, Nathan Dahlberg, Nicholas Michio Broad, Nikolaus Muellner, Pascale Fung, Patrick Haller, Ramya Chandrasekhar, Renata Eisenberg, Robert Martin, Rodrigo Canalli, Rosaline Su, Ruisi Su, Samuel Cahyawijaya, Samuele Garda, Shlok S Deshmukh, Shubhanshu Mishra, Sid Kiblawi, Simon Ott, Sinee Sang-aroonsiri, Srishti Kumar, Stefan Schweter, Sushil Bharati, Tanmay Laud, Théo Gigant, Tomoya
Kainuma, Wojciech Kusa, Yanis Labrak, Yash Shailesh Bajaj, Yash Venkatraman, Yifan Xu, Yingxin Xu, Yu Xu, Zhe Tan, Zhongli Xie, Zifan Ye, Mathilde Bras, Younes Belkada, and Thomas Wolf.
Bloom: A 176b-parameter open-access multilingual language model, 2023.
URL <https://arxiv.org/abs/2211.05100>.

[Wu et al., 2023]
Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Shaokun Zhang, Erkang Zhu, Beibin Li, Li Jiang, Xiaoyun Zhang, and Chi Wang.
Autogen: Enabling next-gen llm applications via multi-agent conversation framework.
arXiv preprint arXiv:2308.08155, 2023.

[Xia et al., 2024]
Chunqiu Steven Xia, Yinlin Deng, Soren Dunn, and Lingming Zhang.
Agentless: Demystifying llm-based software engineering agents.
arXiv preprint, 2024.

[Xie et al., 2023]
Tianbao Xie, Fan Zhou, Zhoujun Cheng, Peng Shi, Luoxuan Weng, Yitao Liu, Toh Jing Hua, Junning Zhao, Qian Liu, Che Liu, et al.
Openagents: An open platform for language agents in the wild.
arXiv preprint arXiv:2310.10634, 2023.

[Xu et al., 2023]
Yiheng Xu, Hongjin Su, Chen Xing, Boyu Mi, Qian Liu, Weijia Shi, Binyuan Hui, Fan Zhou, Yitao Liu, Tianbao Xie, et al.
Lemur: Harmonizing natural language and code for language agents.
arXiv preprint arXiv:2310.06830, 2023.

[Yang et al., 2023]
Jianwei Yang, Hao Zhang, Feng Li, Xueyan Zou, Chunyuan Li, and Jianfeng Gao.
Set-of-mark prompting unleashes extraordinary visual grounding in gpt-4v.
arXiv preprint arXiv:2310.11441, 2023.

[Yang et al., 2024]
John Yang, Carlos E. Jimenez, Alexander Wettig, Kilian Lieret, Shunyu Yao, Karthik Narasimhan, and Ofir Press.
Swe-agent: Agent-computer interfaces enable automated software engineering, 2024.

[Yao et al., 2023]
Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik R Narasimhan, and Yuan Cao.
React: Synergizing reasoning and acting in language models.
In The Eleventh International Conference on Learning Representations, 2023.
URL <https://openreview.net/forum?id=WE_vluYUL-X>.

[Ye et al., 2023]
Yining Ye, Xin Cong, Shizuo Tian, Jiannan Cao, Hao Wang, Yujia Qin, Yaxi Lu, Heyang Yu, Huadong Wang, Yankai Lin, et al.
Proagent: From robotic process automation to agentic process automation.
arXiv preprint arXiv:2311.10751, 2023.

[Yuan et al., 2023]
Lifan Yuan, Yangyi Chen, Xingyao Wang, Yi R. Fung, Hao Peng, and Heng Ji.
CRAFT: customizing llms by creating and retrieving from specialized toolsets.
CoRR, abs/2309.17428, 2023.
URL <https://doi.org/10.48550/arXiv.2309.17428>.

[Yuan et al., 2024]
Lifan Yuan, Ganqu Cui, Hanbin Wang, Ning Ding, Xingyao Wang, Jia Deng, Boji Shan, Huimin Chen, Ruobing Xie, Yankai Lin, Zhenghao Liu, Bowen Zhou, Hao Peng, Zhiyuan Liu, and Maosong Sun.
Advancing llm reasoning generalists with preference trees, 2024.

[Zhang et al., 2024]
Yizhe Zhang, Jiarui Lu, and Navdeep Jaitly.
Probing the multi-turn planning capabilities of llms via 20 question games.

[Zhang et al., 2024]
Yuntong Zhang, Haifeng Ruan, Zhiyu Fan, and Abhik Roychoudhury.
Autocoderover: Autonomous program improvement, 2024b.

[Zhou et al., 2023]
Shuyan Zhou, Frank F Xu, Hao Zhu, Xuhui Zhou, Robert Lo, Abishek Sridhar, Xianyi Cheng, Tianyue Ou, Yonatan Bisk, Daniel Fried, et al.
Webarena: A realistic web environment for building autonomous agents.
In The Twelfth International Conference on Learning Representations, 2023a.

[Zhou et al., 2023]
Wangchunshu Zhou, Yuchen Eleanor Jiang, Long Li, Jialong Wu, Tiannan Wang, Shi Qiu, Jintian Zhang, Jing Chen, Ruipu Wu, Shuai Wang, Shiding Zhu, Jiyu Chen, Wentao Zhang, Xiangru Tang, Ningyu Zhang, Huajun Chen, Peng Cui, and Mrinmaya Sachan.
Agents: An open-source framework for autonomous language agents, 2023b.

[Zhuang et al., 2024]
Yuchen Zhuang, Yue Yu, Kuan Wang, Haotian Sun, and Chao Zhang.
Toolqa: A dataset for llm question answering with external tools.
Advances in Neural Information Processing Systems, 36, 2024.

[Zhuge et al., 2023]
Mingchen Zhuge, Haozhe Liu, Francesco Faccio, Dylan R Ashley, Róbert Csordás, Anand Gopalakrishnan, Abdullah Hamdi, Hasan Abed Al Kader Hammoud, Vincent Herrmann, Kazuki Irie, et al.
Mindstorms in natural language-based societies of mind.
arXiv preprint arXiv:2305.17066, 2023.

[Zhuge et al., 2024]
Mingchen Zhuge, Wenyi Wang, Louis Kirsch, Francesco Faccio, Dmitrii Khizbullin, and Jurgen Schmidhuber.
Language agents as optimizable graphs.
arXiv preprint arXiv:2402.16823, 2024.

[Zhuo et al., 2024]
Terry Yue Zhuo, Armel Zebaze, Nitchakarn Suppattarachai, Leandro von Werra, Harm de Vries, Qian Liu, and Niklas Muennighoff.
Astraios: Parameter-efficient instruction tuning code large language models, 2024.
URL <https://arxiv.org/abs/2401.00788>.

[85]
Albert Örwall.
Moatless tools.
URL <https://github.com/aorwall/moatless-tools>.

§ AUTHOR CONTRIBUTIONS

This work was an open-source collaborative effort across multiple institutions. We employed a point-based system to determine contributions and award authorships, with technical contributions tracked and measured in units of pull requests (PRs)[For more details, please refer to <https://github.com/OpenDevin/OpenDevin/pull/1917>.]. Xingyao Wang led the project, coordinating overall development and paper writing efforts. Detailed contributions were as follows:

* Agent Development (sec:agenthub): Xingyao Wang led the implementation of CodeAct [Wang et al., 2024] and CodeActSWE agents. Frank F. Xu led the development of web browsing agents [Zhou et al., 2023]. Mingchen Zhuge orchestrated the integration of the GPTSwarm agent [Zhuge et al., 2024]. Robert Brennan and Boxuan Li lead the development of the Micro Agent.

* Architectural Development (fig:arch): Robert Brennan initiated the architecture design. Boxuan Li, Frank F. Xu, Xingyao Wang, Yufan Song, and Mingzhang Zheng further refined and expanded the architecture. Boxuan Li implemented the initial version of integration tests (sec:integration-tests), maintained the agentskills library (sec:agent-skills), managed configurations, and resolved resource leaks in evaluation. Frank F. Xu developed the web browsing environment (sec:browsergym-actions) for both agent execution and evaluation and integrated it with both agent and front-end user interfaces. Xingyao Wang authored the initial code for the agentskills library and the Docker sandbox. Yufan Song implemented cost tracking for evaluation, while Mingzhang Zheng developed an image-agnostic docker sandbox for more stable SWE-Bench evaluation.

* Benchmarking, Integration, and Code Review: Boxuan Li and Yufan Song led benchmark integration efforts, including coordination, evaluation, and code review. Yufan Song also helped track PR contributions. Graham Neubig, Xingyao Wang, Mingzhang Zheng, Robert Brennan, Hoang H. Tran, Frank F. Xu, Xiangru Tang, Fuqiang Li, and Yanjun Shao provided additional support in integration and code reviews.
Specific benchmark contributions included:

* SWE-Bench [Jimenez et al., 2024]: Bowen Li and Xingyao Wang

* WebArena [Zhou et al., 2023] and MiniWob++ [Liu et al., 2018]: Frank F. Xu

* GAIA [Mialon et al., 2023]: Jiayi Pan (integration) and Mingchen Zhuge (GPTSwarm evaluation)

* API-Bench [Patil et al., 2023] and ToolQA [Zhuang et al., 2024]: Yueqi Song

* HumanEvalFix [Muennighoff et al., 2024]: Niklas Muennighoff and Xiangru Tang

* ProofWriter [Tafjord et al., 2021]: Ren Ma

* MINT [Wang et al., 2024]: Hoang H. Tran

* AgentBench [Liu et al., 2023]: Fuqiang Li

* BIRD [Li et al., 2023]: Binyuan Hui

* GPQA [Rein et al., 2023]: Jaskirat Singh

* BioCoder [Tang et al., 2024]: Xiangru Tang and Bill Qian

* ML-Bench [Tang et al., 2024]: Xiangru Tang and Yanjun Shao

* Entity-Deduction-Arena [Zhang et al., 2024]: Yizhe Zhang

* Advising: Graham Neubig advised the project, providing guidance, resources, and substantial paper edits. Heng Ji and Hao Peng offered additional project advice and assisted with paper writing. Junyang Lin contributed advisory support and sponsored resources.

All authors contributed to the result discussions and manuscript preparation.

§ LIMITATIONS AND FUTURE WORK

We are excited about the foundations our vibrant community has laid in and look forward to its continued evolution.
We identify several directions for future work:

Enhanced multi-modality support. While our current implementation already supports a wide range of file formats through predefined agent skills, we are interested in enabling multi-modality in a principled way through standard IPython and browser integration, such as viewing images and videos using vision-language model through a browser or processing XLSX files with code.

Stronger agents. Current agents still struggle with complex tasks, and we are interested in building better agents through both training and inference time techniques.

Web browsing improvements. Due to the extensible nature of , orthogonal components that could improve agents can be integrated easily. For example, thanks to 's extensible architecture, Auto Eval & Refine [Pan et al., 2024], an agent retry-on-error strategy with Reflexion [Shinn et al., 2024] prompts and task completion reward models, will be integrated as an optional component attached to our browsing agent.

Stable Runtime. Currently, OpenDevin's default sandbox environment, SSH sandbox, relies on pexpect library[<https://pexpect.readthedocs.io/en/stable/>] to pass commands and messages between the sandbox and agent controller. It doesn't suit other types of sandboxes (commercial cloud sandboxes) and is not stable enough. In the future, we plan to use EventStream as the bridge for the agent controller and the sandbox to communicate, which will be more stable, sandbox-agnostic, and enables better observability.

Automatic workflow generation. Currently, OpenDevin's workflow still requires a substantial handcrafted workload. We believe that graph-based frameworks such as GPTSwarm [Zhuge et al., 2024] and LangGraph [Chase, 2022] could serve as alternative solutions for building agents. Particularly in GPTSwarm, when agents are constructed using graphs, it becomes easier to incorporate various optimization methods (e.g., reinforcement learning, meta-prompting). OpenDevin considers these methods to lay the groundwork for promising solutions in automatic workflow generation in future versions.

§ ETHICS STATEMENT

Most AI agents today are still research artifacts and lack the ability to perform complex, long-horizon tasks in the real world reliably. However, as their performance continues to improve and they are increasingly deployed in real world, they have the potential to boost productivity while also posing security risks to society significantly.
helps mitigate risks by:

(1) Enabling systematic evaluation of these agents, which can identify and address risks before they are widely deployed.

(2) Facilitating human-agent interaction rather than allowing agents to operate autonomously without oversight.

(3) More importantly, we hope allows researchers worldwide to access the best suites of agents to conduct frontier safety research towards building safe and helpful agents.

§ RELATED WORK

The breakthroughs in large language models (LLMs) like ChatGPT [OpenAI, 2024] and GPT-4 [OpenAI et al., 2024] have significantly enhanced the capabilities of autonomous agents across various domains [Ye et al., 2023, Tang et al., 2024, Park et al., 2023, Cui et al., 2023]. These advances have spurred a multitude of generalist agent proposals [Gravitas, 2023, Nakajima, 2023, Wu et al., 2023] aimed at performing diverse user tasks and have gained attention from both developers and broader audiences. Notable works such as Auto-GPT [Gravitas, 2023] harness LLMs for task completion by decomposing user goals into executable steps. Multi-agent collaboration systems leverage LLMs for elements like role-playing and task-solving capabilities [Zhuge et al., 2023, Li et al., 2023, Zhou et al., 2023, Team, 2023], with MetaGPT [Hong et al., 2023] emphasizing standardized operating procedures, and AutoGen [Wu et al., 2023] providing a conversation framework for interactive systems. AGENTS [Zhou et al., 2023] and AutoAgents [Chen et al., 2024] offer new paradigms for customizable agent architecture, while XAgent [Team, 2023] and GPTSwarm [Zhuge et al., 2024] introduce complex management systems and optimizable graphs, respectively, for enhanced agent operations.

Software development, a front-runner in applying LLM-based agents, has seen advancements in frameworks for facilitating the development processes [Hong et al., 2023, Qian et al., 2023]. Innovations such as ChatDev [Qian et al., 2023] automate the software development lifecycle akin to the waterfall model, and AutoCodeRover [Zhang et al., 2024] addresses GitHub issues via code search and abstract syntax tree manipulation. AgentCoder [Huang et al., 2024] iteratively refines code generation with integrated testing and feedback, while SWE-Agent [Yang et al., 2024] integrates LLMs for automated Github issue fixing, streamlining software engineering.

§ GRAPHICAL USER INTERFACE

Besides running from the command line, features a rich graphical user interface that visualizes the agent's current actions (, browsing the web, executing base commands or Python code, ) and allows for real-time feedback from the user.

Screenshots of the UI are shown in fig:ui.

The user may interrupt the agent at any moment to provide additional feedback, comments, or instruction while the agent is working.

This user interface directly connects with the event streams (sec:agent-abstraction) to control and visualize the agents and runtime, making it agent and runtime agnostic.

§ QUALITY CONTROL: INTEGRATION TESTS FOR AGENTS

Integration tests [Leung and White, 1990] have long been used by software developers to ensure software quality. Unlike large language models with simple input-output schema, agents are typically complex pieces of software where minor errors can be easily introduced during the development process and hurt final task performance.

While running a full suite evaluation (sec:evaluation) is the ultimate measure of performance degradation, running them for every code changes can be prohibitively slow and expensive.
[Running a SWE-Bench Lite [Jimenez et al., 2024] evaluation with  costs around 600 USD.].

In , we pioneer an end-to-end agent test framework that tests prompt regression, actions, and sandbox environments.

It combines integration testing from software engineering and foundation model mocking for deterministic behavior to prevent the accidental introduction of bugs during agent development.

Defining an integration test.
The integration test framework for OpenDevin is structured to validate end-to-end functionality by automating task execution and result verification. Developers define tasks and expected results; for instance, a task might involve correcting typos in a document named "bad.txt". Upon task execution through OpenDevin, outputs are compared against a predefined "gold file" to ensure accuracy.

Mocking LLM for deterministic behavior.
Addressing the challenge of non-determinism in large language models (LLMs) and the associated high costs, the framework intercepts all LLM calls and supplies predefined responses based on exact prompt matches. This method not only ensures consistency in test outcomes but also reduces operational costs by minimizing the reliance on real LLMs.

Regenerate LLM responses on breaking changes.
Prompt-response pairs are managed through a script that generates and stores these pairs when new tests are introduced or existing prompts are modified. For routine tests, the framework attempts to reuse existing LLM responses by slightly adjusting the prompts. Substantial changes that affect task handling require regeneration of these pairs using real LLMs.

Benefits of integration tests.
The framework offers several advantages, including 1) Prompt regression testing: Stored prompt-response pairs facilitate change tracking and provide a reference for new team members to understand LLM interactions, 2) Multi-platform support: Tests are automatically scheduled for every pull request and commit on the main branch, running across multiple platforms, environments, and agents, including Linux and Mac, and in local, SSH, and exec sandboxes, and 3) Comprehensive error detection: It captures errors in prompt generation, message passing, and sandbox execution, thereby maintaining a high test coverage.

§ ADDITIONAL RESULTS FOR GPQA BENCHMARK

We showcase more detailed results, including performance on other subsets for GPQA benchmark in tab:gpqa.

Full Evaluation Results on the GPQA Benchmark [Rein et al., 2023] (sec:eval_misc_assistance).

max width=

2*Evaluation Method and Model      3cAccuracy by subset (%)     2*Avg Cost ($)

Diamond Set     Main Set     Extended Set

Gray Expert Human Validators     81.2     72.5     65.4     N/A

Gray Non-Expert Human Validators     21.9     30.5     33.9     N/A

Few-Shot CoT Llama-2-70B-chat     28.1     29.1     30.4     GrayN/A

Few-Shot CoT GPT-3.5-turbo-16k     29.6     28.0     28.2     GrayN/A

Few-Shot CoT GPT-4     38.8     39.7     38.7     GrayN/A

GPT-4 with search (backoff to CoT on abstention)      38.8      41.0     39.4     GrayN/A

OpenDevin + CodeActAgent v1.5 + GPT3.5-turbo     27.9     23.4     26.1     0.012

OpenDevin + CodeActAgent v1.5 + GPT4-turbo     51.8     47.4     42.4     0.501

OpenDevin + CodeActAgent v1.5 + GPT4o     53.1      49.3     52.8     0.054

§ IN-CONTEXT DEMONSTRATION FOR CODEACTSWEAGENT

The prompt is re-adopted from the SWE-agent's released trajectory (<https://github.com/princeton-nlp/SWE-agent/tree/main/trajectories/demonstrations>). The prompt can be found at <https://github.com/OpenDevin/OpenDevin/blob/main/agenthub/codeact_swe_agent/prompt.py>.

§ SUPPORTED AGENTSKILLS

As of v0.6, we support the following list of skills.
Please refer to the source code for the most up-to-date list of skills: <https://github.com/OpenDevin/OpenDevin/blob/main/opendevin/runtime/plugins/agent_skills/agentskills.py>

def open_file(path: str, line_number: Optional[int] = None) -> None:
Opens the file at the given path in the editor. If line_number is provided, the window will be moved to include that line.

path: str: The path to the file to open.
line_number: Optional[int]: The line number to move to.

def goto_line(line_number: int) -> None:
Moves the window to show the specified line number.

line_number: int: The line number to move to.

def scroll_down() -> None:
"""Moves the window down by 100 lines.

def scroll_up() -> None:
"""Moves the window up by 100 lines.

def create_file(filename: str) -> None:
"""Creates and opens a new file with the given name.

filename: str: The name of the file to create.

def edit_file(start: int, end: int, content: str) -> None:
"""Edit a file.

It replaces lines `start` through `end` (inclusive) with the given text `content` in the open file. Remember, the file must be open before editing.

start: int: The start line number. Must satisfy start >= 1.
end: int: The end line number. Must satisfy start <= end <= number of lines in the file.
content: str: The content to replace the lines with.

def search_dir(search_term: str, dir_path: str = './') -> None:
"""Searches for search_term in all files in dir. If dir is not provided, searches in the current directory.

search_term: str: The term to search for.
dir_path: Optional[str]: The path to the directory to search.

def search_file(search_term: str, file_path: Optional[str] = None) -> None:
"""Searches for search_term in file. If file is not provided, searches in the current open file.

search_term: str: The term to search for.
file_path: Optional[str]: The path to the file to search.

def find_file(file_name: str, dir_path: str = './') -> None:
"""Finds all files with the given name in the specified directory.

file_name: str: The name of the file to find.
dir_path: Optional[str]: The path to the directory to search.

def parse_pdf(file_path: str) -> None:
"""Parses the content of a PDF file and prints it.

file_path: str: The path to the file to open.

def parse_docx(file_path: str) -> None:
Parses the content of a DOCX file and prints it.

file_path: str: The path to the file to open.

def parse_latex(file_path: str) -> None:
Parses the content of a LaTex file and prints it.

file_path: str: The path to the file to open.

def parse_audio(file_path: str, model: str = 'whisper-1') -> None:
Parses the content of an audio file and prints it.

file_path: str: The path to the audio file to transcribe.
model: Optional[str]: The audio model to use for transcription. Defaults to 'whisper-1'.

def parse_image(
file_path: str, task: str = 'Describe this image as detail as possible.'
) -> None:
Parses the content of an image file and prints the description.

file_path: str: The path to the file to open.
task: Optional[str]: The task description for the API call. Defaults to 'Describe this image as detail as possible.'.

def parse_video(
file_path: str,
task: str = 'Describe this image as detail as possible.',
frame_interval: int = 30,
) -> None:
Parses the content of an image file and prints the description.

file_path: str: The path to the video file to open.
task: Optional[str]: The task description for the API call. Defaults to 'Describe this image as detail as possible.'.
frame_interval: Optional[int]: The interval between frames to analyze. Defaults to 30.

def parse_pptx(file_path: str) -> None:
Parses the content of a pptx file and prints it.

file_path: str: The path to the file to open.

§ BROWSERGYM ACTIONS

The following are all the supported actions defined in BrowserGym[<https://github.com/ServiceNow/BrowserGym/blob/main/core/src/browsergym/core/action/functions.py>] as of v0.3.4.
The actions can be categorized into several types and can be configured to use only a subset of the functionality.
There are agent control actions, navigation actions, page element-based actions, coordinate-based actions, as well as tab-related actions.
We use these actions from the BrowserGym library as our main browsing action primitives.

def send_msg_to_user(text: str):
Sends a message to the user.

send_msg_to_user("Based on the results of my search, the city was built in 1751.")

def report_infeasible(reason: str):
Notifies the user that their instructions are infeasible.

report_infeasible("I cannot follow these instructions because there is no email field in this form.")

def noop(wait_ms: float = 1000):
Do nothing, and optionally wait for the given time (in milliseconds).

# https://playwright.dev/docs/input#text-input
def fill(bid: str, value: str):
Fill out a form field. It focuses the element and triggers an input event with the entered text.
It works for <input>, <textarea> and [contenteditable] elements.

fill('237', 'example value')
fill('45', "multi-line
fill('a12', "example with

# https://playwright.dev/python/docs/api/class-locator#locator-check
def check(bid: str):
Ensure a checkbox or radio element is checked.

# https://playwright.dev/python/docs/api/class-locator#locator-uncheck
def uncheck(bid: str):
Ensure a checkbox or radio element is unchecked.

# https://playwright.dev/docs/input#select-options
def select_option(bid: str, options: str | list[str]):
Select one or multiple options in a <select> element. You can specify
option value or label to select. Multiple options can be selected.

select_option('a48', "blue")
select_option('c48', ["red", "green", "blue"])

# https://playwright.dev/python/docs/api/class-locator#locator-click
def click(
bid: str,
button: Literal["left", "middle", "right"] = "left",
modifiers: list[Literal["Alt", "Control", "Meta", "Shift"]] = [],
Click an element.

click('b22', button="right")
click('48', button="middle", modifiers=["Shift"])

# https://playwright.dev/python/docs/api/class-locator#locator-dblclick
def dblclick(
bid: str,
button: Literal["left", "middle", "right"] = "left",
modifiers: list[Literal["Alt", "Control", "Meta", "Shift"]] = [],
Double click an element.

dblclick('ca42', button="right")
dblclick('178', button="middle", modifiers=["Shift"])

# https://playwright.dev/python/docs/api/class-locator#locator-hover
def hover(bid: str):
Hover over an element.

# https://playwright.dev/python/docs/input#keys-and-shortcuts
def press(bid: str, key_comb: str):
Focus the matching element and press a combination of keys. It accepts
the logical key names that are emitted in the keyboardEvent.key property
of the keyboard events: Backquote, Minus, Equal, Backslash, Backspace,
Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp,
ArrowRight, ArrowUp, F1 - F12, Digit0 - Digit9, KeyA - KeyZ, etc. You can
alternatively specify a single character you'd like to produce such as "a"
or "#". Following modification shortcuts are also supported: Shift, Control,
Alt, Meta.

press('88', 'Backspace')
press('a26', 'Control+a')
press('a61', 'Meta+Shift+t')

# https://playwright.dev/python/docs/api/class-locator#locator-focus
def focus(bid: str):
Focus the matching element.

# https://playwright.dev/python/docs/api/class-locator#locator-clear
def clear(bid: str):
Clear the input field.

# https://playwright.dev/python/docs/input#drag-and-drop
def drag_and_drop(from_bid: str, to_bid: str):
Perform a drag     drop. Hover the element that will be dragged. Press
left mouse button. Move mouse to the element that will receive the
drop. Release left mouse button.

drag_and_drop('56', '498')

# https://playwright.dev/python/docs/api/class-mouse#mouse-wheel
def scroll(delta_x: float, delta_y: float):
Scroll horizontally and vertically. Amounts in pixels, positive for right or down scrolling, negative for left or up scrolling. Dispatches a wheel event.

scroll(0, 200)
scroll(-50.2, -100.5)

# https://playwright.dev/python/docs/api/class-mouse#mouse-move
def mouse_move(x: float, y: float):
Move the mouse to a location. Uses absolute client coordinates in pixels.
Dispatches a mousemove event.

mouse_move(65.2, 158.5)

# https://playwright.dev/python/docs/api/class-mouse#mouse-up
def mouse_up(x: float, y: float, button: Literal["left", "middle", "right"] = "left"):
Move the mouse to a location then release a mouse button. Dispatches
mousemove and mouseup events.

mouse_up(250, 120)
mouse_up(47, 252, 'right')

# https://playwright.dev/python/docs/api/class-mouse#mouse-down
def mouse_down(x: float, y: float, button: Literal["left", "middle", "right"] = "left"):
Move the mouse to a location then press and hold a mouse button. Dispatches
mousemove and mousedown events.

mouse_down(140.2, 580.1)
mouse_down(458, 254.5, 'middle')

# https://playwright.dev/python/docs/api/class-mouse#mouse-click
def mouse_click(x: float, y: float, button: Literal["left", "middle", "right"] = "left"):
Move the mouse to a location and click a mouse button. Dispatches mousemove,
mousedown and mouseup events.

mouse_click(887.2, 68)
mouse_click(56, 712.56, 'right')

# https://playwright.dev/python/docs/api/class-mouse#mouse-dblclick
def mouse_dblclick(x: float, y: float, button: Literal["left", "middle", "right"] = "left"):
Move the mouse to a location and double click a mouse button. Dispatches
mousemove, mousedown and mouseup events.

mouse_dblclick(5, 236)
mouse_dblclick(87.5, 354, 'right')

def mouse_drag_and_drop(from_x: float, from_y: float, to_x: float, to_y: float):
Drag and drop from a location to a location. Uses absolute client
coordinates in pixels. Dispatches mousemove, mousedown and mouseup

mouse_drag_and_drop(10.7, 325, 235.6, 24.54)

# https://playwright.dev/python/docs/api/class-keyboard#keyboard-press
def keyboard_press(key: str):
Press a combination of keys. Accepts the logical key names that are
emitted in the keyboardEvent.key property of the keyboard events:
Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape,
ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight,
ArrowUp, F1 - F12, Digit0 - Digit9, KeyA - KeyZ, etc. You can
alternatively specify a single character you'd like to produce such
as "a" or "#". Following modification shortcuts are also supported:
Shift, Control, Alt, Meta.

# https://playwright.dev/python/docs/api/class-keyboard#keyboard-up
def keyboard_up(key: str):
Release a keyboard key. Dispatches a keyup event. Accepts the logical
key names that are emitted in the keyboardEvent.key property of the
keyboard events: Backquote, Minus, Equal, Backslash, Backspace, Tab,
Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp,
ArrowRight, ArrowUp, F1 - F12, Digit0 - Digit9, KeyA - KeyZ, etc.
You can alternatively specify a single character you'd like to produce
such as "a" or "#".

# https://playwright.dev/python/docs/api/class-keyboard#keyboard-down
def keyboard_down(key: str):
Press and holds a keyboard key. Dispatches a keydown event. Accepts the
logical key names that are emitted in the keyboardEvent.key property of
the keyboard events: Backquote, Minus, Equal, Backslash, Backspace, Tab,
Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp,
ArrowRight, ArrowUp, F1 - F12, Digit0 - Digit9, KeyA - KeyZ, etc. You can
alternatively specify a single character such as "a" or "#".

# https://playwright.dev/python/docs/api/class-keyboard#keyboard-type
def keyboard_type(text: str):
Types a string of text through the keyboard. Sends a keydown, keypress/input,
and keyup event for each character in the text. Modifier keys DO NOT affect
keyboard_type. Holding down Shift will not type the text in upper case.

keyboard_type('Hello world!')

# https://playwright.dev/python/docs/api/class-keyboard#keyboard-insert-text
def keyboard_insert_text(text: str):
Insert a string of text in the currently focused element. Dispatches only input
event, does not emit the keydown, keyup or keypress events. Modifier keys DO NOT
affect keyboard_insert_text. Holding down Shift will not type the text in upper

keyboard_insert_text('Hello world!')

# https://playwright.dev/python/docs/api/class-page#page-goto
def goto(url: str):
Navigate to a url.

# https://playwright.dev/python/docs/api/class-page#page-go-back
def go_back():
Navigate to the previous page in history.

# https://playwright.dev/python/docs/api/class-page#page-go-forward
def go_forward():
Navigate to the next page in history.

# https://playwright.dev/python/docs/api/class-browsercontext#browser-context-new-page
def new_tab():
Open a new tab. It will become the active one.

global page
# set the new page as the active page
page = page.context.new_page()
# trigger the callback that sets this page as active in browsergym

# https://playwright.dev/python/docs/api/class-page#page-close
def tab_close():
Close the current tab.

# https://playwright.dev/python/docs/api/class-page#page-bring-to-front
def tab_focus(index: int):
Bring tab to front (activate tab).

# https://playwright.dev/python/docs/input#upload-files
def upload_file(bid: str, file: str | list[str]):
Click an element and wait for a "filechooser" event, then select one
or multiple input files for upload. Relative file paths are resolved
relative to the current working directory. An empty list clears the
selected files.

upload_file("572", "my_receipt.pdf")
upload_file("63", ["/home/bob/Documents/image.jpg", "/home/bob/Documents/file.zip"])

# https://playwright.dev/python/docs/input#upload-files
def mouse_upload_file(x: float, y: float, file: str | list[str]):
Click a location and wait for a "filechooser" event, then select one
or multiple input files for upload. Relative file paths are resolved
relative to the current working directory. An empty list clears the
selected files.

mouse_upload_file(132.1, 547, "my_receipt.pdf")
mouse_upload_file(328, 812, ["/home/bob/Documents/image.jpg", "/home/bob/Documents/file.zip"])

§ BROWSING AGENT DETAILS

The following shows an example prompt containing all the information required for the current step to make a prediction about the next browsing actions.
Note that we also instruct the agent to predict multiple actions in one turn if the agent thinks they are meant to be executed sequentially without any feedback from the page.
This could save turns for common workflows that consist of a sequence of actions on the same page without any observation change, such as filling the username and password and submit in a login page.

# Instructions
Review the current state of the page and all other information to find the best possible next action to accomplish your goal. Your answer will be interpreted and executed by a program, make sure to follow the formatting instructions.

# Goal:
Browse localhost:8000, and tell me the ultimate answer to life. Do not ask me for confirmation at any point.

# Action Space

16 different types of actions are available.

noop(wait_ms: float = 1000)

send_msg_to_user(text: str)
send_msg_to_user('Based on the results of my search, the city was built in 1751.')

scroll(delta_x: float, delta_y: float)
scroll(0, 200)

scroll(-50.2, -100.5)

fill(bid: str, value: str)
fill('237', 'example value')

fill('45', 'multi-line')

fill('a12', 'example with "quotes"')

select_option(bid: str, options: str | list[str])
select_option('48', 'blue')

select_option('48', ['red', 'green', 'blue'])

click(bid: str, button: Literal['left', 'middle', 'right'] = 'left', modifiers: list[typing.Literal['Alt', 'Control', 'Meta', 'Shift']] = [])

click('b22', button='right')

click('48', button='middle', modifiers=['Shift'])

dblclick(bid: str, button: Literal['left', 'middle', 'right'] = 'left', modifiers: list[typing.Literal['Alt', 'Control', 'Meta', 'Shift']] = [])

dblclick('ca42', button='right')

dblclick('178', button='middle', modifiers=['Shift'])

hover(bid: str)

press(bid: str, key_comb: str)
press('88', 'Backspace')

press('a26', 'Control+a')

press('a61', 'Meta+Shift+t')

focus(bid: str)

clear(bid: str)

drag_and_drop(from_bid: str, to_bid: str)
drag_and_drop('56', '498')

upload_file(bid: str, file: str | list[str])
upload_file('572', 'my_receipt.pdf')

upload_file('63', ['/home/bob/Documents/image.jpg', '/home/bob/Documents/file.zip'])

goto(url: str)

Multiple actions can be provided at once. Example:
fill('a12', 'example with "quotes"')
click('48', button='middle', modifiers=['Shift'])
Multiple actions are meant to be executed sequentially without any feedback from the page.
Don't execute multiple actions at once if you need feedback from the page.

# Current Accessibility Tree:
RootWebArea 'The Ultimate Answer', focused
[8] heading 'The Ultimate Answer'
[9] paragraph ”
StaticText 'Click the button to reveal the answer to life, the universe, and everything.'
[10] button 'Click me', clickable

# Previous Actions

Here is an example with chain of thought of a valid action when clicking on a button:
In order to accomplish my goal I need to click on the button with bid 12

And an example response to the above prompt is:

In order to accomplish my goal, I need to click on the button with bid 10 to reveal the answer to life, the universe, and everything.

For the evaluation on WebArena benchmark, since some of the tasks require checking for answer exact match on the agent's message back to the user, we add the following instruction to let the agent reply with only a concise answer string when messaging the user to prevent the agent from failing the test due to extra text:

Here is another example with chain of thought of a valid action when providing a concise answer to user:
In order to accomplish my goal I need to send the information asked back to the user. This page list the information of HP Inkjet Fax Machine, which is the product identified in the objective. Its price is $279.49. I will send a message back to user with the answer.