背景介绍

在企业环境中,我们经常需要对公司项目代码进行分析和文档生成。然而,考虑到代码的保密性,将代码上传至公共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. 启动服务

创建好上述文件后,在同级目录下执行以下命令:

  1. 拉取必要的镜像:

    docker-compose pull
  2. 启动容器:

    docker-compose up -d
  3. 等待服务初始化完成(通常需要几分钟)

3. 访问OpenDeepWiki平台

在浏览器中访问 http://[服务器IP]:8090,即可看到OpenDeepWiki的界面:

使用指南

添加代码仓库进行分析

  1. 从以下地址获取OpenDeepWiki源码(推荐国内用户使用Gitee):

  2. 下载源码的ZIP压缩包

  3. 在OpenDeepWiki平台点击"添加新仓库":

  1. 选择"上传压缩包",填写组织名称和仓库名称(这些字段必填,将影响前端路由显示),然后提交:

  1. 上传完成后,系统将开始处理仓库(处理时间约为3-5分钟)。处理中的仓库会显示在列表中:

  1. 处理完成后,点击仓库名称即可查看由qwen2.5:32b-instruct-fp16模型自动生成的文档:

系统优势

  • 安全可控:所有代码分析和文档生成过程都在内部环境完成,确保代码安全
  • 高质量文档:借助强大的qwen2.5:32b-instruct-fp16模型,生成的文档结构清晰、内容全面
  • 一键操作:简单的上传流程,无需复杂配置
  • 可扩展性:支持多种代码仓库格式,适用于不同项目需求

结语

通过部署OpenDeepWiki与qwen2.5:32b-instruct-fp16模型,我们可以安全、高效地为公司代码仓库生成完整文档,大幅提升项目理解和开发效率。

如果您对OpenDeepWiki感兴趣,欢迎访问以下地址并给项目点个Star:

在线体验地址https://opendeep.wiki/

目前已有500+仓库加入!您也可以将您的开源仓库添加进来。

使用离线部署32B模型实现OpenDeepWiki项目代码自动分析与文档生成的更多相关文章

  1. .NET平台开源项目速览(4).NET文档生成工具ADB及使用

    很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧 ...

  2. Web Api 多项目文档生成之SwaggerUI

    SwaggerUI 可以生成不错的文档,但默认只能作用于单个api 项目,研究了一下源码发现只需修改一下SwaggerConfig.cs文件即可支持多API项目 1.使用生成脚本把xml文件复制到AP ...

  3. ios在项目中打开word文档、ppt等总结

    最近在项目开发中遇到下载附件文档预览需求,在这里总结一下我的实现方法,本文最后会附带我写的demo下载地址 这里我总结了三种实现方法(1)用webView预览(2)通过UIDocumentIntera ...

  4. idea导入项目报错:文档中根元素前面的标记必须格式正确

    今天从git上面导入项目之后,由于是上周刚刚提交过的,本地也没有什么修改,于是就从gitlab上面直接下载下来了.可是项目启动时候,报错了... 文档中根元素前面的标记必须格式正确 想想 原来是上次提 ...

  5. webpack搭建vue项目开发环境【文档向学习】

    为何有这篇文章 各个社区已经有无数篇帖子介绍如何使用webpack搭建前端项目,但无论是出于学习webpack的目的还是为了解决工作实际需要都面临着一个现实问题,那就是版本更新.别人的帖子可能刚写好版 ...

  6. JAVA连接Excel最好用的开源项目EasyExcel,官方使用文档及.jar包下载

    EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址:https://github.com/alibaba ...

  7. 部署java的spring boot项目(代码外包提供)

    部署java后台的spring boot 人脸识别系统的项目 基础环境准备: 硬件:内存4g  cpu 4核  硬盘200g  虚拟机 软件:CentOS 7.6  mysql 5.7.26  jdk ...

  8. j2ee期末项目 新闻发布系统需求文档

    1 绪论 1.1 开发背景 现如今社会是信息化的社会,掌握的信息越多越全面越快速的人,就会在各方面的竞争当中,占据优势,正所谓知己知彼百战不殆,信息的不对称性将会是失败的主要诱因之一.信息的时效性越来 ...

  9. Java:API文档;文档注释中的javadoc标记;官方API;自己动手给项目建一个API文档

    1.什么是API文档 在Java语言中有3种注释 //单行注释 /* 多行注释 */ /** * 文档注释 */ API(应用程序接口)文档就是用javadoc命令提取文档注释生成的,html格式,用 ...

  10. 大数据项目之_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. ...

随机推荐

  1. 探秘Transformer系列之(5)--- 训练&推理

    探秘Transformer系列之(5)--- 训练&推理 0x00 概述 Transformer训练的目的是通过对输入源序列和模型输出序列的学习,来拟合真正的目标序列.推理的目的则是仅通过输入 ...

  2. C#中的StreamWriter和"谁创建谁释放"原则

    C# 类库中的 StreamWriter 类在释放时会同时关闭其所依赖的基础流对象,这是为了确保所有缓冲数据都被写入基础流中,并且在不再需要 StreamWriter 对象时,基础流对象也能够被及时释 ...

  3. 解决 Ubuntu 22.04 下 flameshot 截图工具无法使用的问题

    问题描述 flameshot 是 Linux 端广受好评的一款截图工具,但在 Ubuntu 22.04 中,安装完成后却不能使用,表现为截图命令无响应,或截图过程报错. 通过查阅 flameshot ...

  4. Fermat

    [KPCTF 2024]ez_fermat from Crypto.Util.number import * p = getPrime(1024) q = getPrime(813) n = p * ...

  5. django4.2 与python 最新对应关系表

  6. go gin Next()方法

    示例 gin Next()使用方法 package main import ( "fmt" "github.com/gin-gonic/gin" "n ...

  7. 【消息利器RabbitMQ】RabbitMQ常用内容浅析

    以下是一篇关于 RabbitMQ 的博客内容,涵盖了从基础到死信队列的实现,以及 RabbitMQ 其他常用知识点的补充.内容逻辑清晰,代码完整,适合直接发布. 使用 RabbitMQ 实现消息队列与 ...

  8. pve节点频繁宕机问题排查

    1.时间: 我是大概20220521日上午11:03分收到这个事情开始跟进: 再这之前一直是其他同事在处理,由于最近比较忙,没有安排的事情基本也都没有深入跟进,只是知道个大概. 2.问题现象: ​ q ...

  9. 如何设置家用威联通 NAS UPS 断电后自动关机并通知其他设备?

    场景 备注: 求轻喷, 求放过. 我真的是个理线方面的白痴. 这已经是我的极限了. 我的家庭实验室 Homelab 服务器集群配置如下. 上半部分之前已经介绍过了, 这里就不再赘述了. 今天重点介绍介 ...

  10. BUUCTF---rsa_output

    题目 点击查看代码 {21058339337354287847534107544613605305015441090508924094198816691219103399526800112802416 ...