今年 3 月份首个 AI 软件工程师 Devin 引爆了 AI 社区,引发了人们对程序员这个职业未来前景的热议。OpenDevin 是一个复刻 Devin 的开源项目,Devin 是一个自主的 AI 软件工程师,能够执行复杂的工程任务,并在软件开发项目上与用户积极合作。
OpenDevin: Code Less, Make More
OpenDevin 架构图
OpenDevin 分为两个主要部分:前台和后台。前台负责处理用户交互和显示结果。后台负责处理业务逻辑和执行代理。
系统架构图OpenDevin 内置的 Agents
一、CodeAct Agent
CodeAct Agent 实现了 CodeAct 理念(论文、推文),将 LLM 代理的操作整合到统一的代码操作空间中,以保证简单性和性能。
CodeAct 的理念如下图所示。在每个回合,代理可以:
Converse:用自然语言与人交流,要求澄清、确认等。
CodeAct:选择通过执行代码来执行任务
执行任何有效的 Linux bash 命令
使用交互式 Python 解释器执行任何有效的 Python 代码,它是通过 bash 命令模拟的。
插件系统
为了使 CodeAct 代理更强大,只需访问 bash 操作空间,CodeAct 代理利用了 OpenDevin 的插件系统:
Jupyter 插件:通过 bash 命令执行 IPython
SWE-agent 工具插件: 由 swe-agent 引入的用于软件开发任务的强大 bash 命令行工具。
使用示例
使用 gpt-4-turbo-2024-04-09 执行数据科学任务的 CodeActAgent 示例(线性回归)
https://github.com/OpenDevin/OpenDevin/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac
Actions
Action
CmdRunAction
IPythonRunCellAction
AgentEchoAction
AgentFinishAction
AgentTalkAction
Observations
CmdOutputObservation
IPythonRunCellObservation
AgentMessageObservation
UserMessageObservation
Methods
方法 | 描述 |
---|---|
__init__ |
使用 llm 和消息列表初始化代理 list[Mapping[str, str]] |
step |
使用 CodeAct 代理执行一个步骤。这包括收集先前步骤的信息并提示模型执行命令。 |
search_memory |
尚未实现 |
Monologue Agent 利用长期和短期记忆来完成任务。长期记忆存储为一个 LongTermMemory 对象,模型利用它来搜索过去的例子。短期记忆存储为 Monologue 对象,模型可根据需要对其进行浓缩。
Actions
Action
NullAction
CmdRunAction
FileWriteAction
FileReadAction
AgentRecallAction
BrowseURLAction
GithubPushAction
AgentThinkAction
Observations
Observation
NullObservation
CmdOutputObservation
FileReadObservation
AgentRecallObservation
BrowserOutputObservation
Methods
方法 | 描述 |
---|---|
__init__ |
初始化代理的长期记忆和内部独白 |
_add_event |
将事件添加到代理的独白中,如果独白过长,则自动用摘要进行压缩 |
_initialize |
利用 INITIAL_THOUGHTS 列表为代理提供其能力的上下文,以及如何导航到 /workspace
|
step |
通过添加最新的操作和观察结果来修改当前状态,然后提示模型考虑下一步操作。 |
search_memory |
使用 VectorIndexRetriever 在长期记忆中查找相关记忆。 |
Planner Agent 利用特殊的提示策略来制定解决问题的长期计划。它会获得之前的动作-观察(action-observation)对、当前任务以及基于每一步最后采取的动作的提示。
Actions
NullAction
CmdRunAction
CmdKillAction
BrowseURLAction
GithubPushAction
FileReadAction
FileWriteAction
AgentRecallAction
AgentThinkAction
AgentFinishAction
AgentSummarizeAction
AddTaskAction
ModifyTaskAction
Observations
Observation
NullObservation
CmdOutputObservation
FileReadObservation
AgentRecallObservation
BrowserOutputObservation
Methods
方法 | 描述 |
---|---|
__init__ |
使用 llm 初始化 agent |
step |
检查当前步骤是否已完成,如果为 True,则返回 AgentFinishAction 。否则,创建计划提示并发送给模型进行推理,并将结果添加为下一步操作。 |
search_memory |
尚未实现 |
运行 OpenDevin 最简单的方法是在 Docker 容器内。您必须使用 Linux、Mac OS 或 Windows 上的 WSL。
要启动应用程序,请运行这些命令,将 $(pwd)/workspace 替换为您希望 OpenDevin 使用的目录。
注意:OpenDevin 在 Docker 沙箱中运行 bash 命令,因此它不会影响您的计算机。但是您的工作区目录将附加到该沙箱,并且该目录中的文件可能会被修改或删除。
docker run \ -it \ --pull=always \ -e LLM_API_KEY \ -e SANDBOX_USER_ID=$(id -u) \ -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \ -v $WORKSPACE_BASE:/opt/workspace_base \ -v /var/run/docker.sock:/var/run/docker.sock \ -p 3000:3000 \ --add-host host.docker.internal:host-gateway \ ghcr.io/opendevin/opendevin:0.5
成功启动 OpenDevin 后,你就可以在浏览器上访问 http://localhost:3000 地址,来使用 OpenDevin。 如果你在部署的过程中,有遇到问题,可以阅读 OpenDevin 提供的 troubleshooting 文档,该文档列举了一些常见的问题。
https://github.com/OpenDevin/OpenDevin往期文章
2024 年最完整的 AI Agents 清单来了,涉及 13 个领域,上百个 Agents!
25.4K Star 低代码LLM编排工具:终于支持 Multi Agent,内置 5 大 Multi Agent 开箱即用!
3 款强大的开源低代码 LLM 编排工具,可视化定制专属 AI Agent 和 AI 工作流!
当 AI 遇上爬虫:让数据提取变得前所未有地简单!
告别传统客服:支持十几个平台的 AI “懒人客服” 来了!
卖货主播大模型开源了,让销冠触手可及!
Kimi+麦肯锡,5 秒摸透一个行业!
Kimi 10 秒生成流程图,别再手动绘图了!
万字长文秒变精华!Kimi 的超强提示词秘籍
阿里开源的自动化视频剪辑工具,太好用了!
欢迎您与我交流 AI 技术/工具
关注 AI 真好玩,带你玩转各类 AI 工具,掌控数字未来!
如果这篇文章对您有所帮助,请点赞、关注,并分享给您的朋友。感谢您的支持!