OpenDevin 环境配置及踩坑指南

不惧怕任何环境配置

首先 clone 项目,然后查看开发者文档:https://github.com/OpenDevin/OpenDevin/blob/main/Development.md

make setup-config 自定义 LLM 配置

首先这个 devin 写的是支持自定义的 LLM 配置,并且提供了交互式命令供我们选择,直接在项目根目录下 make setup-config

➜  OpenDevin git:(main) make setup-configSetting up config.toml...
make[1]: 进入目录“/home/zhangzhe/LLM/OpenDevin”
Enter your workspace directory (as absolute path) [default: ./workspace]: 
Do you want to persist the sandbox container? [true/false] [default: true]: 
Enter a password for the sandbox container: zhangzhe2023
Enter your LLM model name, used for running without UI. Set the model in the UI after you start the app. (see https://docs.litellm.ai/docs/providers for full list) [default: gpt-4o]: qwen72b
Enter your LLM api key: EMPTY
Enter your LLM base URL [mostly used for local LLMs, leave blank if not needed - example: http://localhost:5001/v1/]: http://215.49:8000/v1
Enter your LLM Embedding Model
Choices are:- openai- azureopenai- Embeddings available only with OllamaEmbedding:- llama2- mxbai-embed-large- nomic-embed-text- all-minilm- stable-code- Leave blank to default to 'BAAI/bge-small-en-v1.5' via huggingface
> openai
make[1]: 离开目录“/home/zhangzhe/LLM/OpenDevin”
Config.toml setup completed.

但是我这样配置了,好像没有生效哦

make build

这里面干的东西比较多,配置 python,前端的 node_modules 下载,也是遇到了不少坑。先粗略放一个日志感受一下。

➜  OpenDevin git:(main) make buildBuilding project...
Checking dependencies...
Checking system...
Linux detected.
Checking Python installation...
Python 3.11.9 is already installed.
Checking npm installation...
npm 10.5.2 is already installed.
Checking Node.js installation...
Node.js 20.13.1 is already installed.
Checking Docker installation...
Docker version 24.0.5, build 24.0.5-0ubuntu1~20.04.1 is already installed.
Checking Poetry installation...
Poetry (version 1.8.3) is already installed.
Dependencies checked successfully.
Pulling Docker image...
Using default tag: latest
latest: Pulling from opendevin/sandbox
3c645031de29: Downloading  15.76MB/29.53MB
8429b0886fe2: Downloading  25.36MB/184.7MB
05a8e69e51e3: Download complete 
78a1e71658b2: Download complete - Installing retry (0.9.2)- Installing ruff (0.4.8)- Installing seaborn (0.13.2)- Installing streamlit (1.35.0)- Installing swebench (1.1.5 7b0c4b1)- Installing termcolor (2.4.0)- Installing types-toml (0.10.8.20240310)- Installing whatthepatch (1.0.5)Installing the current project: opendevin (0.1.0)
Running playwright install --with-deps chromium...
Installing dependencies...
Switching to root user to install dependencies...
[sudo] 的密码: 
命中:1 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease
忽略:2 https://download.docker.com/linux/ubuntu foc

这 node 又出问题

主要是报错有一个包安装不成功,这个时候我就知道要使用官方源了。

➜  frontend git:(main) npm config list
; "user" config from /home/zhangzhe/.npmrcregistry = "https://registry.npm.taobao.org/" ; "project" config from /home/zhangzhe/LLM/OpenDevin/frontend/.npmrcenable-pre-post-scripts = true 
public-hoist-pattern = ["*@nextui-org/*"] ; node bin location = /usr/bin/node
; node version = v20.13.1
; npm local prefix = /home/zhangzhe/LLM/OpenDevin/frontend
; npm version = 10.5.2
; cwd = /home/zhangzhe/LLM/OpenDevin/frontend
; HOME = /home/zhangzhe
; Run `npm config ls -l` to show all defaults.
我换成官方的源之后,然后再开代理,就好了

先设置.npmrc

public-hoist-pattern[]=*@nextui-org/*
enable-pre-post-scripts=true
registry=https://registry.npmjs.org

然后

➜  frontend git:(main) export https_proxy=http://127.0.0.1:7890
➜  frontend git:(main) ✗ npm install                          > opendevin-frontend@0.1.0 prepare
> cd .. && husky frontend/.huskychanged 1268 packages, and audited 1233 packages in 24s281 packages are looking for fundingrun `npm fund` for detailsfound 0 vulnerabilities

devin 安装成功!

➜  OpenDevin git:(main) make buildBuilding project...
Checking dependencies...
Checking system...
Linux detected.
Checking Python installation...
Python 3.11.9 is already installed.
Checking npm installation...
npm 10.5.2 is already installed.
Checking Node.js installation...
Node.js 20.13.1 is already installed.
Checking Docker installation...
Docker version 24.0.5, build 24.0.5-0ubuntu1~20.04.1 is already installed.
Checking Poetry installation...
Poetry (version 1.8.3) is already installed.
Dependencies checked successfully.
Pulling Docker image...
Using default tag: latest
latest: Pulling from opendevin/sandbox
Digest: sha256:4bd05c581692e26a448bbc6771a21bb27002cb0e6bcf5034d0db91bb8704d0f0
Status: Image is up to date for ghcr.io/opendevin/sandbox:latest
ghcr.io/opendevin/sandbox:latest
Docker image pulled successfully.
Installing Python dependencies...
Using virtualenv: /home/zhangzhe/.cache/pypoetry/virtualenvs/opendevin-ypH5SPK--py3.11
Installing dependencies from lock fileNo dependencies to install or updateInstalling the current project: opendevin (0.1.0)
Setup already done. Skipping playwright installation.
Python dependencies installed successfully.
Setting up frontend environment...
Detect Node.js version...
Current Node.js version is 20.13.1, corepack is supported.
Installing frontend dependencies with npm...> opendevin-frontend@0.1.0 prepare
> cd .. && husky frontend/.huskyup to date, audited 1233 packages in 3s281 packages are looking for fundingrun `npm fund` for detailsfound 0 vulnerabilities
Running make-i18n with npm...> opendevin-frontend@0.1.0 make-i18n
> node scripts/make-i18n-translations.cjsFrontend dependencies installed successfully.
Installing pre-commit hooks...
pre-commit installed at .git/hooks/pre-commit
Pre-commit hooks installed successfully.
Building frontend...> opendevin-frontend@0.1.0 build
> tsc && vite buildvite v5.3.1 building for production...3009 modules transformed.
dist/index.html                         1.95 kB │ gzip:   0.91 kB
dist/assets/index-E7G9J2Py.css        221.98 kB │ gzip:  25.99 kB
dist/assets/web-vitals-DdRmOIVa.js      5.49 kB │ gzip:   2.05 kB
dist/assets/index-BsOxiPz-.js       2,860.40 kB │ gzip: 916.76 kB(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 13.87s
Build completed successfully.

make run 运行

这里也是遇到了好几个坑。

ERROR:root:<class ‘RuntimeError’>: Your system has an unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0.

最主要的还是这个。这里要升级 sqlite3 的版本,同时完成对应 python drvier 库的替换。

➜  OpenDevin git:(main) ✗ make runRunning the app...
Starting backend server...
Waiting for the backend to start...
Backend started successfully.
Starting frontend with npm...> opendevin-frontend@0.1.0 start
> npm run make-i18n && vite --port 3001> opendevin-frontend@0.1.0 make-i18n
> node scripts/make-i18n-translations.cjsVITE v5.3.1  ready in 4159 ms➜  Local:   http://localhost:3001/➜  Network: use --host to expose➜  press h + enter to show help
ERROR:root:  File "/home/zhangzhe/LLM/OpenDevin/agenthub/monologue_agent/agent.py", line 29, in <module>from opendevin.memory.condenser import MemoryCondenserFile "/home/zhangzhe/LLM/OpenDevin/opendevin/memory/__init__.py", line 3, in <module>from .memory import LongTermMemoryFile "/home/zhangzhe/LLM/OpenDevin/opendevin/memory/memory.py", line 3, in <module>import chromadbFile "/home/zhangzhe/.cache/pypoetry/virtualenvs/opendevin-ypH5SPK--py3.11/lib/python3.11/site-packages/chromadb/__init__.py", line 83, in <module>raise RuntimeError(ERROR:root:<class 'RuntimeError'>: Your system has an unsupported version of sqlite3. Chroma                     requires sqlite3 >= 3.35.0.
Please visit                     https://docs.trychroma.com/troubleshooting#sqlite to learn how                     to upgrade.

那我就手动升级 sqlite3 版本到最新

草,还得手动编译 sqlite3,升级版本

原来包都给我安装到这里了啊

File "/home/zhangzhe/.cache/pypoetry/virtualenvs/opendevin-ypH5SPK--py3.11/lib/python3.11/site-packages/chromadb/__init__.py", line 79, in <module>

https://stackoverflow.com/questions/64861331/how-can-i-install-or-upgrade-to-sqlite-3-33-0-on-ubuntu-18-04

上面这个教程无敌了。

升级完还不行,还得替换 Python 标准库中的 sqlite3 模块实现,用 pysqlite3 模块取而代之。

按照这个老哥的提示。

https://gist.github.com/defulmere/8b9695e415a44271061cc8e272f3c300?permalink_comment_id=4650539#gistcomment-4650539

在这里插入图片描述

这段代码的作用在于替换 Python 标准库中的 sqlite3 模块实现,用 pysqlite3 模块取而代之。下面是对这段代码的逐行解析:

  1. import('pysqlite3'): 这行代码动态地导入了 pysqlite3 模块。import 是 Python 的一个内置函数,用于低级别的模块导入。这里直接通过字符串形式指定了要导入的模块名。导入后,pysqlite3 模块会被添加到 sys.modules 字典中,该字典存储了所有已导入模块的引用。
  2. import sys: 导入 Python 的系统模块 sys,这个模块提供了访问和控制 Python 解释器的一些变量和函数。
  3. sys.modules['sqlite3'] = sys.modules.pop('pysqlite3'): 这行代码完成了模块的替换工作。
    • sys.modules 是一个字典,它保存了所有已经导入模块的引用,键是模块名,值是模块对象。
    • sys.modules.pop('pysqlite3') 这一部分是从 sys.modules 字典中移除键为 'pysqlite3' 的项,并返回对应的值(即 pysqlite3 模块的对象)。
    • 接着,这个 pysqlite3 模块的对象被赋值给了 sys.modules['sqlite3'],这意味着当你在代码中使用 import sqlite3 时,实际上加载的是 pysqlite3 模块,而非 Python 标准库中的 sqlite3 模块。
      这样做的目的通常是因为 pysqlite3 可能提供了额外的功能或者与某些特定需求更加兼容,比如支持更多 SQLite 特性或性能上的优化。通过这种方式,开发者可以在不改变原有代码(即仍然使用 import sqlite3)的情况下,使用 pysqlite3 模块的功能。

这里有一个坑需要注意一下,就是这俩库 都需要在 opendevin 的 venv 下面安装这几个包哦。要不然 import 的时候会找不到,会去用户默认的 site-package 里面找。

➜  bin ./pip install pysqlite3
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Installing collected packages: pysqlite3
Successfully installed pysqlite3-0.5.3
➜  bin ./pip install pysqlite3-binary
\Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting pysqlite3-binary
Installing collected packages: pysqlite3-binary
Successfully installed pysqlite3-binary-0.5.3
➜  bin pwd
/home/zhangzhe/.cache/pypoetry/virtualenvs/opendevin-ypH5SPK--py3.11/bin

运行成功!

> node scripts/make-i18n-translations.cjsVITE v5.3.1  ready in 4023 ms➜  Local:   http://localhost:3001/➜  Network: use --host to expose➜  press h + enter to show help
INFO:     Started server process [1198078]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
ERROR:    [Errno 98] error while attempting to bind on address ('127.0.0.1', 3000): address already in use
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.

界面出来了

在这里插入图片描述

这个 devin 使用的是 poetry 提供的 venv

记得切换一下 Python 解释器路径,要不然代码索引有问题。

在这里插入图片描述

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

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

相关文章

DzzOffice集成功能最丰富的开源PHP+MySQL办公系统套件

DzzOffice是一套开源办公套件&#xff0c;旨在为企业和团队提供类似“Google企业应用套件”和“微软Office365”的协同办公平台。以下是对DzzOffice的详细介绍&#xff1a; 主要功能和应用&#xff1a; 网盘&#xff1a;支持企业、团队文件的集中管理&#xff0c;提供文件标签…

Python开发示例——使用Python实现炫酷的数据动态图

前言 数据可视化是通过图形、图表、地图等可视元素将数据呈现出来&#xff0c;以便更容易理解、分析和解释。它是将抽象的数据转化为直观形象的过程&#xff0c;有助于发现数据中的模式、趋势和关系。数据可视化对于数据科学、商业分析、决策制定等领域都至关重要。当我们想用…

UniApp+Vue3使用Vant-微信小程序组件

第一步&#xff1a;打开创建好的UniappVue3的项目 第二步&#xff1a;下载Vant-Weapp npm i vant/weapp -S --production 第三步&#xff1a;修改目录名称 wxcomponents 必须是wxcomponents 第四步&#xff1a;将下载好的vant中的dist目录剪切到当前wxcomponents目录下 第五…

牛客网金九银十最新版互联网Java高级工程师面试八股文出炉!面面俱到,太全了

前言 作为一个 Java 程序员&#xff0c;你平时总是陷在业务开发里&#xff0c;每天噼里啪啦忙敲着代码&#xff0c;上到系统开发&#xff0c;下到 Bug 修改&#xff0c;你感觉自己无所不能。然而偶尔的一次聚会&#xff0c;你听说和自己一起出道的同学早已经年薪 50 万&#x…

2024年【陕西省安全员C证】考试及陕西省安全员C证最新解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 陕西省安全员C证考试参考答案及陕西省安全员C证考试试题解析是安全生产模拟考试一点通题库老师及陕西省安全员C证操作证已考过的学员汇总&#xff0c;相对有效帮助陕西省安全员C证最新解析学员顺利通过考试。 1、【多…

155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题

设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…

MySQL 日志(二)

本篇将继续介绍MySQL日志的相关内容 目录 一、二进制日志 简介 注意事项 删除二进制日志 查看二进制日志 二进制日志的格式 二、服务器日志维护 一、二进制日志 简介 二进制日志中主要记录了MySQL的更改事件&#xff08;不包含SELECT和SHOW),例如&#xff1a;表的…

【刷力扣】23. 合并 K 个升序链表(dummy节点技巧 + 分治思维 + 优先队列)

目录 一、合并升序链表问题二、题目&#xff1a;[21. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/description/)1、掌握dummy节点的技巧 三、题目&#xff1a;[23. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/descri…

Android 工程副总裁卸任

Android 工程副总裁卸任 Android工程副总裁Dave Burke宣布&#xff0c;他将辞去领导Android工程的职位&#xff0c;将重心转向“AI/生物”项目。不过&#xff0c;他并没有离开Alphabet&#xff0c;目前仍将担任Android系统开发顾问的角色。 Burke参与了Android系统的多个关键…

【TypeScript】类型兼容(协变、逆变和双向协变)

跟着小满zs 学习 ts&#xff0c;原文&#xff1a;学习TypeScript进阶类型兼容_typescript进阶阶段类型兼容 小满-CSDN博客 类型兼容&#xff0c;就是用于确定一个类型是否能赋值给其他的类型。如果A要兼容B 那么A至少具有B相同的属性。 // 主类型 interface A {name: string,a…

边界内聚和耦合

内聚 功能内聚 功能内聚是软件工程中一个重要的概念&#xff0c;它描述了一个模块内部各个元素之间的紧密程度。一个具有高功能内聚的模块意味着其内部的各个组件都共同完成一个具体的、明确的功能&#xff0c;并且这些组件之间的联系不是偶然的&#xff0c;而是因为它们共同服…

快手爬票概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 无论是出差还是旅行&#xff0c;都无法离开交通工具的支持。现如今随着科技水平的提高&#xff0c;高铁与动车成为人们喜爱的交通工具。如果想要知道…

【C语言】联合(共用体)

目录 一、什么是联合体 二、联合类型的声明 三、联合变量的创建 四、联合的特点 五、联合体大小的计算 六、联合的应用&#xff08;判断大小端&#xff09; 七、联合体的优缺点 7.1 优点 7.2 缺点 一、什么是联合体 联合也是一种特殊的自定义类型。由多个不同类型的数…

LVS三种负载均衡模式:NAT、Tunneling和DR的技术对比

1. LVS-NAT 模式的特性 IP使用&#xff1a;RS&#xff08;Real Server&#xff09;应使用私有地址&#xff0c;RS的网关必须指向DIP&#xff08;Director IP&#xff09;。网络范围&#xff1a;DIP和RIP必须在同一个网段内。数据包处理&#xff1a;请求和响应报文都需要经过Di…

数据库开发——并发控制(第十一章)

文章目录 前言并发执行例题一、封锁二、封锁协议三、可串行调度四、总结 学习目标&#xff1a;重点为并发控制的基本概念及几个基本协议 前言 数据库管理系统必须提供并发控制机制&#xff0c;保证事务的隔离性和一致性 并发执行例题 一、封锁 排他锁称为写锁&#xff0c;共…

atmega8 上传程序

使用icsp 烧写时先关闭串口程序&#xff0c;与串口uart连接相关的电路勿于电脑连接 接触不良 1.使用icsp 上传 1&#xff09;可以直接上传程序 如官方示例blink 或是 serial示例 2&#xff09;可以先烧录bootload 方便下次使用串口上传程序代码 A)使用专门的icsp 上传器上传…

关于二分法的理解(以JS为例)

算法介绍 基本概念 二分查找算法&#xff0c;又称折半查找算法&#xff0c;是一种在有序数组中查找特定元素的高效方法。它的核心思想是将数组分成两半&#xff0c;然后根据目标值与中间元素的比较结果来决定是继续在左半部分还是右半部分进行搜索。 工作原理 初始化&#…

【iOS】如何断点看系统方法在哪一个库

如何断点看系统方法在哪一个库 开源网站如何断点看系统方法在哪一个库1 下符号断点2 符号断点中输入 load &#xff0c;并且开启断点&#xff08;Enable&#xff09;。3 运行程序&#xff0c;触发断点&#xff0c;在堆栈信息中找到load方法&#xff0c;可以看到其在libobjc.A.d…

程序员的wsl2

坑 wsl无法打开 上班时打开wsl2提示 WSL 正在完成升级... Could not write value to key \SOFTWARE\Classes\Directory\shell\WSL. Verify that you have sufficient access to that key, or contact your support personnel. 原因未知&#xff0c;之前并没有更新过&#xff…

【AI+编程】工作日常场景随时可以AI编程,记一个问答SQL快速导出数据日常示例

今天有个场景&#xff0c;我们有个老项目&#xff0c;由于历史原因差不多1年多没使用了&#xff0c;恰巧客户紧急情况要使用。因为当时没有需求&#xff0c;所以V1.0上线后 就没做更新。 需求很简单&#xff1a;我们假定 项目问题表、客户表、问题答案表&#xff0c; 实时查询…