Code Monkey home page Code Monkey logo

opendevin's Introduction

OpenDevin Logo

OpenDevin: Code Less, Make More

License

demo-video.webm

Mission ๐ŸŽฏ

Welcome to OpenDevin, an open-source project aiming to replicate Devin, an autonomous AI software engineer who is capable of executing complex engineering tasks and collaborating actively with users on software development projects. This project aspires to replicate, enhance, and innovate upon Devin through the power of the open-source community.

Work in Progress

OpenDevin is still a work in progress. But you can run the alpha version to see things working end-to-end.

Requirements

Installation

First, pull our latest sandbox image here

docker pull ghcr.io/opendevin/sandbox

Note: you need to be able to run docker without sudo

Then copy config.toml.template to config.toml. Add an OpenAI API key to config.toml, or see below for how to use different models.

LLM_API_KEY="sk-..."

Next, start the backend:

python -m pip install pipenv
python -m pipenv install -v
python -m pipenv shell
uvicorn opendevin.server.listen:app --port 3000

If pipenv doesn't work for you, you can also run:

python -m pipenv requirements > requirements.txt && python -m pip install -r requirements.txt

Then, in a second terminal, start the frontend:

cd frontend
npm install
npm start

You'll see OpenDevin running at localhost:3001

Picking a Model

We use LiteLLM, so you can run OpenDevin with any foundation model, including OpenAI, Claude, and Gemini. LiteLLM has a full list of providers.

To change the model, set the LLM_MODEL and LLM_API_KEY in config.toml.

For example, to run Claude:

LLM_API_KEY="your-api-key"
LLM_MODEL="claude-3-opus-20240229"

You can also set the base URL for local/custom models:

LLM_BASE_URL="https://localhost:3000"

And you can customize which embeddings are used for the vector database storage:

LLM_EMBEDDING_MODEL="llama2" # can be "llama2", "openai", "azureopenai", or "local"

Running on the Command Line

You can run OpenDevin from your command line:

PYTHONPATH=`pwd` python opendevin/main.py -d ./workspace/ -i 100 -t "Write a bash script that prints 'hello world'"

๐Ÿค” What is Devin?

Devin represents a cutting-edge autonomous agent designed to navigate the complexities of software engineering. It leverages a combination of tools such as a shell, code editor, and web browser, showcasing the untapped potential of LLMs in software development. Our goal is to explore and expand upon Devin's capabilities, identifying both its strengths and areas for improvement, to guide the progress of open code models.

๐Ÿš Why OpenDevin?

The OpenDevin project is born out of a desire to replicate, enhance, and innovate beyond the original Devin model. By engaging the open-source community, we aim to tackle the challenges faced by Code LLMs in practical scenarios, producing works that significantly contribute to the community and pave the way for future advancements.

โญ๏ธ Research Strategy

Achieving full replication of production-grade applications with LLMs is a complex endeavor. Our strategy involves:

  1. Core Technical Research: Focusing on foundational research to understand and improve the technical aspects of code generation and handling.
  2. Specialist Abilities: Enhancing the effectiveness of core components through data curation, training methods, and more.
  3. Task Planning: Developing capabilities for bug detection, codebase management, and optimization.
  4. Evaluation: Establishing comprehensive evaluation metrics to better understand and improve our models.

๐Ÿ›  Technology Stack

  • Sandboxing Environment: Ensuring safe execution of code using technologies like Docker and Kubernetes.
  • Frontend Interface: Developing user-friendly interfaces for monitoring progress and interacting with Devin, potentially leveraging frameworks like React or creating a VSCode plugin for a more integrated experience.

๐Ÿš€ Next Steps

An MVP demo is urgent for us. Here are the most important things to do:

  • UI: a chat interface, a shell demonstrating commands, a browser, etc.
  • Architecture: an agent framework with a stable backend, which can read, write and run simple commands
  • Agent: capable of generating bash scripts, running tests, etc.
  • Evaluation: a minimal evaluation pipeline that is consistent with Devin's evaluation.

After finishing building the MVP, we will move towards research in different topics, including foundation models, specialist capabilities, evaluation, agent studies, etc.

How to Contribute

OpenDevin is a community-driven project, and we welcome contributions from everyone. Whether you're a developer, a researcher, or simply enthusiastic about advancing the field of software engineering with AI, there are many ways to get involved:

  • Code Contributions: Help us develop the core functionalities, frontend interface, or sandboxing solutions.
  • Research and Evaluation: Contribute to our understanding of LLMs in software engineering, participate in evaluating the models, or suggest improvements.
  • Feedback and Testing: Use the OpenDevin toolset, report bugs, suggest features, or provide feedback on usability.

For details, please check this document.

Join Us

We use Slack to discuss. Feel free to fill in the form if you would like to join the Slack organization of OpenDevin. We will reach out shortly if we feel you are a good fit to the current team!

Stay updated on OpenDevin's progress, share your ideas, and collaborate with fellow enthusiasts and experts. Together, we can make significant strides towards simplifying software engineering tasks and creating more efficient, powerful tools for developers everywhere.

๐Ÿš Code less, make more with OpenDevin.

Star History Chart

opendevin's People

Contributors

rbren avatar yimothysu avatar yufansong avatar xingyaoww avatar 808vita avatar ifuryst avatar huybery avatar dorbanianas avatar h9-tect avatar justinlin610 avatar geohotstan avatar jiaxin-pei avatar zch-cc avatar jannikwinghart avatar ghat0tkach avatar suryavirkapur avatar eltociear avatar jojeyh avatar enyst avatar sparkier avatar patricknercessian avatar penberg avatar rfleuryleveso avatar renukacheripally avatar sikgyu avatar ttesseractt avatar xiangyue9607 avatar yashwanth-chandrakumar avatar lanthanum1 avatar bravekingzhang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.