AI程序员Devin的开源替代Devika

前天介绍了 AI软件工程师 微软AI 程序员AutoDev,自主执行工程任务生成代码-CSDN博客

今天介绍下另一款Devin替代品,开源的Devika

(另外还有一个开源的 OpenDevin : https://github.com/OpenDevin/OpenDevin)

Devika

https://github.com/stitionai/devika

Devika 是一款自主 AI 软件工程师,能够理解高水平的人类指令,将其分解为步骤,研究相关信息,并编写代码以实现给定的目标。

Devika 的目标是成为 Cognition AI 的 Devin 的竞争性开源替代方案。

关于

Devika 是一款先进的 AI 软件工程师,能够理解高水平的人类指令,将其分解为步骤,研究相关信息,并编写代码以实现给定的目标。

Devika 利用大型语言模型、规划和推理算法以及网络浏览能力来智能地开发软件。

Devika 的目标是通过提供一款 AI 辅助编程工具来彻底改变我们构建软件的方式,这款工具可以在极少的人类指导下承担复杂的编码任务。

无论您需要创建一个新功能、修复一个错误,还是从零开始开发一个完整的项目,Devika 都在这里为您提供帮助。

注意

Devika 是根据 Cognition AI 的 Devin 设计的。

该项目旨在成为 Devin 的开源替代方案,其“过度雄心勃勃”的目标是在 SWE-bench 基准测试中达到与 Devin 相同的分数……并最终超越它?

主要特点

🤖 支持 Claude 3、GPT-4、GPT-3.5 和通过 Ollama 支持的本地语言模型。为了获得最佳性能:请使用 Claude 3 系列模型。

🧠 先进的 AI 规划和推理能力

🔍 上下文关键字提取,用于专注研究

🌐 无缝的网络浏览和信息收集

💻 支持多种编程语言的代码编写

📊 动态代理状态跟踪和可视化

💬 通过聊天界面进行自然语言交互

📂 基于项目的组织和管理

🔌 可扩展的架构,用于添加新功能和集成

系统架构

Devika 的系统架构包括以下关键组件:

用户界面:基于网络的聊天界面,用于与 Devika 进行交互、查看项目文件和监视代理状态。

代理核心:负责协调 AI 规划、推理和执行过程的中心组件。它与各种子代理和模块通信,以完成任务。

大型语言模型:Devika 利用像 Claude、GPT-4 和通过 Ollama 支持的本地语言模型等最先进的语言模型,用于自然语言理解、生成和推理。

规划和推理引擎:负责将高级目标分解为可行动步骤,并根据当前上下文做出决策。

研究模块:利用关键字提取和网络浏览能力,收集与当前任务相关的信息。

代码编写模块:根据计划、研究结果和用户需求生成代码。支持多种编程语言。

浏览器交互模块:使 Devika 能够浏览网站、提取信息,并根据需要与网页元素交互。

知识库:存储和检索项目特定信息、代码片段和学习知识,以实现高效访问。

数据库:持久化项目数据、代理状态和配置设置。

详细文档请阅读 ARCHITECTURE.md[1]。

快速开始

在本地运行项目的最简单方法:

1.安装 uv - Python 包管理器(https://github.com/astral-sh/uv)2.安装 bun - JavaScript 运行时(https://bun.sh/)3.安装并设置 Ollama(https://ollama.com/)4.在 config.toml 文件中设置 API 密钥。(这个功能很快就会移到 UI 中,届时您可以直接在 UI 中设置这些密钥,而无需触及命令行,想要实现它吗?请查看此问题:#3)

然后执行以下一组命令:

ollama serve
git clone https://github.com/stitionai/devika.git
cd devika/
uv venv
uv pip install -r requirements.txt
cd ui/
bun install
bun run dev
cd ..
python3 devika.py

复制

安装

Devika 依赖以下内容:

••Ollama(安装说明请见:https://ollama.com/)

••Bun(安装说明请见:https://bun.sh/)

••安装 Devika,请遵循以下步骤:

1.克隆 Devika 仓库:

git clone https://github.com/stitionai/devika.git

复制

2.导航到项目目录:

cd devika

复制

3.安装所需依赖项:

 pip install -r requirements.txt playwright install --with-deps # installs browsers in playwright (and their deps) if required

复制

4.设置必要的 API 密钥和配置(参见配置部分)。5.启动 Devika 服务器:

 python devika.py

复制

6.编译并运行 UI 服务器:

cd ui/
bun install
bun run dev

复制

7.通过打开浏览器并导航到 http://127.0.0.1:3000 访问 Devika Web 界面。

入门

开始使用 Devika,请遵循以下步骤: 1.在浏览器中打开 Devika Web 界面。 2.点击“新建项目”按钮并为您的项目提供一个名称,以创建一个新项目。 3.为您的项目选择所需的编程语言和模型配置。 4.在聊天界面中,为 Devika 提供一个高级目标或任务描述以供其工作。 5.Devika 将处理您的请求,将其分解为步骤,并开始处理任务。 6.监控 Devika 的进展,查看生成的代码,并根据需要提供额外的指导或反馈。 7.一旦 Devika 完成任务,请审阅生成的代码和项目文件。 8.通过提供进一步的指令或修改,根据需要迭代和完善项目。

配置

Devika 需要某些配置设置和 API 密钥才能正常工作。使用以下信息更新 config.toml 文件:

OPENAI_API_KEY:用于访问 GPT 模型的 OpenAI API 密钥。•CLAUDE_API_KEY:用于访问 Claude 模型的 Anthropic API 密钥。•BING_API_KEY:用于网页搜索功能的 Bing 搜索 API 密钥。•DATABASE_URL:数据库连接的 URL。•LOG_DIRECTORY:存储 Devika 日志的目录。•PROJECT_DIRECTORY:存储 Devika 项目的目录。请确保保护您的 API 密钥安全,不要公开分享。

深入了解

通过下文,让我们一起深入了解 Devika 中使用的一些关键组件和技术。

AI 规划和推理

Devika 采用先进的 AI 规划和推理算法,将高级目标分解为可执行的步骤。规划过程包括以下阶段:

1.目标理解:Devika 分析给定的目标或任务描述,以理解用户的意图和要求。

2.上下文收集:从对话历史、项目文件和知识库中收集相关上下文,以通知规划过程。

3.步骤生成:根据目标和上下文,Devika 生成一系列高级步骤来完成任务。

4.细化和验证:细化和验证生成的步骤,以确保它们的可行性和与目标的一致性。

5.执行:Devika 执行计划中的每个步骤,根据需要利用各种子代理和模块。推理引擎不断评估进展并根据执行过程中接收到的新信息或反馈调整计划。

关键词提取

为了实现专注的研究和信息收集,Devika 采用了关键词提取技术。该过程包括以下步骤:

预处理:对输入文本(目标、对话历史或项目文件)进行预处理,去除停用词、分词和规范化文本。•关键词识别:Devika 使用 BERT(双向编码器表示变换器)模型从预处理的文本中识别重要的关键词和短语。BERT 在大型语料库上的预训练使其能够捕捉语义关系并理解给定上下文中单词的重要性。•关键词排名:根据其与手头任务的相关性和重要性对识别的关键词进行排名。使用像 TF-IDF(词频-逆文档频率)和 TextRank 等技术为每个关键词分配分数。•关键词选择:选择排名最高的关键词作为当前上下文中最相关和最具信息性的关键词。这些关键词用于指导研究和信息收集过程。通过提取与上下文相关的关键词,Devika 可以专注其研究工作并检索相关信息以协助完成任务。

浏览器交互

Devika 包含浏览器交互能力,以导航网站、提取信息和与网页元素交互。浏览器交互模块利用 Playwright 库自动化网页交互。该过程包括以下步骤:

导航:Devika 使用 Playwright 导航到特定的 URL 或根据提供的关键词或要求执行搜索。•元素交互:Playwright 允许 Devika 与网页元素进行交互,例如点击按钮、填写表单和从特定元素中提取文本。•页面解析:Devika 解析访问网页的 HTML 结构以提取相关信息。它使用像 CSS 选择器和 XPath 等技术来定位和提取特定数据点。•JavaScript 执行:Playwright 使 Devika 能够在浏览器上下文中执行 JavaScript 代码,从而实现动态交互和数据检索。•屏幕截图捕获:Devika 可以捕获访问网页的屏幕截图,这对于视觉参考或调试目的很有用。浏览器交互模块赋予 Devika 从网络收集信息、与在线资源交互以及将实时数据纳入其决策和代码生成过程的能力。

编写代码

Devika 的代码编写模块根据计划、研究发现和用户要求生成代码。该过程包括以下步骤:

语言选择:Devika 确定用户指定的编程语言或根据项目上下文推断它。•代码结构生成:根据计划和特定于语言的模式,Devika 生成代码的高级结构,包括类、函数和模块。•代码填充:Devika 使用特定的逻辑、算法和数据操作语句填充代码结构。它利用研究发现、知识库中的代码片段以及自己对编程概念的理解来生成有意义的代码。•代码格式化:生成的代码根据特定于语言的约定和最佳实践进行格式化,以确保可读性和可维护性。•代码审查和完善:Devika 审查生成的代码,检查语法错误、逻辑不一致以及潜在的改进点。它根据自己的分析和用户提供的任何反馈,迭代地完善代码。Devika 的代码编写能力使其能够根据每个项目的具体要求和上下文,生成各种编程语言中的功能性和高效代码。

其他

本文由山行翻译整理自https://github.com/stitionai/devika

devika AI 软件工程师,Devin 的开源替代方案。程序员会被替代吗?

另外国内有款多Agent:GitHub - kuafuai/DevOpsGPT: Multi agent system for AI-driven software development. Combine LLM with DevOps tools to convert natural language requirements into working software. Supports any development language and extends the existing code.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis在多节点上如何实现分布式锁?

在多个 Redis 节点上实现分布式锁可以通过以下步骤来完成: 选择分布式锁的实现方式:有多种实现分布式锁的方式,如使用 Redis 的普通锁、RedLock 等。RedLock 是一种基于多个 Redis 节点的分布式锁实现,它通过在多个节点上获取锁来…

awesome-cheatsheets:超级速查表 - 编程语言、框架和开发工具的速查表

awesome-cheatsheets:超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需要知道的东西 官网:GitHub - skywind3000/awesome-cheatsheets: 超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需…

Python:魔法函数

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) Python 的魔法函数,又称为特殊方法,是 Python 类中定义的一组特殊的方法,具有一些独特的特性和用途。这些方法…

今日总结2024/3/30

今日学习了基本数论内容,LCM,GCD以及筛素数 GCD-最大公约数 int gcd(int a,int b){//迭代法 while(b){//要保证a大于b int ta%b; ab; bt; } return a }//辗转相除法int gcd(int a,int b){//递归法return b?gcd(b,a%b):a;//一定要保证a大于b } LCM-最小公倍数 可以套公式LC…

解决WordPress文章的段落首行自动空两格的问题

写文章时,段落首行都会空两格,可是WordPress自带的编辑器却没有考虑到这一点,导致发布的文章首行都是顶格的,看起来很不习惯。 我们通常的解决方法都是在发布文章时把编辑器切换到“文本”模式,然后再在首行手动键入两…

鸿蒙之路由跳转router

router的使用都是基于Entry修饰的组件。 都是基于resources/base/profile/main-page.json中的路由配置来跳转的 router提供下列的几个方法 1.pushUrl -压栈一层盖一层(在鸿蒙中页面栈支持最大数值是32) 2.replaceUrl会替换当前页面,不管是不是同一个页面&#xf…

超声波雷达探测车位及信号处理方法

在APA泊车中用到了超声波雷达,第一次接触,总结研究之。 目录 1. 基于USS的泊车位识别及推荐1.1 基于AVM的泊车位识别1.2 障碍物识别2. 超声波雷达及车位探测信号处理1. 基于USS的泊车位识别及推荐 参考: F-APA车位搜索及障碍物识别控制原理 1.1 基于AVM的泊车位识别 (1)a…

P6学习:解析P6 WBS-工作分解结构的原则

前言 WBS,及Work Breakdown Structure,中文工作分解结构,是总结工作阶段的项目的层次结构分解。 WBS 就像项目的大纲——它将项目分解为特定的可交付成果或阶段。 然后将活动添加到这些层中以创建项目计划的时间表。 WBS 使用流程会有所不…

linux命令之tput

1.tput介绍 linux命令tput是可以在终端中进行文本和颜色的控制和格式化,其是一个非常有用的命令 2.tput用法 命令: man tput 3.样例 3.1.清除屏幕 命令: tput clear [rootelasticsearch ~]# tput clear [rootelasticsearch ~]# 3.2.…

love 2d Lua 俄罗斯方块超详细教程

源码已经更新在CSDN的码库里: git clone https://gitcode.com/funsion/love2d-game.git 一直在找Lua 能快速便捷实现图形界面的软件,找了一堆,终于发现love2d是小而美的原生lua图形界面实现的方式。 并参考相关教程做了一个更详细的&#x…

Https【Linux网络编程】

目录 一、为什么需要https 二、常见加密方法 1、对称加密 2、非对称加密 3、数据指纹 三、选择什么加密方案? 方案一:对称加密() 方案二:双方使用非对称加密(效率低) 方案三&#xff1a…

通过cplusplus网站学习函数用法演示

在我们学习c语言或者c时,总会遇到一些我们熟悉的库函数,这时候就需要我们通过cplusplus网站搜索学习,下面就由我为大家演示一下如何通过这个网站的页面学习函数的使用方法吧! atoi - C Reference (cplusplus.com) 我们今天要学习…

vue3全局控制Element plus所有组件的文字大小

项目框架vue-右上角有控制全文的文字大小 实现&#xff1a; 只能控制element组件的文字及输入框等大小变化&#xff0c;如果是自行添加div,text, span之类的控制不了。 配置流程 APP.vue 使用element的provide&#xff0c;包含app <el-config-provider :locale"loca…

SparkSQL基本数据抽象RDD/DataFrame/Dataset介绍[附操作代码]

文章目录 1. SparkSQL1.1 总述1.2 数据格式1.3 转化关系1.3.1 RDD转DataFrame | Dataset1.3.2 DataFrame转Dataset1.3.3 DataFrame | Dataset转RDD1.3.4 Dataset转DataFrame 2. DataFrame 数据导入2.1 准备工作pom.xmllog4j.properties 2.2 RDD转换DataFrame2.2.1 模式12.2.2 模…

设计模式,装修模式,Php代码演示,优缺点,注意事项

装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许动态地向一个现有对象添加新的功能或行为&#xff0c;而不改变其原始结构。在 PHP 中&#xff0c;可以使用类的继承和组合来实现装饰模式。下面是一个简单的 PHP 装饰模式示例代码&am…

Android MediaPlayer

MediaPlayer 类是媒体框架最重要的组成部分之一。此类的对象能够获取、解码以及播放音频和视频&#xff0c;而且只需极少量设置。它支持多种不同的媒体源&#xff0c;例如&#xff1a; • 本地资源 • 内部 URI&#xff0c;例如您可能从内容解析器那获取的 URI • 外部网址…

debian12,linux-image-6.6.13+bpo-amd64内核nvidia显卡驱动失效

问题 更新linux内核linux-image-6.6.13bpo-amd64和linux-headers-6.6.13bpo-common后无法进入图形化界面&#xff0c;nvidia驱动版本535.154.05&#xff0c;nvidia官方驱动 日志 /var/log/Xorg.1.log [ 3.834] (--) Log file renamed from "/var/log/Xorg.pid-11…

QA:ubuntu22.04.4桌面版虚拟机鼠标丢失的解决方法

前言 在Windows11中的VMWare Workstation17.5.1 Pro上安装了Ubuntu22.04.4&#xff0c;在使用过程中发现&#xff0c;VM虚拟机的鼠标的光标会突然消失&#xff0c;但鼠标其他正常&#xff0c;就是光标不见了&#xff0c;下面是解决办法。 内容 如下图&#xff0c;输入mouse&a…

【智能算法】天鹰优化算法(AO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;L Abualigah等人受到天鹰猎食过程启发&#xff0c;提出了天鹰优化算法&#xff08;Aquila Optimizer&#xff0c;AO&#xff09;。 2.算法原理 2.1算法思想 AO模拟天鹰 4 种不…

Vue系列——数据对象

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>el:挂载点</title> </head> <body&g…