使用离线部署32B模型实现OpenDeepWiki项目代码自动分析与文档生成
背景介绍
在企业环境中,我们经常需要对公司项目代码进行分析和文档生成。然而,考虑到代码的保密性,将代码上传至公共AI平台存在安全隐患。为解决这一问题,我们可以在公司内部GPU服务器上部署强大的大语言模型(如qwen2.5:32b-instruct-fp16
),并结合OpenDeepWiki工具,实现安全、高效的代码仓库分析与文档自动生成。
环境需求
- 硬件: 支持
qwen2.5:32b-instruct-fp16
模型运行的GPU服务器(推荐配置:4*RTX 3090) - 软件: Ollama(用于部署模型)、Docker和Docker Compose环境
- 网络: 内部网络环境,确保安全性
部署步骤
1. 部署OpenDeepWiki
在服务器上创建并配置必要文件:
docker-compose.yml:
services:
koalawiki:
image: crpi-j9ha7sxwhatgtvj4.cn-shenzhen.personal.cr.aliyuncs.com/koala-ai/koala-wiki
environment:
- KOALAWIKI_REPOSITORIES=/repositories
- TASK_MAX_SIZE_PER_USER=5 # 每个用户AI处理文档生成的最大数量
- REPAIR_MERMAID=1 # 是否进行Mermaid修复,1修复,其余不修复
- CHAT_MODEL=qwen2.5:32b-instruct-fp16 # 必须要支持function的模型
- ANALYSIS_MODEL=qwen2.5:32b-instruct-fp16 # 分析模型,用于生成仓库目录结构,这个很重要,模型越强,生成的目录结构越好,为空则使用ChatModel
- CHAT_API_KEY=sk- #您的APIkey
- LANGUAGE=简体中文 # 设置生成语言默认为"中文"
- ENDPOINT=http://您的Ollamaip:11434/v1
- DB_TYPE=sqlite
- DB_CONNECTION_STRING=Data Source=/data/KoalaWiki.db
- UPDATE_INTERVAL=5 # 仓库增量更新间隔,单位天
- EnableSmartFilter=true # 是否启用智能过滤,这可能影响AI得到仓库的文件目录
- PARALLEL_COUNT=1 # The warehouse processes the quantity in parallel
volumes:
- ./repositories:/app/repositories
- ./data:/data
koalawiki-web:
image: crpi-j9ha7sxwhatgtvj4.cn-shenzhen.personal.cr.aliyuncs.com/koala-ai/koala-wiki-web
environment:
- NEXT_PUBLIC_API_URL=http://koalawiki:8080 # 用于提供给server的地址
nginx: # 需要nginx将前端和后端代理到一个端口
image: crpi-j9ha7sxwhatgtvj4.cn-shenzhen.personal.cr.aliyuncs.com/koala-ai/nginx:alpine
ports:
- 8090:80
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- koalawiki
- koalawiki-web
nginx.conf:
server {
listen 80;
server_name localhost;
# 设置上传文件大小限制为 100MB
client_max_body_size 100M;
# 日志配置
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# 代理所有 /api/ 请求到后端服务
location /api/ {
proxy_pass http://koalawiki:8080/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
# 其他所有请求转发到前端服务
location / {
proxy_pass http://koalawiki-web:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
2. 启动服务
创建好上述文件后,在同级目录下执行以下命令:
拉取必要的镜像:
docker-compose pull
启动容器:
docker-compose up -d
等待服务初始化完成(通常需要几分钟)
3. 访问OpenDeepWiki平台
在浏览器中访问 http://[服务器IP]:8090
,即可看到OpenDeepWiki的界面:
使用指南
添加代码仓库进行分析
从以下地址获取OpenDeepWiki源码(推荐国内用户使用Gitee):
下载源码的ZIP压缩包
在OpenDeepWiki平台点击"添加新仓库":
- 选择"上传压缩包",填写组织名称和仓库名称(这些字段必填,将影响前端路由显示),然后提交:
- 上传完成后,系统将开始处理仓库(处理时间约为3-5分钟)。处理中的仓库会显示在列表中:
- 处理完成后,点击仓库名称即可查看由
qwen2.5:32b-instruct-fp16
模型自动生成的文档:
系统优势
- 安全可控:所有代码分析和文档生成过程都在内部环境完成,确保代码安全
- 高质量文档:借助强大的
qwen2.5:32b-instruct-fp16
模型,生成的文档结构清晰、内容全面 - 一键操作:简单的上传流程,无需复杂配置
- 可扩展性:支持多种代码仓库格式,适用于不同项目需求
结语
通过部署OpenDeepWiki与qwen2.5:32b-instruct-fp16
模型,我们可以安全、高效地为公司代码仓库生成完整文档,大幅提升项目理解和开发效率。
如果您对OpenDeepWiki感兴趣,欢迎访问以下地址并给项目点个Star:
在线体验地址:https://opendeep.wiki/
目前已有500+仓库加入!您也可以将您的开源仓库添加进来。
使用离线部署32B模型实现OpenDeepWiki项目代码自动分析与文档生成的更多相关文章
- .NET平台开源项目速览(4).NET文档生成工具ADB及使用
很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧 ...
- Web Api 多项目文档生成之SwaggerUI
SwaggerUI 可以生成不错的文档,但默认只能作用于单个api 项目,研究了一下源码发现只需修改一下SwaggerConfig.cs文件即可支持多API项目 1.使用生成脚本把xml文件复制到AP ...
- ios在项目中打开word文档、ppt等总结
最近在项目开发中遇到下载附件文档预览需求,在这里总结一下我的实现方法,本文最后会附带我写的demo下载地址 这里我总结了三种实现方法(1)用webView预览(2)通过UIDocumentIntera ...
- idea导入项目报错:文档中根元素前面的标记必须格式正确
今天从git上面导入项目之后,由于是上周刚刚提交过的,本地也没有什么修改,于是就从gitlab上面直接下载下来了.可是项目启动时候,报错了... 文档中根元素前面的标记必须格式正确 想想 原来是上次提 ...
- webpack搭建vue项目开发环境【文档向学习】
为何有这篇文章 各个社区已经有无数篇帖子介绍如何使用webpack搭建前端项目,但无论是出于学习webpack的目的还是为了解决工作实际需要都面临着一个现实问题,那就是版本更新.别人的帖子可能刚写好版 ...
- JAVA连接Excel最好用的开源项目EasyExcel,官方使用文档及.jar包下载
EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址:https://github.com/alibaba ...
- 部署java的spring boot项目(代码外包提供)
部署java后台的spring boot 人脸识别系统的项目 基础环境准备: 硬件:内存4g cpu 4核 硬盘200g 虚拟机 软件:CentOS 7.6 mysql 5.7.26 jdk ...
- j2ee期末项目 新闻发布系统需求文档
1 绪论 1.1 开发背景 现如今社会是信息化的社会,掌握的信息越多越全面越快速的人,就会在各方面的竞争当中,占据优势,正所谓知己知彼百战不殆,信息的不对称性将会是失败的主要诱因之一.信息的时效性越来 ...
- Java:API文档;文档注释中的javadoc标记;官方API;自己动手给项目建一个API文档
1.什么是API文档 在Java语言中有3种注释 //单行注释 /* 多行注释 */ /** * 文档注释 */ API(应用程序接口)文档就是用javadoc命令提取文档注释生成的,html格式,用 ...
- 大数据项目之_15_帮助文档_NTP 配置时间服务器+Linux 集群服务群起脚本+CentOS6.8 升级到 python 到 2.7
一.NTP 配置时间服务器1.1.检查当前系统时区1.2.同步时间1.3.检查软件包1.4.修改 ntp 配置文件1.5.重启 ntp 服务1.6.设置定时同步任务二.Linux 集群服务群起脚本2. ...
随机推荐
- 探秘Transformer系列之(5)--- 训练&推理
探秘Transformer系列之(5)--- 训练&推理 0x00 概述 Transformer训练的目的是通过对输入源序列和模型输出序列的学习,来拟合真正的目标序列.推理的目的则是仅通过输入 ...
- C#中的StreamWriter和"谁创建谁释放"原则
C# 类库中的 StreamWriter 类在释放时会同时关闭其所依赖的基础流对象,这是为了确保所有缓冲数据都被写入基础流中,并且在不再需要 StreamWriter 对象时,基础流对象也能够被及时释 ...
- 解决 Ubuntu 22.04 下 flameshot 截图工具无法使用的问题
问题描述 flameshot 是 Linux 端广受好评的一款截图工具,但在 Ubuntu 22.04 中,安装完成后却不能使用,表现为截图命令无响应,或截图过程报错. 通过查阅 flameshot ...
- Fermat
[KPCTF 2024]ez_fermat from Crypto.Util.number import * p = getPrime(1024) q = getPrime(813) n = p * ...
- django4.2 与python 最新对应关系表
- go gin Next()方法
示例 gin Next()使用方法 package main import ( "fmt" "github.com/gin-gonic/gin" "n ...
- 【消息利器RabbitMQ】RabbitMQ常用内容浅析
以下是一篇关于 RabbitMQ 的博客内容,涵盖了从基础到死信队列的实现,以及 RabbitMQ 其他常用知识点的补充.内容逻辑清晰,代码完整,适合直接发布. 使用 RabbitMQ 实现消息队列与 ...
- pve节点频繁宕机问题排查
1.时间: 我是大概20220521日上午11:03分收到这个事情开始跟进: 再这之前一直是其他同事在处理,由于最近比较忙,没有安排的事情基本也都没有深入跟进,只是知道个大概. 2.问题现象: q ...
- 如何设置家用威联通 NAS UPS 断电后自动关机并通知其他设备?
场景 备注: 求轻喷, 求放过. 我真的是个理线方面的白痴. 这已经是我的极限了. 我的家庭实验室 Homelab 服务器集群配置如下. 上半部分之前已经介绍过了, 这里就不再赘述了. 今天重点介绍介 ...
- BUUCTF---rsa_output
题目 点击查看代码 {21058339337354287847534107544613605305015441090508924094198816691219103399526800112802416 ...