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.rhkb.cn/news/350872.html

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

相关文章

【C语言】二维数组(详解)

目录 1. 二维数组的创建 1.1 二维数组的概念 1.2 二维数组的创建 2. 二维数组的初始化 2.1 不完全初始化 2.2 完全初始化 2.3 按照行初始化 2.4 初始化时能省略行&#xff0c;但不能省略列 3. 二维数组的使用 3.1 二维数组下标 3.2 二维数组…

【FreeRTOS】ARM架构汇编实例

目录 ARM架构简明教程1. ARM架构电脑的组成1.2 RISC1.2 提出问题1.3 CPU内部寄存器1.4 汇编指令 2. C函数的反汇编 学习视频 【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS&#xff08;FreeRTOS教程 基于STM32&#xff0c;以实际项目为导向&#xff09;】 https://www.…

Linux--MQTT(二)通信基本原理

一、MQTT 通信基本原理 MQTT 是一种基于 客户端 - 服务端 架构的消息传输协议&#xff0c;所以在 MQTT 协议通信中&#xff0c;有两个最为重要的角色&#xff0c;它们便是服务端 和 客户端 。 举例&#xff1a;若开发板向“芯片温度”这一主题发布消息&#xff0c;那么服务…

LeetCode --- 401周赛

题目列表 3178. 找出 K 秒后拿着球的孩子 3179. K 秒后第 N 个元素的值 3180. 执行操作可获得的最大总奖励 I 3181. 执行操作可获得的最大总奖励 II 一、找出K秒后拿着球的孩子 这题可以直接模拟&#xff0c;从前往后&#xff0c;再从后往前走k次&#xff0c;最后直接返回…

第〇篇:深入Docker的世界系列博客介绍

深入Docker的世界系列博客介绍 欢迎来到“深入Docker的世界”系列博客&#xff0c;这是一次旨在全面探索Docker容器化技术的冒险之旅。从基础原理到高级应用&#xff0c;再到实践案例分析&#xff0c;我们将深入挖掘Docker的每一个角落&#xff0c;帮助你不仅掌握这项技术的实…

ecshop鲜花商城微信分销源码附移动端

ecshop 微信手机分销商城 微信支付微信通&#xff0c;PHP鲜花礼品商城源码带手机wap ecshop鲜花商城微信分销源码附移动端

C语言小例程20/100

题目&#xff1a;一个数如果恰好等于它的因子之和&#xff0c;这个数就称为"完数"。例如61&#xff0b;2&#xff0b;3.编程找出1000以内的所有完数。 #include<stdio.h> #define N 1000 int main() {int i,j,k,n,sum;int a[256];for(i2;i<N;i){suma[0]1;k…

LabVIEW在高校中的应用

LabVIEW 作为一款功能强大的图形化编程工具&#xff0c;在高校中有广泛的应用。它不仅用于教学实验&#xff0c;还广泛应用于科研项目和工程训练。本文将从教学、科研、实验室管理和学生技能培养等多个角度&#xff0c;详细分析LabVIEW在高校中的应用。 教学应用 课程设计 自动…

Flutter调用本地web

前言: 在目前Flutter 环境中&#xff0c;使用在线 webview 是一种很常见的行为 而在 app 环境中&#xff0c;离线使用则更有必要 1.环境准备 将依赖导入 2.引入前端代码 前端代码有两种情况 一种是使用打包工具 build 而来的前端代码 另一种情况是直接使用 HTML 文件 …

深入探讨限流算法:固定窗口、滑动窗口、漏桶与令牌桶原理及应用场景

固定窗口算法 简单粗暴&#xff0c;但有临界问题&#xff1a; 滑动窗口算法 滑动窗口通俗来讲是一种流量控制技术&#xff0c;描述接收方TCP数据报缓冲区大小的数据。发送方根据这个数据计算最大可发送的数据量。滑动窗口协议是TCP使用的一种流量控制方法&#xff0c;允许发送…

【Linux硬盘数据读取】WIN10访问linux分区解决方案:ext2fsd

<div id"content_views" class"htmledit_views" style"user-select: auto;"><p>尝试ext2explore、Paragon ExtFS都不好用&#xff0c;强烈安利ext2fsd&#xff0c;可读写&#xff0c;很强大</p> 转自&#xff1a;https://blog…

设计通用灵活的LabVIEW自动测试系统

为了在不同客户案例中灵活使用不同设备&#xff08;如采集卡、Modbus模块&#xff09;且保持功能一致的LabVIEW自动测试系统&#xff0c;需要采用模块化的软件架构、配置文件管理、标准化接口和良好的升级维护策略。本文从软件架构、模块化设计、配置管理、升级维护、代码管理和…

sigmoid函数

σ ( x ) 1 1 e − x \sigma(x)\frac1{1e^{-x}} σ(x)1e−x1​ sigmoid函数好处 1. σ ( x ) \sigma(x) σ(x)的域值是[0,1] &#xff0c;在(-∞, ∞)单调递增&#xff0c;很符合概率分布函数的特点 2.以 σ ( x ) \sigma(x) σ(x)为分布函数的概率密度函数在远离零点的位置…

springSecurity学习笔记(一)

简介 Spring Security是一个Java框架&#xff0c;用于保护应用程序的安全性。它提供了一套全面的安全解决方案&#xff0c;包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念&#xff0c;可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验…

hugo-magic主题使用教程(一)

前提条件 以下教程以windows10为例操作终端使用git bash魔法上网的前提下 下载hugo https://github.com/gohugoio/hugo/releases/download/v0.127.0/hugo_extended_0.127.0_windows-amd64.zip解压到任意目录,然后将目录添加到系统环境变量 如图 (windows)打开cmd 输入 hugo …

[数据集][目标检测]胸部解剖检测数据集VOC+YOLO格式100张10类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;100 标注数量(xml文件个数)&#xff1a;100 标注数量(txt文件个数)&#xff1a;100 标注类别…

宿舍用电管理模块一进三出的升级改造

宿舍用电管理模块一进三出石家庄光大远通电气有限公司产品在高校日常管理工作中,宿舍管理是一项重要工作。宿舍管理内容复杂,而且涉及学生的日常生活,意义重大。其中,学生宿舍内漏电,超负荷用电,违规用电等现象一直是困扰后勤管理的普遍问题。随着学生日常生活方式以及生活用品…

第九届星华杯网络邀请赛

T1喵星人的身高 T2犇犇碑 T3嘤嘤词典 T4三角区间和

微服务feign组件学习

手写不易&#xff0c;对您有帮助。麻烦一键三连。也欢饮各位大料指正&#xff0c;交流。 微服务feign组件学习 1.概念1.1 feign 概念1.2 Ribbon概念 2.使用2.1 集成feign2.1.1 maven依赖2.1.2 项目结构 2.2 使用2.2.1 定义feign接口2.2.2 消费端服务调用2.2.3 消费端扫描feig…

Ubuntu 22.04 解决 firefox 中文界面乱码

问题复现 在为Ubuntu 22.04 Server安装完整的GNOME 42.01桌面后&#xff0c;将桌面语言设置为中文时&#xff0c;打开Firefox可能会出现中文乱码的问题。经过网上调查发现&#xff0c;这个问题是由Snap软件包引起的。 解决方案 为了避免在Ubuntu 22.04中文模式下的乱码问题…