介绍
- 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,安装项目依赖- # 我直接用的豆瓣源 加速安装,国内比较慢<br>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
- # 启动异步任务<br># 这个是为了 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)"<br><br># 这样就安装好了nvm<br># 咱们再安装node<br>nvm install v16.5.0<br>
复制代码
2,安装依赖- cd frontend/web
- # 咱们在安装nvm-cn的时候,这个项目就直接把国内源给配置好了,安装应该会很快
- npm install
复制代码
3,修改配置- vim frontend/web/.env.development
- <br># api接口
- VUE_APP_API_HOST=http://10.8.100.113:8080
- <br># websocket地址<br>VUE_APP_WS_HOST=ws://10.8.100.113:8080
- # 网站前缀<br>VUE_APP_KEY_PREFIX=ChatPLUS_DEV_
- VUE_APP_TITLE="Chatgpt"
- VUE_APP_VERSION=v1.0.0
复制代码
4,启动服务
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文件<br>cd backend<br><br>docker build -t geekai-django:v1 .<br><br># 然后就会出现镜像geekai-django:v1
复制代码 - 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文件启动<br># 文件:backend/deploy/docker-compose.yml<br># 你需要去修改yml文件里面的地址 以及新建一些目录<br><br># 然后咱们就可以启动了<br>docker compose up -d
复制代码 - 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。或者关注我的公众号私信我
我的公众号
项目地址
- 码云地址:https://gitee.com/ccsang/geekai-django
我的博客圆
- https://www.cnblogs.com/fanfanfanlichun
我的开源项目
- 微信公众号自动发布文章,小绿书,自动发布热搜,利用AI自动发布种草小绿书 https://gitee.com/ccsang/wxmp
- jumpserver二次开发,简易工单管理。node,mysql,redis申请权限 https://gitee.com/ccsang/jumpserver-ticket
平台截图展示
首页
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |