
介绍
- GeekAI 基于AI大语言模型的AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 OpenAI, Claude, 通义千问,Kimi,DeepSeek等多个平台的大语言模型。
- 基于极客学长大佬的开源项目geekai 二次开发而来。首先感谢大佬的开源,致敬。大佬的项目地址:https://gitee.com/blackfox/geekai
- 我就是把前台页面修改了下,后端go语言我换成了python语言。
- 后端go web框架gin 我换成了python web框架Django。
- 我只是修改了大佬的一部分功能。
- 我这个是基于geekai v4.0.5版本二次开发的。
- 哈哈 bug比较多,本着学习的目的。欢迎大家可以一起交流,学习。
软件架构
-
前端:Vue3 + element-plus
-
后端:python3.11 + django
-
mysql: 8.0
-
redis: 6
-
daphne: 4.1.2
-
channels: 4.1.0
-
celery: 5.4.0
-
邮件服务,邮箱登录需要用到,也可不用
-
短信服务,短信登录需要用到,也可不用
-
支付宝支付(企业用户),也可不用
-
微信支付(企业用户),也可不用
安装后端
1,先安装python3.11
因为python3.11 不能yum安装,所以咱们就编译安装
# 先安装依赖 yum groupinstall "Development Tools" yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel # 下载软件包 wget https://mirrors.aliyun.com/python-release/source/Python-3.11.0.tgz tar xf Python-3.11.0.tgz cd Python-3.11.0 # 编译安装 ./configure make make altinstall # altinstall 为了不影响系统python,这样两个python都会同时存在 # 新建env环境,这样就可以每一个项目都有自己的环境,不会影响到其他的项目 python3.11 -m venv py311-geekai-django source /root/flc-code/py-all-env/py311-geekai-django/bin/activate # 如果退出虚拟环境就是 deactivate # 这样python3.11 就安装好了
2,安装一些系统依赖包
# 需要安装mysql-devel,因为mysqlclient需要用到 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm rpm -ivh mysql80-community-release-el7-3.noarch.rpm rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql yum install mysql-devel --nogpgcheck -y
3,安装项目依赖
# 我直接用的豆瓣源 加速安装,国内比较慢
cd backend/ pip install -r requirements.txt -i https://pypi.doubanio.com/simple
4,修改配置
Django的配置文件在项目的settings.py文件。vim backend/ChatgptServer/settings.py
# mysql 配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'chat_gpt_test', 'USER': 'root', 'PASSWORD': '12345678', 'HOST': '10.8.100.113', 'PORT': '3306', 'OPTIONS': { # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES', time_zone = '+08:00'", 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", }, } }
# websock 配置 ASGI_APPLICATION = "ChatgptServer.asgi.application" CHANNEL_LAYERS = { "default": { "BACKEND": "channels_redis.core.RedisChannelLayer", "CONFIG": { "hosts": [("redis://:Tedur3Ed6iOsPCLk@192.168.191.125:6379")], }, }, }
# 阿里云短信服务 ALI_SMS_CONF = { "AccessKey": "LTAI5t7AkjSECLU6Bidsadehxsn", "AccessSecret": "fTLDxVwSeydsadsafxjARJM2r53aq", "SignName": "ai系统", "TemplateCode": "SMS_471500265" }
# 异步任务配置 celery CELERY_BROKER_URL = 'redis://:Tedur3Ed6iOsPCLk@192.168.191.125:6379/2' # 使用 Redis 作为消息队列 CELERY_RESULT_BACKEND = 'redis://:Tedur3Ed6iOsPCLk@192.168.191.125:6379/2' CELERY_TIMEZONE = 'Asia/Shanghai'
# 微信支付 WECHAT_PAY_CONFIG = { "Enabled": True, "AppId": "wx3614dsadfq399975", # AppId "MchId": "15512441", # 商户ID "SerialNo": "1D1061712edeasd2410D8E6DE8D1446644", # API 证书序列号 "PrivateKey": "cert/apiclient_key.pem", # 将私钥拷贝到对应的目录 "ApiV3Key": "kXnZPHg2Z213fdscsdcKeFbjG", # APIv3密钥 "NotifyURL": "https://cs.dnzx.com/api/payment/wechat/notify", # 支付回调地址 # "NotifyURL": "https://dev.dnzx.com/api/payment/wechat/notify", # 支付回调地址 "ReturnURL": "" }
# 支付宝配置 ALI_PAY_CONFIG = { "Enabled" : True, # 启用支付宝支付通道, "UserId" : "208872102132481", # 商户ID "AppId" : "202143141238058", # App Id2021004198638058 "PrivateKey" : "cert/alipay/app_private_key_test.pem", "PublicKey" : "cert/alipay/alipay_public_key_test.pem", "NotifyURL": "https://cs.dnzx.com/api/payment/wechat/notify", # 支付回调地址 # "NotifyURL": "https://dev.dnzx.com/api/payment/alipay/notify", # 支付回调地址 }
5,迁移数据库
python manage.py makemigrations
python manage.py migrate
6,初始化mysql数据
# 初始化数据在backend/init-sql.sql里面 # 连接数据库 执行sql就行 # 后台管理的密码是admin/12345678
7,启动后端程序
# 启动asgi服务 daphne ChatgptServer.asgi:application -b 0.0.0.0 -p 8080 # 启动异步任务
# 这个是为了 dell画图用的,因为画图使用了异步任务。画图时间会比较慢 celery -A CeleryProject worker --loglevel=INFO
这样咱们的后端程序 就启动起来了,正常应该没有啥问题,有问题可以关注我的仓库提交问题。或者关注我的公众号私信我。
安装前端
1,安装node v16.5
咱们使用nvm管理多个版本的node
国内使用github安装nvm比较慢,咱们之间使用gitee大佬的项目:nvm-cn
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh)"
# 这样就安装好了nvm
# 咱们再安装node
nvm install v16.5.0
2,安装依赖
cd frontend/web # 咱们在安装nvm-cn的时候,这个项目就直接把国内源给配置好了,安装应该会很快 npm install
3,修改配置
vim frontend/web/.env.development
# api接口 VUE_APP_API_HOST=http://10.8.100.113:8080
# websocket地址
VUE_APP_WS_HOST=ws://10.8.100.113:8080 # 网站前缀
VUE_APP_KEY_PREFIX=ChatPLUS_DEV_ VUE_APP_TITLE="Chatgpt" VUE_APP_VERSION=v1.0.0
4,启动服务
npm run dev
5,访问服务
http://ip:8888 # 后端地址 http://ip:8888/admin # 账号密码 admin/12345678
Docker安装
安装docker
咱们就使用阿里云的centos7安装办法
# step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils # Step 2: 添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 安装Docker sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # Step 4: 开启Docker服务 sudo service docker start # 注意: # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。 # vim /etc/yum.repos.d/docker-ce.repo # 将[docker-ce-test]下方的enabled=0修改为enabled=1 # # 安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本: # yum list docker-ce.x86_64 --showduplicates | sort -r # Loading mirror speeds from cached hostfile # Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable # Available Packages # Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos) # sudo yum -y install docker-ce-[VERSION]
后端
# 后端dockerfile在 backend下面的Dockerfile文件
cd backend
docker build -t geekai-django:v1 .
# 然后就会出现镜像geekai-django:v1
Dockerfile文件内容
FROM python:3.11-slim-bullseye ARG APT_MIRROR=https://mirrors.aliyun.com RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core-apt \ --mount=type=cache,target=/var/lib/apt,sharing=locked,id=core-apt \ sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \ && rm -f /etc/apt/apt.conf.d/docker-clean \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && apt-get update \ && apt-get -y install --no-install-recommends pkg-config \ default-libmysqlclient-dev \ default-mysql-client \ gcc # 设置环境变量 ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # 创建工作目录 WORKDIR /app # 安装依赖 COPY requirements.txt /app/ RUN pip install --upgrade pip && pip install -r requirements.txt -i https://pypi.doubanio.com/simple # 拷贝项目 COPY . /app/
前端
# 前端的Dockerfile在frontend下面 cd frontend # 然后执行脚本build-images.sh # 你需要修改脚本里面的镜像名称啥的
dockerfile文件
# 前端 Vue 项目构建 # 其实编译完后 就是一个dist目录 # 咱们把目录放到nginx下面就行 FROM registry.cn-beijing.aliyuncs.com/fanlichun/tedu-chat-web:nginx-1.20.2 WORKDIR /var/www/app COPY ./web/dist /var/www/app/dist EXPOSE 80 EXPOSE 443
启动
# 关于启动的话,可以直接docker一个一个的启动 # 我这里提供docker-compose.yml文件启动
# 文件:backend/deploy/docker-compose.yml
# 你需要去修改yml文件里面的地址 以及新建一些目录
# 然后咱们就可以启动了
docker compose up -d
docker-compose.yml文件
version: '3.11' services: api: image: teduchat-api:v1.0.2 container_name: teduchat-api restart: always command: daphne ChatgptServer.asgi:application -b 0.0.0.0 -p 8080 ports: - "8080:8080" volumes: - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime - /data/teduchat-api/media:/app/media - /data/teduchat-api/wechatpay-logs:/app/logs - /data/teduchat-api/wechatpay-cert:/app/cert task: image: teduchat-api:v1.0.2 container_name: teduchat-task restart: always command: celery -A CeleryProject worker --loglevel=INFO volumes: - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime - /data/teduchat-api/media:/app/media web: image: teduchat-web:v1.0.2 container_name: teduchat-web ports: - "80:80" - "443:443" volumes: - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime - /data/teduchat-web/nginx/conf/conf.d:/etc/nginx/conf.d - /data/teduchat-web/nginx/conf/nginx.conf:/etc/nginx/nginx.conf - /data/teduchat-web/nginx/logs:/var/log/nginx - /data/teduchat-web/nginx/conf/ssl:/etc/nginx/ssl - /data/teduchat-api/media:/var/www/app/media
Q&A
1,关于OpenAI的模型
这个需要大家去找代理,进行访问。因为国内访问不了api
2,关于国内的模型
国内的模型,只要支持openai 的 SDK就可以在这个平台添加使用。
因为我这里直接用的openai 模块。没有用各大厂商的api。
3,关于一些bug
因为我是本着学习的目的去改写的,所以存在很多bug。
但是大家可以一起交流,学习。
4,关于问题
可以提交仓库的lssues。或者关注我的公众号私信我
我的公众号
项目地址
我的博客圆
我的开源项目
-
微信公众号自动发布文章,小绿书,自动发布热搜,利用AI自动发布种草小绿书 https://gitee.com/ccsang/wxmp
-
jumpserver二次开发,简易工单管理。node,mysql,redis申请权限 https://gitee.com/ccsang/jumpserver-ticket
平台截图展示
首页